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