From 5903e3bd710bc1926e8576e4fa0a6c100a7fc907 Mon Sep 17 00:00:00 2001 From: Christian Tischer Date: Thu, 21 Mar 2024 14:31:42 +0100 Subject: [PATCH 1/3] Added axes serialization to json for export --- .../java/org/ilastik/ilastik4ij/hdf5/Hdf5.java | 3 +++ .../org/ilastik/ilastik4ij/util/ImgUtils.java | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/main/java/org/ilastik/ilastik4ij/hdf5/Hdf5.java b/src/main/java/org/ilastik/ilastik4ij/hdf5/Hdf5.java index 4512033..c076537 100644 --- a/src/main/java/org/ilastik/ilastik4ij/hdf5/Hdf5.java +++ b/src/main/java/org/ilastik/ilastik4ij/hdf5/Hdf5.java @@ -286,6 +286,9 @@ public static > void writeDataset( reversed(chunkDims), compressionLevel)) { + // Add axes tags + writer.string().setAttr(dataset.getDataSetPath(), "axistags", axesAsJSON( axes ) ); + callback.accept(0L); while (gridCursor.hasNext()) { diff --git a/src/main/java/org/ilastik/ilastik4ij/util/ImgUtils.java b/src/main/java/org/ilastik/ilastik4ij/util/ImgUtils.java index ff78db6..f64d963 100644 --- a/src/main/java/org/ilastik/ilastik4ij/util/ImgUtils.java +++ b/src/main/java/org/ilastik/ilastik4ij/util/ImgUtils.java @@ -325,6 +325,22 @@ public static List parseAxes(String json) { return axes; } + public static String axesAsJSON( List axes ) + { + JSONArray jsonAxesArray = new JSONArray(); + for ( AxisType axis : axes ) + { + JSONObject jsonAxis = new JSONObject(); + jsonAxis.put( "key", axis.getLabel() ); + jsonAxesArray.put( jsonAxis ); + } + + JSONObject root = new JSONObject(); + root.put( "axes", jsonAxesArray ); + + return root.toString(); + } + /** * Treat alpha, red, green, and blue values in {@link ARGBType} image * as a separate, last channel dimension. From fa91ac41f40c80f6b8d1d64a2bae6581259781cf Mon Sep 17 00:00:00 2001 From: k-dominik Date: Thu, 21 Mar 2024 15:18:13 +0100 Subject: [PATCH 2/3] Fix import, some style refactor --- src/main/java/org/ilastik/ilastik4ij/hdf5/Hdf5.java | 3 ++- src/main/java/org/ilastik/ilastik4ij/util/ImgUtils.java | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/ilastik/ilastik4ij/hdf5/Hdf5.java b/src/main/java/org/ilastik/ilastik4ij/hdf5/Hdf5.java index c076537..e3f7abb 100644 --- a/src/main/java/org/ilastik/ilastik4ij/hdf5/Hdf5.java +++ b/src/main/java/org/ilastik/ilastik4ij/hdf5/Hdf5.java @@ -67,6 +67,7 @@ import static org.ilastik.ilastik4ij.util.ImgUtils.DEFAULT_AXES; import static org.ilastik.ilastik4ij.util.ImgUtils.argbToMultiChannel; import static org.ilastik.ilastik4ij.util.ImgUtils.axesOf; +import static org.ilastik.ilastik4ij.util.ImgUtils.axesToJSON; import static org.ilastik.ilastik4ij.util.ImgUtils.inputBlockDims; import static org.ilastik.ilastik4ij.util.ImgUtils.outputDims; import static org.ilastik.ilastik4ij.util.ImgUtils.reversed; @@ -287,7 +288,7 @@ public static > void writeDataset( compressionLevel)) { // Add axes tags - writer.string().setAttr(dataset.getDataSetPath(), "axistags", axesAsJSON( axes ) ); + writer.string().setAttr(dataset.getDataSetPath(), "axistags", axesToJSON(axes)); callback.accept(0L); diff --git a/src/main/java/org/ilastik/ilastik4ij/util/ImgUtils.java b/src/main/java/org/ilastik/ilastik4ij/util/ImgUtils.java index f64d963..434cb7b 100644 --- a/src/main/java/org/ilastik/ilastik4ij/util/ImgUtils.java +++ b/src/main/java/org/ilastik/ilastik4ij/util/ImgUtils.java @@ -325,18 +325,18 @@ public static List parseAxes(String json) { return axes; } - public static String axesAsJSON( List axes ) + public static String axesToJSON(List axes) { JSONArray jsonAxesArray = new JSONArray(); - for ( AxisType axis : axes ) + for (AxisType axis : axes) { JSONObject jsonAxis = new JSONObject(); - jsonAxis.put( "key", axis.getLabel() ); + jsonAxis.put("key", axis.getLabel()); jsonAxesArray.put( jsonAxis ); } JSONObject root = new JSONObject(); - root.put( "axes", jsonAxesArray ); + root.put("axes", jsonAxesArray); return root.toString(); } From 2722a5fe1b120669500e476f3e4c68834cd34449 Mon Sep 17 00:00:00 2001 From: k-dominik Date: Thu, 21 Mar 2024 17:22:26 +0100 Subject: [PATCH 3/3] Add typeFlags for vigra axistags --- .../org/ilastik/ilastik4ij/util/ImgUtils.java | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/ilastik/ilastik4ij/util/ImgUtils.java b/src/main/java/org/ilastik/ilastik4ij/util/ImgUtils.java index 434cb7b..fd6587f 100644 --- a/src/main/java/org/ilastik/ilastik4ij/util/ImgUtils.java +++ b/src/main/java/org/ilastik/ilastik4ij/util/ImgUtils.java @@ -328,11 +328,30 @@ public static List parseAxes(String json) { public static String axesToJSON(List axes) { JSONArray jsonAxesArray = new JSONArray(); - for (AxisType axis : axes) + List axes_for_serialization = new ArrayList<>(axes); + Collections.reverse(axes_for_serialization); + for (AxisType axis : axes_for_serialization) { JSONObject jsonAxis = new JSONObject(); - jsonAxis.put("key", axis.getLabel()); - jsonAxesArray.put( jsonAxis ); + String label = axis.getLabel().toLowerCase(); + int vigraType; + String vigraKey; + if (axis.isSpatial()){ + vigraType = 2; + vigraKey = label; + } else if (label.equals("time")) { + vigraType = 8; + vigraKey = "t"; + } else if (label.equals("channel")) { + vigraType = 1; + vigraKey = "c"; + } else { + throw new IllegalArgumentException( + String.format("Unknown axis type found with label %s.", label)); + } + jsonAxis.put("key", vigraKey); + jsonAxis.put("typeFlags", vigraType); + jsonAxesArray.put(jsonAxis); } JSONObject root = new JSONObject();