From ef0ba2228d12a960b792cf02c5ed9c72a7d791ee Mon Sep 17 00:00:00 2001 From: Stephan Saalfeld <saalfelds@janelia.hhmi.org> Date: Sat, 10 Oct 2015 14:35:57 -0400 Subject: [PATCH] work in progress to adapt openconnectome to new api --- .../bdv/AbstractViewerSetupImgLoader.java | 5 +- src/main/java/bdv/BigDataViewer.java | 31 ++++++------ .../bdv/img/catmaid/CatmaidImageLoader.java | 20 ++++---- .../openconnectome/OpenConnectomeDataset.java | 7 ++- .../OpenConnectomeTokenInfo.java | 47 +++++++------------ .../bdv/img/remote/RemoteImageLoader.java | 30 ++++++------ .../legacy/XmlIoSpimDataMinimalLegacy.java | 25 ++++++---- 7 files changed, 82 insertions(+), 83 deletions(-) diff --git a/src/main/java/bdv/AbstractViewerSetupImgLoader.java b/src/main/java/bdv/AbstractViewerSetupImgLoader.java index 505e2331..51c3c6dd 100644 --- a/src/main/java/bdv/AbstractViewerSetupImgLoader.java +++ b/src/main/java/bdv/AbstractViewerSetupImgLoader.java @@ -1,5 +1,6 @@ package bdv; +import mpicbg.spim.data.generic.sequence.ImgLoaderHint; import net.imglib2.RandomAccessibleInterval; import net.imglib2.Volatile; @@ -28,8 +29,8 @@ public abstract class AbstractViewerSetupImgLoader< T, V extends Volatile< T > > } @Override - public RandomAccessibleInterval< T > getImage( final int timepointId ) + public RandomAccessibleInterval< T > getImage( final int timepointId, final ImgLoaderHint... hints ) { - return getImage( timepointId, 0 ); + return getImage( timepointId, 0, hints ); } } diff --git a/src/main/java/bdv/BigDataViewer.java b/src/main/java/bdv/BigDataViewer.java index 05a4d8ff..456cdd45 100644 --- a/src/main/java/bdv/BigDataViewer.java +++ b/src/main/java/bdv/BigDataViewer.java @@ -42,19 +42,6 @@ import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.filechooser.FileFilter; -import mpicbg.spim.data.SpimDataException; -import mpicbg.spim.data.generic.AbstractSpimData; -import mpicbg.spim.data.generic.sequence.AbstractSequenceDescription; -import mpicbg.spim.data.generic.sequence.BasicViewSetup; -import mpicbg.spim.data.sequence.Angle; -import mpicbg.spim.data.sequence.Channel; -import net.imglib2.Volatile; -import net.imglib2.display.RealARGBColorConverter; -import net.imglib2.display.ScaledARGBConverter; -import net.imglib2.type.numeric.ARGBType; -import net.imglib2.type.numeric.RealType; -import net.imglib2.type.volatiles.VolatileARGBType; - import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.JDOMException; @@ -89,6 +76,18 @@ import bdv.viewer.SourceAndConverter; import bdv.viewer.ViewerFrame; import bdv.viewer.ViewerOptions; import bdv.viewer.ViewerPanel; +import mpicbg.spim.data.SpimDataException; +import mpicbg.spim.data.generic.AbstractSpimData; +import mpicbg.spim.data.generic.sequence.AbstractSequenceDescription; +import mpicbg.spim.data.generic.sequence.BasicViewSetup; +import mpicbg.spim.data.sequence.Angle; +import mpicbg.spim.data.sequence.Channel; +import net.imglib2.Volatile; +import net.imglib2.display.RealARGBColorConverter; +import net.imglib2.display.ScaledARGBConverter; +import net.imglib2.type.numeric.ARGBType; +import net.imglib2.type.numeric.RealType; +import net.imglib2.type.volatiles.VolatileARGBType; public class BigDataViewer { @@ -695,8 +694,12 @@ public class BigDataViewer // final String fn = "/Users/Pietzsch/Desktop/bdv example/drosophila 2.xml"; // final String fn = "/Users/pietzsch/Desktop/data/clusterValia/140219-1/valia-140219-1.xml"; // final String fn = "/Users/Pietzsch/Desktop/data/catmaid.xml"; - final String fn = "src/main/resources/openconnectome-bock11-neariso.xml"; +// final String fn = "src/main/resources/openconnectome-bock11-neariso.xml"; // final String fn = "/home/saalfeld/catmaid.xml"; +// final String fn = "/home/saalfeld/catmaid-fafb00-v9.xml"; +// final String fn = "/home/saalfeld/catmaid-fafb00-sample_A_cutout_3k.xml"; + final String fn = "/home/saalfeld/catmaid-thorsten.xml"; +// final String fn = "/home/saalfeld/knossos-example.xml"; // final String fn = "/Users/Pietzsch/Desktop/data/catmaid-confocal.xml"; // final String fn = "/Users/pietzsch/desktop/data/BDV130418A325/BDV130418A325_NoTempReg.xml"; // final String fn = "/Users/pietzsch/Desktop/data/valia2/valia.xml"; diff --git a/src/main/java/bdv/img/catmaid/CatmaidImageLoader.java b/src/main/java/bdv/img/catmaid/CatmaidImageLoader.java index ef35c471..1489165e 100644 --- a/src/main/java/bdv/img/catmaid/CatmaidImageLoader.java +++ b/src/main/java/bdv/img/catmaid/CatmaidImageLoader.java @@ -28,15 +28,6 @@ */ package bdv.img.catmaid; -import mpicbg.spim.data.generic.sequence.ImgLoaderHint; -import net.imglib2.RandomAccessibleInterval; -import net.imglib2.img.NativeImg; -import net.imglib2.img.basictypeaccess.volatiles.array.VolatileIntArray; -import net.imglib2.realtransform.AffineTransform3D; -import net.imglib2.type.NativeType; -import net.imglib2.type.numeric.ARGBType; -import net.imglib2.type.volatiles.VolatileARGBType; -import net.imglib2.util.Fraction; import bdv.AbstractViewerSetupImgLoader; import bdv.ViewerImgLoader; import bdv.ViewerSetupImgLoader; @@ -46,6 +37,15 @@ import bdv.img.cache.LoadingStrategy; import bdv.img.cache.VolatileGlobalCellCache; import bdv.img.cache.VolatileImgCells; import bdv.img.cache.VolatileImgCells.CellCache; +import mpicbg.spim.data.generic.sequence.ImgLoaderHint; +import net.imglib2.RandomAccessibleInterval; +import net.imglib2.img.NativeImg; +import net.imglib2.img.basictypeaccess.volatiles.array.VolatileIntArray; +import net.imglib2.realtransform.AffineTransform3D; +import net.imglib2.type.NativeType; +import net.imglib2.type.numeric.ARGBType; +import net.imglib2.type.volatiles.VolatileARGBType; +import net.imglib2.util.Fraction; public class CatmaidImageLoader extends AbstractViewerSetupImgLoader< ARGBType, VolatileARGBType > implements ViewerImgLoader { @@ -246,7 +246,7 @@ public class CatmaidImageLoader extends AbstractViewerSetupImgLoader< ARGBType, img.setLinkedType( linkedType ); return img; } - + @Override public RandomAccessibleInterval< VolatileARGBType > getVolatileImage( final int timepointId, final int level, final ImgLoaderHint... hints ) { diff --git a/src/main/java/bdv/img/openconnectome/OpenConnectomeDataset.java b/src/main/java/bdv/img/openconnectome/OpenConnectomeDataset.java index d0e83c74..48305bd1 100644 --- a/src/main/java/bdv/img/openconnectome/OpenConnectomeDataset.java +++ b/src/main/java/bdv/img/openconnectome/OpenConnectomeDataset.java @@ -37,9 +37,8 @@ public class OpenConnectomeDataset implements Serializable public HashMap< String, int[] > cube_dimension; public String description; - public HashMap< String, long[] > imagesize; - public HashMap< String, Long > neariso_scaledown; - public HashMap< String, long[] > offset; + public HashMap< String, long[] > neariso_imagesize; + public HashMap< String, double[] > neariso_offset; public long[] resolutions; - public HashMap< String, double[] > voxelres; + public HashMap< String, double[] > neariso_voxelres; } diff --git a/src/main/java/bdv/img/openconnectome/OpenConnectomeTokenInfo.java b/src/main/java/bdv/img/openconnectome/OpenConnectomeTokenInfo.java index afac0d8c..bedb6dd5 100644 --- a/src/main/java/bdv/img/openconnectome/OpenConnectomeTokenInfo.java +++ b/src/main/java/bdv/img/openconnectome/OpenConnectomeTokenInfo.java @@ -41,28 +41,17 @@ public class OpenConnectomeTokenInfo implements Serializable public long[][] getLevelDimensions( final String mode ) { - final long[][] levelDimensions = new long[ dataset.imagesize.size() ][ 3 ]; + final long[][] levelDimensions = new long[ dataset.resolutions.length ][ 3 ]; if ( mode.equals( "neariso" ) ) { - final double zScale0 = dataset.voxelres.get( "0" )[ 2 ]; - for ( int i = 0; i < dataset.imagesize.size(); ++i ) - { - final long[] xyz = dataset.imagesize.get( new Integer( i ).toString() ); - final double[] voxelres = dataset.voxelres.get( new Integer( i ).toString() ); - levelDimensions[ i ][ 0 ] = xyz[ 0 ]; - levelDimensions[ i ][ 1 ] = xyz[ 1 ]; -// levelDimensions[ i ][ 2 ] = ( long )( xyz[ 2 ] * zScale0 / voxelres[ 2 ] ); - levelDimensions[ i ][ 2 ] = ( long ) ( xyz[ 2 ] * zScale0 / dataset.neariso_scaledown.get( new Integer( i ).toString() ) / voxelres[ 2 ] ); - } + for ( int i = 0; i < dataset.resolutions.length; ++i ) + levelDimensions[ i ] = dataset.neariso_imagesize.get( new Integer( i ).toString() ).clone(); } else { - for ( int i = 0; i < dataset.imagesize.size(); ++i ) - { - final long[] xyz = dataset.imagesize.get( new Integer( i ).toString() ); - levelDimensions[ i ] = xyz.clone(); - } + for ( int i = 0; i < dataset.resolutions.length; ++i ) + levelDimensions[ i ] = dataset.imagesize.get( new Integer( i ).toString() ).clone(); } return levelDimensions; @@ -80,32 +69,32 @@ public class OpenConnectomeTokenInfo implements Serializable public double[][] getLevelScales( final String mode ) { final double[][] levelScales = new double[ dataset.resolutions.length ][ 3 ]; - long s = 1; - final double zScale0 = dataset.voxelres.get( "0" )[ 2 ]; + final double zScale0 = dataset.neariso_voxelres.get( "0" )[ 2 ]; if ( mode.equals( "neariso" ) ) { - for ( int i = 0; i < dataset.neariso_scaledown.size(); ++i, s <<= 1 ) - { - levelScales[ i ][ 0 ] = s; - levelScales[ i ][ 1 ] = s; - levelScales[ i ][ 2 ] = zScale0 * dataset.neariso_scaledown.get( new Integer( i ).toString() ); - } + for ( int i = 0; i < dataset.resolutions.length; ++i ) + levelScales[ i ] = dataset.neariso_voxelres.get( new Integer( i ).toString() ).clone(); } else { - for ( int i = 0; i < dataset.resolutions.length; ++i, s <<= 1 ) + for ( int i = 0; i < dataset.resolutions.length; ++i ) { - levelScales[ i ][ 0 ] = s; - levelScales[ i ][ 1 ] = s; - levelScales[ i ][ 2 ] = zScale0 * s; + levelScales[ i ] = dataset.voxelres.get( new Integer( i ).toString() ).clone(); } } return levelScales; } - public long getMinZ() + public long getOffsets( final String mode ) { + final double[][] offsets = new double[ dataset.resolutions.length ][]; + if ( mode.equals( "neariso" ) ) + { + for ( int i = 0; i < dataset.resolutions.length; ++i ) + offset + + } return dataset.offset.get( "0" )[ 2 ]; } diff --git a/src/main/java/bdv/img/remote/RemoteImageLoader.java b/src/main/java/bdv/img/remote/RemoteImageLoader.java index 430ffaac..5ac36e8b 100644 --- a/src/main/java/bdv/img/remote/RemoteImageLoader.java +++ b/src/main/java/bdv/img/remote/RemoteImageLoader.java @@ -33,18 +33,8 @@ import java.io.InputStreamReader; import java.net.URL; import java.util.HashMap; -import mpicbg.spim.data.generic.sequence.ImgLoaderHint; -import net.imglib2.FinalInterval; -import net.imglib2.RandomAccessibleInterval; -import net.imglib2.img.NativeImg; -import net.imglib2.img.basictypeaccess.volatiles.array.VolatileShortArray; -import net.imglib2.realtransform.AffineTransform3D; -import net.imglib2.type.NativeType; -import net.imglib2.type.numeric.integer.UnsignedShortType; -import net.imglib2.type.volatiles.VolatileUnsignedShortType; -import net.imglib2.util.Fraction; -import net.imglib2.util.IntervalIndexer; -import net.imglib2.view.Views; +import com.google.gson.GsonBuilder; + import bdv.AbstractViewerSetupImgLoader; import bdv.ViewerImgLoader; import bdv.img.cache.CacheHints; @@ -57,8 +47,18 @@ import bdv.img.hdf5.DimsAndExistence; import bdv.img.hdf5.MipmapInfo; import bdv.img.hdf5.ViewLevelId; import bdv.util.ConstantRandomAccessible; - -import com.google.gson.GsonBuilder; +import mpicbg.spim.data.generic.sequence.ImgLoaderHint; +import net.imglib2.FinalInterval; +import net.imglib2.RandomAccessibleInterval; +import net.imglib2.img.NativeImg; +import net.imglib2.img.basictypeaccess.volatiles.array.VolatileShortArray; +import net.imglib2.realtransform.AffineTransform3D; +import net.imglib2.type.NativeType; +import net.imglib2.type.numeric.integer.UnsignedShortType; +import net.imglib2.type.volatiles.VolatileUnsignedShortType; +import net.imglib2.util.Fraction; +import net.imglib2.util.IntervalIndexer; +import net.imglib2.view.Views; public class RemoteImageLoader implements ViewerImgLoader { @@ -245,6 +245,8 @@ public class RemoteImageLoader implements ViewerImgLoader img.setLinkedType( linkedType ); return img; } + + @Override public RandomAccessibleInterval< VolatileUnsignedShortType > getVolatileImage( final int timepointId, final int level, final ImgLoaderHint... hints ) diff --git a/src/main/java/bdv/spimdata/legacy/XmlIoSpimDataMinimalLegacy.java b/src/main/java/bdv/spimdata/legacy/XmlIoSpimDataMinimalLegacy.java index 878aaed4..76aad973 100644 --- a/src/main/java/bdv/spimdata/legacy/XmlIoSpimDataMinimalLegacy.java +++ b/src/main/java/bdv/spimdata/legacy/XmlIoSpimDataMinimalLegacy.java @@ -36,6 +36,15 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Map; +import org.jdom2.Element; + +import bdv.img.catmaid.XmlIoCatmaidImageLoader; +import bdv.img.hdf5.Hdf5ImageLoader; +import bdv.img.hdf5.Partition; +import bdv.img.openconnectome.XmlIoOpenConnectomeImageLoader; +import bdv.img.remote.XmlIoRemoteImageLoader; +import bdv.spimdata.SequenceDescriptionMinimal; +import bdv.spimdata.SpimDataMinimal; import mpicbg.spim.data.XmlHelpers; import mpicbg.spim.data.generic.sequence.BasicImgLoader; import mpicbg.spim.data.generic.sequence.BasicViewSetup; @@ -54,16 +63,6 @@ import net.imglib2.Dimensions; import net.imglib2.FinalDimensions; import net.imglib2.realtransform.AffineTransform3D; -import org.jdom2.Element; - -import bdv.img.catmaid.XmlIoCatmaidImageLoader; -import bdv.img.hdf5.Hdf5ImageLoader; -import bdv.img.hdf5.Partition; -import bdv.img.openconnectome.XmlIoOpenConnectomeImageLoader; -import bdv.img.remote.XmlIoRemoteImageLoader; -import bdv.spimdata.SequenceDescriptionMinimal; -import bdv.spimdata.SpimDataMinimal; - public class XmlIoSpimDataMinimalLegacy { // load legacy SequenceDescription xml format @@ -185,6 +184,12 @@ public class XmlIoSpimDataMinimalLegacy { return new XmlIoRemoteImageLoader().fromXml( elem, basePath, sequenceDescription ); } + // TODO add back when KNOSSOS backend has been converted to + // general block per file backend and moved into BDV +// else if ( classn.equals( "bdv.img.knossos.KnossosImageLoader" ) ) +// { +// return new XmlIoKnossosUnsignedByteImageLoader().fromXml( elem, basePath, sequenceDescription ); +// } else throw new RuntimeException( "unknown ImageLoader class" ); } -- GitLab