/*-
* Copyright (c) 2012 Diamond Light Source Ltd.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package uk.ac.diamond.scisoft.analysis.dataset.function;
import static org.junit.Assert.assertEquals;
import org.eclipse.january.dataset.Dataset;
import org.eclipse.january.dataset.DatasetFactory;
import org.eclipse.january.dataset.DoubleDataset;
import org.junit.Before;
import org.junit.Test;
/**
*
*/
public class HistogramTest {
DoubleDataset d = null;
/**
*/
@Before
public void setUp() {
d = (DoubleDataset) DatasetFactory.createRange(1.0, 2048.0, 1.0, Dataset.FLOAT64);
}
/**
*
*/
@Test
public void testHistogram() {
Histogram histo = new Histogram(2048);
Dataset pd = histo.value(d).get(0);
assertEquals(2048, pd.getSize());
assertEquals(1, pd.getInt(1));
assertEquals(1, pd.getInt(512));
}
/**
*
*/
@Test
public void testHistogram2() {
Histogram histo = new Histogram(1024);
Dataset pd = histo.value(d).get(0);
assertEquals(1024, pd.getSize());
assertEquals(2, pd.getInt(1));
assertEquals(2, pd.getInt(512));
}
/**
*
*/
@Test
public void testHistogram3() {
Histogram histo = new Histogram(256);
Dataset pd = histo.value(d).get(0);
assertEquals(256, pd.getSize());
assertEquals(8, pd.getInt(1));
assertEquals(8, pd.getInt(128));
}
/**
*
*/
@Test
public void testHistogram4() {
Histogram histo = new Histogram(205);
Dataset pd = histo.value(d).get(0);
assertEquals(205, pd.getSize());
assertEquals(10, pd.getInt(1));
assertEquals(10, pd.getInt(128));
}
/**
*
*/
@Test
public void testHistogram5() {
Histogram histo = new Histogram(1024, 1.0, 1024.0);
histo.setIgnoreOutliers(false);
Dataset pd = histo.value(d).get(0);
assertEquals(1024, pd.getSize());
assertEquals(1, pd.getInt(1));
assertEquals(1, pd.getInt(512));
assertEquals(1024, pd.getInt(1023));
}
/**
*
*/
@Test
public void testHistogram6() {
Histogram histo = new Histogram(1024, 2.0, 1024.0);
histo.setIgnoreOutliers(false);
Dataset pd = histo.value(d).get(0);
assertEquals(1024, pd.getSize());
assertEquals(2, pd.getInt(0));
assertEquals(1, pd.getInt(512));
assertEquals(1024, pd.getInt(1023));
}
/**
*
*/
@Test
public void testHistogram7() {
Histogram histo = new Histogram(1024, 2.0, 1024.0, true);
Dataset pd = histo.value(d).get(0);
assertEquals(1024, pd.getSize());
assertEquals(1, pd.getInt(0));
assertEquals(1, pd.getInt(512));
assertEquals(1, pd.getInt(1023));
}
/**
*
*/
@Test
public void testHistogram8() {
Histogram histo = new Histogram(50);
Dataset pd = histo.value(DatasetFactory.createLinearSpace(0, 100, 101, Dataset.INT32)).get(0);
assertEquals(50, pd.getSize());
assertEquals(2, pd.getInt(0));
assertEquals(2, pd.getInt(25));
assertEquals(3, pd.getInt(49));
}
/**
*
*/
@Test
public void testHistogramSpeed() {
long start = 0;
Histogram h = new Histogram(50);
Dataset d = DatasetFactory.createLinearSpace(0, 100, 500000, Dataset.FLOAT64);
Dataset a = null;
// for (int i = 0; i < 4; i++)
a = h.value(d).get(0);
start = -System.nanoTime();
for (int i = 0; i < 4; i++) {
h = new Histogram(50);
a = h.value(d).get(0);
}
start += System.nanoTime();
System.out.printf("H = %s, %sms\n", a.sum().toString(), start*1e-6);
}
}