public static List< BoundingBox > getAllBoundingBoxes( final SpimData2 spimData, final Collection< ViewId > currentlySelected, final boolean addBoundingBoxForAllViews ) { final List< BoundingBox > bbs = new ArrayList<>(); bbs.addAll( spimData.getBoundingBoxes().getBoundingBoxes() ); final ArrayList< ViewId > allViews = new ArrayList<>(); if ( currentlySelected != null && currentlySelected.size() > 0 ) { allViews.addAll( currentlySelected ); bbs.add( BoundingBoxTools.maximalBoundingBox( spimData, allViews, "Currently Selected Views" ) ); } if ( addBoundingBoxForAllViews ) { allViews.clear(); allViews.addAll( spimData.getSequenceDescription().getViewDescriptions().values() ); bbs.add( BoundingBoxTools.maximalBoundingBox( spimData, allViews, "All Views" ) ); } return bbs; }
public static void main( String[] args ) { // generate 4 views with 1000 corresponding beads, single timepoint SpimData2 spimData = SpimData2.convert( SimulatedBeadsImgLoader.spimdataExample( new int[]{ 0, 90, 135 } ) ); System.out.println( "Views present:" ); for ( final ViewId viewId : spimData.getSequenceDescription().getViewDescriptions().values() ) System.out.println( Group.pvid( viewId ) ); testBoundingBox( spimData, true ); }
public static void main( String[] args ) { // generate 4 views with 1000 corresponding beads, single timepoint SpimData2 spimData = SpimData2.convert( SimulatedBeadsImgLoader.spimdataExample( new int[]{ 0, 90, 135 } ) ); System.out.println( "Views present:" ); for ( final ViewId viewId : spimData.getSequenceDescription().getViewDescriptions().values() ) System.out.println( Group.pvid( viewId ) ); testPSF( spimData, true ); }
public static void main( String[] args ) { // generate 4 views with 1000 corresponding beads, single timepoint SpimData2 spimData = SpimData2.convert( SimulatedBeadsImgLoader.spimdataExample( new int[]{ 0, 90, 135 } ) ); System.out.println( "Views present:" ); for ( final ViewId viewId : spimData.getSequenceDescription().getViewDescriptions().values() ) System.out.println( Group.pvid( viewId ) ); testRegistration( spimData, false ); }
public static void main( String[] args ) throws SpimDataException { new ImageJ(); // load drosophila SpimData2 spimData = new XmlIoSpimData2( "" ).load( "Z:/Betzig/dataset.xml" ); Collection< Group< ViewDescription > >groups = Group.toGroups( spimData.getSequenceDescription().getViewDescriptions().values() ); BoundingBox bb = BoundingBoxTools.maximalBoundingBox( spimData, new ArrayList<>( spimData.getSequenceDescription().getViewDescriptions().values() ), "All Views" ); testDeconvolution( spimData, groups, bb, true ); }
public static void main( String[] args ) { new ImageJ(); // generate 4 views with 1000 corresponding beads, single timepoint SpimData2 spimData = SpimData2.convert( SimulatedBeadsImgLoader.spimdataExample( new int[]{ 0, 90, 135 } ) ); System.out.println( "Views present:" ); for ( final ViewId viewId : spimData.getSequenceDescription().getViewDescriptions().values() ) System.out.println( Group.pvid( viewId ) ); testFusion( spimData ); }
public static void testDoM( final SpimData2 spimData ) { DoMParameters dom = new DoMParameters(); dom.imgloader = spimData.getSequenceDescription().getImgLoader(); dom.toProcess = new ArrayList< ViewDescription >(); dom.toProcess.addAll( spimData.getSequenceDescription().getViewDescriptions().values() ); // filter not present ViewIds final List< ViewDescription > removed = SpimData2.filterMissingViews( spimData, dom.toProcess ); IOFunctions.println( new Date( System.currentTimeMillis() ) + ": Removed " + removed.size() + " views because they are not present." ); dom.downsampleXY = 2; dom.radius1 = 2; final HashMap< ViewId, List< InterestPoint > > points = DoM.findInterestPoints( dom ); InterestPointTools.addInterestPoints( spimData, "beads", points, "DoM, sigma=2, downsample=2" ); }
public static BoundingBox testBoundingBox( final SpimData2 spimData, final boolean bdv ) { // run the whole pipeline TestRegistration.testRegistration( spimData, false ); // select views to process final List< ViewId > viewIds = new ArrayList< ViewId >(); viewIds.addAll( spimData.getSequenceDescription().getViewDescriptions().values() ); // filter not present ViewIds final List< ViewId > removed = SpimData2.filterMissingViews( spimData, viewIds ); IOFunctions.println( new Date( System.currentTimeMillis() ) + ": Removed " + removed.size() + " views because they are not present." ); BoundingBoxEstimation estimation; if ( bdv ) estimation = new BoundingBoxBigDataViewer( spimData, viewIds ); else estimation = new BoundingBoxMaximal( viewIds, spimData ); final BoundingBox bb = estimation.estimate( "Full Bounding Box" ); System.out.println( bb ); return bb; } }
public static void testDoG( SpimData2 spimData ) { DoGParameters dog = new DoGParameters(); dog.imgloader = spimData.getSequenceDescription().getImgLoader(); dog.toProcess = new ArrayList< ViewDescription >(); dog.toProcess.addAll( spimData.getSequenceDescription().getViewDescriptions().values() ); // filter not present ViewIds final List< ViewDescription > removed = SpimData2.filterMissingViews( spimData, dog.toProcess ); IOFunctions.println( new Date( System.currentTimeMillis() ) + ": Removed " + removed.size() + " views because they are not present." ); dog.downsampleXY = 4; dog.downsampleZ = 2; dog.sigma = 1.1; //dog.deviceList = spim.headless.cuda.CUDADevice.getSeparableCudaList( "lib/libSeparableConvolutionCUDALib.so" ); //dog.cuda = spim.headless.cuda.CUDADevice.separableConvolution; // DoG.findInterestPoints( dog ); // TODO: make cuda headless //dog.deviceList = spim.headless.cuda.CUDADevice.getSeparableCudaList( "lib/libSeparableConvolutionCUDALib.so" ); //dog.cuda = spim.headless.cuda.CUDADevice.separableConvolution; final HashMap< ViewId, List< InterestPoint > > points = DoG.findInterestPoints( dog ); InterestPointTools.addInterestPoints( spimData, "beads", points, "DoG, sigma=1.4, downsample=2" ); }
public static void testFresh( final SpimData2 sdTiff, final SpimData2 sdHdf5 ) { final DoGParameters dog = new DoGParameters(); /* dog.downsampleXY = 2; dog.downsampleZ = 2; dog.sigma = 1.8014999628067017; dog.threshold = 0.007973356172442436; */ dog.downsampleXY = 8; dog.downsampleZ = 8; dog.sigma = 1.1500000476837158; dog.threshold = 0.007973356172442436; dog.toProcess = new ArrayList< ViewDescription >(); dog.toProcess.addAll( sdTiff.getSequenceDescription().getViewDescriptions().values() ); dog.imgloader = sdTiff.getSequenceDescription().getImgLoader(); final HashMap< ViewId, List< InterestPoint > > pointsTiff = DoG.findInterestPoints( dog ); dog.imgloader = sdHdf5.getSequenceDescription().getImgLoader(); final HashMap< ViewId, List< InterestPoint > > pointsHdf5 = DoG.findInterestPoints( dog ); for ( final ViewId viewId : sdTiff.getSequenceDescription().getViewDescriptions().values() ) { statistics( viewId, pointsTiff.get( viewId ), pointsHdf5.get( viewId ) ); } }
public static void main( String[] args ) throws SpimDataException { new ImageJ(); SpimData2 spimData; Collection< Group< ViewDescription > > groups = new ArrayList<>(); // generate 4 views with 1000 corresponding beads, single timepoint spimData = SpimData2.convert( SimulatedBeadsImgLoader.spimdataExample( new int[]{ 0, 90, 135 } ) ); groups = Group.toGroups( spimData.getSequenceDescription().getViewDescriptions().values() ); // load drosophila spimData = new XmlIoSpimData2( "" ).load( "/Users/spreibi/Documents/Microscopy/SPIM/HisYFP-SPIM/dataset.xml" ); groups = selectViews( spimData.getSequenceDescription().getViewDescriptions().values() ); groups = Group.toGroups( spimData.getSequenceDescription().getViewDescriptions().values() ); /* final ArrayList< ViewDescription > two = new ArrayList<>(); two.add( spimData.getSequenceDescription().getViewDescriptions().get( new ViewId( 0,0 ) ) ); two.add( spimData.getSequenceDescription().getViewDescriptions().get( new ViewId( 0,1 ) ) ); groups = oneGroupPerView( two ); */ testDeconvolution( spimData, groups, "My Bounding Box111" ); // for bounding box1111 test 128,128,128 vs 256,256,256 (no blocks), there are differences at the edges // }
public static SpimData spimdataExample( final int[] angles, final int axis, final int numPoints, final double[] sigma, final Interval range ) { final TimePoints timepoints = LegacySimulatedBeadsImgLoader.createTimepoints(); final ArrayList< ViewSetup > setups = LegacySimulatedBeadsImgLoader.createViewSetups( angles, axis, range ); final MissingViews missingViews = null; final SimulateBeads sb = new SimulateBeads( angles, axis, numPoints, range, range, sigma ); final SequenceDescription sequenceDescription = new SequenceDescription( timepoints, setups, null, missingViews ); final ImgLoader imgLoader = new SimulatedBeadsImgLoader( sb ); sequenceDescription.setImgLoader( imgLoader ); // get the minimal resolution of all calibrations final double minResolution = 1.0; final ViewRegistrations viewRegistrations = LegacySimulatedBeadsImgLoader.createViewRegistrations( sequenceDescription.getViewDescriptions(), minResolution ); // finally create the SpimData itself based on the sequence description and the view registration final SpimData spimData = new SpimData( new File( "" ), sequenceDescription, viewRegistrations ); return spimData; }
viewIds.addAll( spimData.getSequenceDescription().getViewDescriptions().values() );
viewIds.addAll( spimData.getSequenceDescription().getViewDescriptions().values() );
public static SpimData2 createDataset( final String file, final StackListParameters params ) { ImgFactory< ? extends NativeType< ? > > imgFactory = null; switch( params.container ) { case ArrayImg: imgFactory = new ArrayImgFactory< FloatType >(); break; case CellImg: imgFactory = new CellImgFactory< FloatType >( 256 ); break; } // assemble timepints, viewsetups, missingviews and the imgloader final SequenceDescription sequenceDescription = createSequenceDescription( params.timepoints, params.channels, params.illuminations, params.angles, params.tiles, loadCalibration(new File(file)) ); final ImgLoader imgLoader = createAndInitImgLoader( ".", new File( params.directory ), imgFactory, sequenceDescription, params ); sequenceDescription.setImgLoader( imgLoader ); // get the minimal resolution of all calibrations final double minResolution = DatasetCreationUtils.minResolution( sequenceDescription, sequenceDescription.getViewDescriptions().values() ); IOFunctions.println( "Minimal resolution in all dimensions over all views is: " + minResolution ); IOFunctions.println( "(The smallest resolution in any dimension; the distance between two pixels in the output image will be that wide)" ); // create the initial view registrations (they are all the identity transform) final ViewRegistrations viewRegistrations = createViewRegistrations( sequenceDescription.getViewDescriptions(), minResolution ); // create the initial view interest point object final ViewInterestPoints viewInterestPoints = new ViewInterestPoints(); viewInterestPoints.createViewInterestPoints( sequenceDescription.getViewDescriptions() ); // finally create the SpimData itself based on the sequence description and the view registration final SpimData2 spimData = new SpimData2( new File( params.directory ), sequenceDescription, viewRegistrations, viewInterestPoints, new BoundingBoxes(), new PointSpreadFunctions(), new StitchingResults(), new IntensityAdjustments() ); return spimData; }
public static void testLoad( final SpimData2 sdTiff, final SpimData2 sdHdf5, final String label ) { for ( final ViewId viewId : sdTiff.getSequenceDescription().getViewDescriptions().values() ) { final List< InterestPoint > ipListTiff = sdTiff.getViewInterestPoints().getViewInterestPointLists( viewId ).getInterestPointList( label ).getInterestPointsCopy(); final List< InterestPoint > ipListHdf5 = sdHdf5.getViewInterestPoints().getViewInterestPointLists( viewId ).getInterestPointList( label ).getInterestPointsCopy(); statistics( viewId, ipListTiff, ipListHdf5 ); } }
System.out.println( "Missing: " + view.getTimePointId() + " " + view.getViewSetupId() ); for ( final ViewDescription vd : spimData.getSequenceDescription().getViewDescriptions().values() ) System.out.println( "Present: " + vd.isPresent() + " -- " + vd.getTimePointId() + " " + vd.getViewSetupId() );
public static void applyCal( final Cal maxCal, final SpimData spimData, final List< ViewId > viewIds ) { // this is the same for all timepoints, we are just interested in the ViewSetup final TimePoint t = spimData.getSequenceDescription().getTimePoints().getTimePointsOrdered().get( 0 ); for ( final ViewId viewId : viewIds ) { if ( viewId.getTimePointId() != t.getId() ) continue; final ViewDescription desc = spimData.getSequenceDescription().getViewDescriptions().get( viewId ); final ViewSetup viewSetup = desc.getViewSetup(); viewSetup.setVoxelSize( new FinalVoxelDimensions( maxCal.unit(), maxCal.getCal()[ 0 ], maxCal.getCal()[ 1 ], maxCal.getCal()[ 2 ] ) ); } }
public static SpimData2 convert( final SpimData data1 ) { final SequenceDescription s = data1.getSequenceDescription(); final ViewRegistrations vr = data1.getViewRegistrations(); final ViewInterestPoints vipl = new ViewInterestPoints(); vipl.createViewInterestPoints( data1.getSequenceDescription().getViewDescriptions() ); final BoundingBoxes bb = new BoundingBoxes(); final PointSpreadFunctions psfs = new PointSpreadFunctions(); final StitchingResults sr = new StitchingResults(); final IntensityAdjustments ia = new IntensityAdjustments(); return new SpimData2( data1.getBasePath(), s, vr, vipl, bb, psfs, sr, ia ); }
public static void updateMissingViews( final SpimData2 spimData, final List< ViewId > viewIds ) { for ( final ViewId viewId : viewIds ) { final ViewDescription vd = spimData.getSequenceDescription().getViewDescription( viewId ); if ( !vd.isPresent() ) { for ( final ViewDescription vdc : spimData.getSequenceDescription().getViewDescriptions().values() ) { if ( vd.getViewSetup().getAngle() == vdc.getViewSetup().getAngle() && vd.getViewSetup().getChannel() == vdc.getViewSetup().getChannel() && vd.getViewSetup().getTile() == vdc.getViewSetup().getTile() && vdc.getViewSetupId() != vd.getViewSetupId() ) { System.out.println( "Missing view " + Group.pvid( vd ) + " compensated from " + Group.pvid( vdc ) ); final ViewRegistration vrc = spimData.getViewRegistrations().getViewRegistration( vdc ); vrc.updateModel(); final ViewRegistration vr = spimData.getViewRegistrations().getViewRegistration( vd ); vr.getTransformList().clear(); vr.getTransformList().addAll( vrc.getTransformList() ); vr.updateModel(); } } } } }