Skip to content

Commit d61eddb

Browse files
authored
Merge pull request #190 from saalfeldlab/dev
update n5 artifacts
2 parents 779e1a0 + 1825b97 commit d61eddb

9 files changed

Lines changed: 92 additions & 48 deletions

pom.xml

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
<groupId>sc.fiji</groupId>
1313
<artifactId>bigwarp_fiji</artifactId>
14-
<version>9.3.3-SNAPSHOT</version>
14+
<version>9.4.0-SNAPSHOT</version>
1515

1616
<name>BigWarp plugin for Fiji</name>
1717
<description>A tool for manual pointwise deformable registration using bigdataviewer.</description>
@@ -123,6 +123,22 @@
123123

124124
<!-- NB: Deploy releases to the SciJava Maven repository. -->
125125
<releaseProfiles>sign,deploy-to-scijava</releaseProfiles>
126+
127+
<bigdataviewer-core.version>10.6.1</bigdataviewer-core.version>
128+
<bigdataviewer-vistools.version>1.0.0-beta-36</bigdataviewer-vistools.version>
129+
130+
<n5.version>4.0.0</n5.version>
131+
<n5-aws-s3.version>5.0.0</n5-aws-s3.version>
132+
<n5-blosc.version>2.0.0</n5-blosc.version>
133+
<n5-google-cloud.version>6.0.0</n5-google-cloud.version>
134+
<n5-hdf5.version>3.0.0</n5-hdf5.version>
135+
<n5-ij.version>5.0.0</n5-ij.version>
136+
<n5-imglib2.version>8.0.0</n5-imglib2.version>
137+
<n5-universe.version>3.0.0</n5-universe.version>
138+
<n5-viewer_fiji.version>6.2.0</n5-viewer_fiji.version>
139+
<n5-zarr.version>2.0.0</n5-zarr.version>
140+
<n5-zstandard.version>2.0.0</n5-zstandard.version>
141+
126142
</properties>
127143

128144
<repositories>

src/main/java/bdv/gui/BigWarpInitDialog.java

Lines changed: 17 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
import javax.swing.tree.TreePath;
5757
import javax.swing.tree.TreeSelectionModel;
5858

59+
import org.janelia.saalfeldlab.n5.N5Exception.N5IOException;
5960
import org.janelia.saalfeldlab.n5.bdv.N5ViewerTreeCellRenderer;
6061
import org.janelia.saalfeldlab.n5.ij.N5Importer.N5BasePathFun;
6162
import org.janelia.saalfeldlab.n5.ij.N5Importer.N5ViewerReaderFun;
@@ -144,8 +145,6 @@ public class BigWarpInitDialog extends JFrame
144145

145146
private boolean initialRecorderState;
146147

147-
148-
149148
public BigWarpInitDialog( final String title )
150149
{
151150
this( title, null );
@@ -187,32 +186,16 @@ public BigWarpInitDialog( final String title, final DatasetService datasetServic
187186
};
188187
}
189188

190-
public static void main( String[] args ) {
191-
192-
final ImageJ ij = new ImageJ();
193-
// runBigWarp( "/home/john/tmp/boats_lm.csv",
194-
// new String[]{ "/home/john/tmp/boats.tif", "/home/john/tmp/boats.tif" },
195-
// new String[]{ "true", "false" },
196-
// null);
197-
198-
// runBigWarp( "/home/john/tmp/boats_lm2.csv",
199-
// new String[]{ "/home/john/tmp/boats.tif", "/home/john/tmp/boats-HR.tif" },
200-
// new String[]{ "true", "false" },
201-
// null);
202-
203-
// runBigWarp( "file:///home/john/Documents/presentations/20231130_BdvCommunity/demo/boats-hr-project.json ",
204-
// null,
205-
// null,
206-
// null);
207-
208-
new BigWarpInitDialog("bigwarp test").createAndShow();
209-
}
210-
211189
public void setInitialRecorderState( final boolean initialRecorderState )
212190
{
213191
this.initialRecorderState = initialRecorderState;
214192
}
215193

