/*-
* Copyright 2015 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.diffraction.powder;
import java.util.List;
import org.eclipse.dawnsci.analysis.api.metadata.IDiffractionMetadata;
import org.eclipse.january.dataset.Comparisons;
import org.eclipse.january.dataset.Dataset;
import org.eclipse.january.dataset.DatasetFactory;
import org.eclipse.january.dataset.IndexIterator;
import org.junit.Assert;
import org.junit.Test;
import uk.ac.diamond.scisoft.analysis.roi.XAxis;
public class IntegrateOnesTest extends AbstractPixelIntegrationTestBase {
@Test
public void testNonSplitting1D() {
Dataset data = getData();
if (data == null) {
Assert.fail("Could not load test data");
return;
}
IDiffractionMetadata meta = getDiffractionMetadata();
Dataset ones = DatasetFactory.ones(data);
PixelIntegrationBean bean = new PixelIntegrationBean();
bean.setAzimuthalIntegration(true);
bean.setUsePixelSplitting(false);
bean.setxAxis(XAxis.Q);
PixelIntegrationCache info = new PixelIntegrationCache(meta, bean);
List<Dataset> out1D = PixelIntegration.integrate(ones, null, info);
Dataset dataset = out1D.get(1);
Assert.assertTrue(Comparisons.allTrue(Comparisons.equalTo(dataset, 1)));
}
@Test
public void testNonSplitting2D() {
Dataset data = getData();
if (data == null) {
Assert.fail("Could not load test data");
return;
}
IDiffractionMetadata meta = getDiffractionMetadata();
Dataset ones = DatasetFactory.ones(data);
PixelIntegrationBean bean = new PixelIntegrationBean();
bean.setAzimuthalIntegration(true);
bean.setTo1D(false);
bean.setNumberOfBinsAzimuthal(180);
bean.setUsePixelSplitting(false);
bean.setxAxis(XAxis.Q);
PixelIntegrationCache info = new PixelIntegrationCache(meta, bean);
List<Dataset> out1D = PixelIntegration.integrate(ones, null, info);
Dataset dataset = out1D.get(1);
IndexIterator iterator = dataset.getIterator();
while (iterator.hasNext()) {
double val = dataset.getElementDoubleAbs(iterator.index);
if (!(val == 0 || val ==1)) {
Assert.fail("Non zero or one value found");
}
}
}
@Test
public void testSplitting1D() {
Dataset data = getData();
if (data == null) {
Assert.fail("Could not load test data");
return;
}
IDiffractionMetadata meta = getDiffractionMetadata();
Dataset ones = DatasetFactory.ones(data);
PixelIntegrationBean bean = new PixelIntegrationBean();
bean.setAzimuthalIntegration(true);
bean.setUsePixelSplitting(true);
bean.setxAxis(XAxis.Q);
PixelIntegrationCache info = new PixelIntegrationCache(meta, bean);
List<Dataset> out1D = PixelIntegration.integrate(ones, null, info);
Dataset dataset = out1D.get(1);
Assert.assertTrue(Comparisons.allTrue(Comparisons.equalTo(dataset, 1)));
}
@Test
public void testSplitting2D() {
Dataset data = getData();
if (data == null) {
Assert.fail("Could not load test data");
return;
}
IDiffractionMetadata meta = getDiffractionMetadata();
Dataset ones = DatasetFactory.ones(data);
PixelIntegrationBean bean = new PixelIntegrationBean();
bean.setAzimuthalIntegration(true);
bean.setTo1D(false);
bean.setNumberOfBinsAzimuthal(180);
bean.setUsePixelSplitting(true);
bean.setxAxis(XAxis.Q);
PixelIntegrationCache info = new PixelIntegrationCache(meta, bean);
List<Dataset> out1D = PixelIntegration.integrate(ones, null, info);
Dataset dataset = out1D.get(1);
IndexIterator iterator = dataset.getIterator();
while (iterator.hasNext()) {
double val = dataset.getElementDoubleAbs(iterator.index);
if (!(val == 0 || val ==1)) {
Assert.fail("Non zero or one value found");
}
}
}
}