diff --git a/README.md b/README.md index faf0cf2f..e86faa55 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,15 @@ For comprehensive documentation, see the [**User Guide**](USERGUIDE.md), which i - Best practices - Troubleshooting +## Conventions + +zarr-java also ships support for Zarr conventions built on top of the core format, under the `dev.zarr.conventions` +namespace. Currently this includes [OME-Zarr](https://ngff.openmicroscopy.org/) (v0.4, v0.5 and v0.6) in +`dev.zarr.conventions.ome`; see the [**OME-Zarr Guide**](USERGUIDE-OME-ZARR.md). + +We are open to hosting other conventions as well. If you would like to add one, please open an issue or a pull request +that places it in its own `dev.zarr.conventions.` package. + ## Quick Usage Example ```java diff --git a/USERGUIDE-OME-ZARR.md b/USERGUIDE-OME-ZARR.md index 313945af..31e0df2d 100644 --- a/USERGUIDE-OME-ZARR.md +++ b/USERGUIDE-OME-ZARR.md @@ -2,7 +2,7 @@ ## Scope and supported versions -`dev.zarr.zarrjava.experimental.ome` supports: +`dev.zarr.conventions.ome` supports: - v0.4 (Zarr v2 layout) - v0.5 (Zarr v3 layout) @@ -64,7 +64,7 @@ If you need the raw version-specific metadata model instead of normalized `Multi ## v0.6 Scene metadata -Scene roots (groups with `ome.scene`) are supported via `dev.zarr.zarrjava.experimental.ome.v0_6.Scene`: +Scene roots (groups with `ome.scene`) are supported via `dev.zarr.conventions.ome.v0_6.Scene`: - `Scene.openScene(StoreHandle)` / `Scene.open(StoreHandle)` - `Scene.createScene(StoreHandle, SceneMetadata)` / `Scene.create(...)` @@ -79,9 +79,9 @@ Notes: ## Read example ```java -import dev.zarr.zarrjava.experimental.ome.MultiscaleImage; -import dev.zarr.zarrjava.experimental.ome.Plate; -import dev.zarr.zarrjava.experimental.ome.Well; +import dev.zarr.conventions.ome.MultiscaleImage; +import dev.zarr.conventions.ome.Plate; +import dev.zarr.conventions.ome.Well; import dev.zarr.zarrjava.store.FilesystemStore; import dev.zarr.zarrjava.store.StoreHandle; @@ -90,7 +90,7 @@ MultiscaleImage image = MultiscaleImage.open(imageHandle); int scaleCount = image.getScaleLevelCount(); java.util.List axisNames = image.getAxisNames(); -dev.zarr.zarrjava.experimental.ome.metadata.MultiscalesEntry entry0 = image.getMultiscaleNode(0); +dev.zarr.conventions.ome.metadata.MultiscalesEntry entry0 = image.getMultiscaleNode(0); dev.zarr.zarrjava.core.Array s0 = image.openScaleLevel(0); ucar.ma2.Array full = s0.read(); @@ -112,9 +112,9 @@ MultiscaleImage wellImage = well.openImage("0"); Creation is version-specific, but the pattern is the same: create node with version metadata, then append levels/datasets with scale transforms. For example, for v0.5: ```java -import dev.zarr.zarrjava.experimental.ome.metadata.Axis; -import dev.zarr.zarrjava.experimental.ome.metadata.CoordinateTransformation; -import dev.zarr.zarrjava.experimental.ome.metadata.MultiscalesEntry; +import dev.zarr.conventions.ome.metadata.Axis; +import dev.zarr.conventions.ome.metadata.CoordinateTransformation; +import dev.zarr.conventions.ome.metadata.MultiscalesEntry; import dev.zarr.zarrjava.store.FilesystemStore; import dev.zarr.zarrjava.store.StoreHandle; import dev.zarr.zarrjava.v3.Array; @@ -128,7 +128,7 @@ MultiscalesEntry ms = new MultiscalesEntry( Arrays.asList(new Axis("y", "space", "micrometer"), new Axis("x", "space", "micrometer")), Collections.emptyList()); ); -dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage written = dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage.create(out, ms); +dev.zarr.conventions.ome.v0_5.MultiscaleImage written = dev.zarr.conventions.ome.v0_5.MultiscaleImage.create(out, ms); written.createScaleLevel( "s0", diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/MultiscaleImage.java b/src/main/java/dev/zarr/conventions/ome/MultiscaleImage.java similarity index 90% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/MultiscaleImage.java rename to src/main/java/dev/zarr/conventions/ome/MultiscaleImage.java index eb25d178..7af5b641 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/MultiscaleImage.java +++ b/src/main/java/dev/zarr/conventions/ome/MultiscaleImage.java @@ -1,9 +1,9 @@ -package dev.zarr.zarrjava.experimental.ome; +package dev.zarr.conventions.ome; import dev.zarr.zarrjava.ZarrException; import dev.zarr.zarrjava.core.Node; -import dev.zarr.zarrjava.experimental.ome.metadata.MultiscalesEntry; -import dev.zarr.zarrjava.experimental.ome.metadata.OmeroMetadata; +import dev.zarr.conventions.ome.metadata.MultiscalesEntry; +import dev.zarr.conventions.ome.metadata.OmeroMetadata; import dev.zarr.zarrjava.store.StoreHandle; import dev.zarr.zarrjava.utils.Utils; @@ -57,7 +57,7 @@ public interface MultiscaleImage { default List getAxisNames() throws ZarrException { MultiscalesEntry entry = getMultiscaleNode(0); List names = new ArrayList<>(); - for (dev.zarr.zarrjava.experimental.ome.metadata.Axis axis : entry.axes) { + for (dev.zarr.conventions.ome.metadata.Axis axis : entry.axes) { names.add(axis.name); } return names; @@ -129,9 +129,9 @@ static MultiscaleImage open(StoreHandle storeHandle) throws IOException, ZarrExc com.fasterxml.jackson.databind.JsonNode omeNode = attrs.get("ome"); String version = omeNode.has("version") ? omeNode.get("version").asText() : ""; if (version.startsWith("0.6")) { - return dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage.openMultiscaleImage(storeHandle); + return dev.zarr.conventions.ome.v0_6.MultiscaleImage.openMultiscaleImage(storeHandle); } - return dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage.openMultiscaleImage(storeHandle); + return dev.zarr.conventions.ome.v0_5.MultiscaleImage.openMultiscaleImage(storeHandle); } } @@ -142,7 +142,7 @@ static MultiscaleImage open(StoreHandle storeHandle) throws IOException, ZarrExc byte[] bytes = Utils.toArray(zattrs.readNonNull()); com.fasterxml.jackson.databind.JsonNode root = mapper.readTree(bytes); if (root.has("multiscales")) { - return dev.zarr.zarrjava.experimental.ome.v0_4.MultiscaleImage.openMultiscaleImage(storeHandle); + return dev.zarr.conventions.ome.v0_4.MultiscaleImage.openMultiscaleImage(storeHandle); } } diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/MultiscalesMetadataImage.java b/src/main/java/dev/zarr/conventions/ome/MultiscalesMetadataImage.java similarity index 89% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/MultiscalesMetadataImage.java rename to src/main/java/dev/zarr/conventions/ome/MultiscalesMetadataImage.java index eddc1a58..949e857d 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/MultiscalesMetadataImage.java +++ b/src/main/java/dev/zarr/conventions/ome/MultiscalesMetadataImage.java @@ -1,8 +1,8 @@ -package dev.zarr.zarrjava.experimental.ome; +package dev.zarr.conventions.ome; import dev.zarr.zarrjava.ZarrException; -import dev.zarr.zarrjava.experimental.ome.metadata.transform.CoordinateTransformation; -import dev.zarr.zarrjava.experimental.ome.metadata.MultiscalesEntry; +import dev.zarr.conventions.ome.metadata.transform.CoordinateTransformation; +import dev.zarr.conventions.ome.metadata.MultiscalesEntry; import java.io.IOException; import java.util.List; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappers.java b/src/main/java/dev/zarr/conventions/ome/OmeObjectMappers.java similarity index 98% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappers.java rename to src/main/java/dev/zarr/conventions/ome/OmeObjectMappers.java index 7a9739b6..fce42dbe 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappers.java +++ b/src/main/java/dev/zarr/conventions/ome/OmeObjectMappers.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome; +package dev.zarr.conventions.ome; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.DeserializationContext; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeV2Group.java b/src/main/java/dev/zarr/conventions/ome/OmeV2Group.java similarity index 98% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/OmeV2Group.java rename to src/main/java/dev/zarr/conventions/ome/OmeV2Group.java index a65dbcd0..7a4a3ccc 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeV2Group.java +++ b/src/main/java/dev/zarr/conventions/ome/OmeV2Group.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome; +package dev.zarr.conventions.ome; import com.fasterxml.jackson.core.type.TypeReference; import dev.zarr.zarrjava.ZarrException; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeV3Group.java b/src/main/java/dev/zarr/conventions/ome/OmeV3Group.java similarity index 97% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/OmeV3Group.java rename to src/main/java/dev/zarr/conventions/ome/OmeV3Group.java index dcafd3d3..4236ad6f 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeV3Group.java +++ b/src/main/java/dev/zarr/conventions/ome/OmeV3Group.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome; +package dev.zarr.conventions.ome; import com.fasterxml.jackson.core.type.TypeReference; import dev.zarr.zarrjava.ZarrException; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/Plate.java b/src/main/java/dev/zarr/conventions/ome/Plate.java similarity index 85% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/Plate.java rename to src/main/java/dev/zarr/conventions/ome/Plate.java index c8ac2777..7b6e68ed 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/Plate.java +++ b/src/main/java/dev/zarr/conventions/ome/Plate.java @@ -1,8 +1,8 @@ -package dev.zarr.zarrjava.experimental.ome; +package dev.zarr.conventions.ome; import dev.zarr.zarrjava.ZarrException; import dev.zarr.zarrjava.core.Node; -import dev.zarr.zarrjava.experimental.ome.metadata.PlateMetadata; +import dev.zarr.conventions.ome.metadata.PlateMetadata; import dev.zarr.zarrjava.store.StoreHandle; import dev.zarr.zarrjava.utils.Utils; @@ -43,9 +43,9 @@ static Plate open(StoreHandle storeHandle) throws IOException, ZarrException { com.fasterxml.jackson.databind.JsonNode omeNode = attrs.get("ome"); String version = omeNode.has("version") ? omeNode.get("version").asText() : ""; if (version.startsWith("0.6")) { - return dev.zarr.zarrjava.experimental.ome.v0_6.Plate.openPlate(storeHandle); + return dev.zarr.conventions.ome.v0_6.Plate.openPlate(storeHandle); } - return dev.zarr.zarrjava.experimental.ome.v0_5.Plate.openPlate(storeHandle); + return dev.zarr.conventions.ome.v0_5.Plate.openPlate(storeHandle); } } @@ -56,7 +56,7 @@ static Plate open(StoreHandle storeHandle) throws IOException, ZarrException { byte[] bytes = Utils.toArray(zattrs.readNonNull()); com.fasterxml.jackson.databind.JsonNode root = mapper.readTree(bytes); if (root.has("plate")) { - return dev.zarr.zarrjava.experimental.ome.v0_4.Plate.openPlate(storeHandle); + return dev.zarr.conventions.ome.v0_4.Plate.openPlate(storeHandle); } } diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/Well.java b/src/main/java/dev/zarr/conventions/ome/Well.java similarity index 85% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/Well.java rename to src/main/java/dev/zarr/conventions/ome/Well.java index be4f5366..3524eff5 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/Well.java +++ b/src/main/java/dev/zarr/conventions/ome/Well.java @@ -1,8 +1,8 @@ -package dev.zarr.zarrjava.experimental.ome; +package dev.zarr.conventions.ome; import dev.zarr.zarrjava.ZarrException; import dev.zarr.zarrjava.core.Node; -import dev.zarr.zarrjava.experimental.ome.metadata.WellMetadata; +import dev.zarr.conventions.ome.metadata.WellMetadata; import dev.zarr.zarrjava.store.StoreHandle; import dev.zarr.zarrjava.utils.Utils; @@ -43,9 +43,9 @@ static Well open(StoreHandle storeHandle) throws IOException, ZarrException { com.fasterxml.jackson.databind.JsonNode omeNode = attrs.get("ome"); String version = omeNode.has("version") ? omeNode.get("version").asText() : ""; if (version.startsWith("0.6")) { - return dev.zarr.zarrjava.experimental.ome.v0_6.Well.openWell(storeHandle); + return dev.zarr.conventions.ome.v0_6.Well.openWell(storeHandle); } - return dev.zarr.zarrjava.experimental.ome.v0_5.Well.openWell(storeHandle); + return dev.zarr.conventions.ome.v0_5.Well.openWell(storeHandle); } } @@ -56,7 +56,7 @@ static Well open(StoreHandle storeHandle) throws IOException, ZarrException { byte[] bytes = Utils.toArray(zattrs.readNonNull()); com.fasterxml.jackson.databind.JsonNode root = mapper.readTree(bytes); if (root.has("well")) { - return dev.zarr.zarrjava.experimental.ome.v0_4.Well.openWell(storeHandle); + return dev.zarr.conventions.ome.v0_4.Well.openWell(storeHandle); } } diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Acquisition.java b/src/main/java/dev/zarr/conventions/ome/metadata/Acquisition.java similarity index 96% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Acquisition.java rename to src/main/java/dev/zarr/conventions/ome/metadata/Acquisition.java index d7ae004b..fc02ed29 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Acquisition.java +++ b/src/main/java/dev/zarr/conventions/ome/metadata/Acquisition.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.conventions.ome.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Axis.java b/src/main/java/dev/zarr/conventions/ome/metadata/Axis.java similarity index 95% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Axis.java rename to src/main/java/dev/zarr/conventions/ome/metadata/Axis.java index 0b24c9d6..1a9d9ea5 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Axis.java +++ b/src/main/java/dev/zarr/conventions/ome/metadata/Axis.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.conventions.ome.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Dataset.java b/src/main/java/dev/zarr/conventions/ome/metadata/Dataset.java similarity index 83% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Dataset.java rename to src/main/java/dev/zarr/conventions/ome/metadata/Dataset.java index 8d928dcc..e38e3aca 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Dataset.java +++ b/src/main/java/dev/zarr/conventions/ome/metadata/Dataset.java @@ -1,8 +1,8 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.conventions.ome.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import dev.zarr.zarrjava.experimental.ome.metadata.transform.CoordinateTransformation; +import dev.zarr.conventions.ome.metadata.transform.CoordinateTransformation; import java.util.List; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/MultiscalesEntry.java b/src/main/java/dev/zarr/conventions/ome/metadata/MultiscalesEntry.java similarity index 93% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/MultiscalesEntry.java rename to src/main/java/dev/zarr/conventions/ome/metadata/MultiscalesEntry.java index 5223eb56..f457c2c1 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/MultiscalesEntry.java +++ b/src/main/java/dev/zarr/conventions/ome/metadata/MultiscalesEntry.java @@ -1,9 +1,9 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.conventions.ome.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; -import dev.zarr.zarrjava.experimental.ome.metadata.transform.CoordinateTransformation; +import dev.zarr.conventions.ome.metadata.transform.CoordinateTransformation; import javax.annotation.Nullable; import java.util.ArrayList; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/NamedEntry.java b/src/main/java/dev/zarr/conventions/ome/metadata/NamedEntry.java similarity index 90% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/NamedEntry.java rename to src/main/java/dev/zarr/conventions/ome/metadata/NamedEntry.java index 24b94b28..01ce9ddb 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/NamedEntry.java +++ b/src/main/java/dev/zarr/conventions/ome/metadata/NamedEntry.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.conventions.ome.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeMetadata.java b/src/main/java/dev/zarr/conventions/ome/metadata/OmeMetadata.java similarity index 97% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeMetadata.java rename to src/main/java/dev/zarr/conventions/ome/metadata/OmeMetadata.java index 4e8920a3..b4dbd877 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeMetadata.java +++ b/src/main/java/dev/zarr/conventions/ome/metadata/OmeMetadata.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.conventions.ome.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroChannel.java b/src/main/java/dev/zarr/conventions/ome/metadata/OmeroChannel.java similarity index 96% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroChannel.java rename to src/main/java/dev/zarr/conventions/ome/metadata/OmeroChannel.java index 4a82e675..7ea263ef 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroChannel.java +++ b/src/main/java/dev/zarr/conventions/ome/metadata/OmeroChannel.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.conventions.ome.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroMetadata.java b/src/main/java/dev/zarr/conventions/ome/metadata/OmeroMetadata.java similarity index 98% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroMetadata.java rename to src/main/java/dev/zarr/conventions/ome/metadata/OmeroMetadata.java index 21cb4e98..a1f3ccd2 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroMetadata.java +++ b/src/main/java/dev/zarr/conventions/ome/metadata/OmeroMetadata.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.conventions.ome.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroRdefs.java b/src/main/java/dev/zarr/conventions/ome/metadata/OmeroRdefs.java similarity index 94% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroRdefs.java rename to src/main/java/dev/zarr/conventions/ome/metadata/OmeroRdefs.java index e83c0b22..46459f52 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroRdefs.java +++ b/src/main/java/dev/zarr/conventions/ome/metadata/OmeroRdefs.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.conventions.ome.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroWindow.java b/src/main/java/dev/zarr/conventions/ome/metadata/OmeroWindow.java similarity index 94% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroWindow.java rename to src/main/java/dev/zarr/conventions/ome/metadata/OmeroWindow.java index db10f943..6daf1f73 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroWindow.java +++ b/src/main/java/dev/zarr/conventions/ome/metadata/OmeroWindow.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.conventions.ome.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/PlateMetadata.java b/src/main/java/dev/zarr/conventions/ome/metadata/PlateMetadata.java similarity index 96% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/PlateMetadata.java rename to src/main/java/dev/zarr/conventions/ome/metadata/PlateMetadata.java index 123db718..f46390bd 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/PlateMetadata.java +++ b/src/main/java/dev/zarr/conventions/ome/metadata/PlateMetadata.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.conventions.ome.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellImage.java b/src/main/java/dev/zarr/conventions/ome/metadata/WellImage.java similarity index 92% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellImage.java rename to src/main/java/dev/zarr/conventions/ome/metadata/WellImage.java index 1f1a2eba..d8938b90 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellImage.java +++ b/src/main/java/dev/zarr/conventions/ome/metadata/WellImage.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.conventions.ome.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellMetadata.java b/src/main/java/dev/zarr/conventions/ome/metadata/WellMetadata.java similarity index 93% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellMetadata.java rename to src/main/java/dev/zarr/conventions/ome/metadata/WellMetadata.java index 661d955c..250568ad 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellMetadata.java +++ b/src/main/java/dev/zarr/conventions/ome/metadata/WellMetadata.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.conventions.ome.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellRef.java b/src/main/java/dev/zarr/conventions/ome/metadata/WellRef.java similarity index 94% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellRef.java rename to src/main/java/dev/zarr/conventions/ome/metadata/WellRef.java index f34a92c4..c4eae62d 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellRef.java +++ b/src/main/java/dev/zarr/conventions/ome/metadata/WellRef.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.conventions.ome.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/CoordinateTransformation.java b/src/main/java/dev/zarr/conventions/ome/metadata/transform/CoordinateTransformation.java similarity index 96% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/CoordinateTransformation.java rename to src/main/java/dev/zarr/conventions/ome/metadata/transform/CoordinateTransformation.java index 8406a2e7..70014c2f 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/CoordinateTransformation.java +++ b/src/main/java/dev/zarr/conventions/ome/metadata/transform/CoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata.transform; +package dev.zarr.conventions.ome.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonSubTypes; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/GenericCoordinateTransformation.java b/src/main/java/dev/zarr/conventions/ome/metadata/transform/GenericCoordinateTransformation.java similarity index 93% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/GenericCoordinateTransformation.java rename to src/main/java/dev/zarr/conventions/ome/metadata/transform/GenericCoordinateTransformation.java index a1045cde..6fd00f10 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/GenericCoordinateTransformation.java +++ b/src/main/java/dev/zarr/conventions/ome/metadata/transform/GenericCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata.transform; +package dev.zarr.conventions.ome.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonAnySetter; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/IdentityCoordinateTransformation.java b/src/main/java/dev/zarr/conventions/ome/metadata/transform/IdentityCoordinateTransformation.java similarity index 88% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/IdentityCoordinateTransformation.java rename to src/main/java/dev/zarr/conventions/ome/metadata/transform/IdentityCoordinateTransformation.java index b47bb91b..1b264f13 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/IdentityCoordinateTransformation.java +++ b/src/main/java/dev/zarr/conventions/ome/metadata/transform/IdentityCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata.transform; +package dev.zarr.conventions.ome.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/ScaleCoordinateTransformation.java b/src/main/java/dev/zarr/conventions/ome/metadata/transform/ScaleCoordinateTransformation.java similarity index 91% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/ScaleCoordinateTransformation.java rename to src/main/java/dev/zarr/conventions/ome/metadata/transform/ScaleCoordinateTransformation.java index 8a4ca96d..6eae1224 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/ScaleCoordinateTransformation.java +++ b/src/main/java/dev/zarr/conventions/ome/metadata/transform/ScaleCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata.transform; +package dev.zarr.conventions.ome.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/TranslationCoordinateTransformation.java b/src/main/java/dev/zarr/conventions/ome/metadata/transform/TranslationCoordinateTransformation.java similarity index 91% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/TranslationCoordinateTransformation.java rename to src/main/java/dev/zarr/conventions/ome/metadata/transform/TranslationCoordinateTransformation.java index c154e20f..233fc4b7 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/TranslationCoordinateTransformation.java +++ b/src/main/java/dev/zarr/conventions/ome/metadata/transform/TranslationCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata.transform; +package dev.zarr.conventions.ome.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/MultiscaleImage.java b/src/main/java/dev/zarr/conventions/ome/v0_4/MultiscaleImage.java similarity index 92% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/MultiscaleImage.java rename to src/main/java/dev/zarr/conventions/ome/v0_4/MultiscaleImage.java index 9de5b16f..19c7a18c 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/MultiscaleImage.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_4/MultiscaleImage.java @@ -1,14 +1,14 @@ -package dev.zarr.zarrjava.experimental.ome.v0_4; +package dev.zarr.conventions.ome.v0_4; import com.fasterxml.jackson.core.type.TypeReference; import dev.zarr.zarrjava.ZarrException; import dev.zarr.zarrjava.core.Attributes; -import dev.zarr.zarrjava.experimental.ome.OmeV2Group; -import dev.zarr.zarrjava.experimental.ome.MultiscalesMetadataImage; -import dev.zarr.zarrjava.experimental.ome.metadata.transform.CoordinateTransformation; -import dev.zarr.zarrjava.experimental.ome.metadata.Dataset; -import dev.zarr.zarrjava.experimental.ome.metadata.MultiscalesEntry; -import dev.zarr.zarrjava.experimental.ome.metadata.OmeroMetadata; +import dev.zarr.conventions.ome.OmeV2Group; +import dev.zarr.conventions.ome.MultiscalesMetadataImage; +import dev.zarr.conventions.ome.metadata.transform.CoordinateTransformation; +import dev.zarr.conventions.ome.metadata.Dataset; +import dev.zarr.conventions.ome.metadata.MultiscalesEntry; +import dev.zarr.conventions.ome.metadata.OmeroMetadata; import dev.zarr.zarrjava.store.StoreHandle; import dev.zarr.zarrjava.v2.Array; import dev.zarr.zarrjava.v2.Group; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/Plate.java b/src/main/java/dev/zarr/conventions/ome/v0_4/Plate.java similarity index 85% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/Plate.java rename to src/main/java/dev/zarr/conventions/ome/v0_4/Plate.java index c6f4c49d..09ff9d29 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/Plate.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_4/Plate.java @@ -1,8 +1,8 @@ -package dev.zarr.zarrjava.experimental.ome.v0_4; +package dev.zarr.conventions.ome.v0_4; import dev.zarr.zarrjava.ZarrException; -import dev.zarr.zarrjava.experimental.ome.OmeV2Group; -import dev.zarr.zarrjava.experimental.ome.metadata.PlateMetadata; +import dev.zarr.conventions.ome.OmeV2Group; +import dev.zarr.conventions.ome.metadata.PlateMetadata; import dev.zarr.zarrjava.store.StoreHandle; import dev.zarr.zarrjava.v2.Group; import dev.zarr.zarrjava.v2.GroupMetadata; @@ -13,7 +13,7 @@ /** * OME-Zarr v0.4 HCS plate backed by a Zarr v2 group. */ -public final class Plate extends OmeV2Group implements dev.zarr.zarrjava.experimental.ome.Plate { +public final class Plate extends OmeV2Group implements dev.zarr.conventions.ome.Plate { private PlateMetadata plateMetadata; @@ -53,7 +53,7 @@ public PlateMetadata getPlateMetadata() throws ZarrException { } @Override - public dev.zarr.zarrjava.experimental.ome.Well openWell(String rowColPath) throws IOException, ZarrException { + public dev.zarr.conventions.ome.Well openWell(String rowColPath) throws IOException, ZarrException { return Well.openWell(storeHandle.resolve(rowColPath)); } diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/Well.java b/src/main/java/dev/zarr/conventions/ome/v0_4/Well.java similarity index 85% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/Well.java rename to src/main/java/dev/zarr/conventions/ome/v0_4/Well.java index 98381efb..287da192 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/Well.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_4/Well.java @@ -1,9 +1,9 @@ -package dev.zarr.zarrjava.experimental.ome.v0_4; +package dev.zarr.conventions.ome.v0_4; import dev.zarr.zarrjava.ZarrException; -import dev.zarr.zarrjava.experimental.ome.MultiscaleImage; -import dev.zarr.zarrjava.experimental.ome.OmeV2Group; -import dev.zarr.zarrjava.experimental.ome.metadata.WellMetadata; +import dev.zarr.conventions.ome.MultiscaleImage; +import dev.zarr.conventions.ome.OmeV2Group; +import dev.zarr.conventions.ome.metadata.WellMetadata; import dev.zarr.zarrjava.store.StoreHandle; import dev.zarr.zarrjava.v2.Group; import dev.zarr.zarrjava.v2.GroupMetadata; @@ -14,7 +14,7 @@ /** * OME-Zarr v0.4 HCS well backed by a Zarr v2 group. */ -public final class Well extends OmeV2Group implements dev.zarr.zarrjava.experimental.ome.Well { +public final class Well extends OmeV2Group implements dev.zarr.conventions.ome.Well { private WellMetadata wellMetadata; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/MultiscaleImage.java b/src/main/java/dev/zarr/conventions/ome/v0_5/MultiscaleImage.java similarity index 87% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/MultiscaleImage.java rename to src/main/java/dev/zarr/conventions/ome/v0_5/MultiscaleImage.java index 3f453758..a162e4f0 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/MultiscaleImage.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_5/MultiscaleImage.java @@ -1,12 +1,12 @@ -package dev.zarr.zarrjava.experimental.ome.v0_5; +package dev.zarr.conventions.ome.v0_5; import dev.zarr.zarrjava.ZarrException; -import dev.zarr.zarrjava.experimental.ome.OmeV3Group; -import dev.zarr.zarrjava.experimental.ome.MultiscalesMetadataImage; -import dev.zarr.zarrjava.experimental.ome.metadata.transform.CoordinateTransformation; -import dev.zarr.zarrjava.experimental.ome.metadata.Dataset; -import dev.zarr.zarrjava.experimental.ome.metadata.MultiscalesEntry; -import dev.zarr.zarrjava.experimental.ome.metadata.OmeMetadata; +import dev.zarr.conventions.ome.OmeV3Group; +import dev.zarr.conventions.ome.MultiscalesMetadataImage; +import dev.zarr.conventions.ome.metadata.transform.CoordinateTransformation; +import dev.zarr.conventions.ome.metadata.Dataset; +import dev.zarr.conventions.ome.metadata.MultiscalesEntry; +import dev.zarr.conventions.ome.metadata.OmeMetadata; import dev.zarr.zarrjava.store.StoreHandle; import dev.zarr.zarrjava.v3.Array; import dev.zarr.zarrjava.v3.Group; @@ -71,7 +71,7 @@ public MultiscalesEntry getMultiscalesEntry(int i) throws ZarrException { @Override @Nullable - public dev.zarr.zarrjava.experimental.ome.metadata.OmeroMetadata getOmeroMetadata() { + public dev.zarr.conventions.ome.metadata.OmeroMetadata getOmeroMetadata() { return omeMetadata.omero; } diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/Plate.java b/src/main/java/dev/zarr/conventions/ome/v0_5/Plate.java similarity index 84% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/Plate.java rename to src/main/java/dev/zarr/conventions/ome/v0_5/Plate.java index b9f09e19..6042cdf3 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/Plate.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_5/Plate.java @@ -1,9 +1,9 @@ -package dev.zarr.zarrjava.experimental.ome.v0_5; +package dev.zarr.conventions.ome.v0_5; import dev.zarr.zarrjava.ZarrException; -import dev.zarr.zarrjava.experimental.ome.OmeV3Group; -import dev.zarr.zarrjava.experimental.ome.metadata.OmeMetadata; -import dev.zarr.zarrjava.experimental.ome.metadata.PlateMetadata; +import dev.zarr.conventions.ome.OmeV3Group; +import dev.zarr.conventions.ome.metadata.OmeMetadata; +import dev.zarr.conventions.ome.metadata.PlateMetadata; import dev.zarr.zarrjava.store.StoreHandle; import dev.zarr.zarrjava.v3.Group; import dev.zarr.zarrjava.v3.GroupMetadata; @@ -14,7 +14,7 @@ /** * OME-Zarr v0.5 HCS plate backed by a Zarr v3 group. */ -public final class Plate extends OmeV3Group implements dev.zarr.zarrjava.experimental.ome.Plate { +public final class Plate extends OmeV3Group implements dev.zarr.conventions.ome.Plate { private OmeMetadata omeMetadata; @@ -58,7 +58,7 @@ public PlateMetadata getPlateMetadata() throws ZarrException { } @Override - public dev.zarr.zarrjava.experimental.ome.Well openWell(String rowColPath) throws IOException, ZarrException { + public dev.zarr.conventions.ome.Well openWell(String rowColPath) throws IOException, ZarrException { return Well.openWell(storeHandle.resolve(rowColPath)); } diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/Well.java b/src/main/java/dev/zarr/conventions/ome/v0_5/Well.java similarity index 84% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/Well.java rename to src/main/java/dev/zarr/conventions/ome/v0_5/Well.java index 790aaf4b..efdb4951 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/Well.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_5/Well.java @@ -1,10 +1,10 @@ -package dev.zarr.zarrjava.experimental.ome.v0_5; +package dev.zarr.conventions.ome.v0_5; import dev.zarr.zarrjava.ZarrException; -import dev.zarr.zarrjava.experimental.ome.MultiscaleImage; -import dev.zarr.zarrjava.experimental.ome.OmeV3Group; -import dev.zarr.zarrjava.experimental.ome.metadata.OmeMetadata; -import dev.zarr.zarrjava.experimental.ome.metadata.WellMetadata; +import dev.zarr.conventions.ome.MultiscaleImage; +import dev.zarr.conventions.ome.OmeV3Group; +import dev.zarr.conventions.ome.metadata.OmeMetadata; +import dev.zarr.conventions.ome.metadata.WellMetadata; import dev.zarr.zarrjava.store.StoreHandle; import dev.zarr.zarrjava.v3.Group; import dev.zarr.zarrjava.v3.GroupMetadata; @@ -15,7 +15,7 @@ /** * OME-Zarr v0.5 HCS well backed by a Zarr v3 group. */ -public final class Well extends OmeV3Group implements dev.zarr.zarrjava.experimental.ome.Well { +public final class Well extends OmeV3Group implements dev.zarr.conventions.ome.Well { private OmeMetadata omeMetadata; diff --git a/src/main/java/dev/zarr/conventions/ome/v0_6/MultiscaleImage.java b/src/main/java/dev/zarr/conventions/ome/v0_6/MultiscaleImage.java new file mode 100644 index 00000000..65c78fa1 --- /dev/null +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/MultiscaleImage.java @@ -0,0 +1,498 @@ +package dev.zarr.conventions.ome.v0_6; + +import dev.zarr.zarrjava.ZarrException; +import dev.zarr.conventions.ome.MultiscalesMetadataImage; +import dev.zarr.conventions.ome.OmeV3Group; +import dev.zarr.conventions.ome.metadata.Axis; +import dev.zarr.conventions.ome.metadata.transform.CoordinateTransformation; +import dev.zarr.conventions.ome.metadata.transform.IdentityCoordinateTransformation; +import dev.zarr.conventions.ome.metadata.transform.ScaleCoordinateTransformation; +import dev.zarr.conventions.ome.metadata.transform.TranslationCoordinateTransformation; +import dev.zarr.conventions.ome.v0_6.metadata.CoordinateSystem; +import dev.zarr.conventions.ome.v0_6.metadata.MultiscalesEntry; +import dev.zarr.conventions.ome.v0_6.metadata.OmeMetadata; +import dev.zarr.conventions.ome.v0_6.metadata.transform.GenericCoordinateTransformation; +import dev.zarr.zarrjava.store.StoreHandle; +import dev.zarr.zarrjava.v3.Array; +import dev.zarr.zarrjava.v3.Group; +import dev.zarr.zarrjava.v3.GroupMetadata; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +/** + * OME-Zarr v0.6 (RFC-5) multiscale image backed by a Zarr v3 group. + */ +public final class MultiscaleImage extends OmeV3Group implements MultiscalesMetadataImage { + + private OmeMetadata omeMetadata; + + private MultiscaleImage( + @Nonnull StoreHandle storeHandle, + @Nonnull GroupMetadata groupMetadata, + @Nonnull OmeMetadata omeMetadata + ) throws IOException { + super(storeHandle, groupMetadata); + this.omeMetadata = omeMetadata; + } + + /** + * Opens an existing OME-Zarr v0.6 multiscale image at the given store handle. + */ + public static MultiscaleImage openMultiscaleImage(@Nonnull StoreHandle storeHandle) throws IOException, ZarrException { + Group group = Group.open(storeHandle); + OmeMetadata omeMetadata = readOmeAttribute( + group.metadata.attributes, storeHandle, OmeMetadata.class); + if (!omeMetadata.version.startsWith("0.6")) { + throw new ZarrException( + "Expected OME-Zarr version '0.6', got '" + omeMetadata.version + "' at " + storeHandle); + } + if (omeMetadata.multiscales == null || omeMetadata.multiscales.isEmpty()) { + if (omeMetadata.scene != null) { + throw new ZarrException( + "OME-Zarr v0.6 scene metadata found at " + storeHandle + + "; use dev.zarr.conventions.ome.v0_6.Scene.open(...)"); + } + throw new ZarrException("No 'multiscales' found in ome metadata at " + storeHandle); + } + return new MultiscaleImage(storeHandle, group.metadata, omeMetadata); + } + + /** + * Creates a new OME-Zarr v0.6 multiscale image at the given store handle. + */ + public static MultiscaleImage create( + @Nonnull StoreHandle storeHandle, + @Nonnull MultiscalesEntry multiscalesEntry + ) throws IOException, ZarrException { + OmeMetadata omeMetadata = new OmeMetadata("0.6", Collections.singletonList(multiscalesEntry)); + Group group = Group.create(storeHandle, omeAttributes(omeMetadata)); + return new MultiscaleImage(storeHandle, group.metadata, omeMetadata); + } + + @Override + public StoreHandle getStoreHandle() { + return this.storeHandle; + } + + @Override + public MultiscalesEntry getMultiscalesEntry(int i) throws ZarrException { + return omeMetadata.multiscales.get(i); + } + + @Override + @Nullable + public dev.zarr.conventions.ome.metadata.OmeroMetadata getOmeroMetadata() { + return omeMetadata.omero; + } + + @Override + @Nullable + public Integer getBioformats2rawLayout() { + return omeMetadata.bioformats2rawLayout; + } + + OmeMetadata getRawOmeMetadata() { + return omeMetadata; + } + + @Override + public dev.zarr.zarrjava.core.Array openScaleLevel(int i) throws IOException, ZarrException { + String path = getMultiscalesEntry(0).datasets.get(i).path; + return Array.open(storeHandle.resolve(path)); + } + + @Override + public int getScaleLevelCount() throws ZarrException { + return getMultiscalesEntry(0).datasets.size(); + } + + @Override + public void createScaleLevel( + String path, + dev.zarr.zarrjava.core.ArrayMetadata arrayMetadata, + List coordinateTransformations + ) throws IOException, ZarrException { + if (!(arrayMetadata instanceof dev.zarr.zarrjava.v3.ArrayMetadata)) { + throw new ZarrException("Expected v3.ArrayMetadata for OME-Zarr v0.6, got " + arrayMetadata.getClass()); + } + Array.create(storeHandle.resolve(path), (dev.zarr.zarrjava.v3.ArrayMetadata) arrayMetadata); + + // Convert ome.metadata.CoordinateTransformation to v0.6 CoordinateTransformation + List v06Transforms = new ArrayList<>(); + for (CoordinateTransformation ct : coordinateTransformations) { + String type = ct.type; + List scale = null; + List translation = null; + String rawPath = null; + if (ct instanceof dev.zarr.conventions.ome.metadata.transform.ScaleCoordinateTransformation) { + dev.zarr.conventions.ome.metadata.transform.ScaleCoordinateTransformation t = + (dev.zarr.conventions.ome.metadata.transform.ScaleCoordinateTransformation) ct; + scale = t.scale; + rawPath = t.path; + } else if (ct instanceof dev.zarr.conventions.ome.metadata.transform.TranslationCoordinateTransformation) { + dev.zarr.conventions.ome.metadata.transform.TranslationCoordinateTransformation t = + (dev.zarr.conventions.ome.metadata.transform.TranslationCoordinateTransformation) ct; + translation = t.translation; + rawPath = t.path; + } else if (ct instanceof dev.zarr.conventions.ome.metadata.transform.IdentityCoordinateTransformation) { + dev.zarr.conventions.ome.metadata.transform.IdentityCoordinateTransformation t = + (dev.zarr.conventions.ome.metadata.transform.IdentityCoordinateTransformation) ct; + rawPath = t.path; + } else if (ct instanceof dev.zarr.conventions.ome.metadata.transform.GenericCoordinateTransformation) { + Map raw = ((dev.zarr.conventions.ome.metadata.transform.GenericCoordinateTransformation) ct).raw; + Object s = raw.get("scale"); + Object tr = raw.get("translation"); + Object p = raw.get("path"); + if (s instanceof List) scale = castDoubleList((List) s); + if (tr instanceof List) translation = castDoubleList((List) tr); + if (p instanceof String) rawPath = (String) p; + + if ("sequence".equals(type)) { + v06Transforms.add(new dev.zarr.conventions.ome.v0_6.metadata.transform.SequenceCoordinateTransformation( + null, null, null, castV06TransformList(raw.get("transformations")))); + continue; + } + if ("mapAxis".equals(type)) { + v06Transforms.add(new dev.zarr.conventions.ome.v0_6.metadata.transform.MapAxisCoordinateTransformation( + null, null, null, castIntList(raw.get("mapAxis")), castV06Transform(raw.get("transformation")))); + continue; + } + if ("affine".equals(type)) { + v06Transforms.add(new dev.zarr.conventions.ome.v0_6.metadata.transform.AffineCoordinateTransformation( + null, null, null, castMatrix(raw.get("affine")), rawPath)); + continue; + } + if ("rotation".equals(type)) { + v06Transforms.add(new dev.zarr.conventions.ome.v0_6.metadata.transform.RotationCoordinateTransformation( + null, null, null, castMatrix(raw.get("rotation")), rawPath)); + continue; + } + if ("displacements".equals(type)) { + v06Transforms.add(new dev.zarr.conventions.ome.v0_6.metadata.transform.DisplacementsCoordinateTransformation( + null, null, null, rawPath)); + continue; + } + if ("coordinates".equals(type)) { + v06Transforms.add(new dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinatesCoordinateTransformation( + null, null, null, rawPath)); + continue; + } + if ("bijection".equals(type)) { + v06Transforms.add(new dev.zarr.conventions.ome.v0_6.metadata.transform.BijectionCoordinateTransformation( + null, null, null, castV06Transform(raw.get("forward")), castV06Transform(raw.get("inverse")))); + continue; + } + if ("byDimension".equals(type)) { + v06Transforms.add(new dev.zarr.conventions.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation( + null, null, null, castByDimensionTransformList(raw.get("transformations")))); + continue; + } + } + if ("scale".equals(type)) { + v06Transforms.add(new dev.zarr.conventions.ome.v0_6.metadata.transform.ScaleCoordinateTransformation( + null, null, null, scale, rawPath)); + } else if ("translation".equals(type)) { + v06Transforms.add(new dev.zarr.conventions.ome.v0_6.metadata.transform.TranslationCoordinateTransformation( + null, null, null, translation, rawPath)); + } else if ("identity".equals(type)) { + v06Transforms.add(new dev.zarr.conventions.ome.v0_6.metadata.transform.IdentityCoordinateTransformation( + null, null, null, rawPath)); + } else { + dev.zarr.conventions.ome.v0_6.metadata.transform.GenericCoordinateTransformation generic = + new dev.zarr.conventions.ome.v0_6.metadata.transform.GenericCoordinateTransformation(type, null, null, null); + if (scale != null) generic.raw.put("scale", scale); + if (translation != null) generic.raw.put("translation", translation); + if (rawPath != null) generic.raw.put("path", rawPath); + v06Transforms.add(generic); + } + } + + MultiscalesEntry current = omeMetadata.multiscales.get(0); + MultiscalesEntry updated = current.withDataset(new dev.zarr.conventions.ome.v0_6.metadata.Dataset(path, v06Transforms)); + List updatedList = new ArrayList<>(omeMetadata.multiscales); + updatedList.set(0, updated); + omeMetadata = new OmeMetadata( + omeMetadata.version, + updatedList, + omeMetadata.omero, + omeMetadata.bioformats2rawLayout, + omeMetadata.scene, + omeMetadata.plate, + omeMetadata.well); + setAttributes(omeAttributes(omeMetadata)); + } + + @Override + public dev.zarr.conventions.ome.metadata.MultiscalesEntry getMultiscaleNode(int i) throws ZarrException { + MultiscalesEntry entry = getMultiscalesEntry(i); + List mappedDatasets = new ArrayList<>(); + for (dev.zarr.conventions.ome.v0_6.metadata.Dataset ds : entry.datasets) { + List mapped = new ArrayList<>(); + for (dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinateTransformation ct : ds.coordinateTransformations) { + mapped.add(mapTransform(ct)); + } + mappedDatasets.add(new dev.zarr.conventions.ome.metadata.Dataset(ds.path, mapped)); + } + List axes = entry.axes; + if ((axes == null || axes.isEmpty()) && entry.coordinateSystems != null && !entry.coordinateSystems.isEmpty()) { + axes = entry.coordinateSystems.get(0).axes; + } + return new dev.zarr.conventions.ome.metadata.MultiscalesEntry( + axes != null ? axes : Collections.emptyList(), + mappedDatasets, null, entry.name, null, null, null); + } + + private static CoordinateTransformation mapTransform( + dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinateTransformation ct) { + if (ct instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.ScaleCoordinateTransformation) { + dev.zarr.conventions.ome.v0_6.metadata.transform.ScaleCoordinateTransformation t = + (dev.zarr.conventions.ome.v0_6.metadata.transform.ScaleCoordinateTransformation) ct; + return new ScaleCoordinateTransformation(t.scale, t.path); + } + if (ct instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.TranslationCoordinateTransformation) { + dev.zarr.conventions.ome.v0_6.metadata.transform.TranslationCoordinateTransformation t = + (dev.zarr.conventions.ome.v0_6.metadata.transform.TranslationCoordinateTransformation) ct; + return new TranslationCoordinateTransformation(t.translation, t.path); + } + if (ct instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.IdentityCoordinateTransformation) { + dev.zarr.conventions.ome.v0_6.metadata.transform.IdentityCoordinateTransformation t = + (dev.zarr.conventions.ome.v0_6.metadata.transform.IdentityCoordinateTransformation) ct; + return new IdentityCoordinateTransformation(t.path); + } + if (ct instanceof GenericCoordinateTransformation) { + GenericCoordinateTransformation t = (GenericCoordinateTransformation) ct; + dev.zarr.conventions.ome.metadata.transform.GenericCoordinateTransformation generic = + new dev.zarr.conventions.ome.metadata.transform.GenericCoordinateTransformation(ct.getType()); + for (Map.Entry entry : t.raw.entrySet()) { + generic.raw.put(entry.getKey(), convertRawValue(entry.getValue())); + } + return generic; + } + if (ct instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.SequenceCoordinateTransformation) { + dev.zarr.conventions.ome.v0_6.metadata.transform.SequenceCoordinateTransformation t = + (dev.zarr.conventions.ome.v0_6.metadata.transform.SequenceCoordinateTransformation) ct; + dev.zarr.conventions.ome.metadata.transform.GenericCoordinateTransformation generic = + new dev.zarr.conventions.ome.metadata.transform.GenericCoordinateTransformation("sequence"); + generic.raw.put("transformations", mapTransformList(t.transformations)); + return generic; + } + if (ct instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.MapAxisCoordinateTransformation) { + dev.zarr.conventions.ome.v0_6.metadata.transform.MapAxisCoordinateTransformation t = + (dev.zarr.conventions.ome.v0_6.metadata.transform.MapAxisCoordinateTransformation) ct; + dev.zarr.conventions.ome.metadata.transform.GenericCoordinateTransformation generic = + new dev.zarr.conventions.ome.metadata.transform.GenericCoordinateTransformation("mapAxis"); + generic.raw.put("mapAxis", t.mapAxis); + if (t.transformation != null) { + generic.raw.put("transformation", mapTransform(t.transformation)); + } + return generic; + } + if (ct instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.AffineCoordinateTransformation) { + dev.zarr.conventions.ome.v0_6.metadata.transform.AffineCoordinateTransformation t = + (dev.zarr.conventions.ome.v0_6.metadata.transform.AffineCoordinateTransformation) ct; + dev.zarr.conventions.ome.metadata.transform.GenericCoordinateTransformation generic = + new dev.zarr.conventions.ome.metadata.transform.GenericCoordinateTransformation("affine"); + generic.raw.put("affine", t.affine); + if (t.path != null) { + generic.raw.put("path", t.path); + } + return generic; + } + if (ct instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.RotationCoordinateTransformation) { + dev.zarr.conventions.ome.v0_6.metadata.transform.RotationCoordinateTransformation t = + (dev.zarr.conventions.ome.v0_6.metadata.transform.RotationCoordinateTransformation) ct; + dev.zarr.conventions.ome.metadata.transform.GenericCoordinateTransformation generic = + new dev.zarr.conventions.ome.metadata.transform.GenericCoordinateTransformation("rotation"); + generic.raw.put("rotation", t.rotation); + if (t.path != null) { + generic.raw.put("path", t.path); + } + return generic; + } + if (ct instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.DisplacementsCoordinateTransformation) { + dev.zarr.conventions.ome.v0_6.metadata.transform.DisplacementsCoordinateTransformation t = + (dev.zarr.conventions.ome.v0_6.metadata.transform.DisplacementsCoordinateTransformation) ct; + dev.zarr.conventions.ome.metadata.transform.GenericCoordinateTransformation generic = + new dev.zarr.conventions.ome.metadata.transform.GenericCoordinateTransformation("displacements"); + generic.raw.put("path", t.path); + return generic; + } + if (ct instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinatesCoordinateTransformation) { + dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinatesCoordinateTransformation t = + (dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinatesCoordinateTransformation) ct; + dev.zarr.conventions.ome.metadata.transform.GenericCoordinateTransformation generic = + new dev.zarr.conventions.ome.metadata.transform.GenericCoordinateTransformation("coordinates"); + generic.raw.put("path", t.path); + return generic; + } + if (ct instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.BijectionCoordinateTransformation) { + dev.zarr.conventions.ome.v0_6.metadata.transform.BijectionCoordinateTransformation t = + (dev.zarr.conventions.ome.v0_6.metadata.transform.BijectionCoordinateTransformation) ct; + dev.zarr.conventions.ome.metadata.transform.GenericCoordinateTransformation generic = + new dev.zarr.conventions.ome.metadata.transform.GenericCoordinateTransformation("bijection"); + if (t.forward != null) { + generic.raw.put("forward", mapTransform(t.forward)); + } + if (t.inverse != null) { + generic.raw.put("inverse", mapTransform(t.inverse)); + } + return generic; + } + if (ct instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation) { + dev.zarr.conventions.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation t = + (dev.zarr.conventions.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation) ct; + dev.zarr.conventions.ome.metadata.transform.GenericCoordinateTransformation generic = + new dev.zarr.conventions.ome.metadata.transform.GenericCoordinateTransformation("byDimension"); + if (t.transformations != null) { + List> transformed = new ArrayList<>(); + for (dev.zarr.conventions.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation.ByDimensionTransformation item : t.transformations) { + Map map = new LinkedHashMap<>(); + map.put("input_axes", item.inputAxes); + map.put("output_axes", item.outputAxes); + map.put("transformation", item.transformation != null ? mapTransform(item.transformation) : null); + transformed.add(map); + } + generic.raw.put("transformations", transformed); + } + return generic; + } + return new dev.zarr.conventions.ome.metadata.transform.GenericCoordinateTransformation(ct.getType()); + } + + private static Object convertRawValue(Object value) { + if (value instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinateTransformation) { + return mapTransform((dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinateTransformation) value); + } + if (value instanceof List) { + List list = (List) value; + List converted = new ArrayList<>(list.size()); + for (Object item : list) { + converted.add(convertRawValue(item)); + } + return converted; + } + if (value instanceof Map) { + Map map = (Map) value; + Map converted = new LinkedHashMap<>(); + for (Map.Entry entry : map.entrySet()) { + converted.put(String.valueOf(entry.getKey()), convertRawValue(entry.getValue())); + } + return converted; + } + return value; + } + + private static List mapTransformList( + List transforms) { + if (transforms == null) { + return null; + } + List out = new ArrayList<>(transforms.size()); + for (dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinateTransformation transform : transforms) { + out.add(mapTransform(transform)); + } + return out; + } + + private static List castDoubleList(List values) { + List out = new ArrayList<>(); + for (Object value : values) { + if (value instanceof Number) { + out.add(((Number) value).doubleValue()); + } + } + return out; + } + + private static List castIntList(Object raw) { + if (!(raw instanceof List)) { + return null; + } + List out = new ArrayList<>(); + for (Object value : (List) raw) { + if (value instanceof Number) { + out.add(((Number) value).intValue()); + } + } + return out; + } + + private static List> castMatrix(Object raw) { + if (!(raw instanceof List)) { + return null; + } + List> out = new ArrayList<>(); + for (Object row : (List) raw) { + if (row instanceof List) { + out.add(castDoubleList((List) row)); + } + } + return out; + } + + private static dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinateTransformation castV06Transform(Object raw) { + if (raw instanceof dev.zarr.conventions.ome.metadata.transform.CoordinateTransformation) { + dev.zarr.conventions.ome.metadata.transform.CoordinateTransformation core = + (dev.zarr.conventions.ome.metadata.transform.CoordinateTransformation) raw; + if (core instanceof dev.zarr.conventions.ome.metadata.transform.ScaleCoordinateTransformation) { + dev.zarr.conventions.ome.metadata.transform.ScaleCoordinateTransformation t = + (dev.zarr.conventions.ome.metadata.transform.ScaleCoordinateTransformation) core; + return new dev.zarr.conventions.ome.v0_6.metadata.transform.ScaleCoordinateTransformation( + null, null, null, t.scale, t.path); + } + if (core instanceof dev.zarr.conventions.ome.metadata.transform.TranslationCoordinateTransformation) { + dev.zarr.conventions.ome.metadata.transform.TranslationCoordinateTransformation t = + (dev.zarr.conventions.ome.metadata.transform.TranslationCoordinateTransformation) core; + return new dev.zarr.conventions.ome.v0_6.metadata.transform.TranslationCoordinateTransformation( + null, null, null, t.translation, t.path); + } + if (core instanceof dev.zarr.conventions.ome.metadata.transform.IdentityCoordinateTransformation) { + dev.zarr.conventions.ome.metadata.transform.IdentityCoordinateTransformation t = + (dev.zarr.conventions.ome.metadata.transform.IdentityCoordinateTransformation) core; + return new dev.zarr.conventions.ome.v0_6.metadata.transform.IdentityCoordinateTransformation( + null, null, null, t.path); + } + } + return null; + } + + private static List castV06TransformList(Object raw) { + if (!(raw instanceof List)) { + return null; + } + List out = new ArrayList<>(); + for (Object item : (List) raw) { + dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinateTransformation cast = castV06Transform(item); + if (cast != null) { + out.add(cast); + } + } + return out; + } + + private static List castByDimensionTransformList(Object raw) { + if (!(raw instanceof List)) { + return null; + } + List out = + new ArrayList<>(); + for (Object item : (List) raw) { + if (!(item instanceof Map)) { + continue; + } + Map map = (Map) item; + out.add(new dev.zarr.conventions.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation.ByDimensionTransformation( + castIntList(map.get("input_axes")), + castIntList(map.get("output_axes")), + castV06Transform(map.get("transformation")))); + } + return out; + } +} diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Plate.java b/src/main/java/dev/zarr/conventions/ome/v0_6/Plate.java similarity index 85% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Plate.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/Plate.java index d270f9a1..b673f2d7 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Plate.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/Plate.java @@ -1,9 +1,9 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6; +package dev.zarr.conventions.ome.v0_6; import dev.zarr.zarrjava.ZarrException; -import dev.zarr.zarrjava.experimental.ome.OmeV3Group; -import dev.zarr.zarrjava.experimental.ome.metadata.PlateMetadata; -import dev.zarr.zarrjava.experimental.ome.v0_6.metadata.OmeMetadata; +import dev.zarr.conventions.ome.OmeV3Group; +import dev.zarr.conventions.ome.metadata.PlateMetadata; +import dev.zarr.conventions.ome.v0_6.metadata.OmeMetadata; import dev.zarr.zarrjava.store.StoreHandle; import dev.zarr.zarrjava.v3.Group; import dev.zarr.zarrjava.v3.GroupMetadata; @@ -14,7 +14,7 @@ /** * OME-Zarr v0.6 HCS plate backed by a Zarr v3 group. */ -public final class Plate extends OmeV3Group implements dev.zarr.zarrjava.experimental.ome.Plate { +public final class Plate extends OmeV3Group implements dev.zarr.conventions.ome.Plate { private OmeMetadata omeMetadata; @@ -62,7 +62,7 @@ public PlateMetadata getPlateMetadata() throws ZarrException { } @Override - public dev.zarr.zarrjava.experimental.ome.Well openWell(String rowColPath) throws IOException, ZarrException { + public dev.zarr.conventions.ome.Well openWell(String rowColPath) throws IOException, ZarrException { return Well.openWell(storeHandle.resolve(rowColPath)); } diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Scene.java b/src/main/java/dev/zarr/conventions/ome/v0_6/Scene.java similarity index 76% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Scene.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/Scene.java index a4416c7e..c96b1495 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Scene.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/Scene.java @@ -1,14 +1,14 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6; +package dev.zarr.conventions.ome.v0_6; import dev.zarr.zarrjava.ZarrException; -import dev.zarr.zarrjava.experimental.ome.OmeV3Group; -import dev.zarr.zarrjava.experimental.ome.v0_6.metadata.SceneMetadata; -import dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation; -import dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.BijectionCoordinateTransformation; -import dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation; -import dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.GenericCoordinateTransformation; -import dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.MapAxisCoordinateTransformation; -import dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.SequenceCoordinateTransformation; +import dev.zarr.conventions.ome.OmeV3Group; +import dev.zarr.conventions.ome.v0_6.metadata.SceneMetadata; +import dev.zarr.conventions.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation; +import dev.zarr.conventions.ome.v0_6.metadata.transform.BijectionCoordinateTransformation; +import dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinateTransformation; +import dev.zarr.conventions.ome.v0_6.metadata.transform.GenericCoordinateTransformation; +import dev.zarr.conventions.ome.v0_6.metadata.transform.MapAxisCoordinateTransformation; +import dev.zarr.conventions.ome.v0_6.metadata.transform.SequenceCoordinateTransformation; import dev.zarr.zarrjava.store.StoreHandle; import dev.zarr.zarrjava.v3.Group; import dev.zarr.zarrjava.v3.GroupMetadata; @@ -24,13 +24,13 @@ /** OME-Zarr v0.6 scene root group (scene metadata). */ public final class Scene extends OmeV3Group { - private final dev.zarr.zarrjava.experimental.ome.v0_6.metadata.OmeMetadata omeMetadata; + private final dev.zarr.conventions.ome.v0_6.metadata.OmeMetadata omeMetadata; private final Map imageNodes; private Scene( @Nonnull StoreHandle storeHandle, @Nonnull GroupMetadata groupMetadata, - @Nonnull dev.zarr.zarrjava.experimental.ome.v0_6.metadata.OmeMetadata omeMetadata, + @Nonnull dev.zarr.conventions.ome.v0_6.metadata.OmeMetadata omeMetadata, @Nonnull Map imageNodes ) throws IOException { super(storeHandle, groupMetadata); @@ -48,8 +48,8 @@ public static Scene open(@Nonnull StoreHandle storeHandle) throws IOException { public static Scene openScene(@Nonnull StoreHandle storeHandle) throws IOException, ZarrException { Group group = Group.open(storeHandle); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.OmeMetadata omeMetadata = readOmeAttribute( - group.metadata.attributes, storeHandle, dev.zarr.zarrjava.experimental.ome.v0_6.metadata.OmeMetadata.class); + dev.zarr.conventions.ome.v0_6.metadata.OmeMetadata omeMetadata = readOmeAttribute( + group.metadata.attributes, storeHandle, dev.zarr.conventions.ome.v0_6.metadata.OmeMetadata.class); if (!omeMetadata.version.startsWith("0.6")) { throw new ZarrException( "Expected OME-Zarr version '0.6', got '" + omeMetadata.version + "' at " + storeHandle); @@ -76,8 +76,8 @@ public static Scene createScene( @Nonnull StoreHandle storeHandle, @Nonnull SceneMetadata sceneMetadata ) throws IOException, ZarrException { - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.OmeMetadata omeMetadata = - new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.OmeMetadata("0.6", null, null, sceneMetadata); + dev.zarr.conventions.ome.v0_6.metadata.OmeMetadata omeMetadata = + new dev.zarr.conventions.ome.v0_6.metadata.OmeMetadata("0.6", null, null, sceneMetadata); Group group = Group.create(storeHandle, omeAttributes(omeMetadata)); return new Scene(storeHandle, group.metadata, omeMetadata, new LinkedHashMap()); } @@ -121,7 +121,7 @@ public SceneTransformationGraph getCoordinateTransformationGraph() { for (SceneReferenceResolver.ResolvedCoordinateSystem resolved : resolver.list()) { List axisNames = new ArrayList<>(); if (resolved.coordinateSystem.axes != null) { - for (dev.zarr.zarrjava.experimental.ome.metadata.Axis axis : resolved.coordinateSystem.axes) { + for (dev.zarr.conventions.ome.metadata.Axis axis : resolved.coordinateSystem.axes) { axisNames.add(axis.name); } } @@ -244,26 +244,26 @@ private static void addTransformationEdges( } private static String extractPath(CoordinateTransformation transformation) { - if (transformation instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.ScaleCoordinateTransformation) { - return ((dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.ScaleCoordinateTransformation) transformation).path; + if (transformation instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.ScaleCoordinateTransformation) { + return ((dev.zarr.conventions.ome.v0_6.metadata.transform.ScaleCoordinateTransformation) transformation).path; } - if (transformation instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.TranslationCoordinateTransformation) { - return ((dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.TranslationCoordinateTransformation) transformation).path; + if (transformation instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.TranslationCoordinateTransformation) { + return ((dev.zarr.conventions.ome.v0_6.metadata.transform.TranslationCoordinateTransformation) transformation).path; } - if (transformation instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.IdentityCoordinateTransformation) { - return ((dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.IdentityCoordinateTransformation) transformation).path; + if (transformation instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.IdentityCoordinateTransformation) { + return ((dev.zarr.conventions.ome.v0_6.metadata.transform.IdentityCoordinateTransformation) transformation).path; } - if (transformation instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.AffineCoordinateTransformation) { - return ((dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.AffineCoordinateTransformation) transformation).path; + if (transformation instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.AffineCoordinateTransformation) { + return ((dev.zarr.conventions.ome.v0_6.metadata.transform.AffineCoordinateTransformation) transformation).path; } - if (transformation instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.RotationCoordinateTransformation) { - return ((dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.RotationCoordinateTransformation) transformation).path; + if (transformation instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.RotationCoordinateTransformation) { + return ((dev.zarr.conventions.ome.v0_6.metadata.transform.RotationCoordinateTransformation) transformation).path; } - if (transformation instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.DisplacementsCoordinateTransformation) { - return ((dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.DisplacementsCoordinateTransformation) transformation).path; + if (transformation instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.DisplacementsCoordinateTransformation) { + return ((dev.zarr.conventions.ome.v0_6.metadata.transform.DisplacementsCoordinateTransformation) transformation).path; } - if (transformation instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinatesCoordinateTransformation) { - return ((dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinatesCoordinateTransformation) transformation).path; + if (transformation instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinatesCoordinateTransformation) { + return ((dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinatesCoordinateTransformation) transformation).path; } if (transformation instanceof GenericCoordinateTransformation) { Object p = ((GenericCoordinateTransformation) transformation).raw.get("path"); diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/SceneReferenceResolver.java b/src/main/java/dev/zarr/conventions/ome/v0_6/SceneReferenceResolver.java similarity index 91% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/SceneReferenceResolver.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/SceneReferenceResolver.java index 88ea7497..c63df2e2 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/SceneReferenceResolver.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/SceneReferenceResolver.java @@ -1,8 +1,8 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6; +package dev.zarr.conventions.ome.v0_6; -import dev.zarr.zarrjava.experimental.ome.v0_6.metadata.CoordinateSystem; -import dev.zarr.zarrjava.experimental.ome.v0_6.metadata.MultiscalesEntry; -import dev.zarr.zarrjava.experimental.ome.v0_6.metadata.SceneMetadata; +import dev.zarr.conventions.ome.v0_6.metadata.CoordinateSystem; +import dev.zarr.conventions.ome.v0_6.metadata.MultiscalesEntry; +import dev.zarr.conventions.ome.v0_6.metadata.SceneMetadata; import javax.annotation.Nullable; import java.util.ArrayList; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/SceneTransformationGraph.java b/src/main/java/dev/zarr/conventions/ome/v0_6/SceneTransformationGraph.java similarity index 97% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/SceneTransformationGraph.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/SceneTransformationGraph.java index 5b5bcde0..d839a6be 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/SceneTransformationGraph.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/SceneTransformationGraph.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6; +package dev.zarr.conventions.ome.v0_6; import java.util.ArrayList; import java.util.Collections; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Well.java b/src/main/java/dev/zarr/conventions/ome/v0_6/Well.java similarity index 85% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Well.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/Well.java index e2b0da1d..064d0693 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Well.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/Well.java @@ -1,10 +1,10 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6; +package dev.zarr.conventions.ome.v0_6; import dev.zarr.zarrjava.ZarrException; -import dev.zarr.zarrjava.experimental.ome.MultiscaleImage; -import dev.zarr.zarrjava.experimental.ome.OmeV3Group; -import dev.zarr.zarrjava.experimental.ome.metadata.WellMetadata; -import dev.zarr.zarrjava.experimental.ome.v0_6.metadata.OmeMetadata; +import dev.zarr.conventions.ome.MultiscaleImage; +import dev.zarr.conventions.ome.OmeV3Group; +import dev.zarr.conventions.ome.metadata.WellMetadata; +import dev.zarr.conventions.ome.v0_6.metadata.OmeMetadata; import dev.zarr.zarrjava.store.StoreHandle; import dev.zarr.zarrjava.v3.Group; import dev.zarr.zarrjava.v3.GroupMetadata; @@ -15,7 +15,7 @@ /** * OME-Zarr v0.6 HCS well backed by a Zarr v3 group. */ -public final class Well extends OmeV3Group implements dev.zarr.zarrjava.experimental.ome.Well { +public final class Well extends OmeV3Group implements dev.zarr.conventions.ome.Well { private OmeMetadata omeMetadata; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/CoordinateSystem.java b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/CoordinateSystem.java similarity index 84% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/CoordinateSystem.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/metadata/CoordinateSystem.java index 454f675a..34fd9b76 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/CoordinateSystem.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/CoordinateSystem.java @@ -1,9 +1,9 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata; +package dev.zarr.conventions.ome.v0_6.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; -import dev.zarr.zarrjava.experimental.ome.metadata.Axis; +import dev.zarr.conventions.ome.metadata.Axis; import java.util.List; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/Dataset.java b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/Dataset.java similarity index 84% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/Dataset.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/metadata/Dataset.java index f08e39db..86d1a822 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/Dataset.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/Dataset.java @@ -1,9 +1,9 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata; +package dev.zarr.conventions.ome.v0_6.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; -import dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation; +import dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinateTransformation; import java.util.List; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/MultiscalesEntry.java b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/MultiscalesEntry.java similarity index 91% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/MultiscalesEntry.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/metadata/MultiscalesEntry.java index b62f51a1..1648e6d6 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/MultiscalesEntry.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/MultiscalesEntry.java @@ -1,10 +1,10 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata; +package dev.zarr.conventions.ome.v0_6.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; -import dev.zarr.zarrjava.experimental.ome.metadata.Axis; -import dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation; +import dev.zarr.conventions.ome.metadata.Axis; +import dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinateTransformation; import javax.annotation.Nullable; import java.util.ArrayList; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/OmeMetadata.java b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/OmeMetadata.java similarity index 89% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/OmeMetadata.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/metadata/OmeMetadata.java index 0040ae91..00f5d419 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/OmeMetadata.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/OmeMetadata.java @@ -1,11 +1,11 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata; +package dev.zarr.conventions.ome.v0_6.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; -import dev.zarr.zarrjava.experimental.ome.metadata.OmeroMetadata; -import dev.zarr.zarrjava.experimental.ome.metadata.PlateMetadata; -import dev.zarr.zarrjava.experimental.ome.metadata.WellMetadata; +import dev.zarr.conventions.ome.metadata.OmeroMetadata; +import dev.zarr.conventions.ome.metadata.PlateMetadata; +import dev.zarr.conventions.ome.metadata.WellMetadata; import javax.annotation.Nullable; import java.util.List; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/SceneMetadata.java b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/SceneMetadata.java similarity index 86% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/SceneMetadata.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/metadata/SceneMetadata.java index c739269f..c4f4bc5c 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/SceneMetadata.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/SceneMetadata.java @@ -1,9 +1,9 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata; +package dev.zarr.conventions.ome.v0_6.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; -import dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation; +import dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinateTransformation; import javax.annotation.Nullable; import java.util.List; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/AffineCoordinateTransformation.java b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/AffineCoordinateTransformation.java similarity index 94% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/AffineCoordinateTransformation.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/AffineCoordinateTransformation.java index ae5a5834..5b543a0b 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/AffineCoordinateTransformation.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/AffineCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.conventions.ome.v0_6.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/BaseCoordinateTransformation.java b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/BaseCoordinateTransformation.java similarity index 92% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/BaseCoordinateTransformation.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/BaseCoordinateTransformation.java index 87b8e205..ae0bd284 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/BaseCoordinateTransformation.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/BaseCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.conventions.ome.v0_6.metadata.transform; import javax.annotation.Nullable; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/BijectionCoordinateTransformation.java b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/BijectionCoordinateTransformation.java similarity index 94% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/BijectionCoordinateTransformation.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/BijectionCoordinateTransformation.java index 4e36ba39..a83f5daa 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/BijectionCoordinateTransformation.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/BijectionCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.conventions.ome.v0_6.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/ByDimensionCoordinateTransformation.java b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/ByDimensionCoordinateTransformation.java similarity index 96% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/ByDimensionCoordinateTransformation.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/ByDimensionCoordinateTransformation.java index 03e44183..374d81b7 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/ByDimensionCoordinateTransformation.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/ByDimensionCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.conventions.ome.v0_6.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinateSystemRefSerde.java b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/CoordinateSystemRefSerde.java similarity index 95% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinateSystemRefSerde.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/CoordinateSystemRefSerde.java index f0ac2dcc..e087aa76 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinateSystemRefSerde.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/CoordinateSystemRefSerde.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.conventions.ome.v0_6.metadata.transform; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinateTransformation.java b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/CoordinateTransformation.java similarity index 96% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinateTransformation.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/CoordinateTransformation.java index 4463d185..f83a6375 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinateTransformation.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/CoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.conventions.ome.v0_6.metadata.transform; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinatesCoordinateTransformation.java b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/CoordinatesCoordinateTransformation.java similarity index 93% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinatesCoordinateTransformation.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/CoordinatesCoordinateTransformation.java index 00e1e254..29727846 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinatesCoordinateTransformation.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/CoordinatesCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.conventions.ome.v0_6.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/DisplacementsCoordinateTransformation.java b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/DisplacementsCoordinateTransformation.java similarity index 93% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/DisplacementsCoordinateTransformation.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/DisplacementsCoordinateTransformation.java index 953ea841..be15b8f1 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/DisplacementsCoordinateTransformation.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/DisplacementsCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.conventions.ome.v0_6.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/GenericCoordinateTransformation.java b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/GenericCoordinateTransformation.java similarity index 95% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/GenericCoordinateTransformation.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/GenericCoordinateTransformation.java index fafa177c..b7d02623 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/GenericCoordinateTransformation.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/GenericCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.conventions.ome.v0_6.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonAnySetter; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/IdentityCoordinateTransformation.java b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/IdentityCoordinateTransformation.java similarity index 88% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/IdentityCoordinateTransformation.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/IdentityCoordinateTransformation.java index 8511d34c..859b6f6b 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/IdentityCoordinateTransformation.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/IdentityCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.conventions.ome.v0_6.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; @@ -7,7 +7,7 @@ import javax.annotation.Nullable; public final class IdentityCoordinateTransformation - extends dev.zarr.zarrjava.experimental.ome.metadata.transform.IdentityCoordinateTransformation + extends dev.zarr.conventions.ome.metadata.transform.IdentityCoordinateTransformation implements CoordinateTransformation { @Nullable public final String input; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/MapAxisCoordinateTransformation.java b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/MapAxisCoordinateTransformation.java similarity index 94% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/MapAxisCoordinateTransformation.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/MapAxisCoordinateTransformation.java index ad4480d0..e5a5fcf9 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/MapAxisCoordinateTransformation.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/MapAxisCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.conventions.ome.v0_6.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/RotationCoordinateTransformation.java b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/RotationCoordinateTransformation.java similarity index 94% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/RotationCoordinateTransformation.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/RotationCoordinateTransformation.java index 6e0a0c2b..55d60e47 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/RotationCoordinateTransformation.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/RotationCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.conventions.ome.v0_6.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/ScaleCoordinateTransformation.java b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/ScaleCoordinateTransformation.java similarity index 89% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/ScaleCoordinateTransformation.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/ScaleCoordinateTransformation.java index 9fe75880..69b97a80 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/ScaleCoordinateTransformation.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/ScaleCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.conventions.ome.v0_6.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; @@ -8,7 +8,7 @@ import java.util.List; public final class ScaleCoordinateTransformation - extends dev.zarr.zarrjava.experimental.ome.metadata.transform.ScaleCoordinateTransformation + extends dev.zarr.conventions.ome.metadata.transform.ScaleCoordinateTransformation implements CoordinateTransformation { @Nullable public final String input; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/SequenceCoordinateTransformation.java b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/SequenceCoordinateTransformation.java similarity index 93% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/SequenceCoordinateTransformation.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/SequenceCoordinateTransformation.java index 660fb180..d5779648 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/SequenceCoordinateTransformation.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/SequenceCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.conventions.ome.v0_6.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/TranslationCoordinateTransformation.java b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/TranslationCoordinateTransformation.java similarity index 89% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/TranslationCoordinateTransformation.java rename to src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/TranslationCoordinateTransformation.java index ff307540..c6eae2d4 100644 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/TranslationCoordinateTransformation.java +++ b/src/main/java/dev/zarr/conventions/ome/v0_6/metadata/transform/TranslationCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.conventions.ome.v0_6.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; @@ -8,7 +8,7 @@ import java.util.List; public final class TranslationCoordinateTransformation - extends dev.zarr.zarrjava.experimental.ome.metadata.transform.TranslationCoordinateTransformation + extends dev.zarr.conventions.ome.metadata.transform.TranslationCoordinateTransformation implements CoordinateTransformation { @Nullable public final String input; diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/MultiscaleImage.java b/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/MultiscaleImage.java deleted file mode 100644 index 327f7187..00000000 --- a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/MultiscaleImage.java +++ /dev/null @@ -1,498 +0,0 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6; - -import dev.zarr.zarrjava.ZarrException; -import dev.zarr.zarrjava.experimental.ome.MultiscalesMetadataImage; -import dev.zarr.zarrjava.experimental.ome.OmeV3Group; -import dev.zarr.zarrjava.experimental.ome.metadata.Axis; -import dev.zarr.zarrjava.experimental.ome.metadata.transform.CoordinateTransformation; -import dev.zarr.zarrjava.experimental.ome.metadata.transform.IdentityCoordinateTransformation; -import dev.zarr.zarrjava.experimental.ome.metadata.transform.ScaleCoordinateTransformation; -import dev.zarr.zarrjava.experimental.ome.metadata.transform.TranslationCoordinateTransformation; -import dev.zarr.zarrjava.experimental.ome.v0_6.metadata.CoordinateSystem; -import dev.zarr.zarrjava.experimental.ome.v0_6.metadata.MultiscalesEntry; -import dev.zarr.zarrjava.experimental.ome.v0_6.metadata.OmeMetadata; -import dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.GenericCoordinateTransformation; -import dev.zarr.zarrjava.store.StoreHandle; -import dev.zarr.zarrjava.v3.Array; -import dev.zarr.zarrjava.v3.Group; -import dev.zarr.zarrjava.v3.GroupMetadata; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * OME-Zarr v0.6 (RFC-5) multiscale image backed by a Zarr v3 group. - */ -public final class MultiscaleImage extends OmeV3Group implements MultiscalesMetadataImage { - - private OmeMetadata omeMetadata; - - private MultiscaleImage( - @Nonnull StoreHandle storeHandle, - @Nonnull GroupMetadata groupMetadata, - @Nonnull OmeMetadata omeMetadata - ) throws IOException { - super(storeHandle, groupMetadata); - this.omeMetadata = omeMetadata; - } - - /** - * Opens an existing OME-Zarr v0.6 multiscale image at the given store handle. - */ - public static MultiscaleImage openMultiscaleImage(@Nonnull StoreHandle storeHandle) throws IOException, ZarrException { - Group group = Group.open(storeHandle); - OmeMetadata omeMetadata = readOmeAttribute( - group.metadata.attributes, storeHandle, OmeMetadata.class); - if (!omeMetadata.version.startsWith("0.6")) { - throw new ZarrException( - "Expected OME-Zarr version '0.6', got '" + omeMetadata.version + "' at " + storeHandle); - } - if (omeMetadata.multiscales == null || omeMetadata.multiscales.isEmpty()) { - if (omeMetadata.scene != null) { - throw new ZarrException( - "OME-Zarr v0.6 scene metadata found at " + storeHandle - + "; use dev.zarr.zarrjava.experimental.ome.v0_6.Scene.open(...)"); - } - throw new ZarrException("No 'multiscales' found in ome metadata at " + storeHandle); - } - return new MultiscaleImage(storeHandle, group.metadata, omeMetadata); - } - - /** - * Creates a new OME-Zarr v0.6 multiscale image at the given store handle. - */ - public static MultiscaleImage create( - @Nonnull StoreHandle storeHandle, - @Nonnull MultiscalesEntry multiscalesEntry - ) throws IOException, ZarrException { - OmeMetadata omeMetadata = new OmeMetadata("0.6", Collections.singletonList(multiscalesEntry)); - Group group = Group.create(storeHandle, omeAttributes(omeMetadata)); - return new MultiscaleImage(storeHandle, group.metadata, omeMetadata); - } - - @Override - public StoreHandle getStoreHandle() { - return this.storeHandle; - } - - @Override - public MultiscalesEntry getMultiscalesEntry(int i) throws ZarrException { - return omeMetadata.multiscales.get(i); - } - - @Override - @Nullable - public dev.zarr.zarrjava.experimental.ome.metadata.OmeroMetadata getOmeroMetadata() { - return omeMetadata.omero; - } - - @Override - @Nullable - public Integer getBioformats2rawLayout() { - return omeMetadata.bioformats2rawLayout; - } - - OmeMetadata getRawOmeMetadata() { - return omeMetadata; - } - - @Override - public dev.zarr.zarrjava.core.Array openScaleLevel(int i) throws IOException, ZarrException { - String path = getMultiscalesEntry(0).datasets.get(i).path; - return Array.open(storeHandle.resolve(path)); - } - - @Override - public int getScaleLevelCount() throws ZarrException { - return getMultiscalesEntry(0).datasets.size(); - } - - @Override - public void createScaleLevel( - String path, - dev.zarr.zarrjava.core.ArrayMetadata arrayMetadata, - List coordinateTransformations - ) throws IOException, ZarrException { - if (!(arrayMetadata instanceof dev.zarr.zarrjava.v3.ArrayMetadata)) { - throw new ZarrException("Expected v3.ArrayMetadata for OME-Zarr v0.6, got " + arrayMetadata.getClass()); - } - Array.create(storeHandle.resolve(path), (dev.zarr.zarrjava.v3.ArrayMetadata) arrayMetadata); - - // Convert ome.metadata.CoordinateTransformation to v0.6 CoordinateTransformation - List v06Transforms = new ArrayList<>(); - for (CoordinateTransformation ct : coordinateTransformations) { - String type = ct.type; - List scale = null; - List translation = null; - String rawPath = null; - if (ct instanceof dev.zarr.zarrjava.experimental.ome.metadata.transform.ScaleCoordinateTransformation) { - dev.zarr.zarrjava.experimental.ome.metadata.transform.ScaleCoordinateTransformation t = - (dev.zarr.zarrjava.experimental.ome.metadata.transform.ScaleCoordinateTransformation) ct; - scale = t.scale; - rawPath = t.path; - } else if (ct instanceof dev.zarr.zarrjava.experimental.ome.metadata.transform.TranslationCoordinateTransformation) { - dev.zarr.zarrjava.experimental.ome.metadata.transform.TranslationCoordinateTransformation t = - (dev.zarr.zarrjava.experimental.ome.metadata.transform.TranslationCoordinateTransformation) ct; - translation = t.translation; - rawPath = t.path; - } else if (ct instanceof dev.zarr.zarrjava.experimental.ome.metadata.transform.IdentityCoordinateTransformation) { - dev.zarr.zarrjava.experimental.ome.metadata.transform.IdentityCoordinateTransformation t = - (dev.zarr.zarrjava.experimental.ome.metadata.transform.IdentityCoordinateTransformation) ct; - rawPath = t.path; - } else if (ct instanceof dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation) { - Map raw = ((dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation) ct).raw; - Object s = raw.get("scale"); - Object tr = raw.get("translation"); - Object p = raw.get("path"); - if (s instanceof List) scale = castDoubleList((List) s); - if (tr instanceof List) translation = castDoubleList((List) tr); - if (p instanceof String) rawPath = (String) p; - - if ("sequence".equals(type)) { - v06Transforms.add(new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.SequenceCoordinateTransformation( - null, null, null, castV06TransformList(raw.get("transformations")))); - continue; - } - if ("mapAxis".equals(type)) { - v06Transforms.add(new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.MapAxisCoordinateTransformation( - null, null, null, castIntList(raw.get("mapAxis")), castV06Transform(raw.get("transformation")))); - continue; - } - if ("affine".equals(type)) { - v06Transforms.add(new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.AffineCoordinateTransformation( - null, null, null, castMatrix(raw.get("affine")), rawPath)); - continue; - } - if ("rotation".equals(type)) { - v06Transforms.add(new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.RotationCoordinateTransformation( - null, null, null, castMatrix(raw.get("rotation")), rawPath)); - continue; - } - if ("displacements".equals(type)) { - v06Transforms.add(new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.DisplacementsCoordinateTransformation( - null, null, null, rawPath)); - continue; - } - if ("coordinates".equals(type)) { - v06Transforms.add(new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinatesCoordinateTransformation( - null, null, null, rawPath)); - continue; - } - if ("bijection".equals(type)) { - v06Transforms.add(new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.BijectionCoordinateTransformation( - null, null, null, castV06Transform(raw.get("forward")), castV06Transform(raw.get("inverse")))); - continue; - } - if ("byDimension".equals(type)) { - v06Transforms.add(new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation( - null, null, null, castByDimensionTransformList(raw.get("transformations")))); - continue; - } - } - if ("scale".equals(type)) { - v06Transforms.add(new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.ScaleCoordinateTransformation( - null, null, null, scale, rawPath)); - } else if ("translation".equals(type)) { - v06Transforms.add(new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.TranslationCoordinateTransformation( - null, null, null, translation, rawPath)); - } else if ("identity".equals(type)) { - v06Transforms.add(new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.IdentityCoordinateTransformation( - null, null, null, rawPath)); - } else { - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.GenericCoordinateTransformation generic = - new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.GenericCoordinateTransformation(type, null, null, null); - if (scale != null) generic.raw.put("scale", scale); - if (translation != null) generic.raw.put("translation", translation); - if (rawPath != null) generic.raw.put("path", rawPath); - v06Transforms.add(generic); - } - } - - MultiscalesEntry current = omeMetadata.multiscales.get(0); - MultiscalesEntry updated = current.withDataset(new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.Dataset(path, v06Transforms)); - List updatedList = new ArrayList<>(omeMetadata.multiscales); - updatedList.set(0, updated); - omeMetadata = new OmeMetadata( - omeMetadata.version, - updatedList, - omeMetadata.omero, - omeMetadata.bioformats2rawLayout, - omeMetadata.scene, - omeMetadata.plate, - omeMetadata.well); - setAttributes(omeAttributes(omeMetadata)); - } - - @Override - public dev.zarr.zarrjava.experimental.ome.metadata.MultiscalesEntry getMultiscaleNode(int i) throws ZarrException { - MultiscalesEntry entry = getMultiscalesEntry(i); - List mappedDatasets = new ArrayList<>(); - for (dev.zarr.zarrjava.experimental.ome.v0_6.metadata.Dataset ds : entry.datasets) { - List mapped = new ArrayList<>(); - for (dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation ct : ds.coordinateTransformations) { - mapped.add(mapTransform(ct)); - } - mappedDatasets.add(new dev.zarr.zarrjava.experimental.ome.metadata.Dataset(ds.path, mapped)); - } - List axes = entry.axes; - if ((axes == null || axes.isEmpty()) && entry.coordinateSystems != null && !entry.coordinateSystems.isEmpty()) { - axes = entry.coordinateSystems.get(0).axes; - } - return new dev.zarr.zarrjava.experimental.ome.metadata.MultiscalesEntry( - axes != null ? axes : Collections.emptyList(), - mappedDatasets, null, entry.name, null, null, null); - } - - private static CoordinateTransformation mapTransform( - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation ct) { - if (ct instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.ScaleCoordinateTransformation) { - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.ScaleCoordinateTransformation t = - (dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.ScaleCoordinateTransformation) ct; - return new ScaleCoordinateTransformation(t.scale, t.path); - } - if (ct instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.TranslationCoordinateTransformation) { - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.TranslationCoordinateTransformation t = - (dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.TranslationCoordinateTransformation) ct; - return new TranslationCoordinateTransformation(t.translation, t.path); - } - if (ct instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.IdentityCoordinateTransformation) { - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.IdentityCoordinateTransformation t = - (dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.IdentityCoordinateTransformation) ct; - return new IdentityCoordinateTransformation(t.path); - } - if (ct instanceof GenericCoordinateTransformation) { - GenericCoordinateTransformation t = (GenericCoordinateTransformation) ct; - dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation generic = - new dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation(ct.getType()); - for (Map.Entry entry : t.raw.entrySet()) { - generic.raw.put(entry.getKey(), convertRawValue(entry.getValue())); - } - return generic; - } - if (ct instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.SequenceCoordinateTransformation) { - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.SequenceCoordinateTransformation t = - (dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.SequenceCoordinateTransformation) ct; - dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation generic = - new dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation("sequence"); - generic.raw.put("transformations", mapTransformList(t.transformations)); - return generic; - } - if (ct instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.MapAxisCoordinateTransformation) { - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.MapAxisCoordinateTransformation t = - (dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.MapAxisCoordinateTransformation) ct; - dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation generic = - new dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation("mapAxis"); - generic.raw.put("mapAxis", t.mapAxis); - if (t.transformation != null) { - generic.raw.put("transformation", mapTransform(t.transformation)); - } - return generic; - } - if (ct instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.AffineCoordinateTransformation) { - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.AffineCoordinateTransformation t = - (dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.AffineCoordinateTransformation) ct; - dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation generic = - new dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation("affine"); - generic.raw.put("affine", t.affine); - if (t.path != null) { - generic.raw.put("path", t.path); - } - return generic; - } - if (ct instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.RotationCoordinateTransformation) { - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.RotationCoordinateTransformation t = - (dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.RotationCoordinateTransformation) ct; - dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation generic = - new dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation("rotation"); - generic.raw.put("rotation", t.rotation); - if (t.path != null) { - generic.raw.put("path", t.path); - } - return generic; - } - if (ct instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.DisplacementsCoordinateTransformation) { - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.DisplacementsCoordinateTransformation t = - (dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.DisplacementsCoordinateTransformation) ct; - dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation generic = - new dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation("displacements"); - generic.raw.put("path", t.path); - return generic; - } - if (ct instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinatesCoordinateTransformation) { - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinatesCoordinateTransformation t = - (dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinatesCoordinateTransformation) ct; - dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation generic = - new dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation("coordinates"); - generic.raw.put("path", t.path); - return generic; - } - if (ct instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.BijectionCoordinateTransformation) { - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.BijectionCoordinateTransformation t = - (dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.BijectionCoordinateTransformation) ct; - dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation generic = - new dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation("bijection"); - if (t.forward != null) { - generic.raw.put("forward", mapTransform(t.forward)); - } - if (t.inverse != null) { - generic.raw.put("inverse", mapTransform(t.inverse)); - } - return generic; - } - if (ct instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation) { - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation t = - (dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation) ct; - dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation generic = - new dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation("byDimension"); - if (t.transformations != null) { - List> transformed = new ArrayList<>(); - for (dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation.ByDimensionTransformation item : t.transformations) { - Map map = new LinkedHashMap<>(); - map.put("input_axes", item.inputAxes); - map.put("output_axes", item.outputAxes); - map.put("transformation", item.transformation != null ? mapTransform(item.transformation) : null); - transformed.add(map); - } - generic.raw.put("transformations", transformed); - } - return generic; - } - return new dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation(ct.getType()); - } - - private static Object convertRawValue(Object value) { - if (value instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation) { - return mapTransform((dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation) value); - } - if (value instanceof List) { - List list = (List) value; - List converted = new ArrayList<>(list.size()); - for (Object item : list) { - converted.add(convertRawValue(item)); - } - return converted; - } - if (value instanceof Map) { - Map map = (Map) value; - Map converted = new LinkedHashMap<>(); - for (Map.Entry entry : map.entrySet()) { - converted.put(String.valueOf(entry.getKey()), convertRawValue(entry.getValue())); - } - return converted; - } - return value; - } - - private static List mapTransformList( - List transforms) { - if (transforms == null) { - return null; - } - List out = new ArrayList<>(transforms.size()); - for (dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation transform : transforms) { - out.add(mapTransform(transform)); - } - return out; - } - - private static List castDoubleList(List values) { - List out = new ArrayList<>(); - for (Object value : values) { - if (value instanceof Number) { - out.add(((Number) value).doubleValue()); - } - } - return out; - } - - private static List castIntList(Object raw) { - if (!(raw instanceof List)) { - return null; - } - List out = new ArrayList<>(); - for (Object value : (List) raw) { - if (value instanceof Number) { - out.add(((Number) value).intValue()); - } - } - return out; - } - - private static List> castMatrix(Object raw) { - if (!(raw instanceof List)) { - return null; - } - List> out = new ArrayList<>(); - for (Object row : (List) raw) { - if (row instanceof List) { - out.add(castDoubleList((List) row)); - } - } - return out; - } - - private static dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation castV06Transform(Object raw) { - if (raw instanceof dev.zarr.zarrjava.experimental.ome.metadata.transform.CoordinateTransformation) { - dev.zarr.zarrjava.experimental.ome.metadata.transform.CoordinateTransformation core = - (dev.zarr.zarrjava.experimental.ome.metadata.transform.CoordinateTransformation) raw; - if (core instanceof dev.zarr.zarrjava.experimental.ome.metadata.transform.ScaleCoordinateTransformation) { - dev.zarr.zarrjava.experimental.ome.metadata.transform.ScaleCoordinateTransformation t = - (dev.zarr.zarrjava.experimental.ome.metadata.transform.ScaleCoordinateTransformation) core; - return new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.ScaleCoordinateTransformation( - null, null, null, t.scale, t.path); - } - if (core instanceof dev.zarr.zarrjava.experimental.ome.metadata.transform.TranslationCoordinateTransformation) { - dev.zarr.zarrjava.experimental.ome.metadata.transform.TranslationCoordinateTransformation t = - (dev.zarr.zarrjava.experimental.ome.metadata.transform.TranslationCoordinateTransformation) core; - return new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.TranslationCoordinateTransformation( - null, null, null, t.translation, t.path); - } - if (core instanceof dev.zarr.zarrjava.experimental.ome.metadata.transform.IdentityCoordinateTransformation) { - dev.zarr.zarrjava.experimental.ome.metadata.transform.IdentityCoordinateTransformation t = - (dev.zarr.zarrjava.experimental.ome.metadata.transform.IdentityCoordinateTransformation) core; - return new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.IdentityCoordinateTransformation( - null, null, null, t.path); - } - } - return null; - } - - private static List castV06TransformList(Object raw) { - if (!(raw instanceof List)) { - return null; - } - List out = new ArrayList<>(); - for (Object item : (List) raw) { - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation cast = castV06Transform(item); - if (cast != null) { - out.add(cast); - } - } - return out; - } - - private static List castByDimensionTransformList(Object raw) { - if (!(raw instanceof List)) { - return null; - } - List out = - new ArrayList<>(); - for (Object item : (List) raw) { - if (!(item instanceof Map)) { - continue; - } - Map map = (Map) item; - out.add(new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation.ByDimensionTransformation( - castIntList(map.get("input_axes")), - castIntList(map.get("output_axes")), - castV06Transform(map.get("transformation")))); - } - return out; - } -} diff --git a/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappersTest.java b/src/test/java/dev/zarr/conventions/ome/OmeObjectMappersTest.java similarity index 80% rename from src/test/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappersTest.java rename to src/test/java/dev/zarr/conventions/ome/OmeObjectMappersTest.java index 23f35f9f..e6fde49c 100644 --- a/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappersTest.java +++ b/src/test/java/dev/zarr/conventions/ome/OmeObjectMappersTest.java @@ -1,8 +1,8 @@ -package dev.zarr.zarrjava.experimental.ome; +package dev.zarr.conventions.ome; import com.fasterxml.jackson.databind.ObjectMapper; -import dev.zarr.zarrjava.experimental.ome.metadata.MultiscalesEntry; -import dev.zarr.zarrjava.experimental.ome.metadata.OmeMetadata; +import dev.zarr.conventions.ome.metadata.MultiscalesEntry; +import dev.zarr.conventions.ome.metadata.OmeMetadata; import org.junit.jupiter.api.Test; import java.util.ArrayList; @@ -25,7 +25,7 @@ class OmeObjectMappersTest { private static final String HANDLER_LOGGER_NAME = - "dev.zarr.zarrjava.experimental.ome.OmeObjectMappers$UnknownOmePropertyLoggingHandler"; + "dev.zarr.conventions.ome.OmeObjectMappers$UnknownOmePropertyLoggingHandler"; @Test void v3MapperLogsAndContinuesOnUnknownOmeFields() { @@ -151,10 +151,10 @@ void v3MapperParsesUnknownTransformAsGenericAndPreservesRawFields() { assertEquals(1, entry.datasets.get(0).coordinateTransformations.size()); assertTrue( entry.datasets.get(0).coordinateTransformations.get(0) - instanceof dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation); + instanceof dev.zarr.conventions.ome.metadata.transform.GenericCoordinateTransformation); - dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation generic = - (dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation) + dev.zarr.conventions.ome.metadata.transform.GenericCoordinateTransformation generic = + (dev.zarr.conventions.ome.metadata.transform.GenericCoordinateTransformation) entry.datasets.get(0).coordinateTransformations.get(0); assertEquals("vendorWarp", generic.type); assertEquals(3.5, generic.raw.get("strength")); @@ -183,18 +183,18 @@ void v2MapperParsesUnknownV06TransformAsGenericAndPreservesRawFields() { entryRaw.put("datasets", Arrays.asList(dataset)); ObjectMapper mapper = OmeObjectMappers.makeV2Mapper(); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.MultiscalesEntry entry = - mapper.convertValue(entryRaw, dev.zarr.zarrjava.experimental.ome.v0_6.metadata.MultiscalesEntry.class); + dev.zarr.conventions.ome.v0_6.metadata.MultiscalesEntry entry = + mapper.convertValue(entryRaw, dev.zarr.conventions.ome.v0_6.metadata.MultiscalesEntry.class); assertNotNull(entry); assertEquals(1, entry.datasets.size()); assertEquals(1, entry.datasets.get(0).coordinateTransformations.size()); assertTrue( entry.datasets.get(0).coordinateTransformations.get(0) - instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.GenericCoordinateTransformation); + instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.GenericCoordinateTransformation); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.GenericCoordinateTransformation generic = - (dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.GenericCoordinateTransformation) + dev.zarr.conventions.ome.v0_6.metadata.transform.GenericCoordinateTransformation generic = + (dev.zarr.conventions.ome.v0_6.metadata.transform.GenericCoordinateTransformation) entry.datasets.get(0).coordinateTransformations.get(0); assertEquals("customNonLinear", generic.type); assertEquals("s0", generic.input); @@ -239,17 +239,17 @@ void v2MapperParsesTypedV06AffineAndByDimensionTransforms() { entryRaw.put("datasets", Arrays.asList(dataset)); ObjectMapper mapper = OmeObjectMappers.makeV2Mapper(); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.MultiscalesEntry entry = - mapper.convertValue(entryRaw, dev.zarr.zarrjava.experimental.ome.v0_6.metadata.MultiscalesEntry.class); + dev.zarr.conventions.ome.v0_6.metadata.MultiscalesEntry entry = + mapper.convertValue(entryRaw, dev.zarr.conventions.ome.v0_6.metadata.MultiscalesEntry.class); assertNotNull(entry); assertEquals(2, entry.datasets.get(0).coordinateTransformations.size()); assertTrue( entry.datasets.get(0).coordinateTransformations.get(0) - instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.AffineCoordinateTransformation); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.AffineCoordinateTransformation affineParsed = - (dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.AffineCoordinateTransformation) + instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.AffineCoordinateTransformation); + dev.zarr.conventions.ome.v0_6.metadata.transform.AffineCoordinateTransformation affineParsed = + (dev.zarr.conventions.ome.v0_6.metadata.transform.AffineCoordinateTransformation) entry.datasets.get(0).coordinateTransformations.get(0); assertEquals("affine-stage", affineParsed.name); assertEquals("coordinateTransformations/affine", affineParsed.path); @@ -258,16 +258,16 @@ void v2MapperParsesTypedV06AffineAndByDimensionTransforms() { assertTrue( entry.datasets.get(0).coordinateTransformations.get(1) - instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation byDimensionParsed = - (dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation) + instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation); + dev.zarr.conventions.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation byDimensionParsed = + (dev.zarr.conventions.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation) entry.datasets.get(0).coordinateTransformations.get(1); assertNotNull(byDimensionParsed.transformations); assertEquals(1, byDimensionParsed.transformations.size()); assertEquals(Arrays.asList(1), byDimensionParsed.transformations.get(0).inputAxes); assertEquals(Arrays.asList(0), byDimensionParsed.transformations.get(0).outputAxes); assertTrue(byDimensionParsed.transformations.get(0).transformation - instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.ScaleCoordinateTransformation); + instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.ScaleCoordinateTransformation); } @Test @@ -319,32 +319,32 @@ void v3MapperParsesV06SceneMetadataRefsAndNestedTransforms() { omeRaw.put("scene", scene); ObjectMapper mapper = OmeObjectMappers.makeV3Mapper(); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.OmeMetadata parsed = - mapper.convertValue(omeRaw, dev.zarr.zarrjava.experimental.ome.v0_6.metadata.OmeMetadata.class); + dev.zarr.conventions.ome.v0_6.metadata.OmeMetadata parsed = + mapper.convertValue(omeRaw, dev.zarr.conventions.ome.v0_6.metadata.OmeMetadata.class); assertNotNull(parsed.scene); assertEquals(1, parsed.scene.coordinateTransformations.size()); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation parsedSequence = + dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinateTransformation parsedSequence = parsed.scene.coordinateTransformations.get(0); assertEquals("sequence", parsedSequence.getType()); - assertTrue(parsedSequence instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.SequenceCoordinateTransformation); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.SequenceCoordinateTransformation seq = - (dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.SequenceCoordinateTransformation) parsedSequence; + assertTrue(parsedSequence instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.SequenceCoordinateTransformation); + dev.zarr.conventions.ome.v0_6.metadata.transform.SequenceCoordinateTransformation seq = + (dev.zarr.conventions.ome.v0_6.metadata.transform.SequenceCoordinateTransformation) parsedSequence; assertNotNull(seq.transformations); assertEquals(2, seq.transformations.size()); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation parsedTranslation = + dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinateTransformation parsedTranslation = seq.transformations.get(0); assertEquals("translation", parsedTranslation.getType()); assertEquals("imgA#physical", parsedTranslation.getInput()); assertEquals(".#world", parsedTranslation.getOutput()); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation parsedByDim = + dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinateTransformation parsedByDim = seq.transformations.get(1); assertEquals("byDimension", parsedByDim.getType()); - assertTrue(parsedByDim instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation parsedByDimension = - (dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation) parsedByDim; + assertTrue(parsedByDim instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation); + dev.zarr.conventions.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation parsedByDimension = + (dev.zarr.conventions.ome.v0_6.metadata.transform.ByDimensionCoordinateTransformation) parsedByDim; assertNotNull(parsedByDimension.transformations); assertEquals(1, parsedByDimension.transformations.size()); assertEquals(Arrays.asList(0), parsedByDimension.transformations.get(0).inputAxes); diff --git a/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrBaseTest.java b/src/test/java/dev/zarr/conventions/ome/OmeZarrBaseTest.java similarity index 96% rename from src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrBaseTest.java rename to src/test/java/dev/zarr/conventions/ome/OmeZarrBaseTest.java index fcfea4c6..d1dfbc3c 100644 --- a/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrBaseTest.java +++ b/src/test/java/dev/zarr/conventions/ome/OmeZarrBaseTest.java @@ -1,7 +1,7 @@ -package dev.zarr.zarrjava.experimental.ome; +package dev.zarr.conventions.ome; import dev.zarr.zarrjava.ZarrTest; -import dev.zarr.zarrjava.experimental.ome.metadata.MultiscalesEntry; +import dev.zarr.conventions.ome.metadata.MultiscalesEntry; import dev.zarr.zarrjava.store.FilesystemStore; import dev.zarr.zarrjava.store.StoreHandle; import org.junit.jupiter.api.Test; diff --git a/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrSceneV06Test.java b/src/test/java/dev/zarr/conventions/ome/OmeZarrSceneV06Test.java similarity index 61% rename from src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrSceneV06Test.java rename to src/test/java/dev/zarr/conventions/ome/OmeZarrSceneV06Test.java index 5a28c5c1..75a81f68 100644 --- a/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrSceneV06Test.java +++ b/src/test/java/dev/zarr/conventions/ome/OmeZarrSceneV06Test.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome; +package dev.zarr.conventions.ome; import dev.zarr.zarrjava.store.FilesystemStore; import dev.zarr.zarrjava.store.StoreHandle; @@ -27,7 +27,7 @@ StoreHandle imageStoreHandle() throws Exception { @Override Class expectedConcreteClass() { - return dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage.class; + return dev.zarr.conventions.ome.v0_6.MultiscaleImage.class; } @Override @@ -48,13 +48,13 @@ java.util.List expectedAxisNames() { @Test void openSceneAndNavigateImages() throws Exception { StoreHandle sceneHandle = new FilesystemStore(V06_SCENE_REGISTRATION).resolve(); - dev.zarr.zarrjava.experimental.ome.v0_6.Scene scene = dev.zarr.zarrjava.experimental.ome.v0_6.Scene.openScene(sceneHandle); + dev.zarr.conventions.ome.v0_6.Scene scene = dev.zarr.conventions.ome.v0_6.Scene.openScene(sceneHandle); assertNotNull(scene.getSceneMetadata()); assertNotNull(scene.getSceneMetadata().coordinateTransformations); assertFalse(scene.getSceneMetadata().coordinateTransformations.isEmpty()); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation top = + dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinateTransformation top = scene.getSceneMetadata().coordinateTransformations.get(0); assertEquals("bijection", top.getType()); assertEquals("JRC2018F#physical", top.getInput()); @@ -63,11 +63,11 @@ void openSceneAndNavigateImages() throws Exception { assertTrue(scene.listImageNodes().contains("FCWB")); assertTrue(scene.listImageNodes().contains("JRC2018F")); - dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage image = scene.openImageNode("FCWB"); + dev.zarr.conventions.ome.v0_6.MultiscaleImage image = scene.openImageNode("FCWB"); assertEquals(2, image.getScaleLevelCount()); assertEquals(Arrays.asList("z", "y", "x"), image.getAxisNames()); - dev.zarr.zarrjava.experimental.ome.v0_6.SceneTransformationGraph graph = scene.getCoordinateTransformationGraph(); + dev.zarr.conventions.ome.v0_6.SceneTransformationGraph graph = scene.getCoordinateTransformationGraph(); assertFalse(graph.nodes.isEmpty()); assertFalse(graph.edges.isEmpty()); assertTrue(graph.warnings.isEmpty()); @@ -85,35 +85,35 @@ void createAndReopenScene() throws Exception { Path out = TESTOUTPUT.resolve("ome_v06_scene_create"); StoreHandle root = new FilesystemStore(out).resolve(); - dev.zarr.zarrjava.experimental.ome.metadata.Axis y = new dev.zarr.zarrjava.experimental.ome.metadata.Axis("y", "space", "micrometer"); - dev.zarr.zarrjava.experimental.ome.metadata.Axis x = new dev.zarr.zarrjava.experimental.ome.metadata.Axis("x", "space", "micrometer"); + dev.zarr.conventions.ome.metadata.Axis y = new dev.zarr.conventions.ome.metadata.Axis("y", "space", "micrometer"); + dev.zarr.conventions.ome.metadata.Axis x = new dev.zarr.conventions.ome.metadata.Axis("x", "space", "micrometer"); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.SceneMetadata sceneMetadata = - new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.SceneMetadata( - Collections.singletonList(new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.TranslationCoordinateTransformation( + dev.zarr.conventions.ome.v0_6.metadata.SceneMetadata sceneMetadata = + new dev.zarr.conventions.ome.v0_6.metadata.SceneMetadata( + Collections.singletonList(new dev.zarr.conventions.ome.v0_6.metadata.transform.TranslationCoordinateTransformation( "imageA#physical", ".#world", "imageA to world", Arrays.asList(1.0, 2.0), null)), - Collections.singletonList(new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.CoordinateSystem( + Collections.singletonList(new dev.zarr.conventions.ome.v0_6.metadata.CoordinateSystem( "world", Arrays.asList(y, x))) ); - dev.zarr.zarrjava.experimental.ome.v0_6.Scene.createScene(root, sceneMetadata); + dev.zarr.conventions.ome.v0_6.Scene.createScene(root, sceneMetadata); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.MultiscalesEntry imageAEntry = - new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.MultiscalesEntry( + dev.zarr.conventions.ome.v0_6.metadata.MultiscalesEntry imageAEntry = + new dev.zarr.conventions.ome.v0_6.metadata.MultiscalesEntry( null, - Collections.singletonList(new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.Dataset( + Collections.singletonList(new dev.zarr.conventions.ome.v0_6.metadata.Dataset( "s0", Collections.singletonList( - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation.scale( + dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinateTransformation.scale( Arrays.asList(1.0, 1.0), "s0", "physical")))), null, - Collections.singletonList(new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.CoordinateSystem( + Collections.singletonList(new dev.zarr.conventions.ome.v0_6.metadata.CoordinateSystem( "physical", Arrays.asList(y, x))), "multiscales", null, null); - dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage.create(root.resolve("imageA"), imageAEntry); + dev.zarr.conventions.ome.v0_6.MultiscaleImage.create(root.resolve("imageA"), imageAEntry); dev.zarr.zarrjava.v3.Array.create( root.resolve("imageA").resolve("s0"), dev.zarr.zarrjava.v3.Array.metadataBuilder() @@ -122,19 +122,19 @@ void createAndReopenScene() throws Exception { .withDataType(dev.zarr.zarrjava.v3.DataType.UINT16) .build()); - dev.zarr.zarrjava.experimental.ome.v0_6.Scene reopened = dev.zarr.zarrjava.experimental.ome.v0_6.Scene.openScene(root); + dev.zarr.conventions.ome.v0_6.Scene reopened = dev.zarr.conventions.ome.v0_6.Scene.openScene(root); assertEquals(Collections.singletonList("imageA"), reopened.listImageNodes()); assertEquals("world", reopened.getSceneMetadata().coordinateSystems.get(0).name); assertEquals("imageA#physical", reopened.getSceneMetadata().coordinateTransformations.get(0).getInput()); - dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage imageA = reopened.openImageNode("imageA"); + dev.zarr.conventions.ome.v0_6.MultiscaleImage imageA = reopened.openImageNode("imageA"); assertEquals(1, imageA.getScaleLevelCount()); assertArrayEquals(new long[]{16, 16}, imageA.openScaleLevel(0).metadata().shape); - dev.zarr.zarrjava.experimental.ome.v0_6.SceneTransformationGraph graph = reopened.getCoordinateTransformationGraph(); + dev.zarr.conventions.ome.v0_6.SceneTransformationGraph graph = reopened.getCoordinateTransformationGraph(); assertEquals(2, graph.nodes.size()); assertEquals(1, graph.edges.size()); - assertEquals("coordinateTransformations/lens", dev.zarr.zarrjava.experimental.ome.v0_6.Scene.normalizeCoordinateTransformPath("./coordinateTransformations/lens")); + assertEquals("coordinateTransformations/lens", dev.zarr.conventions.ome.v0_6.Scene.normalizeCoordinateTransformPath("./coordinateTransformations/lens")); reopened.createCoordinateTransformationsGroup(); assertTrue(root.resolve("coordinateTransformations").resolve(dev.zarr.zarrjava.core.Node.ZARR_JSON).exists()); @@ -142,25 +142,25 @@ void createAndReopenScene() throws Exception { @Test void openSceneExample1AffinePathBetweenInstruments() throws Exception { - dev.zarr.zarrjava.experimental.ome.v0_6.Scene scene = - dev.zarr.zarrjava.experimental.ome.v0_6.Scene.openScene(new FilesystemStore(V06_SCENE_EXAMPLE1).resolve()); + dev.zarr.conventions.ome.v0_6.Scene scene = + dev.zarr.conventions.ome.v0_6.Scene.openScene(new FilesystemStore(V06_SCENE_EXAMPLE1).resolve()); assertEquals(new HashSet<>(Arrays.asList("sampleA_instrument1", "sampleA_instrument2")), new HashSet<>(scene.listImageNodes())); assertEquals(1, scene.getSceneMetadata().coordinateTransformations.size()); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation ct = + dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinateTransformation ct = scene.getSceneMetadata().coordinateTransformations.get(0); assertEquals("affine", ct.getType()); assertEquals("sampleA_instrument2#physical_instrument2", ct.getInput()); assertEquals("sampleA_instrument1#physical_instrument1", ct.getOutput()); - assertTrue(ct instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.AffineCoordinateTransformation); + assertTrue(ct instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.AffineCoordinateTransformation); assertEquals("coordinateTransformations/sampleA_instrument2-to-instrument1", - ((dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.AffineCoordinateTransformation) ct).path); + ((dev.zarr.conventions.ome.v0_6.metadata.transform.AffineCoordinateTransformation) ct).path); - dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage i1 = scene.openImageNode("sampleA_instrument1"); - dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage i2 = scene.openImageNode("sampleA_instrument2"); + dev.zarr.conventions.ome.v0_6.MultiscaleImage i1 = scene.openImageNode("sampleA_instrument1"); + dev.zarr.conventions.ome.v0_6.MultiscaleImage i2 = scene.openImageNode("sampleA_instrument2"); assertEquals(Arrays.asList("z", "y", "x"), i1.getAxisNames()); assertEquals(Arrays.asList("z", "y", "x"), i2.getAxisNames()); - dev.zarr.zarrjava.experimental.ome.v0_6.SceneTransformationGraph graph = scene.getCoordinateTransformationGraph(); + dev.zarr.conventions.ome.v0_6.SceneTransformationGraph graph = scene.getCoordinateTransformationGraph(); assertEquals(2, graph.nodes.size()); assertEquals(1, graph.edges.size()); assertTrue(graph.warnings.isEmpty()); @@ -168,14 +168,14 @@ void openSceneExample1AffinePathBetweenInstruments() throws Exception { @Test void openSceneExample2TwoAffineLinksViaInstrument2() throws Exception { - dev.zarr.zarrjava.experimental.ome.v0_6.Scene scene = - dev.zarr.zarrjava.experimental.ome.v0_6.Scene.openScene(new FilesystemStore(V06_SCENE_EXAMPLE2).resolve()); + dev.zarr.conventions.ome.v0_6.Scene scene = + dev.zarr.conventions.ome.v0_6.Scene.openScene(new FilesystemStore(V06_SCENE_EXAMPLE2).resolve()); assertEquals(new HashSet<>(Arrays.asList("instrument1", "instrument2", "instrument3")), new HashSet<>(scene.listImageNodes())); assertEquals(2, scene.getSceneMetadata().coordinateTransformations.size()); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation t0 = + dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinateTransformation t0 = scene.getSceneMetadata().coordinateTransformations.get(0); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation t1 = + dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinateTransformation t1 = scene.getSceneMetadata().coordinateTransformations.get(1); assertEquals("affine", t0.getType()); assertEquals("affine", t1.getType()); @@ -183,10 +183,10 @@ void openSceneExample2TwoAffineLinksViaInstrument2() throws Exception { assertEquals("instrument2#physical", t0.getOutput()); assertEquals("instrument3#physical", t1.getInput()); assertEquals("instrument2#physical", t1.getOutput()); - assertTrue(t0 instanceof dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.AffineCoordinateTransformation); - assertTrue(((dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.AffineCoordinateTransformation) t0).affine.size() > 0); + assertTrue(t0 instanceof dev.zarr.conventions.ome.v0_6.metadata.transform.AffineCoordinateTransformation); + assertTrue(((dev.zarr.conventions.ome.v0_6.metadata.transform.AffineCoordinateTransformation) t0).affine.size() > 0); - dev.zarr.zarrjava.experimental.ome.v0_6.SceneTransformationGraph graph = scene.getCoordinateTransformationGraph(); + dev.zarr.conventions.ome.v0_6.SceneTransformationGraph graph = scene.getCoordinateTransformationGraph(); assertEquals(3, graph.nodes.size()); assertEquals(2, graph.edges.size()); assertTrue(graph.warnings.isEmpty()); diff --git a/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrUserGuideExamplesTest.java b/src/test/java/dev/zarr/conventions/ome/OmeZarrUserGuideExamplesTest.java similarity index 82% rename from src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrUserGuideExamplesTest.java rename to src/test/java/dev/zarr/conventions/ome/OmeZarrUserGuideExamplesTest.java index 033422b7..bc2f3f93 100644 --- a/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrUserGuideExamplesTest.java +++ b/src/test/java/dev/zarr/conventions/ome/OmeZarrUserGuideExamplesTest.java @@ -1,11 +1,11 @@ -package dev.zarr.zarrjava.experimental.ome; +package dev.zarr.conventions.ome; import dev.zarr.zarrjava.ZarrTest; -import dev.zarr.zarrjava.experimental.ome.metadata.Axis; -import dev.zarr.zarrjava.experimental.ome.metadata.transform.CoordinateTransformation; -import dev.zarr.zarrjava.experimental.ome.metadata.transform.ScaleCoordinateTransformation; -import dev.zarr.zarrjava.experimental.ome.metadata.Dataset; -import dev.zarr.zarrjava.experimental.ome.metadata.MultiscalesEntry; +import dev.zarr.conventions.ome.metadata.Axis; +import dev.zarr.conventions.ome.metadata.transform.CoordinateTransformation; +import dev.zarr.conventions.ome.metadata.transform.ScaleCoordinateTransformation; +import dev.zarr.conventions.ome.metadata.Dataset; +import dev.zarr.conventions.ome.metadata.MultiscalesEntry; import dev.zarr.zarrjava.store.FilesystemStore; import dev.zarr.zarrjava.store.StoreHandle; import dev.zarr.zarrjava.v3.Array; @@ -31,7 +31,7 @@ void userGuideReadingExampleWorks() throws Exception { int scaleCount = image.getScaleLevelCount(); List axisNames = image.getAxisNames(); - dev.zarr.zarrjava.experimental.ome.metadata.MultiscalesEntry entry0 = image.getMultiscaleNode(0); + dev.zarr.conventions.ome.metadata.MultiscalesEntry entry0 = image.getMultiscaleNode(0); dev.zarr.zarrjava.core.Array s0 = image.openScaleLevel(0); ucar.ma2.Array full = s0.read(); @@ -61,7 +61,7 @@ void userGuideWritingExampleWorks() throws Exception { MultiscalesEntry ms = new MultiscalesEntry( Arrays.asList(new Axis("y", "space", "micrometer"), new Axis("x", "space", "micrometer")), Collections.emptyList()); - dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage written = dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage.create(out, ms); + dev.zarr.conventions.ome.v0_5.MultiscaleImage written = dev.zarr.conventions.ome.v0_5.MultiscaleImage.create(out, ms); written.createScaleLevel( "s0", @@ -81,7 +81,7 @@ void userGuideWritingExampleWorks() throws Exception { Collections.singletonList(CoordinateTransformation.scale(Arrays.asList(2.0, 2.0)))); MultiscaleImage reopened = MultiscaleImage.open(out); - assertInstanceOf(dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage.class, reopened); + assertInstanceOf(dev.zarr.conventions.ome.v0_5.MultiscaleImage.class, reopened); assertEquals(2, reopened.getScaleLevelCount()); assertEquals("s0", reopened.getMultiscaleNode(0).datasets.get(0).path); assertEquals("s1", reopened.getMultiscaleNode(0).datasets.get(1).path); diff --git a/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV04Test.java b/src/test/java/dev/zarr/conventions/ome/OmeZarrV04Test.java similarity index 79% rename from src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV04Test.java rename to src/test/java/dev/zarr/conventions/ome/OmeZarrV04Test.java index b08a7715..62d8ce0a 100644 --- a/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV04Test.java +++ b/src/test/java/dev/zarr/conventions/ome/OmeZarrV04Test.java @@ -1,16 +1,16 @@ -package dev.zarr.zarrjava.experimental.ome; - -import dev.zarr.zarrjava.experimental.ome.metadata.Axis; -import dev.zarr.zarrjava.experimental.ome.metadata.transform.CoordinateTransformation; -import dev.zarr.zarrjava.experimental.ome.metadata.transform.ScaleCoordinateTransformation; -import dev.zarr.zarrjava.experimental.ome.metadata.MultiscalesEntry; -import dev.zarr.zarrjava.experimental.ome.metadata.OmeroMetadata; -import dev.zarr.zarrjava.experimental.ome.metadata.OmeroChannel; -import dev.zarr.zarrjava.experimental.ome.metadata.OmeroRdefs; -import dev.zarr.zarrjava.experimental.ome.metadata.OmeroWindow; -import dev.zarr.zarrjava.experimental.ome.metadata.PlateMetadata; -import dev.zarr.zarrjava.experimental.ome.metadata.NamedEntry; -import dev.zarr.zarrjava.experimental.ome.metadata.WellRef; +package dev.zarr.conventions.ome; + +import dev.zarr.conventions.ome.metadata.Axis; +import dev.zarr.conventions.ome.metadata.transform.CoordinateTransformation; +import dev.zarr.conventions.ome.metadata.transform.ScaleCoordinateTransformation; +import dev.zarr.conventions.ome.metadata.MultiscalesEntry; +import dev.zarr.conventions.ome.metadata.OmeroMetadata; +import dev.zarr.conventions.ome.metadata.OmeroChannel; +import dev.zarr.conventions.ome.metadata.OmeroRdefs; +import dev.zarr.conventions.ome.metadata.OmeroWindow; +import dev.zarr.conventions.ome.metadata.PlateMetadata; +import dev.zarr.conventions.ome.metadata.NamedEntry; +import dev.zarr.conventions.ome.metadata.WellRef; import dev.zarr.zarrjava.store.S3Store; import dev.zarr.zarrjava.store.StoreHandle; import org.junit.jupiter.api.Test; @@ -46,7 +46,7 @@ StoreHandle imageStoreHandle() throws Exception { @Override Class expectedConcreteClass() { - return dev.zarr.zarrjava.experimental.ome.v0_4.MultiscaleImage.class; + return dev.zarr.conventions.ome.v0_4.MultiscaleImage.class; } @Override @@ -81,8 +81,8 @@ void typedEntryLevel0ScaleValues() throws Exception { @Test void omeroChannels() throws Exception { - dev.zarr.zarrjava.experimental.ome.v0_4.MultiscaleImage image = - dev.zarr.zarrjava.experimental.ome.v0_4.MultiscaleImage.openMultiscaleImage(imageStoreHandle()); + dev.zarr.conventions.ome.v0_4.MultiscaleImage image = + dev.zarr.conventions.ome.v0_4.MultiscaleImage.openMultiscaleImage(imageStoreHandle()); OmeroMetadata omero = image.getOmeroMetadata(); assertNotNull(omero); assertNull(omero.id); @@ -95,8 +95,8 @@ void omeroChannels() throws Exception { @Test void bioformats2rawLayoutValue() throws Exception { - dev.zarr.zarrjava.experimental.ome.v0_4.MultiscaleImage image = - dev.zarr.zarrjava.experimental.ome.v0_4.MultiscaleImage.openMultiscaleImage(imageStoreHandle()); + dev.zarr.conventions.ome.v0_4.MultiscaleImage image = + dev.zarr.conventions.ome.v0_4.MultiscaleImage.openMultiscaleImage(imageStoreHandle()); assertEquals(Integer.valueOf(3), image.getBioformats2rawLayout()); } @@ -112,7 +112,7 @@ void labelsList() throws Exception { void labelsOpenLabel() throws Exception { MultiscaleImage image = MultiscaleImage.open(imageStoreHandle()); MultiscaleImage nuclei = image.openLabel("nuclei"); - assertInstanceOf(dev.zarr.zarrjava.experimental.ome.v0_4.MultiscaleImage.class, nuclei); + assertInstanceOf(dev.zarr.conventions.ome.v0_4.MultiscaleImage.class, nuclei); assertEquals(Arrays.asList("z", "y", "x"), nuclei.getAxisNames()); } @@ -121,7 +121,7 @@ void labelsOpenLabel() throws Exception { @Test void hcsPlate() throws Exception { Plate plate = Plate.open(storeHandle(TESTDATA.resolve("ome/v0.4_hcs"))); - assertInstanceOf(dev.zarr.zarrjava.experimental.ome.v0_4.Plate.class, plate); + assertInstanceOf(dev.zarr.conventions.ome.v0_4.Plate.class, plate); PlateMetadata meta = plate.getPlateMetadata(); assertEquals(2, meta.columns.size()); assertEquals("A", meta.rows.get(0).name); @@ -132,7 +132,7 @@ void hcsPlate() throws Exception { void hcsWellViaPlate() throws Exception { Plate plate = Plate.open(storeHandle(TESTDATA.resolve("ome/v0.4_hcs"))); Well well = plate.openWell("A/1"); - assertInstanceOf(dev.zarr.zarrjava.experimental.ome.v0_4.Well.class, well); + assertInstanceOf(dev.zarr.conventions.ome.v0_4.Well.class, well); assertEquals(1, well.getWellMetadata().images.size()); assertEquals("0", well.getWellMetadata().images.get(0).path); } @@ -141,7 +141,7 @@ void hcsWellViaPlate() throws Exception { void hcsFullNavigation() throws Exception { Plate plate = Plate.open(storeHandle(TESTDATA.resolve("ome/v0.4_hcs"))); MultiscaleImage fov = plate.openWell("A/1").openImage("0"); - assertInstanceOf(dev.zarr.zarrjava.experimental.ome.v0_4.MultiscaleImage.class, fov); + assertInstanceOf(dev.zarr.conventions.ome.v0_4.MultiscaleImage.class, fov); assertEquals(Arrays.asList("t", "c", "z", "y", "x"), fov.getAxisNames()); } @@ -153,15 +153,15 @@ void writeCreateAndReopen() throws Exception { new Axis("z", "space", "micrometer"), new Axis("y", "space", "micrometer")); StoreHandle handle = storeHandle(TESTOUTPUT.resolve("ome_v04_create")); - dev.zarr.zarrjava.experimental.ome.v0_4.MultiscaleImage created = - dev.zarr.zarrjava.experimental.ome.v0_4.MultiscaleImage.create(handle, new MultiscalesEntry(axes, Collections.emptyList())); + dev.zarr.conventions.ome.v0_4.MultiscaleImage created = + dev.zarr.conventions.ome.v0_4.MultiscaleImage.create(handle, new MultiscalesEntry(axes, Collections.emptyList())); created.createScaleLevel("0", new dev.zarr.zarrjava.v2.ArrayMetadata(2, new long[]{16, 16}, new int[]{16, 16}, dev.zarr.zarrjava.v2.DataType.FLOAT32, 0, dev.zarr.zarrjava.v2.Order.C, null, null, null), Collections.singletonList(CoordinateTransformation.scale(Arrays.asList(0.5, 0.5)))); MultiscaleImage reopened = MultiscaleImage.open(handle); - assertInstanceOf(dev.zarr.zarrjava.experimental.ome.v0_4.MultiscaleImage.class, reopened); + assertInstanceOf(dev.zarr.conventions.ome.v0_4.MultiscaleImage.class, reopened); assertEquals(Arrays.asList("z", "y"), reopened.getAxisNames()); assertEquals(1, reopened.getScaleLevelCount()); } @@ -170,8 +170,8 @@ void writeCreateAndReopen() throws Exception { void writeOmeroRoundTrip() throws Exception { List axes = Arrays.asList(new Axis("z", "space", "micrometer"), new Axis("y", "space", "micrometer")); StoreHandle handle = storeHandle(TESTOUTPUT.resolve("ome_v04_omero")); - dev.zarr.zarrjava.experimental.ome.v0_4.MultiscaleImage created = - dev.zarr.zarrjava.experimental.ome.v0_4.MultiscaleImage.create(handle, new MultiscalesEntry(axes, Collections.emptyList())); + dev.zarr.conventions.ome.v0_4.MultiscaleImage created = + dev.zarr.conventions.ome.v0_4.MultiscaleImage.create(handle, new MultiscalesEntry(axes, Collections.emptyList())); created.createScaleLevel("0", new dev.zarr.zarrjava.v2.ArrayMetadata(2, new long[]{16, 16}, new int[]{16, 16}, dev.zarr.zarrjava.v2.DataType.FLOAT32, 0, dev.zarr.zarrjava.v2.Order.C, null, null, null), @@ -183,8 +183,8 @@ void writeOmeroRoundTrip() throws Exception { OmeroRdefs rd = new OmeroRdefs(0, 0, "color"); created.setOmeroMetadata(new OmeroMetadata(1, "0.5", "example.tif", Collections.singletonList(ch), rd)); - dev.zarr.zarrjava.experimental.ome.v0_4.MultiscaleImage reopened = - dev.zarr.zarrjava.experimental.ome.v0_4.MultiscaleImage.openMultiscaleImage(handle); + dev.zarr.conventions.ome.v0_4.MultiscaleImage reopened = + dev.zarr.conventions.ome.v0_4.MultiscaleImage.openMultiscaleImage(handle); OmeroMetadata got = reopened.getOmeroMetadata(); assertNotNull(got); assertEquals(Integer.valueOf(1), got.id); @@ -202,7 +202,7 @@ void writePlateRoundTrip() throws Exception { Collections.singletonList(new WellRef("A/1", 0, 0)), null, null, null, null); StoreHandle handle = storeHandle(TESTOUTPUT.resolve("ome_v04_plate")); - dev.zarr.zarrjava.experimental.ome.v0_4.Plate.createPlate(handle, meta); + dev.zarr.conventions.ome.v0_4.Plate.createPlate(handle, meta); Plate reopened = Plate.open(handle); assertEquals(2, reopened.getPlateMetadata().columns.size()); assertEquals("A/1", reopened.getPlateMetadata().wells.get(0).path); @@ -212,7 +212,7 @@ void writePlateRoundTrip() throws Exception { void openS3Idr0048AV04() throws Exception { StoreHandle handle = publicIrdV04Store("9846152.zarr"); MultiscaleImage image = MultiscaleImage.open(handle); - assertInstanceOf(dev.zarr.zarrjava.experimental.ome.v0_4.MultiscaleImage.class, image); + assertInstanceOf(dev.zarr.conventions.ome.v0_4.MultiscaleImage.class, image); assertEquals(9, image.getScaleLevelCount()); MultiscalesMetadataImage typed = (MultiscalesMetadataImage) image; @@ -221,7 +221,7 @@ void openS3Idr0048AV04() throws Exception { assertEquals(Arrays.asList("c", "z", "y", "x"), image.getAxisNames()); assertEquals(9, entry.datasets.size()); for (int i = 0; i < entry.datasets.size(); i++) { - dev.zarr.zarrjava.experimental.ome.metadata.Dataset ds = entry.datasets.get(i); + dev.zarr.conventions.ome.metadata.Dataset ds = entry.datasets.get(i); assertEquals(Integer.toString(i), ds.path); assertEquals("scale", ds.coordinateTransformations.get(0).type); assertEquals(4, ((ScaleCoordinateTransformation) ds.coordinateTransformations.get(0)).scale.size()); diff --git a/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV05Test.java b/src/test/java/dev/zarr/conventions/ome/OmeZarrV05Test.java similarity index 80% rename from src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV05Test.java rename to src/test/java/dev/zarr/conventions/ome/OmeZarrV05Test.java index fd820c88..9d592c39 100644 --- a/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV05Test.java +++ b/src/test/java/dev/zarr/conventions/ome/OmeZarrV05Test.java @@ -1,16 +1,16 @@ -package dev.zarr.zarrjava.experimental.ome; +package dev.zarr.conventions.ome; import dev.zarr.zarrjava.core.Attributes; -import dev.zarr.zarrjava.experimental.ome.metadata.Axis; -import dev.zarr.zarrjava.experimental.ome.metadata.transform.CoordinateTransformation; -import dev.zarr.zarrjava.experimental.ome.metadata.transform.ScaleCoordinateTransformation; -import dev.zarr.zarrjava.experimental.ome.metadata.MultiscalesEntry; -import dev.zarr.zarrjava.experimental.ome.metadata.NamedEntry; -import dev.zarr.zarrjava.experimental.ome.metadata.OmeroMetadata; -import dev.zarr.zarrjava.experimental.ome.metadata.PlateMetadata; -import dev.zarr.zarrjava.experimental.ome.metadata.WellImage; -import dev.zarr.zarrjava.experimental.ome.metadata.WellMetadata; -import dev.zarr.zarrjava.experimental.ome.metadata.WellRef; +import dev.zarr.conventions.ome.metadata.Axis; +import dev.zarr.conventions.ome.metadata.transform.CoordinateTransformation; +import dev.zarr.conventions.ome.metadata.transform.ScaleCoordinateTransformation; +import dev.zarr.conventions.ome.metadata.MultiscalesEntry; +import dev.zarr.conventions.ome.metadata.NamedEntry; +import dev.zarr.conventions.ome.metadata.OmeroMetadata; +import dev.zarr.conventions.ome.metadata.PlateMetadata; +import dev.zarr.conventions.ome.metadata.WellImage; +import dev.zarr.conventions.ome.metadata.WellMetadata; +import dev.zarr.conventions.ome.metadata.WellRef; import dev.zarr.zarrjava.store.S3Store; import dev.zarr.zarrjava.store.StoreHandle; import dev.zarr.zarrjava.v3.Array; @@ -48,7 +48,7 @@ StoreHandle imageStoreHandle() throws Exception { @Override Class expectedConcreteClass() { - return dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage.class; + return dev.zarr.conventions.ome.v0_5.MultiscaleImage.class; } @Override @@ -91,8 +91,8 @@ void openScaleLevelLevel1HasExpectedShape() throws Exception { @Test void omeroChannels() throws Exception { - dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage image = - dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage.openMultiscaleImage(imageStoreHandle()); + dev.zarr.conventions.ome.v0_5.MultiscaleImage image = + dev.zarr.conventions.ome.v0_5.MultiscaleImage.openMultiscaleImage(imageStoreHandle()); OmeroMetadata omero = image.getOmeroMetadata(); assertNotNull(omero); assertNull(omero.id); @@ -106,8 +106,8 @@ void omeroChannels() throws Exception { @Test void bioformats2rawLayoutValue() throws Exception { - dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage image = - dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage.openMultiscaleImage(imageStoreHandle()); + dev.zarr.conventions.ome.v0_5.MultiscaleImage image = + dev.zarr.conventions.ome.v0_5.MultiscaleImage.openMultiscaleImage(imageStoreHandle()); assertEquals(Integer.valueOf(3), image.getBioformats2rawLayout()); } @@ -123,7 +123,7 @@ void labelsList() throws Exception { void labelsOpenLabel() throws Exception { MultiscaleImage image = MultiscaleImage.open(imageStoreHandle()); MultiscaleImage nuclei = image.openLabel("nuclei"); - assertInstanceOf(dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage.class, nuclei); + assertInstanceOf(dev.zarr.conventions.ome.v0_5.MultiscaleImage.class, nuclei); assertEquals(Arrays.asList("z", "y", "x"), nuclei.getAxisNames()); } @@ -132,7 +132,7 @@ void labelsOpenLabel() throws Exception { @Test void hcsPlate() throws Exception { Plate plate = Plate.open(storeHandle(TESTDATA.resolve("ome/v0.5_hcs"))); - assertInstanceOf(dev.zarr.zarrjava.experimental.ome.v0_5.Plate.class, plate); + assertInstanceOf(dev.zarr.conventions.ome.v0_5.Plate.class, plate); PlateMetadata meta = plate.getPlateMetadata(); assertEquals(2, meta.columns.size()); assertEquals(2, meta.rows.size()); @@ -145,7 +145,7 @@ void hcsPlate() throws Exception { void hcsWellViaPlate() throws Exception { Plate plate = Plate.open(storeHandle(TESTDATA.resolve("ome/v0.5_hcs"))); Well well = plate.openWell("A/1"); - assertInstanceOf(dev.zarr.zarrjava.experimental.ome.v0_5.Well.class, well); + assertInstanceOf(dev.zarr.conventions.ome.v0_5.Well.class, well); assertEquals(1, well.getWellMetadata().images.size()); assertEquals("0", well.getWellMetadata().images.get(0).path); assertEquals(Integer.valueOf(0), well.getWellMetadata().images.get(0).acquisition); @@ -155,7 +155,7 @@ void hcsWellViaPlate() throws Exception { void hcsFullNavigation() throws Exception { Plate plate = Plate.open(storeHandle(TESTDATA.resolve("ome/v0.5_hcs"))); MultiscaleImage fov = plate.openWell("A/1").openImage("0"); - assertInstanceOf(dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage.class, fov); + assertInstanceOf(dev.zarr.conventions.ome.v0_5.MultiscaleImage.class, fov); assertEquals(Arrays.asList("t", "c", "z", "y", "x"), fov.getAxisNames()); } @@ -167,14 +167,14 @@ void writeCreateAndReopen() throws Exception { new Axis("z", "space", "micrometer"), new Axis("y", "space", "micrometer")); StoreHandle handle = storeHandle(TESTOUTPUT.resolve("ome_v05_create")); - dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage created = - dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage.create(handle, new MultiscalesEntry(axes, Collections.emptyList())); + dev.zarr.conventions.ome.v0_5.MultiscaleImage created = + dev.zarr.conventions.ome.v0_5.MultiscaleImage.create(handle, new MultiscalesEntry(axes, Collections.emptyList())); created.createScaleLevel("0", Array.metadataBuilder().withShape(16, 16).withChunkShape(16, 16).withDataType(DataType.FLOAT32).build(), Collections.singletonList(CoordinateTransformation.scale(Arrays.asList(0.5, 0.5)))); MultiscaleImage reopened = MultiscaleImage.open(handle); - assertInstanceOf(dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage.class, reopened); + assertInstanceOf(dev.zarr.conventions.ome.v0_5.MultiscaleImage.class, reopened); assertEquals(Arrays.asList("z", "y"), reopened.getAxisNames()); assertEquals(1, reopened.getScaleLevelCount()); assertEquals("0", reopened.getMultiscaleNode(0).datasets.get(0).path); @@ -186,13 +186,13 @@ void writeLabelsRoundTrip() throws Exception { new Axis("z", "space", "micrometer"), new Axis("y", "space", "micrometer")); StoreHandle handle = storeHandle(TESTOUTPUT.resolve("ome_v05_labels")); - dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage.create(handle, new MultiscalesEntry(axes, Collections.emptyList())); + dev.zarr.conventions.ome.v0_5.MultiscaleImage.create(handle, new MultiscalesEntry(axes, Collections.emptyList())); Attributes labelsAttrs = new Attributes(); labelsAttrs.put("labels", Arrays.asList("nuclei")); dev.zarr.zarrjava.v3.Group.create(handle.resolve("labels"), labelsAttrs); - dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage nuclei = dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage.create( + dev.zarr.conventions.ome.v0_5.MultiscaleImage nuclei = dev.zarr.conventions.ome.v0_5.MultiscaleImage.create( handle.resolve("labels").resolve("nuclei"), new MultiscalesEntry(axes, Collections.emptyList())); nuclei.createScaleLevel("0", Array.metadataBuilder().withShape(16, 16).withChunkShape(16, 16).withDataType(DataType.UINT8).build(), @@ -211,7 +211,7 @@ void writePlateRoundTrip() throws Exception { Collections.singletonList(new WellRef("A/1", 0, 0)), null, null, null, null); StoreHandle handle = storeHandle(TESTOUTPUT.resolve("ome_v05_plate")); - dev.zarr.zarrjava.experimental.ome.v0_5.Plate.createPlate(handle, meta); + dev.zarr.conventions.ome.v0_5.Plate.createPlate(handle, meta); Plate reopened = Plate.open(handle); assertEquals(2, reopened.getPlateMetadata().columns.size()); assertEquals("A", reopened.getPlateMetadata().rows.get(0).name); @@ -221,24 +221,24 @@ void writePlateRoundTrip() throws Exception { @Test void writeHcsFullIntegration() throws Exception { StoreHandle plateHandle = storeHandle(TESTOUTPUT.resolve("ome_v05_hcs_full")); - dev.zarr.zarrjava.experimental.ome.v0_5.Plate.createPlate(plateHandle, new PlateMetadata( + dev.zarr.conventions.ome.v0_5.Plate.createPlate(plateHandle, new PlateMetadata( Collections.singletonList(new NamedEntry("1")), Collections.singletonList(new NamedEntry("A")), Collections.singletonList(new WellRef("A/1", 0, 0)), null, null, null, null)); - dev.zarr.zarrjava.experimental.ome.v0_5.Well.createWell( + dev.zarr.conventions.ome.v0_5.Well.createWell( plateHandle.resolve("A/1"), new WellMetadata(Collections.singletonList(new WellImage("0", null)))); List axes = Arrays.asList(new Axis("z", "space", "micrometer"), new Axis("y", "space", "micrometer")); - dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage fov = dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage.create( + dev.zarr.conventions.ome.v0_5.MultiscaleImage fov = dev.zarr.conventions.ome.v0_5.MultiscaleImage.create( plateHandle.resolve("A/1").resolve("0"), new MultiscalesEntry(axes, Collections.emptyList())); fov.createScaleLevel("0", Array.metadataBuilder().withShape(16, 16).withChunkShape(16, 16).withDataType(DataType.FLOAT32).build(), Collections.singletonList(CoordinateTransformation.scale(Arrays.asList(1.0, 1.0)))); MultiscaleImage image = Plate.open(plateHandle).openWell("A/1").openImage("0"); - assertInstanceOf(dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage.class, image); + assertInstanceOf(dev.zarr.conventions.ome.v0_5.MultiscaleImage.class, image); assertEquals(Arrays.asList("z", "y"), image.getAxisNames()); } @@ -246,7 +246,7 @@ void writeHcsFullIntegration() throws Exception { void openS3Idr0083V05() throws Exception { StoreHandle handle = publicIrdV05Store("zarr/v0.5/idr0083", "9822152.zarr"); MultiscaleImage image = MultiscaleImage.open(handle); - assertInstanceOf(dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage.class, image); + assertInstanceOf(dev.zarr.conventions.ome.v0_5.MultiscaleImage.class, image); assertEquals(11, image.getScaleLevelCount()); MultiscalesMetadataImage typed = (MultiscalesMetadataImage) image; @@ -256,7 +256,7 @@ void openS3Idr0083V05() throws Exception { assertEquals(Arrays.asList("t", "c", "z", "y", "x"), image.getAxisNames()); assertEquals(11, entry.datasets.size()); for (int i = 0; i < entry.datasets.size(); i++) { - dev.zarr.zarrjava.experimental.ome.metadata.Dataset ds = entry.datasets.get(i); + dev.zarr.conventions.ome.metadata.Dataset ds = entry.datasets.get(i); assertEquals(Integer.toString(i), ds.path); assertEquals("scale", ds.coordinateTransformations.get(0).type); assertEquals(5, ((ScaleCoordinateTransformation) ds.coordinateTransformations.get(0)).scale.size()); diff --git a/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV06Test.java b/src/test/java/dev/zarr/conventions/ome/OmeZarrV06Test.java similarity index 63% rename from src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV06Test.java rename to src/test/java/dev/zarr/conventions/ome/OmeZarrV06Test.java index 779d0d4e..54339dbc 100644 --- a/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV06Test.java +++ b/src/test/java/dev/zarr/conventions/ome/OmeZarrV06Test.java @@ -1,15 +1,15 @@ -package dev.zarr.zarrjava.experimental.ome; - -import dev.zarr.zarrjava.experimental.ome.metadata.MultiscalesEntry; -import dev.zarr.zarrjava.experimental.ome.metadata.NamedEntry; -import dev.zarr.zarrjava.experimental.ome.metadata.OmeroChannel; -import dev.zarr.zarrjava.experimental.ome.metadata.OmeroRdefs; -import dev.zarr.zarrjava.experimental.ome.metadata.OmeroWindow; -import dev.zarr.zarrjava.experimental.ome.metadata.PlateMetadata; -import dev.zarr.zarrjava.experimental.ome.metadata.WellImage; -import dev.zarr.zarrjava.experimental.ome.metadata.WellMetadata; -import dev.zarr.zarrjava.experimental.ome.metadata.WellRef; -import dev.zarr.zarrjava.experimental.ome.v0_6.metadata.CoordinateSystem; +package dev.zarr.conventions.ome; + +import dev.zarr.conventions.ome.metadata.MultiscalesEntry; +import dev.zarr.conventions.ome.metadata.NamedEntry; +import dev.zarr.conventions.ome.metadata.OmeroChannel; +import dev.zarr.conventions.ome.metadata.OmeroRdefs; +import dev.zarr.conventions.ome.metadata.OmeroWindow; +import dev.zarr.conventions.ome.metadata.PlateMetadata; +import dev.zarr.conventions.ome.metadata.WellImage; +import dev.zarr.conventions.ome.metadata.WellMetadata; +import dev.zarr.conventions.ome.metadata.WellRef; +import dev.zarr.conventions.ome.v0_6.metadata.CoordinateSystem; import dev.zarr.zarrjava.store.StoreHandle; import org.junit.jupiter.api.Test; @@ -35,7 +35,7 @@ StoreHandle imageStoreHandle() throws Exception { @Override Class expectedConcreteClass() { - return dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage.class; + return dev.zarr.conventions.ome.v0_6.MultiscaleImage.class; } @Override @@ -55,9 +55,9 @@ List expectedAxisNames() { @SuppressWarnings("unchecked") void coordinateSystemsPresentInEntry() throws Exception { MultiscaleImage image = MultiscaleImage.open(imageStoreHandle()); - dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage v06Image = - (dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage) image; - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.MultiscalesEntry entry = v06Image.getMultiscalesEntry(0); + dev.zarr.conventions.ome.v0_6.MultiscaleImage v06Image = + (dev.zarr.conventions.ome.v0_6.MultiscaleImage) image; + dev.zarr.conventions.ome.v0_6.metadata.MultiscalesEntry entry = v06Image.getMultiscalesEntry(0); assertNotNull(entry.coordinateSystems); assertEquals(1, entry.coordinateSystems.size()); @@ -74,9 +74,9 @@ void coordinateSystemsPresentInEntry() throws Exception { @SuppressWarnings("unchecked") void datasetsPathsAndTransformations() throws Exception { MultiscaleImage image = MultiscaleImage.open(imageStoreHandle()); - dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage v06Image = - (dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage) image; - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.MultiscalesEntry entry = v06Image.getMultiscalesEntry(0); + dev.zarr.conventions.ome.v0_6.MultiscaleImage v06Image = + (dev.zarr.conventions.ome.v0_6.MultiscaleImage) image; + dev.zarr.conventions.ome.v0_6.metadata.MultiscalesEntry entry = v06Image.getMultiscalesEntry(0); assertNotNull(entry.datasets); assertEquals(3, entry.datasets.size()); @@ -84,14 +84,14 @@ void datasetsPathsAndTransformations() throws Exception { assertEquals("s1", entry.datasets.get(1).path); assertEquals("s2", entry.datasets.get(2).path); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation ct = + dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinateTransformation ct = entry.datasets.get(0).coordinateTransformations.get(0); assertEquals("scale", ct.getType()); assertEquals("s0", ct.getInput()); assertEquals("physical", ct.getOutput()); - assertInstanceOf(dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.ScaleCoordinateTransformation.class, ct); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.ScaleCoordinateTransformation scaleCt = - (dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.ScaleCoordinateTransformation) ct; + assertInstanceOf(dev.zarr.conventions.ome.v0_6.metadata.transform.ScaleCoordinateTransformation.class, ct); + dev.zarr.conventions.ome.v0_6.metadata.transform.ScaleCoordinateTransformation scaleCt = + (dev.zarr.conventions.ome.v0_6.metadata.transform.ScaleCoordinateTransformation) ct; assertNotNull(scaleCt.scale); assertEquals(2, scaleCt.scale.size()); assertEquals(6.0, scaleCt.scale.get(0), 1e-9); @@ -115,17 +115,17 @@ void unifiedInterfaceNodesAndPaths() throws Exception { @SuppressWarnings("unchecked") void read3dAxesFromCoordinateSystems() throws Exception { MultiscaleImage image = MultiscaleImage.open(storeHandle(V06_3D)); - assertInstanceOf(dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage.class, image); + assertInstanceOf(dev.zarr.conventions.ome.v0_6.MultiscaleImage.class, image); - dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage v06Image = - (dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage) image; - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.MultiscalesEntry entry = v06Image.getMultiscalesEntry(0); + dev.zarr.conventions.ome.v0_6.MultiscaleImage v06Image = + (dev.zarr.conventions.ome.v0_6.MultiscaleImage) image; + dev.zarr.conventions.ome.v0_6.metadata.MultiscalesEntry entry = v06Image.getMultiscalesEntry(0); assertEquals(3, entry.datasets.size()); assertNotNull(entry.coordinateSystems); assertFalse(entry.coordinateSystems.isEmpty()); - List axes = entry.coordinateSystems.get(0).axes; + List axes = entry.coordinateSystems.get(0).axes; assertEquals(3, axes.size()); assertEquals("z", axes.get(0).name); assertEquals("y", axes.get(1).name); @@ -142,7 +142,7 @@ void read3dUnifiedAxisNames() throws Exception { @Test void readHumanOrganAtlasOverview() throws Exception { MultiscaleImage image = MultiscaleImage.open(storeHandle(V06_HUMAN_ORGAN_ATLAS_OVERVIEW)); - assertInstanceOf(dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage.class, image); + assertInstanceOf(dev.zarr.conventions.ome.v0_6.MultiscaleImage.class, image); assertEquals(2, image.getScaleLevelCount()); assertEquals(Arrays.asList("x", "y", "z"), image.getAxisNames()); @@ -153,8 +153,8 @@ void readHumanOrganAtlasOverview() throws Exception { dev.zarr.zarrjava.core.Array level0 = image.openScaleLevel(0); assertArrayEquals(new long[]{8308, 8308, 9564}, level0.metadata().shape); - dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage typed = (dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage) image; - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.MultiscalesEntry entry = typed.getMultiscalesEntry(0); + dev.zarr.conventions.ome.v0_6.MultiscaleImage typed = (dev.zarr.conventions.ome.v0_6.MultiscaleImage) image; + dev.zarr.conventions.ome.v0_6.metadata.MultiscalesEntry entry = typed.getMultiscalesEntry(0); assertNotNull(entry.coordinateSystems); assertEquals(2, entry.coordinateSystems.size()); assertEquals("physical", entry.coordinateSystems.get(0).name); @@ -166,17 +166,17 @@ void readHumanOrganAtlasOverview() throws Exception { void readV06WithOmeroMetadata() throws Exception { java.nio.file.Path out = TESTOUTPUT.resolve("ome_v06_with_omero"); StoreHandle outHandle = storeHandle(out); - java.util.List axes = Arrays.asList( - new dev.zarr.zarrjava.experimental.ome.metadata.Axis("y", "space", "micrometer"), - new dev.zarr.zarrjava.experimental.ome.metadata.Axis("x", "space", "micrometer")); - java.util.List datasets = - java.util.Collections.singletonList(new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.Dataset( + java.util.List axes = Arrays.asList( + new dev.zarr.conventions.ome.metadata.Axis("y", "space", "micrometer"), + new dev.zarr.conventions.ome.metadata.Axis("x", "space", "micrometer")); + java.util.List datasets = + java.util.Collections.singletonList(new dev.zarr.conventions.ome.v0_6.metadata.Dataset( "s0", java.util.Collections.singletonList( - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation.scale( + dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinateTransformation.scale( Arrays.asList(1.0, 1.0), "s0", "physical")))); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.MultiscalesEntry ms = - new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.MultiscalesEntry( + dev.zarr.conventions.ome.v0_6.metadata.MultiscalesEntry ms = + new dev.zarr.conventions.ome.v0_6.metadata.MultiscalesEntry( null, datasets, null, @@ -201,17 +201,17 @@ void readV06WithOmeroMetadata() throws Exception { false, "Actin", new OmeroWindow(10.0, 4096.0, 50.0, 2000.0)); - dev.zarr.zarrjava.experimental.ome.metadata.OmeroMetadata omero = - new dev.zarr.zarrjava.experimental.ome.metadata.OmeroMetadata( + dev.zarr.conventions.ome.metadata.OmeroMetadata omero = + new dev.zarr.conventions.ome.metadata.OmeroMetadata( 1, "0.5", "example.tif", Arrays.asList(ch, ch2), new OmeroRdefs(0, 0, "color")); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.OmeMetadata ome = - new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.OmeMetadata("0.6", java.util.Collections.singletonList(ms), omero); - dev.zarr.zarrjava.v3.Group.create(outHandle, dev.zarr.zarrjava.experimental.ome.OmeV3Group.omeAttributes(ome)); + dev.zarr.conventions.ome.v0_6.metadata.OmeMetadata ome = + new dev.zarr.conventions.ome.v0_6.metadata.OmeMetadata("0.6", java.util.Collections.singletonList(ms), omero); + dev.zarr.zarrjava.v3.Group.create(outHandle, dev.zarr.conventions.ome.OmeV3Group.omeAttributes(ome)); dev.zarr.zarrjava.v3.Array.create( outHandle.resolve("s0"), dev.zarr.zarrjava.v3.Array.metadataBuilder() @@ -220,8 +220,8 @@ void readV06WithOmeroMetadata() throws Exception { .withDataType(dev.zarr.zarrjava.v3.DataType.UINT16) .build()); - dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage read = - (dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage) MultiscaleImage.open(outHandle); + dev.zarr.conventions.ome.v0_6.MultiscaleImage read = + (dev.zarr.conventions.ome.v0_6.MultiscaleImage) MultiscaleImage.open(outHandle); assertNotNull(read.getOmeroMetadata()); assertEquals(Integer.valueOf(1), read.getOmeroMetadata().id); assertEquals("0.5", read.getOmeroMetadata().version); @@ -237,17 +237,17 @@ void readV06WithBioformats2rawLayout() throws Exception { java.nio.file.Path out = TESTOUTPUT.resolve("ome_v06_with_layout"); StoreHandle outHandle = storeHandle(out); - java.util.List axes = Arrays.asList( - new dev.zarr.zarrjava.experimental.ome.metadata.Axis("y", "space", "micrometer"), - new dev.zarr.zarrjava.experimental.ome.metadata.Axis("x", "space", "micrometer")); - java.util.List datasets = - java.util.Collections.singletonList(new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.Dataset( + java.util.List axes = Arrays.asList( + new dev.zarr.conventions.ome.metadata.Axis("y", "space", "micrometer"), + new dev.zarr.conventions.ome.metadata.Axis("x", "space", "micrometer")); + java.util.List datasets = + java.util.Collections.singletonList(new dev.zarr.conventions.ome.v0_6.metadata.Dataset( "s0", java.util.Collections.singletonList( - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation.scale( + dev.zarr.conventions.ome.v0_6.metadata.transform.CoordinateTransformation.scale( Arrays.asList(1.0, 1.0), "s0", "physical")))); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.MultiscalesEntry ms = - new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.MultiscalesEntry( + dev.zarr.conventions.ome.v0_6.metadata.MultiscalesEntry ms = + new dev.zarr.conventions.ome.v0_6.metadata.MultiscalesEntry( null, datasets, null, @@ -255,8 +255,8 @@ void readV06WithBioformats2rawLayout() throws Exception { "multiscales", null, null); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.OmeMetadata ome = - new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.OmeMetadata( + dev.zarr.conventions.ome.v0_6.metadata.OmeMetadata ome = + new dev.zarr.conventions.ome.v0_6.metadata.OmeMetadata( "0.6", java.util.Collections.singletonList(ms), null, @@ -264,7 +264,7 @@ void readV06WithBioformats2rawLayout() throws Exception { null, null, null); - dev.zarr.zarrjava.v3.Group.create(outHandle, dev.zarr.zarrjava.experimental.ome.OmeV3Group.omeAttributes(ome)); + dev.zarr.zarrjava.v3.Group.create(outHandle, dev.zarr.conventions.ome.OmeV3Group.omeAttributes(ome)); dev.zarr.zarrjava.v3.Array.create( outHandle.resolve("s0"), dev.zarr.zarrjava.v3.Array.metadataBuilder() @@ -273,28 +273,28 @@ void readV06WithBioformats2rawLayout() throws Exception { .withDataType(dev.zarr.zarrjava.v3.DataType.UINT16) .build()); - dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage read = - (dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage) MultiscaleImage.open(outHandle); + dev.zarr.conventions.ome.v0_6.MultiscaleImage read = + (dev.zarr.conventions.ome.v0_6.MultiscaleImage) MultiscaleImage.open(outHandle); assertEquals(Integer.valueOf(7), read.getBioformats2rawLayout()); } @Test void hcsV06PlateWellDispatchAndNavigation() throws Exception { StoreHandle plateHandle = storeHandle(TESTOUTPUT.resolve("ome_v06_hcs_full")); - dev.zarr.zarrjava.experimental.ome.v0_6.Plate.createPlate(plateHandle, new PlateMetadata( + dev.zarr.conventions.ome.v0_6.Plate.createPlate(plateHandle, new PlateMetadata( Collections.singletonList(new NamedEntry("1")), Collections.singletonList(new NamedEntry("A")), Collections.singletonList(new WellRef("A/1", 0, 0)), null, null, null, null)); - dev.zarr.zarrjava.experimental.ome.v0_6.Well.createWell( + dev.zarr.conventions.ome.v0_6.Well.createWell( plateHandle.resolve("A/1"), new WellMetadata(Collections.singletonList(new WellImage("0", null)))); - List axes = Arrays.asList( - new dev.zarr.zarrjava.experimental.ome.metadata.Axis("y", "space", "micrometer"), - new dev.zarr.zarrjava.experimental.ome.metadata.Axis("x", "space", "micrometer")); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.MultiscalesEntry ms = - new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.MultiscalesEntry( + List axes = Arrays.asList( + new dev.zarr.conventions.ome.metadata.Axis("y", "space", "micrometer"), + new dev.zarr.conventions.ome.metadata.Axis("x", "space", "micrometer")); + dev.zarr.conventions.ome.v0_6.metadata.MultiscalesEntry ms = + new dev.zarr.conventions.ome.v0_6.metadata.MultiscalesEntry( null, Collections.emptyList(), null, @@ -302,7 +302,7 @@ void hcsV06PlateWellDispatchAndNavigation() throws Exception { "multiscales", null, null); - dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage fov = dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage.create( + dev.zarr.conventions.ome.v0_6.MultiscaleImage fov = dev.zarr.conventions.ome.v0_6.MultiscaleImage.create( plateHandle.resolve("A/1").resolve("0"), ms); fov.createScaleLevel( "s0", @@ -311,17 +311,17 @@ void hcsV06PlateWellDispatchAndNavigation() throws Exception { .withChunkShape(8, 8) .withDataType(dev.zarr.zarrjava.v3.DataType.FLOAT32) .build(), - Collections.singletonList(dev.zarr.zarrjava.experimental.ome.metadata.transform.CoordinateTransformation.scale( + Collections.singletonList(dev.zarr.conventions.ome.metadata.transform.CoordinateTransformation.scale( Arrays.asList(1.0, 1.0)))); Plate plate = Plate.open(plateHandle); - assertInstanceOf(dev.zarr.zarrjava.experimental.ome.v0_6.Plate.class, plate); + assertInstanceOf(dev.zarr.conventions.ome.v0_6.Plate.class, plate); assertEquals("A/1", plate.getPlateMetadata().wells.get(0).path); Well well = plate.openWell("A/1"); - assertInstanceOf(dev.zarr.zarrjava.experimental.ome.v0_6.Well.class, well); + assertInstanceOf(dev.zarr.conventions.ome.v0_6.Well.class, well); assertEquals("0", well.getWellMetadata().images.get(0).path); MultiscaleImage image = well.openImage("0"); - assertInstanceOf(dev.zarr.zarrjava.experimental.ome.v0_6.MultiscaleImage.class, image); + assertInstanceOf(dev.zarr.conventions.ome.v0_6.MultiscaleImage.class, image); assertEquals(Collections.singletonList("s0"), Collections.singletonList(image.getMultiscaleNode(0).datasets.get(0).path)); assertEquals(Arrays.asList("y", "x"), image.getAxisNames());