194+
public static < T extends NativeType<T> > BigWarp<?> runBigWarp( final String projectLandmarkPath)
195+
{
196+
return runBigWarp( projectLandmarkPath, null, null, null );
197+
}
198+
216199
public static < T extends NativeType<T> > BigWarp<?> runBigWarp( final String projectLandmarkPath, final String[] images, final String[] moving, final String[] transforms )
217200
{
218201
final String projectLandmarkPathTrim = projectLandmarkPath == null ? null : projectLandmarkPath.trim();
@@ -617,11 +600,18 @@ public JPanel createContent()
617600
clist.insets = new Insets(OUTER_PAD, BUTTON_PAD, MID_PAD, BUTTON_PAD);
618601

619602
sourceTableModel = new BigWarpSourceTableModel( t -> {
620-
final String val = NgffTransformations.detectTransforms(t);
621-
if (val != null)
622-
showMessage(1000, "Found transformation");
603+
try {
604+
final String val = NgffTransformations.detectTransforms(t);
605+
if( val == null )
606+
showMessage(1000, "No transformation found");
607+
else
608+
showMessage(1000, "Found transformation");
623609

624-
return val;
610+
return val;
611+
} catch( N5IOException e ) {
612+
System.err.println(e.getLocalizedMessage());
613+
}
614+
return null;
625615
});
626616

627617
final BigWarpSourceListPanel srcListPanel = new BigWarpSourceListPanel( sourceTableModel );

src/main/java/bdv/gui/ExportDisplacementFieldFrame.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -777,7 +777,11 @@ public DeformationFieldExportParameters getParams()
777777

778778
public void run()
779779
{
780-
BigWarpToDeformationFieldPlugIn.runFromParameters( getParams(), data, ltm, bwTransform );
780+
new Thread() {
781+
public void run() {
782+
BigWarpToDeformationFieldPlugIn.runFromParameters(getParams(), data, ltm, bwTransform);
783+
}
784+
}.start();
781785
}
782786

783787
public String macroRecord()

src/main/java/bdv/ij/ApplyBigwarpPlugin.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@
4444
import org.janelia.saalfeldlab.n5.imglib2.N5Utils;
4545
import org.janelia.saalfeldlab.n5.universe.N5Factory;
4646
import org.janelia.saalfeldlab.n5.universe.metadata.axes.Axis;
47-
import org.janelia.saalfeldlab.n5.universe.metadata.ome.ngff.v04.OmeNgffMetadata;
48-
import org.janelia.saalfeldlab.n5.universe.metadata.ome.ngff.v04.OmeNgffMetadataParser;
47+
import org.janelia.saalfeldlab.n5.universe.metadata.ome.ngff.OmeNgffMetadata;
48+
import org.janelia.saalfeldlab.n5.universe.metadata.ome.ngff.OmeNgffMetadataParser;
4949

5050
import bdv.export.ProgressWriter;
5151
import bdv.ij.util.ProgressWriterIJ;
@@ -1375,6 +1375,7 @@ public static <S, T extends NativeType<T> & NumericType<T>> void runN5Export(
13751375

13761376
// build metadata
13771377
final OmeNgffMetadataParser parser = new OmeNgffMetadataParser();
1378+
final String omeZarrVersion = "0.5";
13781379
final String[] axesLabels = nd == 2 ? new String[]{"x", "y"} : new String[]{"x", "y", "z"};
13791380
final Axis[] axes = new Axis[nd];
13801381
for (int i = 0; i < nd; i++)
@@ -1426,7 +1427,7 @@ public static <S, T extends NativeType<T> & NumericType<T>> void runN5Export(
14261427
imgToWrite = img;
14271428

14281429
final String name = originalMovingSource.getSpimSource().getName();
1429-
final OmeNgffMetadata metadata = OmeNgffMetadata.buildForWriting(nd, name, axes, new String[]{"s0"},
1430+
final OmeNgffMetadata metadata = OmeNgffMetadata.buildForWriting(nd, name, omeZarrVersion, axes, new String[]{"s0"},
14301431
new double[][]{resolution}, new double[][]{offset});
14311432

14321433
try
@@ -1492,6 +1493,7 @@ public static <S,T extends NativeType<T> & NumericType<T>> void runN5Export(
14921493

14931494
// build metadata
14941495
final OmeNgffMetadataParser parser = new OmeNgffMetadataParser();
1496+
final String omeZarrVersion = "0.5";
14951497
final String[] axesLabels = nd == 2 ? new String[]{"x", "y"} : new String[]{"x", "y", "z"};
14961498
final Axis[] axes = new Axis[nd];
14971499
for (int i = 0; i < nd; i++)
@@ -1534,7 +1536,7 @@ public static <S,T extends NativeType<T> & NumericType<T>> void runN5Export(
15341536
imgToWrite = img;
15351537

15361538
final String destDataset = dataset;
1537-
final OmeNgffMetadata metadata = OmeNgffMetadata.buildForWriting(nd, srcName, axes, new String[]{"s0"},
1539+
final OmeNgffMetadata metadata = OmeNgffMetadata.buildForWriting(nd, srcName, omeZarrVersion, axes, new String[]{"s0"},
15381540
new double[][]{resolution}, new double[][]{offsetPhysical});
15391541

15401542
try

src/main/java/bdv/img/WarpedSource.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,8 @@ public boolean doBoundingBoxCulling()
117117
return ( !isTransformed ) && ( source.doBoundingBoxCulling() );
118118
}
119119

120-
public void updateTransform( RealTransform xfm )
121-
{
120+
public void updateTransform( final RealTransform xfm ) {
121+
122122
if( xfm instanceof InvertibleRealTransform )
123123
this.xfm = (InvertibleRealTransform)xfm;
124124
else

src/main/java/bigwarp/BigWarpInit.java

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
import org.janelia.saalfeldlab.n5.universe.metadata.N5ViewerMultiscaleMetadataParser;
6060
import org.janelia.saalfeldlab.n5.universe.metadata.SpatialMetadata;
6161
import org.janelia.saalfeldlab.n5.universe.metadata.canonical.CanonicalMetadataParser;
62-
import org.janelia.saalfeldlab.n5.universe.metadata.ome.ngff.v04.OmeNgffMetadataParser;
62+
import org.janelia.saalfeldlab.n5.universe.metadata.ome.ngff.OmeNgffMetadataParser;
6363
import org.janelia.saalfeldlab.n5.zarr.N5ZarrReader;
6464

6565
import bdv.BigDataViewer;
@@ -556,9 +556,22 @@ public static < T > LinkedHashMap< Source< T >, SourceInfo > createSources( fina
556556
{
557557
final N5URI n5URL = new N5URI( encodedUri.getSchemeSpecificPart() );
558558
final String firstScheme = encodedUri.getScheme().toLowerCase();
559-
final N5Reader n5reader;
560-
switch ( firstScheme.toLowerCase() )
561-
{
559+
N5Reader n5reader;
560+
561+
switch (firstScheme) {
562+
case "n5":
563+
case "zarr":
564+
case "h5":
565+
case "hdf5":
566+
case "hdf":
567+
n5reader = new N5Factory().openReader( n5URL.getContainerPath() );
568+
break;
569+
default:
570+
break;
571+
}
572+
573+
// TODO the switch statements below won't for some cloud/zarr sources for example.
574+
switch (firstScheme) {
562575
case "n5":
563576
n5reader = new N5Factory().openReader( n5URL.getContainerPath() );
564577
break;
@@ -571,11 +584,15 @@ public static < T > LinkedHashMap< Source< T >, SourceInfo > createSources( fina
571584
n5reader = new N5HDF5Reader( n5URL.getContainerPath() );
572585
break;
573586
default:
574-
throw new URISyntaxException( firstScheme, "Unsupported Top Level Protocol" );
587+
n5reader = new N5Factory().openReader( n5URL.getContainerPath() );
588+
break;
575589
}
576590

577-
final SourceInfo info = loadN5SourceInfo(bwData, n5reader, n5URL.getGroupPath(), sharedQueue, setupId, isMoving );
578-
sourceStateMap.put( (Source<T>)info.getSourceAndConverter().getSpimSource(), info );
591+
if (n5reader == null)
592+
throw new URISyntaxException(firstScheme, "Unsupported Top Level Protocol");
593+
594+
final Source< T > source = (Source<T>)loadN5Source( n5reader, n5URL.getGroupPath(), sharedQueue );
595+
sourceStateMap.put( source, new SourceInfo( setupId, isMoving, n5URL.getGroupPath() ) );
579596
}
580597
else
581598
{

src/main/java/bigwarp/scripts/ReadDisplacementField.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
import org.janelia.saalfeldlab.n5.universe.metadata.axes.Axis;
3535
import org.janelia.saalfeldlab.n5.universe.metadata.axes.AxisUtils;
3636
import org.janelia.saalfeldlab.n5.universe.metadata.axes.CoordinateSystem;
37-
import org.janelia.saalfeldlab.n5.universe.metadata.ome.ngff.v05.TransformUtils;
37+
import org.janelia.saalfeldlab.n5.universe.metadata.ome.ngff.coordinateTransformations.TransformUtils;
3838
import org.janelia.saalfeldlab.n5.universe.metadata.ome.ngff.v05.transformations.CoordinateTransform;
3939
import org.scijava.command.Command;
4040
import org.scijava.log.LogService;
@@ -43,16 +43,13 @@
4343
import org.scijava.ui.UIService;
4444

4545
import bigwarp.transforms.NgffTransformations;
46-
import ij.IJ;
47-
import ij.ImagePlus;
4846
import net.imagej.Dataset;
4947
import net.imagej.DatasetService;
5048
import net.imagej.axis.CalibratedAxis;
5149
import net.imagej.axis.DefaultAxisType;
5250
import net.imagej.axis.DefaultLinearAxis;
5351
import net.imglib2.RandomAccessibleInterval;
5452
import net.imglib2.cache.img.CachedCellImg;
55-
import net.imglib2.img.display.imagej.ImageJFunctions;
5653
import net.imglib2.realtransform.AffineGet;
5754
import net.imglib2.type.NativeType;
5855
import net.imglib2.type.numeric.RealType;
@@ -208,7 +205,6 @@ private CalibratedAxis[] createAxesNgff(final N5Reader n5, final String n5Datase
208205
csAxes = css[0].getAxes();
209206

210207
final AffineGet affine = TransformUtils.toAffine(cts[0], csAxes.length);
211-
212208
final int nd = csAxes.length;
213209
axes = new CalibratedAxis[nd];
214210

src/main/java/bigwarp/scripts/WriteDisplacementField.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
import org.janelia.saalfeldlab.n5.N5Writer;
3030
import org.janelia.saalfeldlab.n5.ij.N5ScalePyramidExporter;
3131
import org.janelia.saalfeldlab.n5.imglib2.N5DisplacementField;
32+
import org.janelia.saalfeldlab.n5.parse.BlockSizeParsers;
33+
import org.janelia.saalfeldlab.n5.parse.BlockSizeParsers.BlockSizeParser;
3234
import org.janelia.saalfeldlab.n5.universe.N5Factory;
3335
import org.janelia.saalfeldlab.n5.universe.metadata.ome.ngff.v05.transformations.DisplacementFieldCoordinateTransform;
3436
import org.scijava.command.Command;
@@ -146,7 +148,9 @@ public <T extends RealType<T> & NativeType<T>, S extends RealType<S> & NativeTyp
146148
}
147149

148150
validateAndWarn();
149-
final int[] chunkSizeSpatial = N5ScalePyramidExporter.parseBlockSize(chunkSizeArg, spatialDims);
151+
152+
final BlockSizeParser blkParser = new BlockSizeParsers.BlockSizeParser(spatialDims);
153+
final int[] chunkSizeSpatial = blkParser.parse(chunkSizeArg);
150154
final int[] chunkSize = IntStream.concat(
151155
IntStream.of(vectorSize),
152156
Arrays.stream(chunkSizeSpatial)).toArray();

src/main/java/bigwarp/transforms/NgffTransformations.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
import net.imglib2.img.array.ArrayImgs;
6868
import net.imglib2.img.basictypeaccess.array.DoubleArray;
6969
import net.imglib2.realtransform.AffineGet;
70+
import net.imglib2.realtransform.AffineTransform3D;
7071
import net.imglib2.realtransform.InvertibleRealTransform;
7172
import net.imglib2.realtransform.RealTransform;
7273
import net.imglib2.realtransform.ScaleGet;
@@ -80,7 +81,21 @@
8081

8182
public class NgffTransformations
8283
{
84+
85+
public static void main( String[] args ) {
8386

87+
final AffineCoordinateTransform ct = new AffineCoordinateTransform(
88+
"name", "inspace", "outspace", new AffineTransform3D().getRowPackedCopy());
89+
ct.setSerializeAsFlatArray(true);
90+
// ct.serializeAsFlatArray();
91+
92+
final N5Writer n5 = new N5Factory().gsonBuilder(gsonBuilder()).openWriter(
93+
"/home/john/tests/bw-tform-graph/fly-templates.n5");
94+
final String dset = "transforms/test";
95+
96+
addCoordinateTransformations(n5, dset, ct);
97+
}
98+
8499
public enum TransformField {
85100
DISPLACEMENT, COORDINATE
86101
};

0 commit comments

Comments
 (0)