package uk.ac.diamond.scisoft.xpdf.test; import static org.junit.Assert.*; import java.io.File; import org.dawb.common.services.ServiceManager; import org.dawnsci.persistence.PersistenceServiceCreator; import org.dawnsci.persistence.internal.PersistJsonOperationsNode; import org.eclipse.dawnsci.analysis.api.io.IDataHolder; import org.eclipse.dawnsci.analysis.api.persistence.IPersistenceService; import org.eclipse.dawnsci.analysis.api.persistence.IPersistentFile; import org.eclipse.dawnsci.analysis.api.processing.ExecutionType; import org.eclipse.dawnsci.analysis.api.processing.IOperation; import org.eclipse.dawnsci.analysis.api.processing.IOperationContext; import org.eclipse.dawnsci.analysis.api.processing.IOperationService; import org.eclipse.dawnsci.analysis.api.processing.OperationData; import org.eclipse.dawnsci.analysis.api.processing.model.IOperationModel; import org.eclipse.dawnsci.hdf5.nexus.NexusFileFactoryHDF5; import org.eclipse.january.dataset.Dataset; import org.eclipse.january.dataset.DatasetUtils; import org.eclipse.january.dataset.IDataset; import org.eclipse.january.dataset.ILazyDataset; import org.eclipse.jface.commands.PersistentState; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; import uk.ac.diamond.scisoft.analysis.io.LoaderFactory; import uk.ac.diamond.scisoft.analysis.io.LoaderServiceImpl; import uk.ac.diamond.scisoft.analysis.processing.LocalServiceManager; import uk.ac.diamond.scisoft.analysis.processing.OperationServiceImpl; import uk.ac.diamond.scisoft.analysis.processing.runner.OperationRunnerImpl; import uk.ac.diamond.scisoft.analysis.processing.runner.SeriesRunner; import uk.ac.diamond.scisoft.analysis.processing.visitor.NexusFileExecutionVisitor; public class XPDFChainTest { private static OperationServiceImpl operationService = new OperationServiceImpl(); @BeforeClass public static void before() throws Exception { OperationRunnerImpl.setRunner(ExecutionType.SERIES, new SeriesRunner()); operationService.createOperations(operationService.getClass().getClassLoader(), "uk.ac.diamond.scisoft.xpdf.operations"); operationService.createOperations(operationService.getClass().getClassLoader(), "uk.ac.diamond.scisoft.analysis.processing.operations"); PersistJsonOperationsNode.setOperationService(operationService); LocalServiceManager.setLoaderService(new LoaderServiceImpl()); ServiceManager.setService(IPersistenceService.class, PersistenceServiceCreator.createPersistenceService()); org.dawnsci.persistence.ServiceLoader.setNexusFactory(new NexusFileFactoryHDF5()); } @Ignore @Test public void test() throws Exception{ final IOperationContext context = operationService.createContext(); ILazyDataset lazy = LoaderFactory.getData("/dls/science/groups/das/ExampleData/i15-1/NeXus/Ceria_Complete.nxs").getLazyDataset("/entry1/data/data"); context.setData(lazy); // context.setSlicing("all"); context.setDataDimensions(new int[]{2,3}); IPersistenceService ps = PersistenceServiceCreator.createPersistenceService(); IPersistentFile pf = ps.getPersistentFile("/dls/science/groups/das/ExampleData/i15-1/pipelines/ceria.2D_data_2D_processing_pipeline.nxs"); IOperation<? extends IOperationModel, ? extends OperationData>[] ops = pf.getOperations(); final File tmp = File.createTempFile("Test", ".h5"); tmp.deleteOnExit(); tmp.createNewFile(); context.setVisitor(new NexusFileExecutionVisitor(tmp.getAbsolutePath())); context.setSeries(ops); context.setExecutionType(ExecutionType.SERIES); long t = System.currentTimeMillis(); operationService.execute(context); System.out.println("Time: " + ((System.currentTimeMillis()-t)/1000)); ILazyDataset r = LoaderFactory.getData(tmp.getAbsolutePath()).getLazyDataset("/entry/result/data"); Dataset d = DatasetUtils.convertToDataset(r.getSlice()); double max = d.max().doubleValue(); double min = d.min().doubleValue(); assertEquals(35.28712797375911, max,0.00000001); assertEquals(-14.501890542153754, min,0.00000001); Runtime runtime = Runtime.getRuntime(); long totalMemory = runtime.totalMemory(); System.out.println(totalMemory/Math.pow(10, 9)); } }