From 1796bd61281659f0af1b603a96135ad57149c75f Mon Sep 17 00:00:00 2001 From: Konstantin Date: Wed, 24 Jun 2026 15:29:21 +0200 Subject: [PATCH 1/5] WIP --- .gitignore | 6 + pom.xml | 347 +++++++----------- todo.md | 29 ++ zarr-java-core/pom.xml | 164 +++++++++ .../java/dev/zarr/zarrjava/ZarrException.java | 0 .../main/java/dev/zarr/zarrjava/cli/Main.java | 0 .../dev/zarr/zarrjava/core/AbstractNode.java | 0 .../java/dev/zarr/zarrjava/core/Array.java | 0 .../dev/zarr/zarrjava/core/ArrayMetadata.java | 0 .../dev/zarr/zarrjava/core/Attributes.java | 0 .../java/dev/zarr/zarrjava/core/DataType.java | 0 .../java/dev/zarr/zarrjava/core/Group.java | 0 .../dev/zarr/zarrjava/core/GroupMetadata.java | 0 .../java/dev/zarr/zarrjava/core/Node.java | 0 .../chunkkeyencoding/ChunkKeyEncoding.java | 0 .../core/chunkkeyencoding/Separator.java | 0 .../zarrjava/core/codec/AbstractCodec.java | 0 .../zarrjava/core/codec/ArrayArrayCodec.java | 0 .../zarrjava/core/codec/ArrayBytesCodec.java | 0 .../zarrjava/core/codec/BytesBytesCodec.java | 0 .../dev/zarr/zarrjava/core/codec/Codec.java | 0 .../zarrjava/core/codec/CodecBuilder.java | 0 .../zarrjava/core/codec/CodecPipeline.java | 0 .../zarrjava/core/codec/core/BloscCodec.java | 0 .../zarrjava/core/codec/core/BytesCodec.java | 0 .../zarrjava/core/codec/core/ZstdCodec.java | 0 .../zarr/zarrjava/store/BufferedZipStore.java | 0 .../zarr/zarrjava/store/FilesystemStore.java | 0 .../dev/zarr/zarrjava/store/HttpStore.java | 0 .../dev/zarr/zarrjava/store/MemoryStore.java | 0 .../zarr/zarrjava/store/ReadOnlyZipStore.java | 0 .../java/dev/zarr/zarrjava/store/S3Store.java | 0 .../java/dev/zarr/zarrjava/store/Store.java | 0 .../zarr/zarrjava/store/StoreException.java | 0 .../dev/zarr/zarrjava/store/StoreHandle.java | 0 .../dev/zarr/zarrjava/store/ZipStore.java | 0 .../java/dev/zarr/zarrjava/utils/CRC32C.java | 0 .../zarr/zarrjava/utils/IndexingUtils.java | 0 .../zarr/zarrjava/utils/MultiArrayUtils.java | 0 .../java/dev/zarr/zarrjava/utils/Utils.java | 0 .../main/java/dev/zarr/zarrjava/v2/Array.java | 0 .../dev/zarr/zarrjava/v2/ArrayMetadata.java | 0 .../zarrjava/v2/ArrayMetadataBuilder.java | 0 .../java/dev/zarr/zarrjava/v2/DataType.java | 0 .../java/dev/zarr/zarrjava/v2/Endianness.java | 0 .../main/java/dev/zarr/zarrjava/v2/Group.java | 0 .../dev/zarr/zarrjava/v2/GroupMetadata.java | 0 .../main/java/dev/zarr/zarrjava/v2/Node.java | 0 .../main/java/dev/zarr/zarrjava/v2/Order.java | 0 .../chunkkeyencoding/V2ChunkKeyEncoding.java | 0 .../dev/zarr/zarrjava/v2/codec/Codec.java | 0 .../zarr/zarrjava/v2/codec/CodecRegistry.java | 0 .../zarrjava/v2/codec/core/BloscCodec.java | 0 .../zarrjava/v2/codec/core/BytesCodec.java | 0 .../zarrjava/v2/codec/core/ZlibCodec.java | 0 .../zarrjava/v2/codec/core/ZstdCodec.java | 0 .../main/java/dev/zarr/zarrjava/v3/Array.java | 0 .../dev/zarr/zarrjava/v3/ArrayMetadata.java | 0 .../zarrjava/v3/ArrayMetadataBuilder.java | 0 .../java/dev/zarr/zarrjava/v3/DataType.java | 0 .../main/java/dev/zarr/zarrjava/v3/Group.java | 0 .../dev/zarr/zarrjava/v3/GroupMetadata.java | 0 .../main/java/dev/zarr/zarrjava/v3/Node.java | 0 .../zarr/zarrjava/v3/chunkgrid/ChunkGrid.java | 0 .../v3/chunkgrid/RegularChunkGrid.java | 0 .../v3/chunkkeyencoding/ChunkKeyEncoding.java | 0 .../DefaultChunkKeyEncoding.java | 0 .../chunkkeyencoding/V2ChunkKeyEncoding.java | 0 .../dev/zarr/zarrjava/v3/codec/Codec.java | 0 .../zarr/zarrjava/v3/codec/CodecBuilder.java | 0 .../zarr/zarrjava/v3/codec/CodecRegistry.java | 0 .../zarrjava/v3/codec/core/BloscCodec.java | 0 .../zarrjava/v3/codec/core/BytesCodec.java | 0 .../zarrjava/v3/codec/core/Crc32cCodec.java | 0 .../zarrjava/v3/codec/core/GzipCodec.java | 0 .../v3/codec/core/ShardingIndexedCodec.java | 0 .../v3/codec/core/TransposeCodec.java | 0 .../zarrjava/v3/codec/core/ZstdCodec.java | 0 .../dev/zarr/zarrjava/ParallelWriteTest.java | 0 .../java/dev/zarr/zarrjava/TestUtils.java | 0 .../test/java/dev/zarr/zarrjava/Utils.java | 0 .../dev/zarr/zarrjava/ZarrPythonTests.java | 0 .../test/java/dev/zarr/zarrjava/ZarrTest.java | 0 .../java/dev/zarr/zarrjava/ZarrV2Test.java | 0 .../java/dev/zarr/zarrjava/ZarrV3Test.java | 0 .../zarrjava/store/BufferedZipStoreTest.java | 0 .../zarrjava/store/FileSystemStoreTest.java | 0 .../zarr/zarrjava/store/HttpStoreTest.java | 0 .../zarr/zarrjava/store/MemoryStoreTest.java | 0 .../zarrjava/store/OnlineS3StoreTest.java | 0 .../zarrjava/store/ReadOnlyZipStoreTest.java | 0 .../dev/zarr/zarrjava/store/S3StoreTest.java | 0 .../dev/zarr/zarrjava/store/StoreTest.java | 0 .../zarrjava/store/WritableStoreTest.java | 0 .../src}/test/python-scripts/parse_codecs.py | 0 .../test/python-scripts/zarr_python_group.py | 0 .../test/python-scripts/zarr_python_read.py | 0 .../python-scripts/zarr_python_read_v2.py | 0 .../test/python-scripts/zarr_python_write.py | 0 .../python-scripts/zarr_python_write_v2.py | 0 .../test/python-scripts/zstd_decompress.py | 0 .../sharding_index_location/end/c/0/0/0 | Bin .../sharding_index_location/end/c/0/0/1 | Bin .../sharding_index_location/end/c/0/1/0 | Bin .../sharding_index_location/end/c/0/1/1 | Bin .../sharding_index_location/end/zarr.json | 0 .../sharding_index_location/start/c/0/0/0 | Bin .../sharding_index_location/start/c/0/0/1 | Bin .../sharding_index_location/start/c/0/1/0 | Bin .../sharding_index_location/start/c/0/1/1 | Bin .../sharding_index_location/start/zarr.json | 0 .../storage_transformer/empty/zarr.json | 0 .../storage_transformer/exists/zarr.json | 0 .../testdata/v2_sample}/.zattrs | 0 .../testdata/v2_sample}/.zgroup | 0 .../testdata}/v2_sample/bool/.zarray | 0 .../testdata}/v2_sample/bool/.zattrs | 0 .../testdata}/v2_sample/bool/0.0.0 | Bin .../testdata}/v2_sample/double/.zarray | 0 .../testdata}/v2_sample/double/.zattrs | 0 .../testdata}/v2_sample/double/0.0.0 | Bin .../testdata/v2_sample/subgroup}/.zattrs | 0 .../testdata/v2_sample/subgroup}/.zgroup | 0 .../v2_sample/subgroup/array/.zarray | 0 .../v2_sample/subgroup/array}/.zattrs | 0 .../testdata}/v2_sample/subgroup/array/0.0.0 | Bin zarr-java-ome/pom.xml | 78 ++++ .../experimental/ome/MultiscaleImage.java | 0 .../ome/MultiscalesMetadataImage.java | 0 .../experimental/ome/OmeObjectMappers.java | 0 .../zarrjava/experimental/ome/OmeV2Group.java | 0 .../zarrjava/experimental/ome/OmeV3Group.java | 0 .../zarr/zarrjava/experimental/ome/Plate.java | 0 .../zarr/zarrjava/experimental/ome/Well.java | 0 .../ome/metadata/Acquisition.java | 0 .../experimental/ome/metadata/Axis.java | 0 .../experimental/ome/metadata/Dataset.java | 0 .../ome/metadata/MultiscalesEntry.java | 0 .../experimental/ome/metadata/NamedEntry.java | 0 .../ome/metadata/OmeMetadata.java | 0 .../ome/metadata/OmeroChannel.java | 0 .../ome/metadata/OmeroMetadata.java | 0 .../experimental/ome/metadata/OmeroRdefs.java | 0 .../ome/metadata/OmeroWindow.java | 0 .../ome/metadata/PlateMetadata.java | 0 .../experimental/ome/metadata/WellImage.java | 0 .../ome/metadata/WellMetadata.java | 0 .../experimental/ome/metadata/WellRef.java | 0 .../transform/CoordinateTransformation.java | 0 .../GenericCoordinateTransformation.java | 0 .../IdentityCoordinateTransformation.java | 0 .../ScaleCoordinateTransformation.java | 0 .../TranslationCoordinateTransformation.java | 0 .../ome/v0_4/MultiscaleImage.java | 0 .../zarrjava/experimental/ome/v0_4/Plate.java | 0 .../zarrjava/experimental/ome/v0_4/Well.java | 0 .../ome/v0_5/MultiscaleImage.java | 0 .../zarrjava/experimental/ome/v0_5/Plate.java | 0 .../zarrjava/experimental/ome/v0_5/Well.java | 0 .../ome/v0_6/MultiscaleImage.java | 0 .../zarrjava/experimental/ome/v0_6/Plate.java | 0 .../zarrjava/experimental/ome/v0_6/Scene.java | 0 .../ome/v0_6/SceneReferenceResolver.java | 0 .../ome/v0_6/SceneTransformationGraph.java | 0 .../zarrjava/experimental/ome/v0_6/Well.java | 0 .../ome/v0_6/metadata/CoordinateSystem.java | 0 .../ome/v0_6/metadata/Dataset.java | 0 .../ome/v0_6/metadata/MultiscalesEntry.java | 0 .../ome/v0_6/metadata/OmeMetadata.java | 0 .../ome/v0_6/metadata/SceneMetadata.java | 0 .../AffineCoordinateTransformation.java | 0 .../BaseCoordinateTransformation.java | 0 .../BijectionCoordinateTransformation.java | 0 .../ByDimensionCoordinateTransformation.java | 0 .../transform/CoordinateSystemRefSerde.java | 0 .../transform/CoordinateTransformation.java | 0 .../CoordinatesCoordinateTransformation.java | 0 ...DisplacementsCoordinateTransformation.java | 0 .../GenericCoordinateTransformation.java | 0 .../IdentityCoordinateTransformation.java | 0 .../MapAxisCoordinateTransformation.java | 0 .../RotationCoordinateTransformation.java | 0 .../ScaleCoordinateTransformation.java | 0 .../SequenceCoordinateTransformation.java | 0 .../TranslationCoordinateTransformation.java | 0 .../ome/OmeObjectMappersTest.java | 0 .../experimental/ome/OmeZarrBaseTest.java | 0 .../experimental/ome/OmeZarrSceneV06Test.java | 0 .../ome/OmeZarrUserGuideExamplesTest.java | 0 .../experimental/ome/OmeZarrV04Test.java | 0 .../experimental/ome/OmeZarrV05Test.java | 0 .../experimental/ome/OmeZarrV06Test.java | 0 .../testdata}/ome/v0.4/.zattrs | 0 .../testdata/ome/v0.4}/.zgroup | 0 .../testdata}/ome/v0.4/0/.zarray | 0 .../testdata/ome/v0.4}/0/.zattrs | 0 .../testdata}/ome/v0.4/0/0.0.0.0.0 | Bin .../testdata}/ome/v0.4/0/0.1.0.0.0 | Bin .../testdata}/ome/v0.4/1/.zarray | 0 .../testdata/ome/v0.4/1}/.zattrs | 0 .../testdata}/ome/v0.4/1/0.0.0.0.0 | Bin .../testdata}/ome/v0.4/1/0.1.0.0.0 | Bin .../testdata}/ome/v0.4/labels/.zattrs | 0 .../testdata/ome/v0.4/labels}/.zgroup | 0 .../testdata}/ome/v0.4/labels/nuclei/.zattrs | 0 .../testdata/ome/v0.4/labels/nuclei}/.zgroup | 0 .../ome/v0.4/labels/nuclei/0/.zarray | 0 .../ome/v0.4/labels/nuclei/0}/.zattrs | 0 .../testdata}/ome/v0.4/labels/nuclei/0/0.0.0 | Bin .../testdata}/ome/v0.4_hcs/.zattrs | 0 .../testdata/ome/v0.4_hcs}/.zgroup | 0 .../testdata}/ome/v0.4_hcs/A/1/.zattrs | 0 .../testdata/ome/v0.4_hcs/A/1}/.zgroup | 0 .../testdata}/ome/v0.4_hcs/A/1/0/.zattrs | 0 .../testdata/ome/v0.4_hcs/A/1/0}/.zgroup | 0 .../testdata}/ome/v0.4_hcs/A/1/0/0/.zarray | 0 .../testdata/ome/v0.4_hcs/A/1/0/0}/.zattrs | 0 .../testdata}/ome/v0.4_hcs/A/1/0/0/0.0.0.0.0 | Bin .../testdata}/ome/v0.4_hcs/A/1/0/0/0.1.0.0.0 | Bin .../testdata}/ome/v0.5/0/c/0/0/0/0/0 | Bin .../testdata}/ome/v0.5/0/c/0/1/0/0/0 | Bin .../testdata}/ome/v0.5/0/zarr.json | 0 .../testdata}/ome/v0.5/1/c/0/0/0/0/0 | Bin .../testdata}/ome/v0.5/1/c/0/1/0/0/0 | Bin .../testdata}/ome/v0.5/1/zarr.json | 0 .../ome/v0.5/labels/nuclei/0/c/0/0/0 | Bin .../ome/v0.5/labels/nuclei/0/zarr.json | 0 .../ome/v0.5/labels/nuclei/zarr.json | 0 .../testdata}/ome/v0.5/labels/zarr.json | 0 .../testdata}/ome/v0.5/zarr.json | 0 .../ome/v0.5_hcs/A/1/0/0/c/0/0/0/0/0 | Bin .../ome/v0.5_hcs/A/1/0/0/c/0/1/0/0/0 | Bin .../testdata}/ome/v0.5_hcs/A/1/0/0/zarr.json | 0 .../testdata}/ome/v0.5_hcs/A/1/0/zarr.json | 0 .../testdata}/ome/v0.5_hcs/A/1/zarr.json | 0 .../testdata}/ome/v0.5_hcs/zarr.json | 0 .../zarr.json | 0 .../coordinateTransformations/zarr.json | 0 .../sampleA_instrument1/s0/zarr.json | 0 .../sampleA_instrument1/zarr.json | 0 .../sampleA_instrument2/s0/zarr.json | 0 .../sampleA_instrument2/zarr.json | 0 .../zarr.json | 0 .../instrument1/s0/zarr.json | 0 .../instrument1/zarr.json | 0 .../instrument2/s0/zarr.json | 0 .../instrument2/zarr.json | 0 .../instrument3/s0/zarr.json | 0 .../instrument3/zarr.json | 0 .../zarr.json | 0 250 files changed, 409 insertions(+), 215 deletions(-) create mode 100644 todo.md create mode 100644 zarr-java-core/pom.xml rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/ZarrException.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/cli/Main.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/core/AbstractNode.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/core/Array.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/core/ArrayMetadata.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/core/Attributes.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/core/DataType.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/core/Group.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/core/GroupMetadata.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/core/Node.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/core/chunkkeyencoding/ChunkKeyEncoding.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/core/chunkkeyencoding/Separator.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/core/codec/AbstractCodec.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/core/codec/ArrayArrayCodec.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/core/codec/ArrayBytesCodec.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/core/codec/BytesBytesCodec.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/core/codec/Codec.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/core/codec/CodecBuilder.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/core/codec/CodecPipeline.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/core/codec/core/BloscCodec.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/core/codec/core/BytesCodec.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/core/codec/core/ZstdCodec.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/store/BufferedZipStore.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/store/FilesystemStore.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/store/HttpStore.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/store/MemoryStore.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/store/ReadOnlyZipStore.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/store/S3Store.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/store/Store.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/store/StoreException.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/store/StoreHandle.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/store/ZipStore.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/utils/CRC32C.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/utils/IndexingUtils.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/utils/MultiArrayUtils.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/utils/Utils.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v2/Array.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v2/ArrayMetadata.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v2/ArrayMetadataBuilder.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v2/DataType.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v2/Endianness.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v2/Group.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v2/GroupMetadata.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v2/Node.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v2/Order.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v2/chunkkeyencoding/V2ChunkKeyEncoding.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v2/codec/Codec.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v2/codec/CodecRegistry.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v2/codec/core/BloscCodec.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v2/codec/core/BytesCodec.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v2/codec/core/ZlibCodec.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v2/codec/core/ZstdCodec.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v3/Array.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v3/ArrayMetadata.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v3/ArrayMetadataBuilder.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v3/DataType.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v3/Group.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v3/GroupMetadata.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v3/Node.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v3/chunkgrid/ChunkGrid.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v3/chunkgrid/RegularChunkGrid.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v3/chunkkeyencoding/ChunkKeyEncoding.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v3/chunkkeyencoding/DefaultChunkKeyEncoding.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v3/chunkkeyencoding/V2ChunkKeyEncoding.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v3/codec/Codec.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v3/codec/CodecBuilder.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v3/codec/CodecRegistry.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v3/codec/core/BloscCodec.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v3/codec/core/BytesCodec.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v3/codec/core/Crc32cCodec.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v3/codec/core/GzipCodec.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v3/codec/core/ShardingIndexedCodec.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v3/codec/core/TransposeCodec.java (100%) rename {src => zarr-java-core/src}/main/java/dev/zarr/zarrjava/v3/codec/core/ZstdCodec.java (100%) rename {src => zarr-java-core/src}/test/java/dev/zarr/zarrjava/ParallelWriteTest.java (100%) rename {src => zarr-java-core/src}/test/java/dev/zarr/zarrjava/TestUtils.java (100%) rename {src => zarr-java-core/src}/test/java/dev/zarr/zarrjava/Utils.java (100%) rename {src => zarr-java-core/src}/test/java/dev/zarr/zarrjava/ZarrPythonTests.java (100%) rename {src => zarr-java-core/src}/test/java/dev/zarr/zarrjava/ZarrTest.java (100%) rename {src => zarr-java-core/src}/test/java/dev/zarr/zarrjava/ZarrV2Test.java (100%) rename {src => zarr-java-core/src}/test/java/dev/zarr/zarrjava/ZarrV3Test.java (100%) rename {src => zarr-java-core/src}/test/java/dev/zarr/zarrjava/store/BufferedZipStoreTest.java (100%) rename {src => zarr-java-core/src}/test/java/dev/zarr/zarrjava/store/FileSystemStoreTest.java (100%) rename {src => zarr-java-core/src}/test/java/dev/zarr/zarrjava/store/HttpStoreTest.java (100%) rename {src => zarr-java-core/src}/test/java/dev/zarr/zarrjava/store/MemoryStoreTest.java (100%) rename {src => zarr-java-core/src}/test/java/dev/zarr/zarrjava/store/OnlineS3StoreTest.java (100%) rename {src => zarr-java-core/src}/test/java/dev/zarr/zarrjava/store/ReadOnlyZipStoreTest.java (100%) rename {src => zarr-java-core/src}/test/java/dev/zarr/zarrjava/store/S3StoreTest.java (100%) rename {src => zarr-java-core/src}/test/java/dev/zarr/zarrjava/store/StoreTest.java (100%) rename {src => zarr-java-core/src}/test/java/dev/zarr/zarrjava/store/WritableStoreTest.java (100%) rename {src => zarr-java-core/src}/test/python-scripts/parse_codecs.py (100%) rename {src => zarr-java-core/src}/test/python-scripts/zarr_python_group.py (100%) rename {src => zarr-java-core/src}/test/python-scripts/zarr_python_read.py (100%) rename {src => zarr-java-core/src}/test/python-scripts/zarr_python_read_v2.py (100%) rename {src => zarr-java-core/src}/test/python-scripts/zarr_python_write.py (100%) rename {src => zarr-java-core/src}/test/python-scripts/zarr_python_write_v2.py (100%) rename {src => zarr-java-core/src}/test/python-scripts/zstd_decompress.py (100%) rename {testdata => zarr-java-core/testdata}/sharding_index_location/end/c/0/0/0 (100%) rename {testdata => zarr-java-core/testdata}/sharding_index_location/end/c/0/0/1 (100%) rename {testdata => zarr-java-core/testdata}/sharding_index_location/end/c/0/1/0 (100%) rename {testdata => zarr-java-core/testdata}/sharding_index_location/end/c/0/1/1 (100%) rename {testdata => zarr-java-core/testdata}/sharding_index_location/end/zarr.json (100%) rename {testdata => zarr-java-core/testdata}/sharding_index_location/start/c/0/0/0 (100%) rename {testdata => zarr-java-core/testdata}/sharding_index_location/start/c/0/0/1 (100%) rename {testdata => zarr-java-core/testdata}/sharding_index_location/start/c/0/1/0 (100%) rename {testdata => zarr-java-core/testdata}/sharding_index_location/start/c/0/1/1 (100%) rename {testdata => zarr-java-core/testdata}/sharding_index_location/start/zarr.json (100%) rename {testdata => zarr-java-core/testdata}/storage_transformer/empty/zarr.json (100%) rename {testdata => zarr-java-core/testdata}/storage_transformer/exists/zarr.json (100%) rename {testdata/ome/v0.4/0 => zarr-java-core/testdata/v2_sample}/.zattrs (100%) rename {testdata/ome/v0.4 => zarr-java-core/testdata/v2_sample}/.zgroup (100%) rename {testdata => zarr-java-core/testdata}/v2_sample/bool/.zarray (100%) rename {testdata => zarr-java-core/testdata}/v2_sample/bool/.zattrs (100%) rename {testdata => zarr-java-core/testdata}/v2_sample/bool/0.0.0 (100%) rename {testdata => zarr-java-core/testdata}/v2_sample/double/.zarray (100%) rename {testdata => zarr-java-core/testdata}/v2_sample/double/.zattrs (100%) rename {testdata => zarr-java-core/testdata}/v2_sample/double/0.0.0 (100%) rename {testdata/ome/v0.4/1 => zarr-java-core/testdata/v2_sample/subgroup}/.zattrs (100%) rename {testdata/ome/v0.4/labels => zarr-java-core/testdata/v2_sample/subgroup}/.zgroup (100%) rename {testdata => zarr-java-core/testdata}/v2_sample/subgroup/array/.zarray (100%) rename {testdata/ome/v0.4/labels/nuclei/0 => zarr-java-core/testdata/v2_sample/subgroup/array}/.zattrs (100%) rename {testdata => zarr-java-core/testdata}/v2_sample/subgroup/array/0.0.0 (100%) create mode 100644 zarr-java-ome/pom.xml rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/MultiscaleImage.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/MultiscalesMetadataImage.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappers.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/OmeV2Group.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/OmeV3Group.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/Plate.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/Well.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Acquisition.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Axis.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Dataset.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/metadata/MultiscalesEntry.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/metadata/NamedEntry.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeMetadata.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroChannel.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroMetadata.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroRdefs.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroWindow.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/metadata/PlateMetadata.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellImage.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellMetadata.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellRef.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/CoordinateTransformation.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/GenericCoordinateTransformation.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/IdentityCoordinateTransformation.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/ScaleCoordinateTransformation.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/TranslationCoordinateTransformation.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/MultiscaleImage.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/Plate.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/Well.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/MultiscaleImage.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/Plate.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/Well.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/MultiscaleImage.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Plate.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Scene.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/SceneReferenceResolver.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/SceneTransformationGraph.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Well.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/CoordinateSystem.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/Dataset.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/MultiscalesEntry.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/OmeMetadata.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/SceneMetadata.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/AffineCoordinateTransformation.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/BaseCoordinateTransformation.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/BijectionCoordinateTransformation.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/ByDimensionCoordinateTransformation.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinateSystemRefSerde.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinateTransformation.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinatesCoordinateTransformation.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/DisplacementsCoordinateTransformation.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/GenericCoordinateTransformation.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/IdentityCoordinateTransformation.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/MapAxisCoordinateTransformation.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/RotationCoordinateTransformation.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/ScaleCoordinateTransformation.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/SequenceCoordinateTransformation.java (100%) rename {src => zarr-java-ome/src}/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/TranslationCoordinateTransformation.java (100%) rename {src => zarr-java-ome/src}/test/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappersTest.java (100%) rename {src => zarr-java-ome/src}/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrBaseTest.java (100%) rename {src => zarr-java-ome/src}/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrSceneV06Test.java (100%) rename {src => zarr-java-ome/src}/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrUserGuideExamplesTest.java (100%) rename {src => zarr-java-ome/src}/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV04Test.java (100%) rename {src => zarr-java-ome/src}/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV05Test.java (100%) rename {src => zarr-java-ome/src}/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV06Test.java (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.4/.zattrs (100%) rename {testdata/ome/v0.4/labels/nuclei => zarr-java-ome/testdata/ome/v0.4}/.zgroup (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.4/0/.zarray (100%) rename {testdata/ome/v0.4_hcs/A/1/0 => zarr-java-ome/testdata/ome/v0.4}/0/.zattrs (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.4/0/0.0.0.0.0 (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.4/0/0.1.0.0.0 (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.4/1/.zarray (100%) rename {testdata/v2_sample => zarr-java-ome/testdata/ome/v0.4/1}/.zattrs (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.4/1/0.0.0.0.0 (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.4/1/0.1.0.0.0 (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.4/labels/.zattrs (100%) rename {testdata/ome/v0.4_hcs => zarr-java-ome/testdata/ome/v0.4/labels}/.zgroup (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.4/labels/nuclei/.zattrs (100%) rename {testdata/ome/v0.4_hcs/A/1 => zarr-java-ome/testdata/ome/v0.4/labels/nuclei}/.zgroup (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.4/labels/nuclei/0/.zarray (100%) rename {testdata/v2_sample/subgroup => zarr-java-ome/testdata/ome/v0.4/labels/nuclei/0}/.zattrs (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.4/labels/nuclei/0/0.0.0 (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.4_hcs/.zattrs (100%) rename {testdata/ome/v0.4_hcs/A/1/0 => zarr-java-ome/testdata/ome/v0.4_hcs}/.zgroup (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.4_hcs/A/1/.zattrs (100%) rename {testdata/v2_sample => zarr-java-ome/testdata/ome/v0.4_hcs/A/1}/.zgroup (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.4_hcs/A/1/0/.zattrs (100%) rename {testdata/v2_sample/subgroup => zarr-java-ome/testdata/ome/v0.4_hcs/A/1/0}/.zgroup (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.4_hcs/A/1/0/0/.zarray (100%) rename {testdata/v2_sample/subgroup/array => zarr-java-ome/testdata/ome/v0.4_hcs/A/1/0/0}/.zattrs (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.4_hcs/A/1/0/0/0.0.0.0.0 (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.4_hcs/A/1/0/0/0.1.0.0.0 (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.5/0/c/0/0/0/0/0 (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.5/0/c/0/1/0/0/0 (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.5/0/zarr.json (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.5/1/c/0/0/0/0/0 (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.5/1/c/0/1/0/0/0 (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.5/1/zarr.json (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.5/labels/nuclei/0/c/0/0/0 (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.5/labels/nuclei/0/zarr.json (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.5/labels/nuclei/zarr.json (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.5/labels/zarr.json (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.5/zarr.json (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.5_hcs/A/1/0/0/c/0/0/0/0/0 (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.5_hcs/A/1/0/0/c/0/1/0/0/0 (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.5_hcs/A/1/0/0/zarr.json (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.5_hcs/A/1/0/zarr.json (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.5_hcs/A/1/zarr.json (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.5_hcs/zarr.json (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.6_scene/example1_instrument_registration.zarr/coordinateTransformations/sampleA_instrument2-to-instrument1/zarr.json (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.6_scene/example1_instrument_registration.zarr/coordinateTransformations/zarr.json (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.6_scene/example1_instrument_registration.zarr/sampleA_instrument1/s0/zarr.json (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.6_scene/example1_instrument_registration.zarr/sampleA_instrument1/zarr.json (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.6_scene/example1_instrument_registration.zarr/sampleA_instrument2/s0/zarr.json (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.6_scene/example1_instrument_registration.zarr/sampleA_instrument2/zarr.json (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.6_scene/example1_instrument_registration.zarr/zarr.json (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument1/s0/zarr.json (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument1/zarr.json (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument2/s0/zarr.json (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument2/zarr.json (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument3/s0/zarr.json (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument3/zarr.json (100%) rename {testdata => zarr-java-ome/testdata}/ome/v0.6_scene/example2_multi_instrument_chain.zarr/zarr.json (100%) diff --git a/.gitignore b/.gitignore index 4c52107f..6dee4f96 100644 --- a/.gitignore +++ b/.gitignore @@ -40,10 +40,16 @@ build/ ### Custom ### /testdata/l4_sample /testdata/l4_sample.zip +zarr-java-core/testdata/l4_sample +zarr-java-core/testdata/l4_sample.zip /testoutput +zarr-java-core/testoutput +zarr-java-ome/testoutput /.python-version /main.py /pyproject.toml /uv.lock **/__pycache__ /dependency-reduced-pom.xml +zarr-java-core/dependency-reduced-pom.xml +zarr-java-ome/dependency-reduced-pom.xml diff --git a/pom.xml b/pom.xml index 36eb31ca..ff478c58 100644 --- a/pom.xml +++ b/pom.xml @@ -7,9 +7,15 @@ dev.zarr zarr-java 0.1.3 + pom zarr-java + + zarr-java-core + zarr-java-ome + + zarr-java is a Java library providing an implementation of chunked, compressed, N-dimensional arrays close to the zarr-python package. @@ -52,94 +58,6 @@ 3.0.2 - - - - org.junit.jupiter - junit-jupiter-api - ${junit-jupiter-version} - test - - - org.junit.jupiter - junit-jupiter-engine - ${junit-jupiter-version} - test - - - org.junit.jupiter - junit-jupiter-params - ${junit-jupiter-version} - test - - - - - com.fasterxml.jackson.core - jackson-databind - ${jackson.version} - - - com.fasterxml.jackson.datatype - jackson-datatype-jdk8 - ${jackson.version} - - - com.google.code.findbugs - jsr305 - ${findbugs.version} - - - edu.ucar - cdm-core - ${netcdfJavaVersion} - - - software.amazon.awssdk - s3 - ${aws.version} - - - com.scalableminds - blosc-java - 0.3-1.21.6 - - - com.github.luben - zstd-jni - ${zstdVersion} - - - com.squareup.okhttp3 - okhttp - 4.12.0 - - - com.squareup.okhttp3 - mockwebserver - 4.12.0 - test - - - - junit - junit - 4.13.1 - test - - - org.apache.commons - commons-compress - 1.28.0 - - - - info.picocli - picocli - 4.7.6 - - - unidata-all @@ -149,132 +67,131 @@ - - - org.apache.maven.plugins - maven-surefire-plugin - 3.2.5 - - false - - - 1.44 - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.13.0 - - ${maven.compiler.release} - UTF-8 - - .gitignore - temp/** - - - - - org.apache.maven.plugins - maven-source-plugin - 3.1.0 - - - verify - - jar - - - - temp.** - - - - - - true - - - - org.apache.maven.plugins - maven-resources-plugin - 3.1.0 - - UTF-8 - - - - org.codehaus.mojo - build-helper-maven-plugin - 1.10 - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.5.0 - - - attach-javadoc - - jar - - - - - 8 - - - - org.apache.maven.plugins - maven-gpg-plugin - 1.6 - - - sign-artifacts - verify - - sign - - - 9F88D86AD9A0D91E - - - - - - org.sonatype.central - central-publishing-maven-plugin - 0.8.0 - true - - central - true - - - - org.apache.maven.plugins - maven-shade-plugin - 3.5.0 - - - package - - shade - - - true - shaded - false - - - dev.zarr.zarrjava.cli.Main - - - - - - - + + + + org.apache.maven.plugins + maven-surefire-plugin + 3.2.5 + + false + + 1.44 + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + ${maven.compiler.release} + UTF-8 + + .gitignore + temp/** + + + + + org.apache.maven.plugins + maven-source-plugin + 3.1.0 + + + verify + + jar + + + + temp.** + + + + + + true + + + + org.apache.maven.plugins + maven-resources-plugin + 3.1.0 + + UTF-8 + + + + org.codehaus.mojo + build-helper-maven-plugin + 1.10 + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.5.0 + + + attach-javadoc + + jar + + + + + 8 + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.6 + + + org.sonatype.central + central-publishing-maven-plugin + 0.8.0 + true + + central + true + + + + org.apache.maven.plugins + maven-shade-plugin + 3.5.0 + + + + + + + release + + + + + org.apache.maven.plugins + maven-gpg-plugin + + + sign-artifacts + verify + + sign + + + 9F88D86AD9A0D91E + + + + + + + + + diff --git a/todo.md b/todo.md new file mode 100644 index 00000000..85d832f7 --- /dev/null +++ b/todo.md @@ -0,0 +1,29 @@ + +● Here's a summary you can paste: + + --- + Task: Extract the OME metadata classes from zarr-java into a separate Maven module (zarr-java-ome) within the same repo. + + What was done: + - Converted the repo to a Maven multi-module project: + - Root pom.xml → pure aggregator (packaging=pom), lists both modules + - zarr-java-core/ → contains the original src/ and testdata/ (everything except OME) + - zarr-java-ome/ → new module with OME source, tests, and testdata + - zarr-java-core/pom.xml — all original dependencies + maven-jar-plugin producing a test-jar so OME tests can extend ZarrTest + - zarr-java-ome/pom.xml — depends on zarr-java-core + zarr-java-core:test-jar (test scope) + - GPG signing moved into a release Maven profile so mvn install works locally without a key + + Current state: + - mvn install -DskipTests → BUILD SUCCESS + - Core tests (430) → all pass + - OME v0.4 and v0.5 tests → pass + - OME v0.6 tests → failing because testdata/ome/v0.6/examples is a git submodule pointing to https://github.com/jo-mueller/ngff-rfc5-coordinate-transformation-examples — it was moved into + zarr-java-ome/testdata/ but the submodule reference in .gitmodules was not updated, so the folder is empty + - Working on branch extract-ome-module + + Next steps: + - Fix the git submodule: either update .gitmodules to point to zarr-java-ome/testdata/ome/v0.6/examples, or keep the submodule at the repo root and reference it from there + - Run git submodule update --init to populate the submodule + - Verify all OME tests pass + - Update CI/CD deploy workflow if needed + diff --git a/zarr-java-core/pom.xml b/zarr-java-core/pom.xml new file mode 100644 index 00000000..d2f3826e --- /dev/null +++ b/zarr-java-core/pom.xml @@ -0,0 +1,164 @@ + + + 4.0.0 + + + dev.zarr + zarr-java + 0.1.3 + ../pom.xml + + + zarr-java-core + zarr-java-core + + + + + org.junit.jupiter + junit-jupiter-api + ${junit-jupiter-version} + test + + + org.junit.jupiter + junit-jupiter-engine + ${junit-jupiter-version} + test + + + org.junit.jupiter + junit-jupiter-params + ${junit-jupiter-version} + test + + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + com.fasterxml.jackson.datatype + jackson-datatype-jdk8 + ${jackson.version} + + + com.google.code.findbugs + jsr305 + ${findbugs.version} + + + edu.ucar + cdm-core + ${netcdfJavaVersion} + + + software.amazon.awssdk + s3 + ${aws.version} + + + com.scalableminds + blosc-java + 0.3-1.21.6 + + + com.github.luben + zstd-jni + ${zstdVersion} + + + com.squareup.okhttp3 + okhttp + 4.12.0 + + + com.squareup.okhttp3 + mockwebserver + 4.12.0 + test + + + junit + junit + 4.13.1 + test + + + org.apache.commons + commons-compress + 1.28.0 + + + info.picocli + picocli + 4.7.6 + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.3.0 + + + + test-jar + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + org.apache.maven.plugins + maven-compiler-plugin + + + org.apache.maven.plugins + maven-source-plugin + + + org.apache.maven.plugins + maven-resources-plugin + + + org.codehaus.mojo + build-helper-maven-plugin + + + org.apache.maven.plugins + maven-javadoc-plugin + + + org.apache.maven.plugins + maven-shade-plugin + + + package + + shade + + + true + shaded + false + + + dev.zarr.zarrjava.cli.Main + + + + + + + + + diff --git a/src/main/java/dev/zarr/zarrjava/ZarrException.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/ZarrException.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/ZarrException.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/ZarrException.java diff --git a/src/main/java/dev/zarr/zarrjava/cli/Main.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/cli/Main.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/cli/Main.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/cli/Main.java diff --git a/src/main/java/dev/zarr/zarrjava/core/AbstractNode.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/core/AbstractNode.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/core/AbstractNode.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/core/AbstractNode.java diff --git a/src/main/java/dev/zarr/zarrjava/core/Array.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/core/Array.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/core/Array.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/core/Array.java diff --git a/src/main/java/dev/zarr/zarrjava/core/ArrayMetadata.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/core/ArrayMetadata.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/core/ArrayMetadata.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/core/ArrayMetadata.java diff --git a/src/main/java/dev/zarr/zarrjava/core/Attributes.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/core/Attributes.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/core/Attributes.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/core/Attributes.java diff --git a/src/main/java/dev/zarr/zarrjava/core/DataType.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/core/DataType.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/core/DataType.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/core/DataType.java diff --git a/src/main/java/dev/zarr/zarrjava/core/Group.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/core/Group.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/core/Group.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/core/Group.java diff --git a/src/main/java/dev/zarr/zarrjava/core/GroupMetadata.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/core/GroupMetadata.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/core/GroupMetadata.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/core/GroupMetadata.java diff --git a/src/main/java/dev/zarr/zarrjava/core/Node.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/core/Node.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/core/Node.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/core/Node.java diff --git a/src/main/java/dev/zarr/zarrjava/core/chunkkeyencoding/ChunkKeyEncoding.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/core/chunkkeyencoding/ChunkKeyEncoding.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/core/chunkkeyencoding/ChunkKeyEncoding.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/core/chunkkeyencoding/ChunkKeyEncoding.java diff --git a/src/main/java/dev/zarr/zarrjava/core/chunkkeyencoding/Separator.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/core/chunkkeyencoding/Separator.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/core/chunkkeyencoding/Separator.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/core/chunkkeyencoding/Separator.java diff --git a/src/main/java/dev/zarr/zarrjava/core/codec/AbstractCodec.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/core/codec/AbstractCodec.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/core/codec/AbstractCodec.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/core/codec/AbstractCodec.java diff --git a/src/main/java/dev/zarr/zarrjava/core/codec/ArrayArrayCodec.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/core/codec/ArrayArrayCodec.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/core/codec/ArrayArrayCodec.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/core/codec/ArrayArrayCodec.java diff --git a/src/main/java/dev/zarr/zarrjava/core/codec/ArrayBytesCodec.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/core/codec/ArrayBytesCodec.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/core/codec/ArrayBytesCodec.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/core/codec/ArrayBytesCodec.java diff --git a/src/main/java/dev/zarr/zarrjava/core/codec/BytesBytesCodec.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/core/codec/BytesBytesCodec.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/core/codec/BytesBytesCodec.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/core/codec/BytesBytesCodec.java diff --git a/src/main/java/dev/zarr/zarrjava/core/codec/Codec.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/core/codec/Codec.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/core/codec/Codec.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/core/codec/Codec.java diff --git a/src/main/java/dev/zarr/zarrjava/core/codec/CodecBuilder.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/core/codec/CodecBuilder.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/core/codec/CodecBuilder.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/core/codec/CodecBuilder.java diff --git a/src/main/java/dev/zarr/zarrjava/core/codec/CodecPipeline.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/core/codec/CodecPipeline.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/core/codec/CodecPipeline.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/core/codec/CodecPipeline.java diff --git a/src/main/java/dev/zarr/zarrjava/core/codec/core/BloscCodec.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/core/codec/core/BloscCodec.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/core/codec/core/BloscCodec.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/core/codec/core/BloscCodec.java diff --git a/src/main/java/dev/zarr/zarrjava/core/codec/core/BytesCodec.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/core/codec/core/BytesCodec.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/core/codec/core/BytesCodec.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/core/codec/core/BytesCodec.java diff --git a/src/main/java/dev/zarr/zarrjava/core/codec/core/ZstdCodec.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/core/codec/core/ZstdCodec.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/core/codec/core/ZstdCodec.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/core/codec/core/ZstdCodec.java diff --git a/src/main/java/dev/zarr/zarrjava/store/BufferedZipStore.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/store/BufferedZipStore.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/store/BufferedZipStore.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/store/BufferedZipStore.java diff --git a/src/main/java/dev/zarr/zarrjava/store/FilesystemStore.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/store/FilesystemStore.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/store/FilesystemStore.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/store/FilesystemStore.java diff --git a/src/main/java/dev/zarr/zarrjava/store/HttpStore.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/store/HttpStore.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/store/HttpStore.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/store/HttpStore.java diff --git a/src/main/java/dev/zarr/zarrjava/store/MemoryStore.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/store/MemoryStore.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/store/MemoryStore.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/store/MemoryStore.java diff --git a/src/main/java/dev/zarr/zarrjava/store/ReadOnlyZipStore.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/store/ReadOnlyZipStore.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/store/ReadOnlyZipStore.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/store/ReadOnlyZipStore.java diff --git a/src/main/java/dev/zarr/zarrjava/store/S3Store.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/store/S3Store.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/store/S3Store.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/store/S3Store.java diff --git a/src/main/java/dev/zarr/zarrjava/store/Store.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/store/Store.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/store/Store.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/store/Store.java diff --git a/src/main/java/dev/zarr/zarrjava/store/StoreException.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/store/StoreException.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/store/StoreException.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/store/StoreException.java diff --git a/src/main/java/dev/zarr/zarrjava/store/StoreHandle.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/store/StoreHandle.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/store/StoreHandle.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/store/StoreHandle.java diff --git a/src/main/java/dev/zarr/zarrjava/store/ZipStore.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/store/ZipStore.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/store/ZipStore.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/store/ZipStore.java diff --git a/src/main/java/dev/zarr/zarrjava/utils/CRC32C.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/utils/CRC32C.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/utils/CRC32C.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/utils/CRC32C.java diff --git a/src/main/java/dev/zarr/zarrjava/utils/IndexingUtils.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/utils/IndexingUtils.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/utils/IndexingUtils.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/utils/IndexingUtils.java diff --git a/src/main/java/dev/zarr/zarrjava/utils/MultiArrayUtils.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/utils/MultiArrayUtils.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/utils/MultiArrayUtils.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/utils/MultiArrayUtils.java diff --git a/src/main/java/dev/zarr/zarrjava/utils/Utils.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/utils/Utils.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/utils/Utils.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/utils/Utils.java diff --git a/src/main/java/dev/zarr/zarrjava/v2/Array.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/Array.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v2/Array.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/Array.java diff --git a/src/main/java/dev/zarr/zarrjava/v2/ArrayMetadata.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/ArrayMetadata.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v2/ArrayMetadata.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/ArrayMetadata.java diff --git a/src/main/java/dev/zarr/zarrjava/v2/ArrayMetadataBuilder.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/ArrayMetadataBuilder.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v2/ArrayMetadataBuilder.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/ArrayMetadataBuilder.java diff --git a/src/main/java/dev/zarr/zarrjava/v2/DataType.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/DataType.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v2/DataType.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/DataType.java diff --git a/src/main/java/dev/zarr/zarrjava/v2/Endianness.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/Endianness.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v2/Endianness.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/Endianness.java diff --git a/src/main/java/dev/zarr/zarrjava/v2/Group.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/Group.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v2/Group.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/Group.java diff --git a/src/main/java/dev/zarr/zarrjava/v2/GroupMetadata.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/GroupMetadata.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v2/GroupMetadata.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/GroupMetadata.java diff --git a/src/main/java/dev/zarr/zarrjava/v2/Node.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/Node.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v2/Node.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/Node.java diff --git a/src/main/java/dev/zarr/zarrjava/v2/Order.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/Order.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v2/Order.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/Order.java diff --git a/src/main/java/dev/zarr/zarrjava/v2/chunkkeyencoding/V2ChunkKeyEncoding.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/chunkkeyencoding/V2ChunkKeyEncoding.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v2/chunkkeyencoding/V2ChunkKeyEncoding.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/chunkkeyencoding/V2ChunkKeyEncoding.java diff --git a/src/main/java/dev/zarr/zarrjava/v2/codec/Codec.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/codec/Codec.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v2/codec/Codec.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/codec/Codec.java diff --git a/src/main/java/dev/zarr/zarrjava/v2/codec/CodecRegistry.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/codec/CodecRegistry.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v2/codec/CodecRegistry.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/codec/CodecRegistry.java diff --git a/src/main/java/dev/zarr/zarrjava/v2/codec/core/BloscCodec.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/codec/core/BloscCodec.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v2/codec/core/BloscCodec.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/codec/core/BloscCodec.java diff --git a/src/main/java/dev/zarr/zarrjava/v2/codec/core/BytesCodec.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/codec/core/BytesCodec.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v2/codec/core/BytesCodec.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/codec/core/BytesCodec.java diff --git a/src/main/java/dev/zarr/zarrjava/v2/codec/core/ZlibCodec.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/codec/core/ZlibCodec.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v2/codec/core/ZlibCodec.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/codec/core/ZlibCodec.java diff --git a/src/main/java/dev/zarr/zarrjava/v2/codec/core/ZstdCodec.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/codec/core/ZstdCodec.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v2/codec/core/ZstdCodec.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v2/codec/core/ZstdCodec.java diff --git a/src/main/java/dev/zarr/zarrjava/v3/Array.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/Array.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v3/Array.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/Array.java diff --git a/src/main/java/dev/zarr/zarrjava/v3/ArrayMetadata.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/ArrayMetadata.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v3/ArrayMetadata.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/ArrayMetadata.java diff --git a/src/main/java/dev/zarr/zarrjava/v3/ArrayMetadataBuilder.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/ArrayMetadataBuilder.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v3/ArrayMetadataBuilder.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/ArrayMetadataBuilder.java diff --git a/src/main/java/dev/zarr/zarrjava/v3/DataType.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/DataType.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v3/DataType.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/DataType.java diff --git a/src/main/java/dev/zarr/zarrjava/v3/Group.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/Group.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v3/Group.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/Group.java diff --git a/src/main/java/dev/zarr/zarrjava/v3/GroupMetadata.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/GroupMetadata.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v3/GroupMetadata.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/GroupMetadata.java diff --git a/src/main/java/dev/zarr/zarrjava/v3/Node.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/Node.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v3/Node.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/Node.java diff --git a/src/main/java/dev/zarr/zarrjava/v3/chunkgrid/ChunkGrid.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/chunkgrid/ChunkGrid.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v3/chunkgrid/ChunkGrid.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/chunkgrid/ChunkGrid.java diff --git a/src/main/java/dev/zarr/zarrjava/v3/chunkgrid/RegularChunkGrid.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/chunkgrid/RegularChunkGrid.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v3/chunkgrid/RegularChunkGrid.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/chunkgrid/RegularChunkGrid.java diff --git a/src/main/java/dev/zarr/zarrjava/v3/chunkkeyencoding/ChunkKeyEncoding.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/chunkkeyencoding/ChunkKeyEncoding.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v3/chunkkeyencoding/ChunkKeyEncoding.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/chunkkeyencoding/ChunkKeyEncoding.java diff --git a/src/main/java/dev/zarr/zarrjava/v3/chunkkeyencoding/DefaultChunkKeyEncoding.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/chunkkeyencoding/DefaultChunkKeyEncoding.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v3/chunkkeyencoding/DefaultChunkKeyEncoding.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/chunkkeyencoding/DefaultChunkKeyEncoding.java diff --git a/src/main/java/dev/zarr/zarrjava/v3/chunkkeyencoding/V2ChunkKeyEncoding.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/chunkkeyencoding/V2ChunkKeyEncoding.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v3/chunkkeyencoding/V2ChunkKeyEncoding.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/chunkkeyencoding/V2ChunkKeyEncoding.java diff --git a/src/main/java/dev/zarr/zarrjava/v3/codec/Codec.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/codec/Codec.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v3/codec/Codec.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/codec/Codec.java diff --git a/src/main/java/dev/zarr/zarrjava/v3/codec/CodecBuilder.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/codec/CodecBuilder.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v3/codec/CodecBuilder.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/codec/CodecBuilder.java diff --git a/src/main/java/dev/zarr/zarrjava/v3/codec/CodecRegistry.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/codec/CodecRegistry.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v3/codec/CodecRegistry.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/codec/CodecRegistry.java diff --git a/src/main/java/dev/zarr/zarrjava/v3/codec/core/BloscCodec.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/codec/core/BloscCodec.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v3/codec/core/BloscCodec.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/codec/core/BloscCodec.java diff --git a/src/main/java/dev/zarr/zarrjava/v3/codec/core/BytesCodec.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/codec/core/BytesCodec.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v3/codec/core/BytesCodec.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/codec/core/BytesCodec.java diff --git a/src/main/java/dev/zarr/zarrjava/v3/codec/core/Crc32cCodec.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/codec/core/Crc32cCodec.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v3/codec/core/Crc32cCodec.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/codec/core/Crc32cCodec.java diff --git a/src/main/java/dev/zarr/zarrjava/v3/codec/core/GzipCodec.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/codec/core/GzipCodec.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v3/codec/core/GzipCodec.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/codec/core/GzipCodec.java diff --git a/src/main/java/dev/zarr/zarrjava/v3/codec/core/ShardingIndexedCodec.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/codec/core/ShardingIndexedCodec.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v3/codec/core/ShardingIndexedCodec.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/codec/core/ShardingIndexedCodec.java diff --git a/src/main/java/dev/zarr/zarrjava/v3/codec/core/TransposeCodec.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/codec/core/TransposeCodec.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v3/codec/core/TransposeCodec.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/codec/core/TransposeCodec.java diff --git a/src/main/java/dev/zarr/zarrjava/v3/codec/core/ZstdCodec.java b/zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/codec/core/ZstdCodec.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/v3/codec/core/ZstdCodec.java rename to zarr-java-core/src/main/java/dev/zarr/zarrjava/v3/codec/core/ZstdCodec.java diff --git a/src/test/java/dev/zarr/zarrjava/ParallelWriteTest.java b/zarr-java-core/src/test/java/dev/zarr/zarrjava/ParallelWriteTest.java similarity index 100% rename from src/test/java/dev/zarr/zarrjava/ParallelWriteTest.java rename to zarr-java-core/src/test/java/dev/zarr/zarrjava/ParallelWriteTest.java diff --git a/src/test/java/dev/zarr/zarrjava/TestUtils.java b/zarr-java-core/src/test/java/dev/zarr/zarrjava/TestUtils.java similarity index 100% rename from src/test/java/dev/zarr/zarrjava/TestUtils.java rename to zarr-java-core/src/test/java/dev/zarr/zarrjava/TestUtils.java diff --git a/src/test/java/dev/zarr/zarrjava/Utils.java b/zarr-java-core/src/test/java/dev/zarr/zarrjava/Utils.java similarity index 100% rename from src/test/java/dev/zarr/zarrjava/Utils.java rename to zarr-java-core/src/test/java/dev/zarr/zarrjava/Utils.java diff --git a/src/test/java/dev/zarr/zarrjava/ZarrPythonTests.java b/zarr-java-core/src/test/java/dev/zarr/zarrjava/ZarrPythonTests.java similarity index 100% rename from src/test/java/dev/zarr/zarrjava/ZarrPythonTests.java rename to zarr-java-core/src/test/java/dev/zarr/zarrjava/ZarrPythonTests.java diff --git a/src/test/java/dev/zarr/zarrjava/ZarrTest.java b/zarr-java-core/src/test/java/dev/zarr/zarrjava/ZarrTest.java similarity index 100% rename from src/test/java/dev/zarr/zarrjava/ZarrTest.java rename to zarr-java-core/src/test/java/dev/zarr/zarrjava/ZarrTest.java diff --git a/src/test/java/dev/zarr/zarrjava/ZarrV2Test.java b/zarr-java-core/src/test/java/dev/zarr/zarrjava/ZarrV2Test.java similarity index 100% rename from src/test/java/dev/zarr/zarrjava/ZarrV2Test.java rename to zarr-java-core/src/test/java/dev/zarr/zarrjava/ZarrV2Test.java diff --git a/src/test/java/dev/zarr/zarrjava/ZarrV3Test.java b/zarr-java-core/src/test/java/dev/zarr/zarrjava/ZarrV3Test.java similarity index 100% rename from src/test/java/dev/zarr/zarrjava/ZarrV3Test.java rename to zarr-java-core/src/test/java/dev/zarr/zarrjava/ZarrV3Test.java diff --git a/src/test/java/dev/zarr/zarrjava/store/BufferedZipStoreTest.java b/zarr-java-core/src/test/java/dev/zarr/zarrjava/store/BufferedZipStoreTest.java similarity index 100% rename from src/test/java/dev/zarr/zarrjava/store/BufferedZipStoreTest.java rename to zarr-java-core/src/test/java/dev/zarr/zarrjava/store/BufferedZipStoreTest.java diff --git a/src/test/java/dev/zarr/zarrjava/store/FileSystemStoreTest.java b/zarr-java-core/src/test/java/dev/zarr/zarrjava/store/FileSystemStoreTest.java similarity index 100% rename from src/test/java/dev/zarr/zarrjava/store/FileSystemStoreTest.java rename to zarr-java-core/src/test/java/dev/zarr/zarrjava/store/FileSystemStoreTest.java diff --git a/src/test/java/dev/zarr/zarrjava/store/HttpStoreTest.java b/zarr-java-core/src/test/java/dev/zarr/zarrjava/store/HttpStoreTest.java similarity index 100% rename from src/test/java/dev/zarr/zarrjava/store/HttpStoreTest.java rename to zarr-java-core/src/test/java/dev/zarr/zarrjava/store/HttpStoreTest.java diff --git a/src/test/java/dev/zarr/zarrjava/store/MemoryStoreTest.java b/zarr-java-core/src/test/java/dev/zarr/zarrjava/store/MemoryStoreTest.java similarity index 100% rename from src/test/java/dev/zarr/zarrjava/store/MemoryStoreTest.java rename to zarr-java-core/src/test/java/dev/zarr/zarrjava/store/MemoryStoreTest.java diff --git a/src/test/java/dev/zarr/zarrjava/store/OnlineS3StoreTest.java b/zarr-java-core/src/test/java/dev/zarr/zarrjava/store/OnlineS3StoreTest.java similarity index 100% rename from src/test/java/dev/zarr/zarrjava/store/OnlineS3StoreTest.java rename to zarr-java-core/src/test/java/dev/zarr/zarrjava/store/OnlineS3StoreTest.java diff --git a/src/test/java/dev/zarr/zarrjava/store/ReadOnlyZipStoreTest.java b/zarr-java-core/src/test/java/dev/zarr/zarrjava/store/ReadOnlyZipStoreTest.java similarity index 100% rename from src/test/java/dev/zarr/zarrjava/store/ReadOnlyZipStoreTest.java rename to zarr-java-core/src/test/java/dev/zarr/zarrjava/store/ReadOnlyZipStoreTest.java diff --git a/src/test/java/dev/zarr/zarrjava/store/S3StoreTest.java b/zarr-java-core/src/test/java/dev/zarr/zarrjava/store/S3StoreTest.java similarity index 100% rename from src/test/java/dev/zarr/zarrjava/store/S3StoreTest.java rename to zarr-java-core/src/test/java/dev/zarr/zarrjava/store/S3StoreTest.java diff --git a/src/test/java/dev/zarr/zarrjava/store/StoreTest.java b/zarr-java-core/src/test/java/dev/zarr/zarrjava/store/StoreTest.java similarity index 100% rename from src/test/java/dev/zarr/zarrjava/store/StoreTest.java rename to zarr-java-core/src/test/java/dev/zarr/zarrjava/store/StoreTest.java diff --git a/src/test/java/dev/zarr/zarrjava/store/WritableStoreTest.java b/zarr-java-core/src/test/java/dev/zarr/zarrjava/store/WritableStoreTest.java similarity index 100% rename from src/test/java/dev/zarr/zarrjava/store/WritableStoreTest.java rename to zarr-java-core/src/test/java/dev/zarr/zarrjava/store/WritableStoreTest.java diff --git a/src/test/python-scripts/parse_codecs.py b/zarr-java-core/src/test/python-scripts/parse_codecs.py similarity index 100% rename from src/test/python-scripts/parse_codecs.py rename to zarr-java-core/src/test/python-scripts/parse_codecs.py diff --git a/src/test/python-scripts/zarr_python_group.py b/zarr-java-core/src/test/python-scripts/zarr_python_group.py similarity index 100% rename from src/test/python-scripts/zarr_python_group.py rename to zarr-java-core/src/test/python-scripts/zarr_python_group.py diff --git a/src/test/python-scripts/zarr_python_read.py b/zarr-java-core/src/test/python-scripts/zarr_python_read.py similarity index 100% rename from src/test/python-scripts/zarr_python_read.py rename to zarr-java-core/src/test/python-scripts/zarr_python_read.py diff --git a/src/test/python-scripts/zarr_python_read_v2.py b/zarr-java-core/src/test/python-scripts/zarr_python_read_v2.py similarity index 100% rename from src/test/python-scripts/zarr_python_read_v2.py rename to zarr-java-core/src/test/python-scripts/zarr_python_read_v2.py diff --git a/src/test/python-scripts/zarr_python_write.py b/zarr-java-core/src/test/python-scripts/zarr_python_write.py similarity index 100% rename from src/test/python-scripts/zarr_python_write.py rename to zarr-java-core/src/test/python-scripts/zarr_python_write.py diff --git a/src/test/python-scripts/zarr_python_write_v2.py b/zarr-java-core/src/test/python-scripts/zarr_python_write_v2.py similarity index 100% rename from src/test/python-scripts/zarr_python_write_v2.py rename to zarr-java-core/src/test/python-scripts/zarr_python_write_v2.py diff --git a/src/test/python-scripts/zstd_decompress.py b/zarr-java-core/src/test/python-scripts/zstd_decompress.py similarity index 100% rename from src/test/python-scripts/zstd_decompress.py rename to zarr-java-core/src/test/python-scripts/zstd_decompress.py diff --git a/testdata/sharding_index_location/end/c/0/0/0 b/zarr-java-core/testdata/sharding_index_location/end/c/0/0/0 similarity index 100% rename from testdata/sharding_index_location/end/c/0/0/0 rename to zarr-java-core/testdata/sharding_index_location/end/c/0/0/0 diff --git a/testdata/sharding_index_location/end/c/0/0/1 b/zarr-java-core/testdata/sharding_index_location/end/c/0/0/1 similarity index 100% rename from testdata/sharding_index_location/end/c/0/0/1 rename to zarr-java-core/testdata/sharding_index_location/end/c/0/0/1 diff --git a/testdata/sharding_index_location/end/c/0/1/0 b/zarr-java-core/testdata/sharding_index_location/end/c/0/1/0 similarity index 100% rename from testdata/sharding_index_location/end/c/0/1/0 rename to zarr-java-core/testdata/sharding_index_location/end/c/0/1/0 diff --git a/testdata/sharding_index_location/end/c/0/1/1 b/zarr-java-core/testdata/sharding_index_location/end/c/0/1/1 similarity index 100% rename from testdata/sharding_index_location/end/c/0/1/1 rename to zarr-java-core/testdata/sharding_index_location/end/c/0/1/1 diff --git a/testdata/sharding_index_location/end/zarr.json b/zarr-java-core/testdata/sharding_index_location/end/zarr.json similarity index 100% rename from testdata/sharding_index_location/end/zarr.json rename to zarr-java-core/testdata/sharding_index_location/end/zarr.json diff --git a/testdata/sharding_index_location/start/c/0/0/0 b/zarr-java-core/testdata/sharding_index_location/start/c/0/0/0 similarity index 100% rename from testdata/sharding_index_location/start/c/0/0/0 rename to zarr-java-core/testdata/sharding_index_location/start/c/0/0/0 diff --git a/testdata/sharding_index_location/start/c/0/0/1 b/zarr-java-core/testdata/sharding_index_location/start/c/0/0/1 similarity index 100% rename from testdata/sharding_index_location/start/c/0/0/1 rename to zarr-java-core/testdata/sharding_index_location/start/c/0/0/1 diff --git a/testdata/sharding_index_location/start/c/0/1/0 b/zarr-java-core/testdata/sharding_index_location/start/c/0/1/0 similarity index 100% rename from testdata/sharding_index_location/start/c/0/1/0 rename to zarr-java-core/testdata/sharding_index_location/start/c/0/1/0 diff --git a/testdata/sharding_index_location/start/c/0/1/1 b/zarr-java-core/testdata/sharding_index_location/start/c/0/1/1 similarity index 100% rename from testdata/sharding_index_location/start/c/0/1/1 rename to zarr-java-core/testdata/sharding_index_location/start/c/0/1/1 diff --git a/testdata/sharding_index_location/start/zarr.json b/zarr-java-core/testdata/sharding_index_location/start/zarr.json similarity index 100% rename from testdata/sharding_index_location/start/zarr.json rename to zarr-java-core/testdata/sharding_index_location/start/zarr.json diff --git a/testdata/storage_transformer/empty/zarr.json b/zarr-java-core/testdata/storage_transformer/empty/zarr.json similarity index 100% rename from testdata/storage_transformer/empty/zarr.json rename to zarr-java-core/testdata/storage_transformer/empty/zarr.json diff --git a/testdata/storage_transformer/exists/zarr.json b/zarr-java-core/testdata/storage_transformer/exists/zarr.json similarity index 100% rename from testdata/storage_transformer/exists/zarr.json rename to zarr-java-core/testdata/storage_transformer/exists/zarr.json diff --git a/testdata/ome/v0.4/0/.zattrs b/zarr-java-core/testdata/v2_sample/.zattrs similarity index 100% rename from testdata/ome/v0.4/0/.zattrs rename to zarr-java-core/testdata/v2_sample/.zattrs diff --git a/testdata/ome/v0.4/.zgroup b/zarr-java-core/testdata/v2_sample/.zgroup similarity index 100% rename from testdata/ome/v0.4/.zgroup rename to zarr-java-core/testdata/v2_sample/.zgroup diff --git a/testdata/v2_sample/bool/.zarray b/zarr-java-core/testdata/v2_sample/bool/.zarray similarity index 100% rename from testdata/v2_sample/bool/.zarray rename to zarr-java-core/testdata/v2_sample/bool/.zarray diff --git a/testdata/v2_sample/bool/.zattrs b/zarr-java-core/testdata/v2_sample/bool/.zattrs similarity index 100% rename from testdata/v2_sample/bool/.zattrs rename to zarr-java-core/testdata/v2_sample/bool/.zattrs diff --git a/testdata/v2_sample/bool/0.0.0 b/zarr-java-core/testdata/v2_sample/bool/0.0.0 similarity index 100% rename from testdata/v2_sample/bool/0.0.0 rename to zarr-java-core/testdata/v2_sample/bool/0.0.0 diff --git a/testdata/v2_sample/double/.zarray b/zarr-java-core/testdata/v2_sample/double/.zarray similarity index 100% rename from testdata/v2_sample/double/.zarray rename to zarr-java-core/testdata/v2_sample/double/.zarray diff --git a/testdata/v2_sample/double/.zattrs b/zarr-java-core/testdata/v2_sample/double/.zattrs similarity index 100% rename from testdata/v2_sample/double/.zattrs rename to zarr-java-core/testdata/v2_sample/double/.zattrs diff --git a/testdata/v2_sample/double/0.0.0 b/zarr-java-core/testdata/v2_sample/double/0.0.0 similarity index 100% rename from testdata/v2_sample/double/0.0.0 rename to zarr-java-core/testdata/v2_sample/double/0.0.0 diff --git a/testdata/ome/v0.4/1/.zattrs b/zarr-java-core/testdata/v2_sample/subgroup/.zattrs similarity index 100% rename from testdata/ome/v0.4/1/.zattrs rename to zarr-java-core/testdata/v2_sample/subgroup/.zattrs diff --git a/testdata/ome/v0.4/labels/.zgroup b/zarr-java-core/testdata/v2_sample/subgroup/.zgroup similarity index 100% rename from testdata/ome/v0.4/labels/.zgroup rename to zarr-java-core/testdata/v2_sample/subgroup/.zgroup diff --git a/testdata/v2_sample/subgroup/array/.zarray b/zarr-java-core/testdata/v2_sample/subgroup/array/.zarray similarity index 100% rename from testdata/v2_sample/subgroup/array/.zarray rename to zarr-java-core/testdata/v2_sample/subgroup/array/.zarray diff --git a/testdata/ome/v0.4/labels/nuclei/0/.zattrs b/zarr-java-core/testdata/v2_sample/subgroup/array/.zattrs similarity index 100% rename from testdata/ome/v0.4/labels/nuclei/0/.zattrs rename to zarr-java-core/testdata/v2_sample/subgroup/array/.zattrs diff --git a/testdata/v2_sample/subgroup/array/0.0.0 b/zarr-java-core/testdata/v2_sample/subgroup/array/0.0.0 similarity index 100% rename from testdata/v2_sample/subgroup/array/0.0.0 rename to zarr-java-core/testdata/v2_sample/subgroup/array/0.0.0 diff --git a/zarr-java-ome/pom.xml b/zarr-java-ome/pom.xml new file mode 100644 index 00000000..6990315b --- /dev/null +++ b/zarr-java-ome/pom.xml @@ -0,0 +1,78 @@ + + + 4.0.0 + + + dev.zarr + zarr-java + 0.1.3 + ../pom.xml + + + zarr-java-ome + zarr-java-ome + OME-Zarr metadata support for zarr-java + + + + dev.zarr + zarr-java-core + ${project.parent.version} + + + dev.zarr + zarr-java-core + ${project.parent.version} + test-jar + test + + + + org.junit.jupiter + junit-jupiter-api + ${junit-jupiter-version} + test + + + org.junit.jupiter + junit-jupiter-engine + ${junit-jupiter-version} + test + + + org.junit.jupiter + junit-jupiter-params + ${junit-jupiter-version} + test + + + junit + junit + 4.13.1 + test + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + org.apache.maven.plugins + maven-compiler-plugin + + + org.apache.maven.plugins + maven-source-plugin + + + org.apache.maven.plugins + maven-javadoc-plugin + + + + diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/MultiscaleImage.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/MultiscaleImage.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/MultiscaleImage.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/MultiscaleImage.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/MultiscalesMetadataImage.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/MultiscalesMetadataImage.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/MultiscalesMetadataImage.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/MultiscalesMetadataImage.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappers.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappers.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappers.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappers.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeV2Group.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeV2Group.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/OmeV2Group.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeV2Group.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeV3Group.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeV3Group.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/OmeV3Group.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeV3Group.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/Plate.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/Plate.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/Plate.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/Plate.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/Well.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/Well.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/Well.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/Well.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Acquisition.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Acquisition.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Acquisition.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Acquisition.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Axis.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Axis.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Axis.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Axis.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Dataset.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Dataset.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Dataset.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Dataset.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/MultiscalesEntry.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/MultiscalesEntry.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/MultiscalesEntry.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/MultiscalesEntry.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/NamedEntry.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/NamedEntry.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/NamedEntry.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/NamedEntry.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeMetadata.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeMetadata.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeMetadata.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeMetadata.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroChannel.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroChannel.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroChannel.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroChannel.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroMetadata.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroMetadata.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroMetadata.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroMetadata.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroRdefs.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroRdefs.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroRdefs.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroRdefs.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroWindow.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroWindow.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroWindow.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroWindow.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/PlateMetadata.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/PlateMetadata.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/PlateMetadata.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/PlateMetadata.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellImage.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellImage.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellImage.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellImage.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellMetadata.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellMetadata.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellMetadata.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellMetadata.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellRef.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellRef.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellRef.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellRef.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/CoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/CoordinateTransformation.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/CoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/CoordinateTransformation.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/GenericCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/GenericCoordinateTransformation.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/GenericCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/GenericCoordinateTransformation.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/IdentityCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/IdentityCoordinateTransformation.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/IdentityCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/IdentityCoordinateTransformation.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/ScaleCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/ScaleCoordinateTransformation.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/ScaleCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/ScaleCoordinateTransformation.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/TranslationCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/TranslationCoordinateTransformation.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/TranslationCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/TranslationCoordinateTransformation.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/MultiscaleImage.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/MultiscaleImage.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/MultiscaleImage.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/MultiscaleImage.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/Plate.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/Plate.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/Plate.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/Plate.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/Well.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/Well.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/Well.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/Well.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/MultiscaleImage.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/MultiscaleImage.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/MultiscaleImage.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/MultiscaleImage.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/Plate.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/Plate.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/Plate.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/Plate.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/Well.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/Well.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/Well.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/Well.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/MultiscaleImage.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/MultiscaleImage.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/MultiscaleImage.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/MultiscaleImage.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Plate.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Plate.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Plate.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Plate.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Scene.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Scene.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Scene.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Scene.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/SceneReferenceResolver.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/SceneReferenceResolver.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/SceneReferenceResolver.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/SceneReferenceResolver.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/SceneTransformationGraph.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/SceneTransformationGraph.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/SceneTransformationGraph.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/SceneTransformationGraph.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Well.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Well.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Well.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Well.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/CoordinateSystem.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/CoordinateSystem.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/CoordinateSystem.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/CoordinateSystem.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/Dataset.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/Dataset.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/Dataset.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/Dataset.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/MultiscalesEntry.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/MultiscalesEntry.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/MultiscalesEntry.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/MultiscalesEntry.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/OmeMetadata.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/OmeMetadata.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/OmeMetadata.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/OmeMetadata.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/SceneMetadata.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/SceneMetadata.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/SceneMetadata.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/SceneMetadata.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/AffineCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/AffineCoordinateTransformation.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/AffineCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/AffineCoordinateTransformation.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/BaseCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/BaseCoordinateTransformation.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/BaseCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/BaseCoordinateTransformation.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/BijectionCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/BijectionCoordinateTransformation.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/BijectionCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/BijectionCoordinateTransformation.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/ByDimensionCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/ByDimensionCoordinateTransformation.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/ByDimensionCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/ByDimensionCoordinateTransformation.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinateSystemRefSerde.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinateSystemRefSerde.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinateSystemRefSerde.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinateSystemRefSerde.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinateTransformation.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinateTransformation.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinatesCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinatesCoordinateTransformation.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinatesCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinatesCoordinateTransformation.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/DisplacementsCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/DisplacementsCoordinateTransformation.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/DisplacementsCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/DisplacementsCoordinateTransformation.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/GenericCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/GenericCoordinateTransformation.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/GenericCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/GenericCoordinateTransformation.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/IdentityCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/IdentityCoordinateTransformation.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/IdentityCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/IdentityCoordinateTransformation.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/MapAxisCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/MapAxisCoordinateTransformation.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/MapAxisCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/MapAxisCoordinateTransformation.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/RotationCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/RotationCoordinateTransformation.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/RotationCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/RotationCoordinateTransformation.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/ScaleCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/ScaleCoordinateTransformation.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/ScaleCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/ScaleCoordinateTransformation.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/SequenceCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/SequenceCoordinateTransformation.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/SequenceCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/SequenceCoordinateTransformation.java diff --git a/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/TranslationCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/TranslationCoordinateTransformation.java similarity index 100% rename from src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/TranslationCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/TranslationCoordinateTransformation.java diff --git a/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappersTest.java b/zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappersTest.java similarity index 100% rename from src/test/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappersTest.java rename to zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappersTest.java diff --git a/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrBaseTest.java b/zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrBaseTest.java similarity index 100% rename from src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrBaseTest.java rename to zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrBaseTest.java diff --git a/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrSceneV06Test.java b/zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrSceneV06Test.java similarity index 100% rename from src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrSceneV06Test.java rename to zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrSceneV06Test.java diff --git a/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrUserGuideExamplesTest.java b/zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrUserGuideExamplesTest.java similarity index 100% rename from src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrUserGuideExamplesTest.java rename to zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrUserGuideExamplesTest.java diff --git a/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV04Test.java b/zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV04Test.java similarity index 100% rename from src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV04Test.java rename to zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV04Test.java diff --git a/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV05Test.java b/zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV05Test.java similarity index 100% rename from src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV05Test.java rename to zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV05Test.java diff --git a/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV06Test.java b/zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV06Test.java similarity index 100% rename from src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV06Test.java rename to zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV06Test.java diff --git a/testdata/ome/v0.4/.zattrs b/zarr-java-ome/testdata/ome/v0.4/.zattrs similarity index 100% rename from testdata/ome/v0.4/.zattrs rename to zarr-java-ome/testdata/ome/v0.4/.zattrs diff --git a/testdata/ome/v0.4/labels/nuclei/.zgroup b/zarr-java-ome/testdata/ome/v0.4/.zgroup similarity index 100% rename from testdata/ome/v0.4/labels/nuclei/.zgroup rename to zarr-java-ome/testdata/ome/v0.4/.zgroup diff --git a/testdata/ome/v0.4/0/.zarray b/zarr-java-ome/testdata/ome/v0.4/0/.zarray similarity index 100% rename from testdata/ome/v0.4/0/.zarray rename to zarr-java-ome/testdata/ome/v0.4/0/.zarray diff --git a/testdata/ome/v0.4_hcs/A/1/0/0/.zattrs b/zarr-java-ome/testdata/ome/v0.4/0/.zattrs similarity index 100% rename from testdata/ome/v0.4_hcs/A/1/0/0/.zattrs rename to zarr-java-ome/testdata/ome/v0.4/0/.zattrs diff --git a/testdata/ome/v0.4/0/0.0.0.0.0 b/zarr-java-ome/testdata/ome/v0.4/0/0.0.0.0.0 similarity index 100% rename from testdata/ome/v0.4/0/0.0.0.0.0 rename to zarr-java-ome/testdata/ome/v0.4/0/0.0.0.0.0 diff --git a/testdata/ome/v0.4/0/0.1.0.0.0 b/zarr-java-ome/testdata/ome/v0.4/0/0.1.0.0.0 similarity index 100% rename from testdata/ome/v0.4/0/0.1.0.0.0 rename to zarr-java-ome/testdata/ome/v0.4/0/0.1.0.0.0 diff --git a/testdata/ome/v0.4/1/.zarray b/zarr-java-ome/testdata/ome/v0.4/1/.zarray similarity index 100% rename from testdata/ome/v0.4/1/.zarray rename to zarr-java-ome/testdata/ome/v0.4/1/.zarray diff --git a/testdata/v2_sample/.zattrs b/zarr-java-ome/testdata/ome/v0.4/1/.zattrs similarity index 100% rename from testdata/v2_sample/.zattrs rename to zarr-java-ome/testdata/ome/v0.4/1/.zattrs diff --git a/testdata/ome/v0.4/1/0.0.0.0.0 b/zarr-java-ome/testdata/ome/v0.4/1/0.0.0.0.0 similarity index 100% rename from testdata/ome/v0.4/1/0.0.0.0.0 rename to zarr-java-ome/testdata/ome/v0.4/1/0.0.0.0.0 diff --git a/testdata/ome/v0.4/1/0.1.0.0.0 b/zarr-java-ome/testdata/ome/v0.4/1/0.1.0.0.0 similarity index 100% rename from testdata/ome/v0.4/1/0.1.0.0.0 rename to zarr-java-ome/testdata/ome/v0.4/1/0.1.0.0.0 diff --git a/testdata/ome/v0.4/labels/.zattrs b/zarr-java-ome/testdata/ome/v0.4/labels/.zattrs similarity index 100% rename from testdata/ome/v0.4/labels/.zattrs rename to zarr-java-ome/testdata/ome/v0.4/labels/.zattrs diff --git a/testdata/ome/v0.4_hcs/.zgroup b/zarr-java-ome/testdata/ome/v0.4/labels/.zgroup similarity index 100% rename from testdata/ome/v0.4_hcs/.zgroup rename to zarr-java-ome/testdata/ome/v0.4/labels/.zgroup diff --git a/testdata/ome/v0.4/labels/nuclei/.zattrs b/zarr-java-ome/testdata/ome/v0.4/labels/nuclei/.zattrs similarity index 100% rename from testdata/ome/v0.4/labels/nuclei/.zattrs rename to zarr-java-ome/testdata/ome/v0.4/labels/nuclei/.zattrs diff --git a/testdata/ome/v0.4_hcs/A/1/.zgroup b/zarr-java-ome/testdata/ome/v0.4/labels/nuclei/.zgroup similarity index 100% rename from testdata/ome/v0.4_hcs/A/1/.zgroup rename to zarr-java-ome/testdata/ome/v0.4/labels/nuclei/.zgroup diff --git a/testdata/ome/v0.4/labels/nuclei/0/.zarray b/zarr-java-ome/testdata/ome/v0.4/labels/nuclei/0/.zarray similarity index 100% rename from testdata/ome/v0.4/labels/nuclei/0/.zarray rename to zarr-java-ome/testdata/ome/v0.4/labels/nuclei/0/.zarray diff --git a/testdata/v2_sample/subgroup/.zattrs b/zarr-java-ome/testdata/ome/v0.4/labels/nuclei/0/.zattrs similarity index 100% rename from testdata/v2_sample/subgroup/.zattrs rename to zarr-java-ome/testdata/ome/v0.4/labels/nuclei/0/.zattrs diff --git a/testdata/ome/v0.4/labels/nuclei/0/0.0.0 b/zarr-java-ome/testdata/ome/v0.4/labels/nuclei/0/0.0.0 similarity index 100% rename from testdata/ome/v0.4/labels/nuclei/0/0.0.0 rename to zarr-java-ome/testdata/ome/v0.4/labels/nuclei/0/0.0.0 diff --git a/testdata/ome/v0.4_hcs/.zattrs b/zarr-java-ome/testdata/ome/v0.4_hcs/.zattrs similarity index 100% rename from testdata/ome/v0.4_hcs/.zattrs rename to zarr-java-ome/testdata/ome/v0.4_hcs/.zattrs diff --git a/testdata/ome/v0.4_hcs/A/1/0/.zgroup b/zarr-java-ome/testdata/ome/v0.4_hcs/.zgroup similarity index 100% rename from testdata/ome/v0.4_hcs/A/1/0/.zgroup rename to zarr-java-ome/testdata/ome/v0.4_hcs/.zgroup diff --git a/testdata/ome/v0.4_hcs/A/1/.zattrs b/zarr-java-ome/testdata/ome/v0.4_hcs/A/1/.zattrs similarity index 100% rename from testdata/ome/v0.4_hcs/A/1/.zattrs rename to zarr-java-ome/testdata/ome/v0.4_hcs/A/1/.zattrs diff --git a/testdata/v2_sample/.zgroup b/zarr-java-ome/testdata/ome/v0.4_hcs/A/1/.zgroup similarity index 100% rename from testdata/v2_sample/.zgroup rename to zarr-java-ome/testdata/ome/v0.4_hcs/A/1/.zgroup diff --git a/testdata/ome/v0.4_hcs/A/1/0/.zattrs b/zarr-java-ome/testdata/ome/v0.4_hcs/A/1/0/.zattrs similarity index 100% rename from testdata/ome/v0.4_hcs/A/1/0/.zattrs rename to zarr-java-ome/testdata/ome/v0.4_hcs/A/1/0/.zattrs diff --git a/testdata/v2_sample/subgroup/.zgroup b/zarr-java-ome/testdata/ome/v0.4_hcs/A/1/0/.zgroup similarity index 100% rename from testdata/v2_sample/subgroup/.zgroup rename to zarr-java-ome/testdata/ome/v0.4_hcs/A/1/0/.zgroup diff --git a/testdata/ome/v0.4_hcs/A/1/0/0/.zarray b/zarr-java-ome/testdata/ome/v0.4_hcs/A/1/0/0/.zarray similarity index 100% rename from testdata/ome/v0.4_hcs/A/1/0/0/.zarray rename to zarr-java-ome/testdata/ome/v0.4_hcs/A/1/0/0/.zarray diff --git a/testdata/v2_sample/subgroup/array/.zattrs b/zarr-java-ome/testdata/ome/v0.4_hcs/A/1/0/0/.zattrs similarity index 100% rename from testdata/v2_sample/subgroup/array/.zattrs rename to zarr-java-ome/testdata/ome/v0.4_hcs/A/1/0/0/.zattrs diff --git a/testdata/ome/v0.4_hcs/A/1/0/0/0.0.0.0.0 b/zarr-java-ome/testdata/ome/v0.4_hcs/A/1/0/0/0.0.0.0.0 similarity index 100% rename from testdata/ome/v0.4_hcs/A/1/0/0/0.0.0.0.0 rename to zarr-java-ome/testdata/ome/v0.4_hcs/A/1/0/0/0.0.0.0.0 diff --git a/testdata/ome/v0.4_hcs/A/1/0/0/0.1.0.0.0 b/zarr-java-ome/testdata/ome/v0.4_hcs/A/1/0/0/0.1.0.0.0 similarity index 100% rename from testdata/ome/v0.4_hcs/A/1/0/0/0.1.0.0.0 rename to zarr-java-ome/testdata/ome/v0.4_hcs/A/1/0/0/0.1.0.0.0 diff --git a/testdata/ome/v0.5/0/c/0/0/0/0/0 b/zarr-java-ome/testdata/ome/v0.5/0/c/0/0/0/0/0 similarity index 100% rename from testdata/ome/v0.5/0/c/0/0/0/0/0 rename to zarr-java-ome/testdata/ome/v0.5/0/c/0/0/0/0/0 diff --git a/testdata/ome/v0.5/0/c/0/1/0/0/0 b/zarr-java-ome/testdata/ome/v0.5/0/c/0/1/0/0/0 similarity index 100% rename from testdata/ome/v0.5/0/c/0/1/0/0/0 rename to zarr-java-ome/testdata/ome/v0.5/0/c/0/1/0/0/0 diff --git a/testdata/ome/v0.5/0/zarr.json b/zarr-java-ome/testdata/ome/v0.5/0/zarr.json similarity index 100% rename from testdata/ome/v0.5/0/zarr.json rename to zarr-java-ome/testdata/ome/v0.5/0/zarr.json diff --git a/testdata/ome/v0.5/1/c/0/0/0/0/0 b/zarr-java-ome/testdata/ome/v0.5/1/c/0/0/0/0/0 similarity index 100% rename from testdata/ome/v0.5/1/c/0/0/0/0/0 rename to zarr-java-ome/testdata/ome/v0.5/1/c/0/0/0/0/0 diff --git a/testdata/ome/v0.5/1/c/0/1/0/0/0 b/zarr-java-ome/testdata/ome/v0.5/1/c/0/1/0/0/0 similarity index 100% rename from testdata/ome/v0.5/1/c/0/1/0/0/0 rename to zarr-java-ome/testdata/ome/v0.5/1/c/0/1/0/0/0 diff --git a/testdata/ome/v0.5/1/zarr.json b/zarr-java-ome/testdata/ome/v0.5/1/zarr.json similarity index 100% rename from testdata/ome/v0.5/1/zarr.json rename to zarr-java-ome/testdata/ome/v0.5/1/zarr.json diff --git a/testdata/ome/v0.5/labels/nuclei/0/c/0/0/0 b/zarr-java-ome/testdata/ome/v0.5/labels/nuclei/0/c/0/0/0 similarity index 100% rename from testdata/ome/v0.5/labels/nuclei/0/c/0/0/0 rename to zarr-java-ome/testdata/ome/v0.5/labels/nuclei/0/c/0/0/0 diff --git a/testdata/ome/v0.5/labels/nuclei/0/zarr.json b/zarr-java-ome/testdata/ome/v0.5/labels/nuclei/0/zarr.json similarity index 100% rename from testdata/ome/v0.5/labels/nuclei/0/zarr.json rename to zarr-java-ome/testdata/ome/v0.5/labels/nuclei/0/zarr.json diff --git a/testdata/ome/v0.5/labels/nuclei/zarr.json b/zarr-java-ome/testdata/ome/v0.5/labels/nuclei/zarr.json similarity index 100% rename from testdata/ome/v0.5/labels/nuclei/zarr.json rename to zarr-java-ome/testdata/ome/v0.5/labels/nuclei/zarr.json diff --git a/testdata/ome/v0.5/labels/zarr.json b/zarr-java-ome/testdata/ome/v0.5/labels/zarr.json similarity index 100% rename from testdata/ome/v0.5/labels/zarr.json rename to zarr-java-ome/testdata/ome/v0.5/labels/zarr.json diff --git a/testdata/ome/v0.5/zarr.json b/zarr-java-ome/testdata/ome/v0.5/zarr.json similarity index 100% rename from testdata/ome/v0.5/zarr.json rename to zarr-java-ome/testdata/ome/v0.5/zarr.json diff --git a/testdata/ome/v0.5_hcs/A/1/0/0/c/0/0/0/0/0 b/zarr-java-ome/testdata/ome/v0.5_hcs/A/1/0/0/c/0/0/0/0/0 similarity index 100% rename from testdata/ome/v0.5_hcs/A/1/0/0/c/0/0/0/0/0 rename to zarr-java-ome/testdata/ome/v0.5_hcs/A/1/0/0/c/0/0/0/0/0 diff --git a/testdata/ome/v0.5_hcs/A/1/0/0/c/0/1/0/0/0 b/zarr-java-ome/testdata/ome/v0.5_hcs/A/1/0/0/c/0/1/0/0/0 similarity index 100% rename from testdata/ome/v0.5_hcs/A/1/0/0/c/0/1/0/0/0 rename to zarr-java-ome/testdata/ome/v0.5_hcs/A/1/0/0/c/0/1/0/0/0 diff --git a/testdata/ome/v0.5_hcs/A/1/0/0/zarr.json b/zarr-java-ome/testdata/ome/v0.5_hcs/A/1/0/0/zarr.json similarity index 100% rename from testdata/ome/v0.5_hcs/A/1/0/0/zarr.json rename to zarr-java-ome/testdata/ome/v0.5_hcs/A/1/0/0/zarr.json diff --git a/testdata/ome/v0.5_hcs/A/1/0/zarr.json b/zarr-java-ome/testdata/ome/v0.5_hcs/A/1/0/zarr.json similarity index 100% rename from testdata/ome/v0.5_hcs/A/1/0/zarr.json rename to zarr-java-ome/testdata/ome/v0.5_hcs/A/1/0/zarr.json diff --git a/testdata/ome/v0.5_hcs/A/1/zarr.json b/zarr-java-ome/testdata/ome/v0.5_hcs/A/1/zarr.json similarity index 100% rename from testdata/ome/v0.5_hcs/A/1/zarr.json rename to zarr-java-ome/testdata/ome/v0.5_hcs/A/1/zarr.json diff --git a/testdata/ome/v0.5_hcs/zarr.json b/zarr-java-ome/testdata/ome/v0.5_hcs/zarr.json similarity index 100% rename from testdata/ome/v0.5_hcs/zarr.json rename to zarr-java-ome/testdata/ome/v0.5_hcs/zarr.json diff --git a/testdata/ome/v0.6_scene/example1_instrument_registration.zarr/coordinateTransformations/sampleA_instrument2-to-instrument1/zarr.json b/zarr-java-ome/testdata/ome/v0.6_scene/example1_instrument_registration.zarr/coordinateTransformations/sampleA_instrument2-to-instrument1/zarr.json similarity index 100% rename from testdata/ome/v0.6_scene/example1_instrument_registration.zarr/coordinateTransformations/sampleA_instrument2-to-instrument1/zarr.json rename to zarr-java-ome/testdata/ome/v0.6_scene/example1_instrument_registration.zarr/coordinateTransformations/sampleA_instrument2-to-instrument1/zarr.json diff --git a/testdata/ome/v0.6_scene/example1_instrument_registration.zarr/coordinateTransformations/zarr.json b/zarr-java-ome/testdata/ome/v0.6_scene/example1_instrument_registration.zarr/coordinateTransformations/zarr.json similarity index 100% rename from testdata/ome/v0.6_scene/example1_instrument_registration.zarr/coordinateTransformations/zarr.json rename to zarr-java-ome/testdata/ome/v0.6_scene/example1_instrument_registration.zarr/coordinateTransformations/zarr.json diff --git a/testdata/ome/v0.6_scene/example1_instrument_registration.zarr/sampleA_instrument1/s0/zarr.json b/zarr-java-ome/testdata/ome/v0.6_scene/example1_instrument_registration.zarr/sampleA_instrument1/s0/zarr.json similarity index 100% rename from testdata/ome/v0.6_scene/example1_instrument_registration.zarr/sampleA_instrument1/s0/zarr.json rename to zarr-java-ome/testdata/ome/v0.6_scene/example1_instrument_registration.zarr/sampleA_instrument1/s0/zarr.json diff --git a/testdata/ome/v0.6_scene/example1_instrument_registration.zarr/sampleA_instrument1/zarr.json b/zarr-java-ome/testdata/ome/v0.6_scene/example1_instrument_registration.zarr/sampleA_instrument1/zarr.json similarity index 100% rename from testdata/ome/v0.6_scene/example1_instrument_registration.zarr/sampleA_instrument1/zarr.json rename to zarr-java-ome/testdata/ome/v0.6_scene/example1_instrument_registration.zarr/sampleA_instrument1/zarr.json diff --git a/testdata/ome/v0.6_scene/example1_instrument_registration.zarr/sampleA_instrument2/s0/zarr.json b/zarr-java-ome/testdata/ome/v0.6_scene/example1_instrument_registration.zarr/sampleA_instrument2/s0/zarr.json similarity index 100% rename from testdata/ome/v0.6_scene/example1_instrument_registration.zarr/sampleA_instrument2/s0/zarr.json rename to zarr-java-ome/testdata/ome/v0.6_scene/example1_instrument_registration.zarr/sampleA_instrument2/s0/zarr.json diff --git a/testdata/ome/v0.6_scene/example1_instrument_registration.zarr/sampleA_instrument2/zarr.json b/zarr-java-ome/testdata/ome/v0.6_scene/example1_instrument_registration.zarr/sampleA_instrument2/zarr.json similarity index 100% rename from testdata/ome/v0.6_scene/example1_instrument_registration.zarr/sampleA_instrument2/zarr.json rename to zarr-java-ome/testdata/ome/v0.6_scene/example1_instrument_registration.zarr/sampleA_instrument2/zarr.json diff --git a/testdata/ome/v0.6_scene/example1_instrument_registration.zarr/zarr.json b/zarr-java-ome/testdata/ome/v0.6_scene/example1_instrument_registration.zarr/zarr.json similarity index 100% rename from testdata/ome/v0.6_scene/example1_instrument_registration.zarr/zarr.json rename to zarr-java-ome/testdata/ome/v0.6_scene/example1_instrument_registration.zarr/zarr.json diff --git a/testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument1/s0/zarr.json b/zarr-java-ome/testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument1/s0/zarr.json similarity index 100% rename from testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument1/s0/zarr.json rename to zarr-java-ome/testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument1/s0/zarr.json diff --git a/testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument1/zarr.json b/zarr-java-ome/testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument1/zarr.json similarity index 100% rename from testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument1/zarr.json rename to zarr-java-ome/testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument1/zarr.json diff --git a/testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument2/s0/zarr.json b/zarr-java-ome/testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument2/s0/zarr.json similarity index 100% rename from testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument2/s0/zarr.json rename to zarr-java-ome/testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument2/s0/zarr.json diff --git a/testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument2/zarr.json b/zarr-java-ome/testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument2/zarr.json similarity index 100% rename from testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument2/zarr.json rename to zarr-java-ome/testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument2/zarr.json diff --git a/testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument3/s0/zarr.json b/zarr-java-ome/testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument3/s0/zarr.json similarity index 100% rename from testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument3/s0/zarr.json rename to zarr-java-ome/testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument3/s0/zarr.json diff --git a/testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument3/zarr.json b/zarr-java-ome/testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument3/zarr.json similarity index 100% rename from testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument3/zarr.json rename to zarr-java-ome/testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/instrument3/zarr.json diff --git a/testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/zarr.json b/zarr-java-ome/testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/zarr.json similarity index 100% rename from testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/zarr.json rename to zarr-java-ome/testdata/ome/v0.6_scene/example2_multi_instrument_chain.zarr/zarr.json From e047820fb6736b1da78b11ebf04e04fb460d772e Mon Sep 17 00:00:00 2001 From: Konstantin Date: Wed, 24 Jun 2026 16:51:00 +0200 Subject: [PATCH 2/5] made testcases work --- .gitmodules | 4 ++-- zarr-java-ome/testdata/ome/v0.6/examples | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) create mode 160000 zarr-java-ome/testdata/ome/v0.6/examples diff --git a/.gitmodules b/.gitmodules index 37c054ac..3405e630 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ -[submodule "testdata/ome/v0.6/examples"] - path = testdata/ome/v0.6/examples +[submodule "zarr-java-ome/testdata/ome/v0.6/examples"] + path = zarr-java-ome/testdata/ome/v0.6/examples url = https://github.com/jo-mueller/ngff-rfc5-coordinate-transformation-examples diff --git a/zarr-java-ome/testdata/ome/v0.6/examples b/zarr-java-ome/testdata/ome/v0.6/examples new file mode 160000 index 00000000..8eb63f34 --- /dev/null +++ b/zarr-java-ome/testdata/ome/v0.6/examples @@ -0,0 +1 @@ +Subproject commit 8eb63f3401eaa73633ad9150fef9a2e971f857e6 From 26e3c5dee0f592ef42a35f08b761fbcbd1794fb2 Mon Sep 17 00:00:00 2001 From: Konstantin Date: Wed, 24 Jun 2026 17:11:48 +0200 Subject: [PATCH 3/5] changed naming convention --- testdata/ome/v0.6/examples | 1 - .../ome => omezarr}/MultiscaleImage.java | 14 +- .../MultiscalesMetadataImage.java | 6 +- .../ome => omezarr}/OmeObjectMappers.java | 2 +- .../ome => omezarr}/OmeV2Group.java | 2 +- .../ome => omezarr}/OmeV3Group.java | 2 +- .../experimental/ome => omezarr}/Plate.java | 10 +- .../experimental/ome => omezarr}/Well.java | 10 +- .../ome => omezarr}/metadata/Acquisition.java | 2 +- .../ome => omezarr}/metadata/Axis.java | 2 +- .../ome => omezarr}/metadata/Dataset.java | 4 +- .../metadata/MultiscalesEntry.java | 4 +- .../ome => omezarr}/metadata/NamedEntry.java | 2 +- .../ome => omezarr}/metadata/OmeMetadata.java | 2 +- .../metadata/OmeroChannel.java | 2 +- .../metadata/OmeroMetadata.java | 2 +- .../ome => omezarr}/metadata/OmeroRdefs.java | 2 +- .../ome => omezarr}/metadata/OmeroWindow.java | 2 +- .../metadata/PlateMetadata.java | 2 +- .../ome => omezarr}/metadata/WellImage.java | 2 +- .../metadata/WellMetadata.java | 2 +- .../ome => omezarr}/metadata/WellRef.java | 2 +- .../transform/CoordinateTransformation.java | 2 +- .../GenericCoordinateTransformation.java | 2 +- .../IdentityCoordinateTransformation.java | 2 +- .../ScaleCoordinateTransformation.java | 2 +- .../TranslationCoordinateTransformation.java | 2 +- .../ome => omezarr}/v0_4/MultiscaleImage.java | 14 +- .../ome => omezarr}/v0_4/Plate.java | 10 +- .../ome => omezarr}/v0_4/Well.java | 10 +- .../ome => omezarr}/v0_5/MultiscaleImage.java | 16 +- .../ome => omezarr}/v0_5/Plate.java | 12 +- .../ome => omezarr}/v0_5/Well.java | 12 +- .../zarr/omezarr/v0_6/MultiscaleImage.java | 498 ++++++++++++++++++ .../ome => omezarr}/v0_6/Plate.java | 12 +- .../ome => omezarr}/v0_6/Scene.java | 60 +-- .../v0_6/SceneReferenceResolver.java | 8 +- .../v0_6/SceneTransformationGraph.java | 2 +- .../ome => omezarr}/v0_6/Well.java | 12 +- .../v0_6/metadata/CoordinateSystem.java | 4 +- .../v0_6/metadata/Dataset.java | 4 +- .../v0_6/metadata/MultiscalesEntry.java | 6 +- .../v0_6/metadata/OmeMetadata.java | 8 +- .../v0_6/metadata/SceneMetadata.java | 4 +- .../AffineCoordinateTransformation.java | 2 +- .../BaseCoordinateTransformation.java | 2 +- .../BijectionCoordinateTransformation.java | 2 +- .../ByDimensionCoordinateTransformation.java | 2 +- .../transform/CoordinateSystemRefSerde.java | 2 +- .../transform/CoordinateTransformation.java | 2 +- .../CoordinatesCoordinateTransformation.java | 2 +- ...DisplacementsCoordinateTransformation.java | 2 +- .../GenericCoordinateTransformation.java | 2 +- .../IdentityCoordinateTransformation.java | 4 +- .../MapAxisCoordinateTransformation.java | 2 +- .../RotationCoordinateTransformation.java | 2 +- .../ScaleCoordinateTransformation.java | 4 +- .../SequenceCoordinateTransformation.java | 2 +- .../TranslationCoordinateTransformation.java | 4 +- .../ome/v0_6/MultiscaleImage.java | 498 ------------------ .../ome => omezarr}/OmeObjectMappersTest.java | 64 +-- .../ome => omezarr}/OmeZarrBaseTest.java | 4 +- .../ome => omezarr}/OmeZarrSceneV06Test.java | 76 +-- .../OmeZarrUserGuideExamplesTest.java | 18 +- .../ome => omezarr}/OmeZarrV04Test.java | 64 +-- .../ome => omezarr}/OmeZarrV05Test.java | 64 +-- .../ome => omezarr}/OmeZarrV06Test.java | 142 ++--- 67 files changed, 873 insertions(+), 874 deletions(-) delete mode 160000 testdata/ome/v0.6/examples rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/MultiscaleImage.java (90%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/MultiscalesMetadataImage.java (89%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/OmeObjectMappers.java (98%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/OmeV2Group.java (98%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/OmeV3Group.java (97%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/Plate.java (85%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/Well.java (85%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/metadata/Acquisition.java (96%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/metadata/Axis.java (95%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/metadata/Dataset.java (83%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/metadata/MultiscalesEntry.java (93%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/metadata/NamedEntry.java (90%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/metadata/OmeMetadata.java (97%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/metadata/OmeroChannel.java (96%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/metadata/OmeroMetadata.java (98%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/metadata/OmeroRdefs.java (94%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/metadata/OmeroWindow.java (94%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/metadata/PlateMetadata.java (96%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/metadata/WellImage.java (92%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/metadata/WellMetadata.java (93%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/metadata/WellRef.java (94%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/metadata/transform/CoordinateTransformation.java (96%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/metadata/transform/GenericCoordinateTransformation.java (93%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/metadata/transform/IdentityCoordinateTransformation.java (88%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/metadata/transform/ScaleCoordinateTransformation.java (91%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/metadata/transform/TranslationCoordinateTransformation.java (91%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_4/MultiscaleImage.java (92%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_4/Plate.java (85%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_4/Well.java (85%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_5/MultiscaleImage.java (87%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_5/Plate.java (84%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_5/Well.java (84%) create mode 100644 zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/MultiscaleImage.java rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/Plate.java (85%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/Scene.java (76%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/SceneReferenceResolver.java (91%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/SceneTransformationGraph.java (97%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/Well.java (85%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/metadata/CoordinateSystem.java (84%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/metadata/Dataset.java (84%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/metadata/MultiscalesEntry.java (91%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/metadata/OmeMetadata.java (89%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/metadata/SceneMetadata.java (86%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/metadata/transform/AffineCoordinateTransformation.java (94%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/metadata/transform/BaseCoordinateTransformation.java (92%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/metadata/transform/BijectionCoordinateTransformation.java (94%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/metadata/transform/ByDimensionCoordinateTransformation.java (96%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/metadata/transform/CoordinateSystemRefSerde.java (95%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/metadata/transform/CoordinateTransformation.java (96%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/metadata/transform/CoordinatesCoordinateTransformation.java (93%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/metadata/transform/DisplacementsCoordinateTransformation.java (93%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/metadata/transform/GenericCoordinateTransformation.java (95%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/metadata/transform/IdentityCoordinateTransformation.java (88%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/metadata/transform/MapAxisCoordinateTransformation.java (94%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/metadata/transform/RotationCoordinateTransformation.java (94%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/metadata/transform/ScaleCoordinateTransformation.java (89%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/metadata/transform/SequenceCoordinateTransformation.java (93%) rename zarr-java-ome/src/main/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/v0_6/metadata/transform/TranslationCoordinateTransformation.java (89%) delete mode 100644 zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/MultiscaleImage.java rename zarr-java-ome/src/test/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/OmeObjectMappersTest.java (80%) rename zarr-java-ome/src/test/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/OmeZarrBaseTest.java (96%) rename zarr-java-ome/src/test/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/OmeZarrSceneV06Test.java (61%) rename zarr-java-ome/src/test/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/OmeZarrUserGuideExamplesTest.java (82%) rename zarr-java-ome/src/test/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/OmeZarrV04Test.java (79%) rename zarr-java-ome/src/test/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/OmeZarrV05Test.java (80%) rename zarr-java-ome/src/test/java/dev/zarr/{zarrjava/experimental/ome => omezarr}/OmeZarrV06Test.java (62%) diff --git a/testdata/ome/v0.6/examples b/testdata/ome/v0.6/examples deleted file mode 160000 index 8eb63f34..00000000 --- a/testdata/ome/v0.6/examples +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8eb63f3401eaa73633ad9150fef9a2e971f857e6 diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/MultiscaleImage.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/MultiscaleImage.java similarity index 90% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/MultiscaleImage.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/MultiscaleImage.java index eb25d178..875c2b94 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/MultiscaleImage.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/MultiscaleImage.java @@ -1,9 +1,9 @@ -package dev.zarr.zarrjava.experimental.ome; +package dev.zarr.omezarr; 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.omezarr.metadata.MultiscalesEntry; +import dev.zarr.omezarr.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.omezarr.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.omezarr.v0_6.MultiscaleImage.openMultiscaleImage(storeHandle); } - return dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage.openMultiscaleImage(storeHandle); + return dev.zarr.omezarr.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.omezarr.v0_4.MultiscaleImage.openMultiscaleImage(storeHandle); } } diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/MultiscalesMetadataImage.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/MultiscalesMetadataImage.java similarity index 89% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/MultiscalesMetadataImage.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/MultiscalesMetadataImage.java index eddc1a58..483f2cc4 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/MultiscalesMetadataImage.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/MultiscalesMetadataImage.java @@ -1,8 +1,8 @@ -package dev.zarr.zarrjava.experimental.ome; +package dev.zarr.omezarr; 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.omezarr.metadata.transform.CoordinateTransformation; +import dev.zarr.omezarr.metadata.MultiscalesEntry; import java.io.IOException; import java.util.List; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappers.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/OmeObjectMappers.java similarity index 98% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappers.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/OmeObjectMappers.java index 9f1c7c3f..03c19b98 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappers.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/OmeObjectMappers.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome; +package dev.zarr.omezarr; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.DeserializationContext; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeV2Group.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/OmeV2Group.java similarity index 98% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeV2Group.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/OmeV2Group.java index a65dbcd0..6cc0aaee 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeV2Group.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/OmeV2Group.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome; +package dev.zarr.omezarr; import com.fasterxml.jackson.core.type.TypeReference; import dev.zarr.zarrjava.ZarrException; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeV3Group.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/OmeV3Group.java similarity index 97% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeV3Group.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/OmeV3Group.java index dcafd3d3..cc8f1a4c 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/OmeV3Group.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/OmeV3Group.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome; +package dev.zarr.omezarr; import com.fasterxml.jackson.core.type.TypeReference; import dev.zarr.zarrjava.ZarrException; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/Plate.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/Plate.java similarity index 85% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/Plate.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/Plate.java index c8ac2777..e984e864 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/Plate.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/Plate.java @@ -1,8 +1,8 @@ -package dev.zarr.zarrjava.experimental.ome; +package dev.zarr.omezarr; import dev.zarr.zarrjava.ZarrException; import dev.zarr.zarrjava.core.Node; -import dev.zarr.zarrjava.experimental.ome.metadata.PlateMetadata; +import dev.zarr.omezarr.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.omezarr.v0_6.Plate.openPlate(storeHandle); } - return dev.zarr.zarrjava.experimental.ome.v0_5.Plate.openPlate(storeHandle); + return dev.zarr.omezarr.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.omezarr.v0_4.Plate.openPlate(storeHandle); } } diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/Well.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/Well.java similarity index 85% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/Well.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/Well.java index be4f5366..6303a333 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/Well.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/Well.java @@ -1,8 +1,8 @@ -package dev.zarr.zarrjava.experimental.ome; +package dev.zarr.omezarr; import dev.zarr.zarrjava.ZarrException; import dev.zarr.zarrjava.core.Node; -import dev.zarr.zarrjava.experimental.ome.metadata.WellMetadata; +import dev.zarr.omezarr.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.omezarr.v0_6.Well.openWell(storeHandle); } - return dev.zarr.zarrjava.experimental.ome.v0_5.Well.openWell(storeHandle); + return dev.zarr.omezarr.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.omezarr.v0_4.Well.openWell(storeHandle); } } diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Acquisition.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/Acquisition.java similarity index 96% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Acquisition.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/Acquisition.java index d7ae004b..b85d0a6e 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Acquisition.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/Acquisition.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.omezarr.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Axis.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/Axis.java similarity index 95% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Axis.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/Axis.java index 0b24c9d6..62d28839 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Axis.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/Axis.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.omezarr.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Dataset.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/Dataset.java similarity index 83% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Dataset.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/Dataset.java index 8d928dcc..4b1fe285 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/Dataset.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/Dataset.java @@ -1,8 +1,8 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.omezarr.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.omezarr.metadata.transform.CoordinateTransformation; import java.util.List; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/MultiscalesEntry.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/MultiscalesEntry.java similarity index 93% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/MultiscalesEntry.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/MultiscalesEntry.java index 5223eb56..81bef46d 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/MultiscalesEntry.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/MultiscalesEntry.java @@ -1,9 +1,9 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.omezarr.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.omezarr.metadata.transform.CoordinateTransformation; import javax.annotation.Nullable; import java.util.ArrayList; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/NamedEntry.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/NamedEntry.java similarity index 90% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/NamedEntry.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/NamedEntry.java index 24b94b28..a10ac681 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/NamedEntry.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/NamedEntry.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.omezarr.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeMetadata.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/OmeMetadata.java similarity index 97% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeMetadata.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/OmeMetadata.java index 4e8920a3..a1740464 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeMetadata.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/OmeMetadata.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.omezarr.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroChannel.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/OmeroChannel.java similarity index 96% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroChannel.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/OmeroChannel.java index 4a82e675..92eb1d44 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroChannel.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/OmeroChannel.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.omezarr.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroMetadata.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/OmeroMetadata.java similarity index 98% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroMetadata.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/OmeroMetadata.java index 21cb4e98..48cda8e2 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroMetadata.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/OmeroMetadata.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.omezarr.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroRdefs.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/OmeroRdefs.java similarity index 94% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroRdefs.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/OmeroRdefs.java index e83c0b22..dc841448 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroRdefs.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/OmeroRdefs.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.omezarr.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroWindow.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/OmeroWindow.java similarity index 94% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroWindow.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/OmeroWindow.java index db10f943..b3cd1704 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/OmeroWindow.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/OmeroWindow.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.omezarr.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/PlateMetadata.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/PlateMetadata.java similarity index 96% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/PlateMetadata.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/PlateMetadata.java index 123db718..29313cb7 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/PlateMetadata.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/PlateMetadata.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.omezarr.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellImage.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/WellImage.java similarity index 92% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellImage.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/WellImage.java index 1f1a2eba..2073618a 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellImage.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/WellImage.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.omezarr.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellMetadata.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/WellMetadata.java similarity index 93% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellMetadata.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/WellMetadata.java index 661d955c..2a4ce675 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellMetadata.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/WellMetadata.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.omezarr.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellRef.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/WellRef.java similarity index 94% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellRef.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/WellRef.java index f34a92c4..b72b4fe1 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/WellRef.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/WellRef.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata; +package dev.zarr.omezarr.metadata; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonInclude; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/CoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/transform/CoordinateTransformation.java similarity index 96% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/CoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/transform/CoordinateTransformation.java index 8406a2e7..e5cde8f6 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/CoordinateTransformation.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/transform/CoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata.transform; +package dev.zarr.omezarr.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonSubTypes; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/GenericCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/transform/GenericCoordinateTransformation.java similarity index 93% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/GenericCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/transform/GenericCoordinateTransformation.java index a1045cde..cd4c2856 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/GenericCoordinateTransformation.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/transform/GenericCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata.transform; +package dev.zarr.omezarr.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonAnySetter; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/IdentityCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/transform/IdentityCoordinateTransformation.java similarity index 88% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/IdentityCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/transform/IdentityCoordinateTransformation.java index b47bb91b..eb44a965 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/IdentityCoordinateTransformation.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/transform/IdentityCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata.transform; +package dev.zarr.omezarr.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/ScaleCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/transform/ScaleCoordinateTransformation.java similarity index 91% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/ScaleCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/transform/ScaleCoordinateTransformation.java index 8a4ca96d..c8a95712 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/ScaleCoordinateTransformation.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/transform/ScaleCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata.transform; +package dev.zarr.omezarr.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/TranslationCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/transform/TranslationCoordinateTransformation.java similarity index 91% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/TranslationCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/transform/TranslationCoordinateTransformation.java index c154e20f..8623d541 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/metadata/transform/TranslationCoordinateTransformation.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/metadata/transform/TranslationCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.metadata.transform; +package dev.zarr.omezarr.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/MultiscaleImage.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_4/MultiscaleImage.java similarity index 92% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/MultiscaleImage.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_4/MultiscaleImage.java index 9de5b16f..77a583ae 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/MultiscaleImage.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_4/MultiscaleImage.java @@ -1,14 +1,14 @@ -package dev.zarr.zarrjava.experimental.ome.v0_4; +package dev.zarr.omezarr.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.omezarr.OmeV2Group; +import dev.zarr.omezarr.MultiscalesMetadataImage; +import dev.zarr.omezarr.metadata.transform.CoordinateTransformation; +import dev.zarr.omezarr.metadata.Dataset; +import dev.zarr.omezarr.metadata.MultiscalesEntry; +import dev.zarr.omezarr.metadata.OmeroMetadata; import dev.zarr.zarrjava.store.StoreHandle; import dev.zarr.zarrjava.v2.Array; import dev.zarr.zarrjava.v2.Group; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/Plate.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_4/Plate.java similarity index 85% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/Plate.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_4/Plate.java index c6f4c49d..0919e4dc 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/Plate.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_4/Plate.java @@ -1,8 +1,8 @@ -package dev.zarr.zarrjava.experimental.ome.v0_4; +package dev.zarr.omezarr.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.omezarr.OmeV2Group; +import dev.zarr.omezarr.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.omezarr.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.omezarr.Well openWell(String rowColPath) throws IOException, ZarrException { return Well.openWell(storeHandle.resolve(rowColPath)); } diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/Well.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_4/Well.java similarity index 85% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/Well.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_4/Well.java index 98381efb..635964a3 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_4/Well.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_4/Well.java @@ -1,9 +1,9 @@ -package dev.zarr.zarrjava.experimental.ome.v0_4; +package dev.zarr.omezarr.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.omezarr.MultiscaleImage; +import dev.zarr.omezarr.OmeV2Group; +import dev.zarr.omezarr.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.omezarr.Well { private WellMetadata wellMetadata; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/MultiscaleImage.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_5/MultiscaleImage.java similarity index 87% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/MultiscaleImage.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_5/MultiscaleImage.java index 3f453758..d0584df2 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/MultiscaleImage.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_5/MultiscaleImage.java @@ -1,12 +1,12 @@ -package dev.zarr.zarrjava.experimental.ome.v0_5; +package dev.zarr.omezarr.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.omezarr.OmeV3Group; +import dev.zarr.omezarr.MultiscalesMetadataImage; +import dev.zarr.omezarr.metadata.transform.CoordinateTransformation; +import dev.zarr.omezarr.metadata.Dataset; +import dev.zarr.omezarr.metadata.MultiscalesEntry; +import dev.zarr.omezarr.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.omezarr.metadata.OmeroMetadata getOmeroMetadata() { return omeMetadata.omero; } diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/Plate.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_5/Plate.java similarity index 84% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/Plate.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_5/Plate.java index b9f09e19..25ae01c8 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/Plate.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_5/Plate.java @@ -1,9 +1,9 @@ -package dev.zarr.zarrjava.experimental.ome.v0_5; +package dev.zarr.omezarr.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.omezarr.OmeV3Group; +import dev.zarr.omezarr.metadata.OmeMetadata; +import dev.zarr.omezarr.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.omezarr.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.omezarr.Well openWell(String rowColPath) throws IOException, ZarrException { return Well.openWell(storeHandle.resolve(rowColPath)); } diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/Well.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_5/Well.java similarity index 84% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/Well.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_5/Well.java index 790aaf4b..df5f5bab 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_5/Well.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_5/Well.java @@ -1,10 +1,10 @@ -package dev.zarr.zarrjava.experimental.ome.v0_5; +package dev.zarr.omezarr.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.omezarr.MultiscaleImage; +import dev.zarr.omezarr.OmeV3Group; +import dev.zarr.omezarr.metadata.OmeMetadata; +import dev.zarr.omezarr.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.omezarr.Well { private OmeMetadata omeMetadata; diff --git a/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/MultiscaleImage.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/MultiscaleImage.java new file mode 100644 index 00000000..eb902d9d --- /dev/null +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/MultiscaleImage.java @@ -0,0 +1,498 @@ +package dev.zarr.omezarr.v0_6; + +import dev.zarr.zarrjava.ZarrException; +import dev.zarr.omezarr.MultiscalesMetadataImage; +import dev.zarr.omezarr.OmeV3Group; +import dev.zarr.omezarr.metadata.Axis; +import dev.zarr.omezarr.metadata.transform.CoordinateTransformation; +import dev.zarr.omezarr.metadata.transform.IdentityCoordinateTransformation; +import dev.zarr.omezarr.metadata.transform.ScaleCoordinateTransformation; +import dev.zarr.omezarr.metadata.transform.TranslationCoordinateTransformation; +import dev.zarr.omezarr.v0_6.metadata.CoordinateSystem; +import dev.zarr.omezarr.v0_6.metadata.MultiscalesEntry; +import dev.zarr.omezarr.v0_6.metadata.OmeMetadata; +import dev.zarr.omezarr.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.omezarr.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.omezarr.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.omezarr.metadata.transform.ScaleCoordinateTransformation) { + dev.zarr.omezarr.metadata.transform.ScaleCoordinateTransformation t = + (dev.zarr.omezarr.metadata.transform.ScaleCoordinateTransformation) ct; + scale = t.scale; + rawPath = t.path; + } else if (ct instanceof dev.zarr.omezarr.metadata.transform.TranslationCoordinateTransformation) { + dev.zarr.omezarr.metadata.transform.TranslationCoordinateTransformation t = + (dev.zarr.omezarr.metadata.transform.TranslationCoordinateTransformation) ct; + translation = t.translation; + rawPath = t.path; + } else if (ct instanceof dev.zarr.omezarr.metadata.transform.IdentityCoordinateTransformation) { + dev.zarr.omezarr.metadata.transform.IdentityCoordinateTransformation t = + (dev.zarr.omezarr.metadata.transform.IdentityCoordinateTransformation) ct; + rawPath = t.path; + } else if (ct instanceof dev.zarr.omezarr.metadata.transform.GenericCoordinateTransformation) { + Map raw = ((dev.zarr.omezarr.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.omezarr.v0_6.metadata.transform.SequenceCoordinateTransformation( + null, null, null, castV06TransformList(raw.get("transformations")))); + continue; + } + if ("mapAxis".equals(type)) { + v06Transforms.add(new dev.zarr.omezarr.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.omezarr.v0_6.metadata.transform.AffineCoordinateTransformation( + null, null, null, castMatrix(raw.get("affine")), rawPath)); + continue; + } + if ("rotation".equals(type)) { + v06Transforms.add(new dev.zarr.omezarr.v0_6.metadata.transform.RotationCoordinateTransformation( + null, null, null, castMatrix(raw.get("rotation")), rawPath)); + continue; + } + if ("displacements".equals(type)) { + v06Transforms.add(new dev.zarr.omezarr.v0_6.metadata.transform.DisplacementsCoordinateTransformation( + null, null, null, rawPath)); + continue; + } + if ("coordinates".equals(type)) { + v06Transforms.add(new dev.zarr.omezarr.v0_6.metadata.transform.CoordinatesCoordinateTransformation( + null, null, null, rawPath)); + continue; + } + if ("bijection".equals(type)) { + v06Transforms.add(new dev.zarr.omezarr.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.omezarr.v0_6.metadata.transform.ByDimensionCoordinateTransformation( + null, null, null, castByDimensionTransformList(raw.get("transformations")))); + continue; + } + } + if ("scale".equals(type)) { + v06Transforms.add(new dev.zarr.omezarr.v0_6.metadata.transform.ScaleCoordinateTransformation( + null, null, null, scale, rawPath)); + } else if ("translation".equals(type)) { + v06Transforms.add(new dev.zarr.omezarr.v0_6.metadata.transform.TranslationCoordinateTransformation( + null, null, null, translation, rawPath)); + } else if ("identity".equals(type)) { + v06Transforms.add(new dev.zarr.omezarr.v0_6.metadata.transform.IdentityCoordinateTransformation( + null, null, null, rawPath)); + } else { + dev.zarr.omezarr.v0_6.metadata.transform.GenericCoordinateTransformation generic = + new dev.zarr.omezarr.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.omezarr.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.omezarr.metadata.MultiscalesEntry getMultiscaleNode(int i) throws ZarrException { + MultiscalesEntry entry = getMultiscalesEntry(i); + List mappedDatasets = new ArrayList<>(); + for (dev.zarr.omezarr.v0_6.metadata.Dataset ds : entry.datasets) { + List mapped = new ArrayList<>(); + for (dev.zarr.omezarr.v0_6.metadata.transform.CoordinateTransformation ct : ds.coordinateTransformations) { + mapped.add(mapTransform(ct)); + } + mappedDatasets.add(new dev.zarr.omezarr.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.omezarr.metadata.MultiscalesEntry( + axes != null ? axes : Collections.emptyList(), + mappedDatasets, null, entry.name, null, null, null); + } + + private static CoordinateTransformation mapTransform( + dev.zarr.omezarr.v0_6.metadata.transform.CoordinateTransformation ct) { + if (ct instanceof dev.zarr.omezarr.v0_6.metadata.transform.ScaleCoordinateTransformation) { + dev.zarr.omezarr.v0_6.metadata.transform.ScaleCoordinateTransformation t = + (dev.zarr.omezarr.v0_6.metadata.transform.ScaleCoordinateTransformation) ct; + return new ScaleCoordinateTransformation(t.scale, t.path); + } + if (ct instanceof dev.zarr.omezarr.v0_6.metadata.transform.TranslationCoordinateTransformation) { + dev.zarr.omezarr.v0_6.metadata.transform.TranslationCoordinateTransformation t = + (dev.zarr.omezarr.v0_6.metadata.transform.TranslationCoordinateTransformation) ct; + return new TranslationCoordinateTransformation(t.translation, t.path); + } + if (ct instanceof dev.zarr.omezarr.v0_6.metadata.transform.IdentityCoordinateTransformation) { + dev.zarr.omezarr.v0_6.metadata.transform.IdentityCoordinateTransformation t = + (dev.zarr.omezarr.v0_6.metadata.transform.IdentityCoordinateTransformation) ct; + return new IdentityCoordinateTransformation(t.path); + } + if (ct instanceof GenericCoordinateTransformation) { + GenericCoordinateTransformation t = (GenericCoordinateTransformation) ct; + dev.zarr.omezarr.metadata.transform.GenericCoordinateTransformation generic = + new dev.zarr.omezarr.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.omezarr.v0_6.metadata.transform.SequenceCoordinateTransformation) { + dev.zarr.omezarr.v0_6.metadata.transform.SequenceCoordinateTransformation t = + (dev.zarr.omezarr.v0_6.metadata.transform.SequenceCoordinateTransformation) ct; + dev.zarr.omezarr.metadata.transform.GenericCoordinateTransformation generic = + new dev.zarr.omezarr.metadata.transform.GenericCoordinateTransformation("sequence"); + generic.raw.put("transformations", mapTransformList(t.transformations)); + return generic; + } + if (ct instanceof dev.zarr.omezarr.v0_6.metadata.transform.MapAxisCoordinateTransformation) { + dev.zarr.omezarr.v0_6.metadata.transform.MapAxisCoordinateTransformation t = + (dev.zarr.omezarr.v0_6.metadata.transform.MapAxisCoordinateTransformation) ct; + dev.zarr.omezarr.metadata.transform.GenericCoordinateTransformation generic = + new dev.zarr.omezarr.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.omezarr.v0_6.metadata.transform.AffineCoordinateTransformation) { + dev.zarr.omezarr.v0_6.metadata.transform.AffineCoordinateTransformation t = + (dev.zarr.omezarr.v0_6.metadata.transform.AffineCoordinateTransformation) ct; + dev.zarr.omezarr.metadata.transform.GenericCoordinateTransformation generic = + new dev.zarr.omezarr.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.omezarr.v0_6.metadata.transform.RotationCoordinateTransformation) { + dev.zarr.omezarr.v0_6.metadata.transform.RotationCoordinateTransformation t = + (dev.zarr.omezarr.v0_6.metadata.transform.RotationCoordinateTransformation) ct; + dev.zarr.omezarr.metadata.transform.GenericCoordinateTransformation generic = + new dev.zarr.omezarr.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.omezarr.v0_6.metadata.transform.DisplacementsCoordinateTransformation) { + dev.zarr.omezarr.v0_6.metadata.transform.DisplacementsCoordinateTransformation t = + (dev.zarr.omezarr.v0_6.metadata.transform.DisplacementsCoordinateTransformation) ct; + dev.zarr.omezarr.metadata.transform.GenericCoordinateTransformation generic = + new dev.zarr.omezarr.metadata.transform.GenericCoordinateTransformation("displacements"); + generic.raw.put("path", t.path); + return generic; + } + if (ct instanceof dev.zarr.omezarr.v0_6.metadata.transform.CoordinatesCoordinateTransformation) { + dev.zarr.omezarr.v0_6.metadata.transform.CoordinatesCoordinateTransformation t = + (dev.zarr.omezarr.v0_6.metadata.transform.CoordinatesCoordinateTransformation) ct; + dev.zarr.omezarr.metadata.transform.GenericCoordinateTransformation generic = + new dev.zarr.omezarr.metadata.transform.GenericCoordinateTransformation("coordinates"); + generic.raw.put("path", t.path); + return generic; + } + if (ct instanceof dev.zarr.omezarr.v0_6.metadata.transform.BijectionCoordinateTransformation) { + dev.zarr.omezarr.v0_6.metadata.transform.BijectionCoordinateTransformation t = + (dev.zarr.omezarr.v0_6.metadata.transform.BijectionCoordinateTransformation) ct; + dev.zarr.omezarr.metadata.transform.GenericCoordinateTransformation generic = + new dev.zarr.omezarr.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.omezarr.v0_6.metadata.transform.ByDimensionCoordinateTransformation) { + dev.zarr.omezarr.v0_6.metadata.transform.ByDimensionCoordinateTransformation t = + (dev.zarr.omezarr.v0_6.metadata.transform.ByDimensionCoordinateTransformation) ct; + dev.zarr.omezarr.metadata.transform.GenericCoordinateTransformation generic = + new dev.zarr.omezarr.metadata.transform.GenericCoordinateTransformation("byDimension"); + if (t.transformations != null) { + List> transformed = new ArrayList<>(); + for (dev.zarr.omezarr.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.omezarr.metadata.transform.GenericCoordinateTransformation(ct.getType()); + } + + private static Object convertRawValue(Object value) { + if (value instanceof dev.zarr.omezarr.v0_6.metadata.transform.CoordinateTransformation) { + return mapTransform((dev.zarr.omezarr.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.omezarr.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.omezarr.v0_6.metadata.transform.CoordinateTransformation castV06Transform(Object raw) { + if (raw instanceof dev.zarr.omezarr.metadata.transform.CoordinateTransformation) { + dev.zarr.omezarr.metadata.transform.CoordinateTransformation core = + (dev.zarr.omezarr.metadata.transform.CoordinateTransformation) raw; + if (core instanceof dev.zarr.omezarr.metadata.transform.ScaleCoordinateTransformation) { + dev.zarr.omezarr.metadata.transform.ScaleCoordinateTransformation t = + (dev.zarr.omezarr.metadata.transform.ScaleCoordinateTransformation) core; + return new dev.zarr.omezarr.v0_6.metadata.transform.ScaleCoordinateTransformation( + null, null, null, t.scale, t.path); + } + if (core instanceof dev.zarr.omezarr.metadata.transform.TranslationCoordinateTransformation) { + dev.zarr.omezarr.metadata.transform.TranslationCoordinateTransformation t = + (dev.zarr.omezarr.metadata.transform.TranslationCoordinateTransformation) core; + return new dev.zarr.omezarr.v0_6.metadata.transform.TranslationCoordinateTransformation( + null, null, null, t.translation, t.path); + } + if (core instanceof dev.zarr.omezarr.metadata.transform.IdentityCoordinateTransformation) { + dev.zarr.omezarr.metadata.transform.IdentityCoordinateTransformation t = + (dev.zarr.omezarr.metadata.transform.IdentityCoordinateTransformation) core; + return new dev.zarr.omezarr.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.omezarr.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.omezarr.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/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Plate.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/Plate.java similarity index 85% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Plate.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/Plate.java index d270f9a1..9e6b468a 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Plate.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/Plate.java @@ -1,9 +1,9 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6; +package dev.zarr.omezarr.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.omezarr.OmeV3Group; +import dev.zarr.omezarr.metadata.PlateMetadata; +import dev.zarr.omezarr.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.omezarr.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.omezarr.Well openWell(String rowColPath) throws IOException, ZarrException { return Well.openWell(storeHandle.resolve(rowColPath)); } diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Scene.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/Scene.java similarity index 76% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Scene.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/Scene.java index a4416c7e..76b76114 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Scene.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/Scene.java @@ -1,14 +1,14 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6; +package dev.zarr.omezarr.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.omezarr.OmeV3Group; +import dev.zarr.omezarr.v0_6.metadata.SceneMetadata; +import dev.zarr.omezarr.v0_6.metadata.transform.ByDimensionCoordinateTransformation; +import dev.zarr.omezarr.v0_6.metadata.transform.BijectionCoordinateTransformation; +import dev.zarr.omezarr.v0_6.metadata.transform.CoordinateTransformation; +import dev.zarr.omezarr.v0_6.metadata.transform.GenericCoordinateTransformation; +import dev.zarr.omezarr.v0_6.metadata.transform.MapAxisCoordinateTransformation; +import dev.zarr.omezarr.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.omezarr.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.omezarr.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.omezarr.v0_6.metadata.OmeMetadata omeMetadata = readOmeAttribute( + group.metadata.attributes, storeHandle, dev.zarr.omezarr.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.omezarr.v0_6.metadata.OmeMetadata omeMetadata = + new dev.zarr.omezarr.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.omezarr.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.omezarr.v0_6.metadata.transform.ScaleCoordinateTransformation) { + return ((dev.zarr.omezarr.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.omezarr.v0_6.metadata.transform.TranslationCoordinateTransformation) { + return ((dev.zarr.omezarr.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.omezarr.v0_6.metadata.transform.IdentityCoordinateTransformation) { + return ((dev.zarr.omezarr.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.omezarr.v0_6.metadata.transform.AffineCoordinateTransformation) { + return ((dev.zarr.omezarr.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.omezarr.v0_6.metadata.transform.RotationCoordinateTransformation) { + return ((dev.zarr.omezarr.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.omezarr.v0_6.metadata.transform.DisplacementsCoordinateTransformation) { + return ((dev.zarr.omezarr.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.omezarr.v0_6.metadata.transform.CoordinatesCoordinateTransformation) { + return ((dev.zarr.omezarr.v0_6.metadata.transform.CoordinatesCoordinateTransformation) transformation).path; } if (transformation instanceof GenericCoordinateTransformation) { Object p = ((GenericCoordinateTransformation) transformation).raw.get("path"); diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/SceneReferenceResolver.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/SceneReferenceResolver.java similarity index 91% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/SceneReferenceResolver.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/SceneReferenceResolver.java index 88ea7497..8b6af12b 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/SceneReferenceResolver.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/SceneReferenceResolver.java @@ -1,8 +1,8 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6; +package dev.zarr.omezarr.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.omezarr.v0_6.metadata.CoordinateSystem; +import dev.zarr.omezarr.v0_6.metadata.MultiscalesEntry; +import dev.zarr.omezarr.v0_6.metadata.SceneMetadata; import javax.annotation.Nullable; import java.util.ArrayList; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/SceneTransformationGraph.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/SceneTransformationGraph.java similarity index 97% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/SceneTransformationGraph.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/SceneTransformationGraph.java index 5b5bcde0..90d4053a 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/SceneTransformationGraph.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/SceneTransformationGraph.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6; +package dev.zarr.omezarr.v0_6; import java.util.ArrayList; import java.util.Collections; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Well.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/Well.java similarity index 85% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Well.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/Well.java index e2b0da1d..0e79c77f 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/Well.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/Well.java @@ -1,10 +1,10 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6; +package dev.zarr.omezarr.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.omezarr.MultiscaleImage; +import dev.zarr.omezarr.OmeV3Group; +import dev.zarr.omezarr.metadata.WellMetadata; +import dev.zarr.omezarr.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.omezarr.Well { private OmeMetadata omeMetadata; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/CoordinateSystem.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/CoordinateSystem.java similarity index 84% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/CoordinateSystem.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/CoordinateSystem.java index 454f675a..eb84ec0e 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/CoordinateSystem.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/CoordinateSystem.java @@ -1,9 +1,9 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata; +package dev.zarr.omezarr.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.omezarr.metadata.Axis; import java.util.List; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/Dataset.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/Dataset.java similarity index 84% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/Dataset.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/Dataset.java index f08e39db..d6512515 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/Dataset.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/Dataset.java @@ -1,9 +1,9 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata; +package dev.zarr.omezarr.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.omezarr.v0_6.metadata.transform.CoordinateTransformation; import java.util.List; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/MultiscalesEntry.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/MultiscalesEntry.java similarity index 91% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/MultiscalesEntry.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/MultiscalesEntry.java index b62f51a1..ec16f4fc 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/MultiscalesEntry.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/MultiscalesEntry.java @@ -1,10 +1,10 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata; +package dev.zarr.omezarr.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.omezarr.metadata.Axis; +import dev.zarr.omezarr.v0_6.metadata.transform.CoordinateTransformation; import javax.annotation.Nullable; import java.util.ArrayList; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/OmeMetadata.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/OmeMetadata.java similarity index 89% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/OmeMetadata.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/OmeMetadata.java index 0040ae91..60106d89 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/OmeMetadata.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/OmeMetadata.java @@ -1,11 +1,11 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata; +package dev.zarr.omezarr.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.omezarr.metadata.OmeroMetadata; +import dev.zarr.omezarr.metadata.PlateMetadata; +import dev.zarr.omezarr.metadata.WellMetadata; import javax.annotation.Nullable; import java.util.List; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/SceneMetadata.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/SceneMetadata.java similarity index 86% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/SceneMetadata.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/SceneMetadata.java index c739269f..7a4b5c3e 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/SceneMetadata.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/SceneMetadata.java @@ -1,9 +1,9 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata; +package dev.zarr.omezarr.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.omezarr.v0_6.metadata.transform.CoordinateTransformation; import javax.annotation.Nullable; import java.util.List; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/AffineCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/AffineCoordinateTransformation.java similarity index 94% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/AffineCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/AffineCoordinateTransformation.java index ae5a5834..e75f9544 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/AffineCoordinateTransformation.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/AffineCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.omezarr.v0_6.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/BaseCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/BaseCoordinateTransformation.java similarity index 92% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/BaseCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/BaseCoordinateTransformation.java index 87b8e205..75e91ba4 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/BaseCoordinateTransformation.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/BaseCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.omezarr.v0_6.metadata.transform; import javax.annotation.Nullable; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/BijectionCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/BijectionCoordinateTransformation.java similarity index 94% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/BijectionCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/BijectionCoordinateTransformation.java index 4e36ba39..bdc7ee7e 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/BijectionCoordinateTransformation.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/BijectionCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.omezarr.v0_6.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/ByDimensionCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/ByDimensionCoordinateTransformation.java similarity index 96% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/ByDimensionCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/ByDimensionCoordinateTransformation.java index 03e44183..55b15e43 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/ByDimensionCoordinateTransformation.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/ByDimensionCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.omezarr.v0_6.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinateSystemRefSerde.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/CoordinateSystemRefSerde.java similarity index 95% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinateSystemRefSerde.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/CoordinateSystemRefSerde.java index f0ac2dcc..58a53986 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinateSystemRefSerde.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/CoordinateSystemRefSerde.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.omezarr.v0_6.metadata.transform; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/CoordinateTransformation.java similarity index 96% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/CoordinateTransformation.java index 4463d185..e4c1129f 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinateTransformation.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/CoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.omezarr.v0_6.metadata.transform; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinatesCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/CoordinatesCoordinateTransformation.java similarity index 93% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinatesCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/CoordinatesCoordinateTransformation.java index 00e1e254..a44180f7 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/CoordinatesCoordinateTransformation.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/CoordinatesCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.omezarr.v0_6.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/DisplacementsCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/DisplacementsCoordinateTransformation.java similarity index 93% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/DisplacementsCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/DisplacementsCoordinateTransformation.java index 953ea841..b6b0b81a 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/DisplacementsCoordinateTransformation.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/DisplacementsCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.omezarr.v0_6.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/GenericCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/GenericCoordinateTransformation.java similarity index 95% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/GenericCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/GenericCoordinateTransformation.java index fafa177c..74dddf1c 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/GenericCoordinateTransformation.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/GenericCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.omezarr.v0_6.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonAnySetter; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/IdentityCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/IdentityCoordinateTransformation.java similarity index 88% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/IdentityCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/IdentityCoordinateTransformation.java index 8511d34c..a390e339 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/IdentityCoordinateTransformation.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/IdentityCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.omezarr.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.omezarr.metadata.transform.IdentityCoordinateTransformation implements CoordinateTransformation { @Nullable public final String input; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/MapAxisCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/MapAxisCoordinateTransformation.java similarity index 94% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/MapAxisCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/MapAxisCoordinateTransformation.java index ad4480d0..ab9b4d45 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/MapAxisCoordinateTransformation.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/MapAxisCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.omezarr.v0_6.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/RotationCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/RotationCoordinateTransformation.java similarity index 94% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/RotationCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/RotationCoordinateTransformation.java index 6e0a0c2b..9efa338c 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/RotationCoordinateTransformation.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/RotationCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.omezarr.v0_6.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/ScaleCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/ScaleCoordinateTransformation.java similarity index 89% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/ScaleCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/ScaleCoordinateTransformation.java index 9fe75880..37d93ede 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/ScaleCoordinateTransformation.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/ScaleCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.omezarr.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.omezarr.metadata.transform.ScaleCoordinateTransformation implements CoordinateTransformation { @Nullable public final String input; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/SequenceCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/SequenceCoordinateTransformation.java similarity index 93% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/SequenceCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/SequenceCoordinateTransformation.java index 660fb180..3f291fd2 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/SequenceCoordinateTransformation.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/SequenceCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.omezarr.v0_6.metadata.transform; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/TranslationCoordinateTransformation.java b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/TranslationCoordinateTransformation.java similarity index 89% rename from zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/TranslationCoordinateTransformation.java rename to zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/TranslationCoordinateTransformation.java index ff307540..85ff2896 100644 --- a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/metadata/transform/TranslationCoordinateTransformation.java +++ b/zarr-java-ome/src/main/java/dev/zarr/omezarr/v0_6/metadata/transform/TranslationCoordinateTransformation.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform; +package dev.zarr.omezarr.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.omezarr.metadata.transform.TranslationCoordinateTransformation implements CoordinateTransformation { @Nullable public final String input; diff --git a/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/MultiscaleImage.java b/zarr-java-ome/src/main/java/dev/zarr/zarrjava/experimental/ome/v0_6/MultiscaleImage.java deleted file mode 100644 index 327f7187..00000000 --- a/zarr-java-ome/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/zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappersTest.java b/zarr-java-ome/src/test/java/dev/zarr/omezarr/OmeObjectMappersTest.java similarity index 80% rename from zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappersTest.java rename to zarr-java-ome/src/test/java/dev/zarr/omezarr/OmeObjectMappersTest.java index 29959965..d00fc791 100644 --- a/zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeObjectMappersTest.java +++ b/zarr-java-ome/src/test/java/dev/zarr/omezarr/OmeObjectMappersTest.java @@ -1,8 +1,8 @@ -package dev.zarr.zarrjava.experimental.ome; +package dev.zarr.omezarr; 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.omezarr.metadata.MultiscalesEntry; +import dev.zarr.omezarr.metadata.OmeMetadata; import org.junit.jupiter.api.Test; import java.util.ArrayList; @@ -25,7 +25,7 @@ class OmeObjectMappersTest { private static final String WARNING_LOGGER_NAME = - "dev.zarr.zarrjava.experimental.ome.OmeObjectMappers$UnknownOmePropertyWarningHandler"; + "dev.zarr.omezarr.OmeObjectMappers$UnknownOmePropertyWarningHandler"; @Test void v3MapperWarnsAndContinuesOnUnknownOmeFields() { @@ -145,10 +145,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.omezarr.metadata.transform.GenericCoordinateTransformation); - dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation generic = - (dev.zarr.zarrjava.experimental.ome.metadata.transform.GenericCoordinateTransformation) + dev.zarr.omezarr.metadata.transform.GenericCoordinateTransformation generic = + (dev.zarr.omezarr.metadata.transform.GenericCoordinateTransformation) entry.datasets.get(0).coordinateTransformations.get(0); assertEquals("vendorWarp", generic.type); assertEquals(3.5, generic.raw.get("strength")); @@ -177,18 +177,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.omezarr.v0_6.metadata.MultiscalesEntry entry = + mapper.convertValue(entryRaw, dev.zarr.omezarr.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.omezarr.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.omezarr.v0_6.metadata.transform.GenericCoordinateTransformation generic = + (dev.zarr.omezarr.v0_6.metadata.transform.GenericCoordinateTransformation) entry.datasets.get(0).coordinateTransformations.get(0); assertEquals("customNonLinear", generic.type); assertEquals("s0", generic.input); @@ -233,17 +233,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.omezarr.v0_6.metadata.MultiscalesEntry entry = + mapper.convertValue(entryRaw, dev.zarr.omezarr.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.omezarr.v0_6.metadata.transform.AffineCoordinateTransformation); + dev.zarr.omezarr.v0_6.metadata.transform.AffineCoordinateTransformation affineParsed = + (dev.zarr.omezarr.v0_6.metadata.transform.AffineCoordinateTransformation) entry.datasets.get(0).coordinateTransformations.get(0); assertEquals("affine-stage", affineParsed.name); assertEquals("coordinateTransformations/affine", affineParsed.path); @@ -252,16 +252,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.omezarr.v0_6.metadata.transform.ByDimensionCoordinateTransformation); + dev.zarr.omezarr.v0_6.metadata.transform.ByDimensionCoordinateTransformation byDimensionParsed = + (dev.zarr.omezarr.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.omezarr.v0_6.metadata.transform.ScaleCoordinateTransformation); } @Test @@ -313,32 +313,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.omezarr.v0_6.metadata.OmeMetadata parsed = + mapper.convertValue(omeRaw, dev.zarr.omezarr.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.omezarr.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.omezarr.v0_6.metadata.transform.SequenceCoordinateTransformation); + dev.zarr.omezarr.v0_6.metadata.transform.SequenceCoordinateTransformation seq = + (dev.zarr.omezarr.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.omezarr.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.omezarr.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.omezarr.v0_6.metadata.transform.ByDimensionCoordinateTransformation); + dev.zarr.omezarr.v0_6.metadata.transform.ByDimensionCoordinateTransformation parsedByDimension = + (dev.zarr.omezarr.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/zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrBaseTest.java b/zarr-java-ome/src/test/java/dev/zarr/omezarr/OmeZarrBaseTest.java similarity index 96% rename from zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrBaseTest.java rename to zarr-java-ome/src/test/java/dev/zarr/omezarr/OmeZarrBaseTest.java index fcfea4c6..4d930ea7 100644 --- a/zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrBaseTest.java +++ b/zarr-java-ome/src/test/java/dev/zarr/omezarr/OmeZarrBaseTest.java @@ -1,7 +1,7 @@ -package dev.zarr.zarrjava.experimental.ome; +package dev.zarr.omezarr; import dev.zarr.zarrjava.ZarrTest; -import dev.zarr.zarrjava.experimental.ome.metadata.MultiscalesEntry; +import dev.zarr.omezarr.metadata.MultiscalesEntry; import dev.zarr.zarrjava.store.FilesystemStore; import dev.zarr.zarrjava.store.StoreHandle; import org.junit.jupiter.api.Test; diff --git a/zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrSceneV06Test.java b/zarr-java-ome/src/test/java/dev/zarr/omezarr/OmeZarrSceneV06Test.java similarity index 61% rename from zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrSceneV06Test.java rename to zarr-java-ome/src/test/java/dev/zarr/omezarr/OmeZarrSceneV06Test.java index 5a28c5c1..7809ca06 100644 --- a/zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrSceneV06Test.java +++ b/zarr-java-ome/src/test/java/dev/zarr/omezarr/OmeZarrSceneV06Test.java @@ -1,4 +1,4 @@ -package dev.zarr.zarrjava.experimental.ome; +package dev.zarr.omezarr; 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.omezarr.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.omezarr.v0_6.Scene scene = dev.zarr.omezarr.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.omezarr.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.omezarr.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.omezarr.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.omezarr.metadata.Axis y = new dev.zarr.omezarr.metadata.Axis("y", "space", "micrometer"); + dev.zarr.omezarr.metadata.Axis x = new dev.zarr.omezarr.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.omezarr.v0_6.metadata.SceneMetadata sceneMetadata = + new dev.zarr.omezarr.v0_6.metadata.SceneMetadata( + Collections.singletonList(new dev.zarr.omezarr.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.omezarr.v0_6.metadata.CoordinateSystem( "world", Arrays.asList(y, x))) ); - dev.zarr.zarrjava.experimental.ome.v0_6.Scene.createScene(root, sceneMetadata); + dev.zarr.omezarr.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.omezarr.v0_6.metadata.MultiscalesEntry imageAEntry = + new dev.zarr.omezarr.v0_6.metadata.MultiscalesEntry( null, - Collections.singletonList(new dev.zarr.zarrjava.experimental.ome.v0_6.metadata.Dataset( + Collections.singletonList(new dev.zarr.omezarr.v0_6.metadata.Dataset( "s0", Collections.singletonList( - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation.scale( + dev.zarr.omezarr.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.omezarr.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.omezarr.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.omezarr.v0_6.Scene reopened = dev.zarr.omezarr.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.omezarr.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.omezarr.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.omezarr.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.omezarr.v0_6.Scene scene = + dev.zarr.omezarr.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.omezarr.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.omezarr.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.omezarr.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.omezarr.v0_6.MultiscaleImage i1 = scene.openImageNode("sampleA_instrument1"); + dev.zarr.omezarr.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.omezarr.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.omezarr.v0_6.Scene scene = + dev.zarr.omezarr.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.omezarr.v0_6.metadata.transform.CoordinateTransformation t0 = scene.getSceneMetadata().coordinateTransformations.get(0); - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation t1 = + dev.zarr.omezarr.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.omezarr.v0_6.metadata.transform.AffineCoordinateTransformation); + assertTrue(((dev.zarr.omezarr.v0_6.metadata.transform.AffineCoordinateTransformation) t0).affine.size() > 0); - dev.zarr.zarrjava.experimental.ome.v0_6.SceneTransformationGraph graph = scene.getCoordinateTransformationGraph(); + dev.zarr.omezarr.v0_6.SceneTransformationGraph graph = scene.getCoordinateTransformationGraph(); assertEquals(3, graph.nodes.size()); assertEquals(2, graph.edges.size()); assertTrue(graph.warnings.isEmpty()); diff --git a/zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrUserGuideExamplesTest.java b/zarr-java-ome/src/test/java/dev/zarr/omezarr/OmeZarrUserGuideExamplesTest.java similarity index 82% rename from zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrUserGuideExamplesTest.java rename to zarr-java-ome/src/test/java/dev/zarr/omezarr/OmeZarrUserGuideExamplesTest.java index 033422b7..3dca2725 100644 --- a/zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrUserGuideExamplesTest.java +++ b/zarr-java-ome/src/test/java/dev/zarr/omezarr/OmeZarrUserGuideExamplesTest.java @@ -1,11 +1,11 @@ -package dev.zarr.zarrjava.experimental.ome; +package dev.zarr.omezarr; 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.omezarr.metadata.Axis; +import dev.zarr.omezarr.metadata.transform.CoordinateTransformation; +import dev.zarr.omezarr.metadata.transform.ScaleCoordinateTransformation; +import dev.zarr.omezarr.metadata.Dataset; +import dev.zarr.omezarr.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.omezarr.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.omezarr.v0_5.MultiscaleImage written = dev.zarr.omezarr.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.omezarr.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/zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV04Test.java b/zarr-java-ome/src/test/java/dev/zarr/omezarr/OmeZarrV04Test.java similarity index 79% rename from zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV04Test.java rename to zarr-java-ome/src/test/java/dev/zarr/omezarr/OmeZarrV04Test.java index b08a7715..212a4d0a 100644 --- a/zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV04Test.java +++ b/zarr-java-ome/src/test/java/dev/zarr/omezarr/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.omezarr; + +import dev.zarr.omezarr.metadata.Axis; +import dev.zarr.omezarr.metadata.transform.CoordinateTransformation; +import dev.zarr.omezarr.metadata.transform.ScaleCoordinateTransformation; +import dev.zarr.omezarr.metadata.MultiscalesEntry; +import dev.zarr.omezarr.metadata.OmeroMetadata; +import dev.zarr.omezarr.metadata.OmeroChannel; +import dev.zarr.omezarr.metadata.OmeroRdefs; +import dev.zarr.omezarr.metadata.OmeroWindow; +import dev.zarr.omezarr.metadata.PlateMetadata; +import dev.zarr.omezarr.metadata.NamedEntry; +import dev.zarr.omezarr.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.omezarr.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.omezarr.v0_4.MultiscaleImage image = + dev.zarr.omezarr.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.omezarr.v0_4.MultiscaleImage image = + dev.zarr.omezarr.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.omezarr.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.omezarr.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.omezarr.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.omezarr.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.omezarr.v0_4.MultiscaleImage created = + dev.zarr.omezarr.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.omezarr.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.omezarr.v0_4.MultiscaleImage created = + dev.zarr.omezarr.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.omezarr.v0_4.MultiscaleImage reopened = + dev.zarr.omezarr.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.omezarr.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.omezarr.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.omezarr.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/zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV05Test.java b/zarr-java-ome/src/test/java/dev/zarr/omezarr/OmeZarrV05Test.java similarity index 80% rename from zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV05Test.java rename to zarr-java-ome/src/test/java/dev/zarr/omezarr/OmeZarrV05Test.java index fd820c88..d828d6a7 100644 --- a/zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV05Test.java +++ b/zarr-java-ome/src/test/java/dev/zarr/omezarr/OmeZarrV05Test.java @@ -1,16 +1,16 @@ -package dev.zarr.zarrjava.experimental.ome; +package dev.zarr.omezarr; 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.omezarr.metadata.Axis; +import dev.zarr.omezarr.metadata.transform.CoordinateTransformation; +import dev.zarr.omezarr.metadata.transform.ScaleCoordinateTransformation; +import dev.zarr.omezarr.metadata.MultiscalesEntry; +import dev.zarr.omezarr.metadata.NamedEntry; +import dev.zarr.omezarr.metadata.OmeroMetadata; +import dev.zarr.omezarr.metadata.PlateMetadata; +import dev.zarr.omezarr.metadata.WellImage; +import dev.zarr.omezarr.metadata.WellMetadata; +import dev.zarr.omezarr.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.omezarr.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.omezarr.v0_5.MultiscaleImage image = + dev.zarr.omezarr.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.omezarr.v0_5.MultiscaleImage image = + dev.zarr.omezarr.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.omezarr.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.omezarr.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.omezarr.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.omezarr.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.omezarr.v0_5.MultiscaleImage created = + dev.zarr.omezarr.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.omezarr.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.omezarr.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.omezarr.v0_5.MultiscaleImage nuclei = dev.zarr.omezarr.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.omezarr.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.omezarr.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.omezarr.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.omezarr.v0_5.MultiscaleImage fov = dev.zarr.omezarr.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.omezarr.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.omezarr.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.omezarr.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/zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV06Test.java b/zarr-java-ome/src/test/java/dev/zarr/omezarr/OmeZarrV06Test.java similarity index 62% rename from zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV06Test.java rename to zarr-java-ome/src/test/java/dev/zarr/omezarr/OmeZarrV06Test.java index 779d0d4e..9316610e 100644 --- a/zarr-java-ome/src/test/java/dev/zarr/zarrjava/experimental/ome/OmeZarrV06Test.java +++ b/zarr-java-ome/src/test/java/dev/zarr/omezarr/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.omezarr; + +import dev.zarr.omezarr.metadata.MultiscalesEntry; +import dev.zarr.omezarr.metadata.NamedEntry; +import dev.zarr.omezarr.metadata.OmeroChannel; +import dev.zarr.omezarr.metadata.OmeroRdefs; +import dev.zarr.omezarr.metadata.OmeroWindow; +import dev.zarr.omezarr.metadata.PlateMetadata; +import dev.zarr.omezarr.metadata.WellImage; +import dev.zarr.omezarr.metadata.WellMetadata; +import dev.zarr.omezarr.metadata.WellRef; +import dev.zarr.omezarr.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.omezarr.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.omezarr.v0_6.MultiscaleImage v06Image = + (dev.zarr.omezarr.v0_6.MultiscaleImage) image; + dev.zarr.omezarr.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.omezarr.v0_6.MultiscaleImage v06Image = + (dev.zarr.omezarr.v0_6.MultiscaleImage) image; + dev.zarr.omezarr.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.omezarr.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.omezarr.v0_6.metadata.transform.ScaleCoordinateTransformation.class, ct); + dev.zarr.omezarr.v0_6.metadata.transform.ScaleCoordinateTransformation scaleCt = + (dev.zarr.omezarr.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.omezarr.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.omezarr.v0_6.MultiscaleImage v06Image = + (dev.zarr.omezarr.v0_6.MultiscaleImage) image; + dev.zarr.omezarr.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.omezarr.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.omezarr.v0_6.MultiscaleImage typed = (dev.zarr.omezarr.v0_6.MultiscaleImage) image; + dev.zarr.omezarr.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.omezarr.metadata.Axis("y", "space", "micrometer"), + new dev.zarr.omezarr.metadata.Axis("x", "space", "micrometer")); + java.util.List datasets = + java.util.Collections.singletonList(new dev.zarr.omezarr.v0_6.metadata.Dataset( "s0", java.util.Collections.singletonList( - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation.scale( + dev.zarr.omezarr.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.omezarr.v0_6.metadata.MultiscalesEntry ms = + new dev.zarr.omezarr.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.omezarr.metadata.OmeroMetadata omero = + new dev.zarr.omezarr.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.omezarr.v0_6.metadata.OmeMetadata ome = + new dev.zarr.omezarr.v0_6.metadata.OmeMetadata("0.6", java.util.Collections.singletonList(ms), omero); + dev.zarr.zarrjava.v3.Group.create(outHandle, dev.zarr.omezarr.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.omezarr.v0_6.MultiscaleImage read = + (dev.zarr.omezarr.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.omezarr.metadata.Axis("y", "space", "micrometer"), + new dev.zarr.omezarr.metadata.Axis("x", "space", "micrometer")); + java.util.List datasets = + java.util.Collections.singletonList(new dev.zarr.omezarr.v0_6.metadata.Dataset( "s0", java.util.Collections.singletonList( - dev.zarr.zarrjava.experimental.ome.v0_6.metadata.transform.CoordinateTransformation.scale( + dev.zarr.omezarr.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.omezarr.v0_6.metadata.MultiscalesEntry ms = + new dev.zarr.omezarr.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.omezarr.v0_6.metadata.OmeMetadata ome = + new dev.zarr.omezarr.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.omezarr.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.omezarr.v0_6.MultiscaleImage read = + (dev.zarr.omezarr.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.omezarr.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.omezarr.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.omezarr.metadata.Axis("y", "space", "micrometer"), + new dev.zarr.omezarr.metadata.Axis("x", "space", "micrometer")); + dev.zarr.omezarr.v0_6.metadata.MultiscalesEntry ms = + new dev.zarr.omezarr.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.omezarr.v0_6.MultiscaleImage fov = dev.zarr.omezarr.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.omezarr.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.omezarr.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.omezarr.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.omezarr.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()); From 8a6a3d7758734afa760bb63ff89456c816418a15 Mon Sep 17 00:00:00 2001 From: Konstantin Date: Fri, 26 Jun 2026 13:07:11 +0200 Subject: [PATCH 4/5] add jupyter notebooks for testing purposes --- .gitignore | 4 + README.md | 25 + .../notebooks/ome_zarr_integration.ipynb | 368 ++++++++++++ notebooks/notebooks/zarr_core.ipynb | 534 ++++++++++++++++++ notebooks/start.sh | 73 +++ todo.md | 29 - 6 files changed, 1004 insertions(+), 29 deletions(-) create mode 100644 notebooks/notebooks/ome_zarr_integration.ipynb create mode 100644 notebooks/notebooks/zarr_core.ipynb create mode 100755 notebooks/start.sh delete mode 100644 todo.md diff --git a/.gitignore b/.gitignore index 6dee4f96..deff3fbd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,9 @@ target/ !.mvn/wrapper/maven-wrapper.jar + +### Notebooks ### +notebooks/*_executed.ipynb +**/.ipynb_checkpoints/ !**/src/main/**/target/ !**/src/test/**/target/ diff --git a/README.md b/README.md index faf0cf2f..f80f74cd 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,31 @@ data ); ``` +## Interactive Notebooks + +The `notebooks/` directory contains IJava (Java kernel for Jupyter) notebooks that let you explore and verify the library interactively without publishing it. + +**Prerequisites:** Java 17+, Maven 3.6+, Python 3, `curl`, `unzip` + +```bash +./notebooks/start.sh +``` + +This single command: +1. Builds the project and installs JARs to your local Maven cache (`~/.m2`) +2. Wires up the classpath so the notebooks can import the library directly — no internet access needed for the library itself +3. Installs Jupyter and the IJava kernel into `~/.jupyter-venv` on first run (one-time, ~1 min) +4. Opens JupyterLab in your browser + +Available notebooks (in `notebooks/notebooks/`): + +| Notebook | Covers | +|---|---| +| `zarr_core.ipynb` | v2/v3 arrays, stores, codecs, sharding, groups, attributes, ZIP | +| `ome_zarr_integration.ipynb` | OME-Zarr v0.4/v0.5, multiscale images, HCS plates and wells | + +--- + ## Development Start-Guide ### Run Tests Locally diff --git a/notebooks/notebooks/ome_zarr_integration.ipynb b/notebooks/notebooks/ome_zarr_integration.ipynb new file mode 100644 index 00000000..24668172 --- /dev/null +++ b/notebooks/notebooks/ome_zarr_integration.ipynb @@ -0,0 +1,368 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "9d688d3c", + "metadata": {}, + "source": [ + "# zarr-java OME-Zarr — Integration Tests\n", + "\n", + "Verifies that the code examples from `USERGUIDE-OME-ZARR.md` work against the locally-built JARs.\n", + "\n", + "**Before opening this notebook**, launch it via `./notebooks/start.sh` from the repo root. \n", + "That script builds the project, sets up the classpath, and starts JupyterLab — no internet access needed for the library.\n", + "\n", + "Run cells top-to-bottom with **Run All Cells** or `Shift+Enter`." + ] + }, + { + "cell_type": "markdown", + "id": "b3446545", + "metadata": {}, + "source": [ + "## Setup" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "8fc41c8f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Repo root : /home/konstantin/Documents/zarr-java\n", + "Library : zarr-java-ome (loaded via IJAVA_CLASSPATH)\n" + ] + } + ], + "source": [ + "// Confirm the library and repo root are available (set by start.sh)\n", + "String REPO_ROOT = System.getenv(\"REPO_ROOT\");\n", + "if (REPO_ROOT == null) throw new IllegalStateException(\n", + " \"REPO_ROOT is not set. Please start JupyterLab via ./notebooks/start.sh\");\n", + "System.out.println(\"Repo root : \" + REPO_ROOT);\n", + "System.out.println(\"Library : zarr-java-ome (loaded via IJAVA_CLASSPATH)\");" + ] + }, + { + "cell_type": "markdown", + "id": "4fdab7a3", + "metadata": {}, + "source": [ + "## 1 · Open a v0.5 multiscale image" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "9c191317", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Scale levels : 2\n", + "Axis names : [t, c, z, y, x]\n", + "Dataset[0] : 0\n" + ] + } + ], + "source": [ + "import dev.zarr.omezarr.MultiscaleImage;\n", + "import dev.zarr.zarrjava.store.FilesystemStore;\n", + "import dev.zarr.zarrjava.store.StoreHandle;\n", + "import dev.zarr.omezarr.metadata.MultiscalesEntry;\n", + "\n", + "StoreHandle imageHandle = new FilesystemStore(REPO_ROOT + \"/zarr-java-ome/testdata/ome/v0.5\").resolve();\n", + "MultiscaleImage image = MultiscaleImage.open(imageHandle);\n", + "\n", + "System.out.println(\"Scale levels : \" + image.getScaleLevelCount());\n", + "System.out.println(\"Axis names : \" + image.getAxisNames());\n", + "System.out.println(\"Dataset[0] : \" + image.getMultiscaleNode(0).datasets.get(0).path);" + ] + }, + { + "cell_type": "markdown", + "id": "121ba8b0", + "metadata": {}, + "source": [ + "## 2 · Read a scale level array" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "8ba27406", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Full shape : [1, 2, 8, 16, 16]\n", + "Subset shape: [1, 1, 4, 8, 8]\n" + ] + } + ], + "source": [ + "dev.zarr.zarrjava.core.Array s0 = image.openScaleLevel(0);\n", + "ucar.ma2.Array full = s0.read();\n", + "ucar.ma2.Array subset = s0.read(new long[]{0,0,0,0,0}, new long[]{1,1,4,8,8});\n", + "\n", + "System.out.println(\"Full shape : \" + java.util.Arrays.toString(full.getShape()));\n", + "System.out.println(\"Subset shape: \" + java.util.Arrays.toString(subset.getShape()));" + ] + }, + { + "cell_type": "markdown", + "id": "815bedce", + "metadata": {}, + "source": [ + "## 3 · Labels sub-group" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "c67e9594", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Labels: [nuclei]\n", + "Label axis names: [z, y, x]\n" + ] + } + ], + "source": [ + "java.util.List labels = image.getLabels();\n", + "System.out.println(\"Labels: \" + labels);\n", + "\n", + "MultiscaleImage labelImage = image.openLabel(labels.get(0));\n", + "System.out.println(\"Label axis names: \" + labelImage.getAxisNames());" + ] + }, + { + "cell_type": "markdown", + "id": "623f5298", + "metadata": {}, + "source": [ + "## 4 · HCS plate and well (v0.5)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "02080c03", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Well axis names: [t, c, z, y, x]\n" + ] + } + ], + "source": [ + "import dev.zarr.omezarr.Plate;\n", + "import dev.zarr.omezarr.Well;\n", + "\n", + "StoreHandle plateHandle = new FilesystemStore(REPO_ROOT + \"/zarr-java-ome/testdata/ome/v0.5_hcs\").resolve();\n", + "Plate plate = Plate.open(plateHandle);\n", + "Well well = plate.openWell(\"A/1\");\n", + "MultiscaleImage wellImage = well.openImage(\"0\");\n", + "\n", + "System.out.println(\"Well axis names: \" + wellImage.getAxisNames());" + ] + }, + { + "cell_type": "markdown", + "id": "1f1c5464", + "metadata": {}, + "source": [ + "## 5 · Write: create a new v0.5 multiscale image" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "12a67adf", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Written to /tmp/ome_test_v05.zarr\n" + ] + } + ], + "source": [ + "import dev.zarr.omezarr.metadata.Axis;\n", + "import dev.zarr.omezarr.metadata.Dataset;\n", + "import dev.zarr.omezarr.metadata.transform.CoordinateTransformation;\n", + "import dev.zarr.zarrjava.v3.Array;\n", + "import dev.zarr.zarrjava.v3.DataType;\n", + "import java.util.Arrays;\n", + "import java.util.Collections;\n", + "\n", + "new ProcessBuilder(\"rm\", \"-rf\", \"/tmp/ome_test_v05.zarr\").start().waitFor();\n", + "\n", + "StoreHandle out = new FilesystemStore(\"/tmp/ome_test_v05.zarr\").resolve();\n", + "MultiscalesEntry ms = new MultiscalesEntry(\n", + " Arrays.asList(new Axis(\"y\", \"space\", \"micrometer\"), new Axis(\"x\", \"space\", \"micrometer\")),\n", + " Collections.emptyList()\n", + ");\n", + "dev.zarr.omezarr.v0_5.MultiscaleImage written =\n", + " dev.zarr.omezarr.v0_5.MultiscaleImage.create(out, ms);\n", + "\n", + "written.createScaleLevel(\n", + " \"s0\",\n", + " Array.metadataBuilder().withShape(1024, 1024).withChunkShape(256, 256).withDataType(DataType.UINT16).build(),\n", + " Collections.singletonList(CoordinateTransformation.scale(Arrays.asList(1.0, 1.0)))\n", + ");\n", + "written.createScaleLevel(\n", + " \"s1\",\n", + " Array.metadataBuilder().withShape(512, 512).withChunkShape(256, 256).withDataType(DataType.UINT16).build(),\n", + " Collections.singletonList(CoordinateTransformation.scale(Arrays.asList(2.0, 2.0)))\n", + ");\n", + "System.out.println(\"Written to /tmp/ome_test_v05.zarr\");" + ] + }, + { + "cell_type": "markdown", + "id": "14e5217a", + "metadata": {}, + "source": [ + "## 6 · Re-open and verify the written image" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "1c8d9fb3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Is v0.5 instance : true\n", + "Scale level count: 2\n", + "s0 path : s0\n", + "s1 path : s1\n", + "s1 scale : [2.0, 2.0]\n" + ] + } + ], + "source": [ + "MultiscaleImage reopened = MultiscaleImage.open(out);\n", + "MultiscalesEntry reopenedMs = reopened.getMultiscaleNode(0);\n", + "var s1Tx = (dev.zarr.omezarr.metadata.transform.ScaleCoordinateTransformation)\n", + " reopenedMs.datasets.get(1).coordinateTransformations.get(0);\n", + "\n", + "System.out.println(\"Is v0.5 instance : \" + (reopened instanceof dev.zarr.omezarr.v0_5.MultiscaleImage));\n", + "System.out.println(\"Scale level count: \" + reopened.getScaleLevelCount());\n", + "System.out.println(\"s0 path : \" + reopenedMs.datasets.get(0).path);\n", + "System.out.println(\"s1 path : \" + reopenedMs.datasets.get(1).path);\n", + "System.out.println(\"s1 scale : \" + s1Tx.scale);" + ] + }, + { + "cell_type": "markdown", + "id": "8b2f872c", + "metadata": {}, + "source": [ + "## 7 · v0.4 image (Zarr v2 layout)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "6f7ed6d8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "v0.4 scale levels: 2\n", + "v0.4 axis names : [t, c, z, y, x]\n", + "v0.4 typed : true\n" + ] + } + ], + "source": [ + "StoreHandle v04Handle = new FilesystemStore(REPO_ROOT + \"/zarr-java-ome/testdata/ome/v0.4\").resolve();\n", + "MultiscaleImage v04 = MultiscaleImage.open(v04Handle);\n", + "\n", + "System.out.println(\"v0.4 scale levels: \" + v04.getScaleLevelCount());\n", + "System.out.println(\"v0.4 axis names : \" + v04.getAxisNames());\n", + "System.out.println(\"v0.4 typed : \" + (v04 instanceof dev.zarr.omezarr.v0_4.MultiscaleImage));" + ] + }, + { + "cell_type": "markdown", + "id": "4732ab34", + "metadata": {}, + "source": [ + "## 8 · v0.4 HCS plate and well" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "9acec5bd", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "v0.4 HCS well axis names: [t, c, z, y, x]\n" + ] + } + ], + "source": [ + "StoreHandle hcs04 = new FilesystemStore(REPO_ROOT + \"/zarr-java-ome/testdata/ome/v0.4_hcs\").resolve();\n", + "Plate plate04 = Plate.open(hcs04);\n", + "Well well04 = plate04.openWell(\"A/1\");\n", + "MultiscaleImage wellImage04 = well04.openImage(\"0\");\n", + "\n", + "System.out.println(\"v0.4 HCS well axis names: \" + wellImage04.getAxisNames());" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c52412ee-de6f-471e-a7b0-b3f0f1155482", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Java", + "language": "java", + "name": "java" + }, + "language_info": { + "codemirror_mode": "java", + "file_extension": ".jshell", + "mimetype": "text/x-java-source", + "name": "Java", + "pygments_lexer": "java", + "version": "17.0.11+9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/notebooks/zarr_core.ipynb b/notebooks/notebooks/zarr_core.ipynb new file mode 100644 index 00000000..486fe1b4 --- /dev/null +++ b/notebooks/notebooks/zarr_core.ipynb @@ -0,0 +1,534 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "523846ff", + "metadata": {}, + "source": [ + "# zarr-java Core Library — Integration Tests\n", + "\n", + "Verifies that the code examples from `USERGUIDE.md` work against the locally-built JARs.\n", + "\n", + "**Start via** `./notebooks/start.sh` from the repo root — that builds the project, wires up the classpath, and opens JupyterLab. No internet access needed for the library.\n", + "\n", + "Run cells top-to-bottom with **Run All Cells** or `Shift+Enter`." + ] + }, + { + "cell_type": "markdown", + "id": "feda2c11", + "metadata": {}, + "source": [ + "## Setup" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "9eeec8cb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Repo root : /home/konstantin/Documents/zarr-java\n", + "Library : zarr-java-core (loaded via IJAVA_CLASSPATH)\n" + ] + } + ], + "source": [ + "String REPO_ROOT = System.getenv(\"REPO_ROOT\");\n", + "if (REPO_ROOT == null) throw new IllegalStateException(\n", + " \"REPO_ROOT not set — start JupyterLab via ./notebooks/start.sh\");\n", + "System.out.println(\"Repo root : \" + REPO_ROOT);\n", + "System.out.println(\"Library : zarr-java-core (loaded via IJAVA_CLASSPATH)\");" + ] + }, + { + "cell_type": "markdown", + "id": "6c218e45", + "metadata": {}, + "source": [ + "## 1 · v3 Array — MemoryStore: create, write, read" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "7b261c23", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Shape : [100, 100]\n", + "Element[0]: 1.0\n" + ] + } + ], + "source": [ + "import dev.zarr.zarrjava.v3.Array;\n", + "import dev.zarr.zarrjava.v3.DataType;\n", + "import dev.zarr.zarrjava.store.MemoryStore;\n", + "import dev.zarr.zarrjava.store.StoreHandle;\n", + "\n", + "StoreHandle memHandle = new MemoryStore().resolve(\"myarray\");\n", + "Array array = Array.create(\n", + " memHandle,\n", + " Array.metadataBuilder()\n", + " .withShape(100, 100)\n", + " .withDataType(DataType.FLOAT32)\n", + " .withChunkShape(10, 10)\n", + " .withFillValue(0.0f)\n", + " .build()\n", + ");\n", + "\n", + "ucar.ma2.Array data = ucar.ma2.Array.factory(\n", + " ucar.ma2.DataType.FLOAT, new int[]{100, 100});\n", + "java.util.Arrays.fill((float[]) data.getStorage(), 1.0f);\n", + "array.write(data);\n", + "\n", + "ucar.ma2.Array readBack = array.read();\n", + "System.out.println(\"Shape : \" + java.util.Arrays.toString(readBack.getShape()));\n", + "System.out.println(\"Element[0]: \" + readBack.getFloat(0));" + ] + }, + { + "cell_type": "markdown", + "id": "a65f885a", + "metadata": {}, + "source": [ + "## 2 · v3 Array — FilesystemStore: create, write, read subset" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "adc24169", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Written value : 42\n", + "Read back [0] : 42\n", + "Subset shape : [10, 10, 10]\n" + ] + } + ], + "source": [ + "import dev.zarr.zarrjava.store.FilesystemStore;\n", + "\n", + "new ProcessBuilder(\"rm\", \"-rf\", \"/tmp/zarr_core_fs\").start().waitFor();\n", + "StoreHandle fsHandle = new FilesystemStore(\"/tmp/zarr_core_fs\").resolve(\"myarray\");\n", + "\n", + "Array fsArray = Array.create(\n", + " fsHandle,\n", + " Array.metadataBuilder()\n", + " .withShape(50, 50, 50)\n", + " .withDataType(DataType.INT32)\n", + " .withChunkShape(10, 10, 10)\n", + " .withFillValue(0)\n", + " .build()\n", + ");\n", + "\n", + "ucar.ma2.Array writeData = ucar.ma2.Array.factory(\n", + " ucar.ma2.DataType.INT, new int[]{10, 10, 10});\n", + "java.util.Arrays.fill((int[]) writeData.getStorage(), 42);\n", + "fsArray.write(new long[]{0, 0, 0}, writeData);\n", + "\n", + "ucar.ma2.Array subset = fsArray.read(new long[]{0, 0, 0}, new long[]{10, 10, 10});\n", + "System.out.println(\"Written value : 42\");\n", + "System.out.println(\"Read back [0] : \" + subset.getInt(0));\n", + "System.out.println(\"Subset shape : \" + java.util.Arrays.toString(subset.getShape()));" + ] + }, + { + "cell_type": "markdown", + "id": "8d3136d6", + "metadata": {}, + "source": [ + "## 3 · v3 Codecs — Blosc, Gzip, Zstd" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "78c49bce", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Blosc read[0]: 1.0\n", + "Gzip read[0]: 1.0\n", + "Zstd read[0]: 1.0\n" + ] + } + ], + "source": [ + "MemoryStore codecStore = new MemoryStore();\n", + "\n", + "Array bloscArray = Array.create(\n", + " codecStore.resolve(\"blosc\"),\n", + " Array.metadataBuilder()\n", + " .withShape(100, 100).withDataType(DataType.FLOAT32)\n", + " .withChunkShape(50, 50).withFillValue(0.0f)\n", + " .withCodecs(c -> c.withBlosc(\"zstd\", 5))\n", + " .build()\n", + ");\n", + "bloscArray.write(data);\n", + "System.out.println(\"Blosc read[0]: \" + bloscArray.read().getFloat(0));\n", + "\n", + "Array gzipArray = Array.create(\n", + " codecStore.resolve(\"gzip\"),\n", + " Array.metadataBuilder()\n", + " .withShape(100, 100).withDataType(DataType.FLOAT32)\n", + " .withChunkShape(50, 50).withFillValue(0.0f)\n", + " .withCodecs(c -> c.withGzip(6))\n", + " .build()\n", + ");\n", + "gzipArray.write(data);\n", + "System.out.println(\"Gzip read[0]: \" + gzipArray.read().getFloat(0));\n", + "\n", + "Array zstdArray = Array.create(\n", + " codecStore.resolve(\"zstd\"),\n", + " Array.metadataBuilder()\n", + " .withShape(100, 100).withDataType(DataType.FLOAT32)\n", + " .withChunkShape(50, 50).withFillValue(0.0f)\n", + " .withCodecs(c -> c.withZstd(3))\n", + " .build()\n", + ");\n", + "zstdArray.write(data);\n", + "System.out.println(\"Zstd read[0]: \" + zstdArray.read().getFloat(0));" + ] + }, + { + "cell_type": "markdown", + "id": "4f46c716", + "metadata": {}, + "source": [ + "## 4 · v3 Sharding" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "94d1dddb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Sharded shape : [20, 20, 20]\n", + "Sharded val[0]: 7\n" + ] + } + ], + "source": [ + "Array shardedArray = Array.create(\n", + " new MemoryStore().resolve(\"sharded\"),\n", + " Array.metadataBuilder()\n", + " .withShape(100, 100, 100)\n", + " .withDataType(DataType.UINT8)\n", + " .withChunkShape(20, 20, 20)\n", + " .withFillValue((byte) 0)\n", + " .withCodecs(c -> c.withSharding(\n", + " new int[]{10, 10, 10},\n", + " inner -> inner.withBlosc(\"zstd\", 5)\n", + " ))\n", + " .build()\n", + ");\n", + "\n", + "ucar.ma2.Array chunkData = ucar.ma2.Array.factory(\n", + " ucar.ma2.DataType.UBYTE, new int[]{20, 20, 20});\n", + "java.util.Arrays.fill((byte[]) chunkData.getStorage(), (byte) 7);\n", + "shardedArray.write(new long[]{0, 0, 0}, chunkData);\n", + "\n", + "ucar.ma2.Array shardRead = shardedArray.read(new long[]{0,0,0}, new long[]{20,20,20});\n", + "System.out.println(\"Sharded shape : \" + java.util.Arrays.toString(shardRead.getShape()));\n", + "System.out.println(\"Sharded val[0]: \" + shardRead.getByte(0));" + ] + }, + { + "cell_type": "markdown", + "id": "7c7a54fe", + "metadata": {}, + "source": [ + "## 5 · v3 Groups — create hierarchy, navigate, access members" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "5073409e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Root member count : 3\n", + "data/ member count: 1\n", + "Child array shape : [1000, 1000]\n", + "Child array dtype : UINT16\n" + ] + } + ], + "source": [ + "import dev.zarr.zarrjava.v3.Group;\n", + "\n", + "new ProcessBuilder(\"rm\", \"-rf\", \"/tmp/zarr_groups\").start().waitFor();\n", + "StoreHandle groupRoot = new FilesystemStore(\"/tmp/zarr_groups\").resolve();\n", + "Group root = Group.create(groupRoot);\n", + "\n", + "Group dataGroup = root.createGroup(\"data\");\n", + "Group metaGroup = root.createGroup(\"metadata\");\n", + "\n", + "Array childArray = dataGroup.createArray(\n", + " \"raw\",\n", + " Array.metadataBuilder()\n", + " .withShape(1000, 1000)\n", + " .withDataType(DataType.UINT16)\n", + " .withChunkShape(100, 100)\n", + " .withFillValue(0)\n", + " .build()\n", + ");\n", + "\n", + "long rootCount = root.list().count();\n", + "long dataCount = dataGroup.list().count();\n", + "Array retrieved = (Array) dataGroup.get(\"raw\");\n", + "\n", + "System.out.println(\"Root member count : \" + rootCount);\n", + "System.out.println(\"data/ member count: \" + dataCount);\n", + "System.out.println(\"Child array shape : \" + java.util.Arrays.toString(retrieved.metadata().shape));\n", + "System.out.println(\"Child array dtype : \" + retrieved.metadata().dataType);" + ] + }, + { + "cell_type": "markdown", + "id": "8bfe46b7", + "metadata": {}, + "source": [ + "## 6 · Attributes — set and read" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "d5f3b2e1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "description: my dataset\n", + "units : meters\n", + "version : 2\n" + ] + } + ], + "source": [ + "import dev.zarr.zarrjava.core.Attributes;\n", + "\n", + "Array attrArray = Array.create(\n", + " new MemoryStore().resolve(\"withattrs\"),\n", + " Array.metadataBuilder()\n", + " .withShape(10, 10)\n", + " .withDataType(DataType.INT32)\n", + " .withChunkShape(5, 5)\n", + " .withFillValue(0)\n", + " .build()\n", + ");\n", + "\n", + "Attributes attrs = new Attributes();\n", + "attrs.put(\"description\", \"my dataset\");\n", + "attrs.put(\"units\", \"meters\");\n", + "attrs.put(\"version\", 2);\n", + "attrArray = attrArray.setAttributes(attrs);\n", + "\n", + "Attributes readAttrs = attrArray.metadata().attributes();\n", + "System.out.println(\"description: \" + readAttrs.get(\"description\"));\n", + "System.out.println(\"units : \" + readAttrs.get(\"units\"));\n", + "System.out.println(\"version : \" + readAttrs.get(\"version\"));" + ] + }, + { + "cell_type": "markdown", + "id": "32b3d7dd", + "metadata": {}, + "source": [ + "## 7 · v2 Array — create, write, read with Blosc and Zlib" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "bac2a371", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "v2 Blosc shape : [10, 10]\n", + "v2 Blosc val[0] : 9\n", + "v2 Zlib shape : [15, 10]\n" + ] + } + ], + "source": [ + "// Use fully-qualified names to avoid conflict with v3 Array/DataType imported above\n", + "dev.zarr.zarrjava.v2.Array v2Blosc = dev.zarr.zarrjava.v2.Array.create(\n", + " new MemoryStore().resolve(\"v2blosc\"),\n", + " dev.zarr.zarrjava.v2.Array.metadataBuilder()\n", + " .withShape(10, 10)\n", + " .withDataType(dev.zarr.zarrjava.v2.DataType.UINT8)\n", + " .withChunks(5, 5)\n", + " .withFillValue(1)\n", + " .withBloscCompressor(\"lz4\", \"shuffle\", 5)\n", + " .build()\n", + ");\n", + "ucar.ma2.Array v2Data = ucar.ma2.Array.factory(\n", + " ucar.ma2.DataType.UBYTE, new int[]{10, 10});\n", + "java.util.Arrays.fill((byte[]) v2Data.getStorage(), (byte) 9);\n", + "v2Blosc.write(v2Data);\n", + "System.out.println(\"v2 Blosc shape : \" + java.util.Arrays.toString(v2Blosc.read().getShape()));\n", + "System.out.println(\"v2 Blosc val[0] : \" + v2Blosc.read().getByte(0));\n", + "\n", + "dev.zarr.zarrjava.v2.Array v2Zlib = dev.zarr.zarrjava.v2.Array.create(\n", + " new MemoryStore().resolve(\"v2zlib\"),\n", + " dev.zarr.zarrjava.v2.Array.metadataBuilder()\n", + " .withShape(15, 10)\n", + " .withDataType(dev.zarr.zarrjava.v2.DataType.UINT8)\n", + " .withChunks(5, 5)\n", + " .withFillValue(0)\n", + " .withZlibCompressor(6)\n", + " .build()\n", + ");\n", + "v2Zlib.write(ucar.ma2.Array.factory(ucar.ma2.DataType.UBYTE, new int[]{15, 10}));\n", + "System.out.println(\"v2 Zlib shape : \" + java.util.Arrays.toString(v2Zlib.read().getShape()));" + ] + }, + { + "cell_type": "markdown", + "id": "9366e213", + "metadata": {}, + "source": [ + "## 8 · ZIP Store — write with BufferedZipStore, read with ReadOnlyZipStore" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "fc75c70a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ZIP shape : [100, 100]\n", + "ZIP val[0] : 3.14\n" + ] + }, + { + "data": { + "text/plain": [ + "java.io.PrintStream@69564c9a" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import dev.zarr.zarrjava.store.BufferedZipStore;\n", + "import dev.zarr.zarrjava.store.ReadOnlyZipStore;\n", + "\n", + "java.nio.file.Path zipPath = java.nio.file.Paths.get(\"/tmp/zarr_test.zip\");\n", + "zipPath.toFile().delete();\n", + "\n", + "try (BufferedZipStore zipWrite = new BufferedZipStore(zipPath)) {\n", + " Array zipArray = Array.create(\n", + " zipWrite.resolve(\"myarray\"),\n", + " Array.metadataBuilder()\n", + " .withShape(100, 100)\n", + " .withDataType(DataType.FLOAT32)\n", + " .withChunkShape(10, 10)\n", + " .withFillValue(0.0f)\n", + " .build()\n", + " );\n", + " ucar.ma2.Array zipData = ucar.ma2.Array.factory(\n", + " ucar.ma2.DataType.FLOAT, new int[]{100, 100});\n", + " java.util.Arrays.fill((float[]) zipData.getStorage(), 3.14f);\n", + " zipArray.write(zipData);\n", + "} // auto-closes and flushes to disk\n", + "\n", + "ReadOnlyZipStore zipRead = new ReadOnlyZipStore(zipPath);\n", + "Array zipReadArray = Array.open(zipRead.resolve(\"myarray\"));\n", + "ucar.ma2.Array zipResult = zipReadArray.read();\n", + "System.out.println(\"ZIP shape : \" + java.util.Arrays.toString(zipResult.getShape()));\n", + "System.out.printf (\"ZIP val[0] : %.2f%n\", zipResult.getFloat(0));" + ] + }, + { + "cell_type": "markdown", + "id": "0e1cd514", + "metadata": {}, + "source": [ + "## 9 · Open existing testdata (v3 from repo)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "f1f837c0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Testdata shape : [16, 16, 16]\n", + "Testdata dtype : INT32\n", + "Testdata chunks : [16, 8, 8]\n" + ] + } + ], + "source": [ + "Array existing = Array.open(\n", + " new FilesystemStore(REPO_ROOT +\n", + " \"/zarr-java-core/testdata/sharding_index_location/end\").resolve()\n", + ");\n", + "System.out.println(\"Testdata shape : \" + java.util.Arrays.toString(existing.metadata().shape));\n", + "System.out.println(\"Testdata dtype : \" + existing.metadata().dataType);\n", + "System.out.println(\"Testdata chunks : \" + java.util.Arrays.toString(existing.metadata().chunkShape()));" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Java", + "language": "java", + "name": "java" + }, + "language_info": { + "codemirror_mode": "java", + "file_extension": ".jshell", + "mimetype": "text/x-java-source", + "name": "Java", + "pygments_lexer": "java", + "version": "17.0.11+9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/start.sh b/notebooks/start.sh new file mode 100755 index 00000000..c917b2df --- /dev/null +++ b/notebooks/start.sh @@ -0,0 +1,73 @@ +#!/usr/bin/env bash +set -euo pipefail + +# --------------------------------------------------------------------------- +# Resolve repo root (parent of the notebooks/ directory this script lives in) +# --------------------------------------------------------------------------- +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +export REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" + +JUPYTER_VENV="$HOME/.jupyter-venv" +IJAVA_VERSION="1.3.0" +IJAVA_KERNEL_DIR="$JUPYTER_VENV/share/jupyter/kernels/java" + +echo "==> Repo root: $REPO_ROOT" + +# Check prerequisites +for cmd in java mvn python3 curl unzip; do + if ! command -v "$cmd" &>/dev/null; then + echo "ERROR: '$cmd' not found. Please install it before running this script." >&2 + exit 1 + fi +done + +# Build the project — installs JARs into ~/.m2 (no internet for the lib) +echo "==> Building zarr-java (skipping tests)..." +cd "$REPO_ROOT" +mvn install -DskipTests -q +echo " Build done." + +# Build IJAVA_CLASSPATH directly from ~/.m2 — no copying needed +echo "==> Resolving classpath from local Maven repo..." +CLASSPATH_FILE="$(mktemp)" +mvn dependency:build-classpath \ + -pl zarr-java-ome \ + -DincludeScope=runtime \ + -Dmdep.outputFile="$CLASSPATH_FILE" \ + -q +DEPS_CLASSPATH="$(cat "$CLASSPATH_FILE")" +rm -f "$CLASSPATH_FILE" + +OME_JAR=$(find "$REPO_ROOT/zarr-java-ome/target" -name "zarr-java-ome-*.jar" \ + ! -name "*sources*" ! -name "*javadoc*" | head -1) +OME_JAR="$(cd "$(dirname "$OME_JAR")" && pwd)/$(basename "$OME_JAR")" + +export IJAVA_CLASSPATH="$OME_JAR:$DEPS_CLASSPATH" +echo " Classpath ready ($(echo "$IJAVA_CLASSPATH" | tr ':' '\n' | wc -l) entries)." + +# Ensure Jupyter is installed in ~/.jupyter-venv +if [ ! -x "$JUPYTER_VENV/bin/jupyter" ]; then + echo "==> Jupyter not found — creating venv and installing..." + python3 -m venv "$JUPYTER_VENV" + "$JUPYTER_VENV/bin/pip" install jupyter --quiet + echo " Jupyter installed." +fi + +# Ensure IJava kernel is installed (one-time download from GitHub — only the tooling, not the library) +if [ ! -f "$IJAVA_KERNEL_DIR/kernel.json" ]; then + echo "==> IJava kernel not found — downloading and installing (one-time)..." + TMP_IJAVA="$(mktemp -d)" + curl -sL "https://github.com/SpencerPark/IJava/releases/download/v${IJAVA_VERSION}/ijava-${IJAVA_VERSION}.zip" \ + -o "$TMP_IJAVA/ijava.zip" + unzip -q "$TMP_IJAVA/ijava.zip" -d "$TMP_IJAVA" + JUPYTER_DATA_DIR="$JUPYTER_VENV/share/jupyter" \ + "$JUPYTER_VENV/bin/python" "$TMP_IJAVA/install.py" --sys-prefix + rm -rf "$TMP_IJAVA" + echo " IJava kernel installed." +fi + +# Launch JupyterLab — opens directly into the notebooks/ subfolder +echo "==> Starting JupyterLab — press Ctrl+C to stop." +echo "" +JUPYTER_DATA_DIR="$JUPYTER_VENV/share/jupyter" \ + "$JUPYTER_VENV/bin/jupyter" lab "$SCRIPT_DIR/notebooks" diff --git a/todo.md b/todo.md deleted file mode 100644 index 85d832f7..00000000 --- a/todo.md +++ /dev/null @@ -1,29 +0,0 @@ - -● Here's a summary you can paste: - - --- - Task: Extract the OME metadata classes from zarr-java into a separate Maven module (zarr-java-ome) within the same repo. - - What was done: - - Converted the repo to a Maven multi-module project: - - Root pom.xml → pure aggregator (packaging=pom), lists both modules - - zarr-java-core/ → contains the original src/ and testdata/ (everything except OME) - - zarr-java-ome/ → new module with OME source, tests, and testdata - - zarr-java-core/pom.xml — all original dependencies + maven-jar-plugin producing a test-jar so OME tests can extend ZarrTest - - zarr-java-ome/pom.xml — depends on zarr-java-core + zarr-java-core:test-jar (test scope) - - GPG signing moved into a release Maven profile so mvn install works locally without a key - - Current state: - - mvn install -DskipTests → BUILD SUCCESS - - Core tests (430) → all pass - - OME v0.4 and v0.5 tests → pass - - OME v0.6 tests → failing because testdata/ome/v0.6/examples is a git submodule pointing to https://github.com/jo-mueller/ngff-rfc5-coordinate-transformation-examples — it was moved into - zarr-java-ome/testdata/ but the submodule reference in .gitmodules was not updated, so the folder is empty - - Working on branch extract-ome-module - - Next steps: - - Fix the git submodule: either update .gitmodules to point to zarr-java-ome/testdata/ome/v0.6/examples, or keep the submodule at the repo root and reference it from there - - Run git submodule update --init to populate the submodule - - Verify all OME tests pass - - Update CI/CD deploy workflow if needed - From 7698542400bc0b6d04854230ce699b69139aa30b Mon Sep 17 00:00:00 2001 From: Konstantin Date: Tue, 30 Jun 2026 16:44:48 +0200 Subject: [PATCH 5/5] update user guides for extracted ome module - Replace experimental.ome package refs with dev.zarr.omezarr - Add zarr-java-ome as separate Maven/Gradle dependency - Fix write example syntax and imports Co-Authored-By: Claude Sonnet 4.6 --- USERGUIDE-OME-ZARR.md | 59 ++++++++++++++++++++++++++++++++----------- USERGUIDE.md | 20 ++++++++++++--- 2 files changed, 60 insertions(+), 19 deletions(-) diff --git a/USERGUIDE-OME-ZARR.md b/USERGUIDE-OME-ZARR.md index 313945af..d8221be8 100644 --- a/USERGUIDE-OME-ZARR.md +++ b/USERGUIDE-OME-ZARR.md @@ -1,8 +1,35 @@ # OME-Zarr Guide for zarr-java +## Separate module + +OME-Zarr support lives in a dedicated module: **`zarr-java-ome`**. +Add it alongside the core library: + +### Maven +```xml + + dev.zarr + zarr-java-core + 0.1.3 + + + dev.zarr + zarr-java-ome + 0.1.3 + +``` + +### Gradle +```gradle +dependencies { + implementation 'dev.zarr:zarr-java-core:0.1.3' + implementation 'dev.zarr:zarr-java-ome:0.1.3' +} +``` + ## Scope and supported versions -`dev.zarr.zarrjava.experimental.ome` supports: +`dev.zarr.omezarr` supports: - v0.4 (Zarr v2 layout) - v0.5 (Zarr v3 layout) @@ -32,7 +59,7 @@ MultiscaleImage image = MultiscaleImage.open(s3); Metadata: -- `getMultiscaleNode(int i)` → normalized `ome.metadata.MultiscalesEntry` +- `getMultiscaleNode(int i)` → normalized `omezarr.metadata.MultiscalesEntry` - `getAxisNames()` → axis names from multiscale `0` - `getScaleLevelCount()` → number of datasets/levels in multiscale `0` - `getLabels()` / `openLabel(String)` → labels subgroup helpers @@ -64,7 +91,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.omezarr.v0_6.Scene`: - `Scene.openScene(StoreHandle)` / `Scene.open(StoreHandle)` - `Scene.createScene(StoreHandle, SceneMetadata)` / `Scene.create(...)` @@ -79,9 +106,10 @@ 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.omezarr.MultiscaleImage; +import dev.zarr.omezarr.Plate; +import dev.zarr.omezarr.Well; +import dev.zarr.omezarr.metadata.MultiscalesEntry; import dev.zarr.zarrjava.store.FilesystemStore; import dev.zarr.zarrjava.store.StoreHandle; @@ -90,7 +118,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); +MultiscalesEntry entry0 = image.getMultiscaleNode(0); dev.zarr.zarrjava.core.Array s0 = image.openScaleLevel(0); ucar.ma2.Array full = s0.read(); @@ -112,9 +140,10 @@ 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.omezarr.metadata.Axis; +import dev.zarr.omezarr.metadata.Dataset; +import dev.zarr.omezarr.metadata.MultiscalesEntry; +import dev.zarr.omezarr.metadata.transform.CoordinateTransformation; import dev.zarr.zarrjava.store.FilesystemStore; import dev.zarr.zarrjava.store.StoreHandle; import dev.zarr.zarrjava.v3.Array; @@ -126,9 +155,9 @@ import java.util.Collections; StoreHandle out = new FilesystemStore("/tmp/ome_v05.zarr").resolve(); MultiscalesEntry ms = new MultiscalesEntry( Arrays.asList(new Axis("y", "space", "micrometer"), new Axis("x", "space", "micrometer")), - Collections.emptyList()); + Collections.emptyList() ); -dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage written = dev.zarr.zarrjava.experimental.ome.v0_5.MultiscaleImage.create(out, ms); +dev.zarr.omezarr.v0_5.MultiscaleImage written = dev.zarr.omezarr.v0_5.MultiscaleImage.create(out, ms); written.createScaleLevel( "s0", @@ -144,8 +173,8 @@ written.createScaleLevel( ## Write entry points by version -- `ome.v0_4.MultiscaleImage.create(...)` -- `ome.v0_5.MultiscaleImage.create(...)` -- `ome.v0_6.MultiscaleImage.create(...)` +- `dev.zarr.omezarr.v0_4.MultiscaleImage.create(...)` +- `dev.zarr.omezarr.v0_5.MultiscaleImage.create(...)` +- `dev.zarr.omezarr.v0_6.MultiscaleImage.create(...)` Use the corresponding metadata classes for each version package. diff --git a/USERGUIDE.md b/USERGUIDE.md index 65bf9944..966d2449 100644 --- a/USERGUIDE.md +++ b/USERGUIDE.md @@ -31,15 +31,25 @@ Add the following dependency to your `pom.xml`: ```xml dev.zarr - zarr-java - 0.0.10 + zarr-java-core + 0.1.3 + +``` +For OME-Zarr support, also add: +```xml + + dev.zarr + zarr-java-ome + 0.1.3 ``` ### Gradle Add the following to your `build.gradle`: ```gradle dependencies { - implementation 'dev.zarr:zarr-java:0.0.10' + implementation 'dev.zarr:zarr-java-core:0.1.3' + // Optional: OME-Zarr support + implementation 'dev.zarr:zarr-java-ome:0.1.3' } ``` ### Requirements @@ -680,7 +690,9 @@ try { ## OME-Zarr (v0.4, v0.5, v0.6) -For a focused OME-Zarr API guide (metadata access, array access, version behavior, and concise examples), +OME-Zarr support is provided by the separate `zarr-java-ome` module (package `dev.zarr.omezarr`). + +For the full OME-Zarr API guide (installation, metadata access, array access, version behavior, and concise examples), see: - [`USERGUIDE-OME-ZARR.md`](USERGUIDE-OME-ZARR.md)