Skip to content

Commit 1700490

Browse files
committed
add omero to v0.6
1 parent ed0e018 commit 1700490

3 files changed

Lines changed: 74 additions & 1 deletion

File tree

src/main/java/dev/zarr/zarrjava/ome/v0_6/MultiscaleImage.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,11 @@ public MultiscalesEntry getMultiscalesEntry(int i) throws ZarrException {
7171
return omeMetadata.multiscales.get(i);
7272
}
7373

74+
@javax.annotation.Nullable
75+
public dev.zarr.zarrjava.ome.metadata.OmeroMetadata getOmeroMetadata() {
76+
return omeMetadata.omero;
77+
}
78+
7479
@Override
7580
public dev.zarr.zarrjava.core.Array openScaleLevel(int i) throws IOException, ZarrException {
7681
String path = getMultiscalesEntry(0).datasets.get(i).path;

src/main/java/dev/zarr/zarrjava/ome/v0_6/metadata/OmeMetadata.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.fasterxml.jackson.annotation.JsonCreator;
44
import com.fasterxml.jackson.annotation.JsonInclude;
55
import com.fasterxml.jackson.annotation.JsonProperty;
6+
import dev.zarr.zarrjava.ome.metadata.OmeroMetadata;
67

78
import javax.annotation.Nullable;
89
import java.util.List;
@@ -13,13 +14,20 @@ public final class OmeMetadata {
1314

1415
public final String version;
1516
@Nullable public final List<MultiscalesEntry> multiscales;
17+
@Nullable public final OmeroMetadata omero;
1618

1719
@JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
1820
public OmeMetadata(
1921
@JsonProperty(value = "version", required = true) String version,
20-
@Nullable @JsonProperty("multiscales") List<MultiscalesEntry> multiscales
22+
@Nullable @JsonProperty("multiscales") List<MultiscalesEntry> multiscales,
23+
@Nullable @JsonProperty("omero") OmeroMetadata omero
2124
) {
2225
this.version = version;
2326
this.multiscales = multiscales;
27+
this.omero = omero;
28+
}
29+
30+
public OmeMetadata(String version, @Nullable List<MultiscalesEntry> multiscales) {
31+
this(version, multiscales, null);
2432
}
2533
}

src/test/java/dev/zarr/zarrjava/ome/OmeZarrV06Test.java

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,4 +149,64 @@ void readHumanOrganAtlasOverview() throws Exception {
149149
assertEquals("anatomical", entry.coordinateSystems.get(1).name);
150150
assertEquals("sequence", entry.datasets.get(0).coordinateTransformations.get(0).type);
151151
}
152+
153+
@Test
154+
void readV06WithOmeroMetadata() throws Exception {
155+
java.nio.file.Path out = TESTOUTPUT.resolve("ome_v06_with_omero");
156+
StoreHandle outHandle = storeHandle(out);
157+
java.util.List<dev.zarr.zarrjava.ome.metadata.Axis> axes = Arrays.asList(
158+
new dev.zarr.zarrjava.ome.metadata.Axis("y", "space", "micrometer"),
159+
new dev.zarr.zarrjava.ome.metadata.Axis("x", "space", "micrometer"));
160+
java.util.List<dev.zarr.zarrjava.ome.v0_6.metadata.Dataset> datasets =
161+
java.util.Collections.singletonList(new dev.zarr.zarrjava.ome.v0_6.metadata.Dataset(
162+
"s0",
163+
java.util.Collections.singletonList(
164+
dev.zarr.zarrjava.ome.v0_6.metadata.CoordinateTransformation.scale(
165+
Arrays.asList(1.0, 1.0), "s0", "physical"))));
166+
dev.zarr.zarrjava.ome.v0_6.metadata.MultiscalesEntry ms =
167+
new dev.zarr.zarrjava.ome.v0_6.metadata.MultiscalesEntry(
168+
null,
169+
datasets,
170+
null,
171+
java.util.Collections.singletonList(new CoordinateSystem("physical", axes)),
172+
"multiscales",
173+
null,
174+
null);
175+
176+
java.util.Map<String, Object> ch = new java.util.HashMap<>();
177+
ch.put("label", "LaminB1");
178+
ch.put("color", "0000FF");
179+
java.util.Map<String, Object> win = new java.util.HashMap<>();
180+
win.put("min", 0);
181+
win.put("max", 65535);
182+
win.put("start", 0);
183+
win.put("end", 1500);
184+
ch.put("window", win);
185+
dev.zarr.zarrjava.ome.metadata.OmeroMetadata omero =
186+
new dev.zarr.zarrjava.ome.metadata.OmeroMetadata(
187+
1,
188+
"0.5",
189+
"example.tif",
190+
java.util.Collections.singletonList(ch),
191+
java.util.Collections.singletonMap("model", "color"));
192+
193+
dev.zarr.zarrjava.ome.v0_6.metadata.OmeMetadata ome =
194+
new dev.zarr.zarrjava.ome.v0_6.metadata.OmeMetadata("0.6", java.util.Collections.singletonList(ms), omero);
195+
dev.zarr.zarrjava.v3.Group.create(outHandle, dev.zarr.zarrjava.ome.OmeV3Group.omeAttributes(ome));
196+
dev.zarr.zarrjava.v3.Array.create(
197+
outHandle.resolve("s0"),
198+
dev.zarr.zarrjava.v3.Array.metadataBuilder()
199+
.withShape(16, 16)
200+
.withChunkShape(8, 8)
201+
.withDataType(dev.zarr.zarrjava.v3.DataType.UINT16)
202+
.build());
203+
204+
dev.zarr.zarrjava.ome.v0_6.MultiscaleImage read =
205+
(dev.zarr.zarrjava.ome.v0_6.MultiscaleImage) MultiscaleImage.open(outHandle);
206+
assertNotNull(read.getOmeroMetadata());
207+
assertEquals(Integer.valueOf(1), read.getOmeroMetadata().id);
208+
assertEquals("0.5", read.getOmeroMetadata().version);
209+
assertEquals("example.tif", read.getOmeroMetadata().name);
210+
assertEquals("LaminB1", read.getOmeroMetadata().channels.get(0).get("label"));
211+
}
152212
}

0 commit comments

Comments
 (0)