Skip to content

Commit cc5ab4e

Browse files
committed
fix: OmeNgffMetadataParser writes zarr3 dimension_names
1 parent 8c2cbcd commit cc5ab4e

1 file changed

Lines changed: 25 additions & 3 deletions

File tree

src/main/java/org/janelia/saalfeldlab/n5/universe/metadata/ome/ngff/OmeNgffMetadataParser.java

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
package org.janelia.saalfeldlab.n5.universe.metadata.ome.ngff;
22

3+
import java.util.Collections;
34
import java.util.HashMap;
5+
import java.util.List;
46
import java.util.Map;
57
import java.util.Optional;
8+
import java.util.stream.Collectors;
9+
import java.util.stream.Stream;
610

711
import org.janelia.saalfeldlab.n5.DatasetAttributes;
8-
import org.janelia.saalfeldlab.n5.N5KeyValueReader;
912
import org.janelia.saalfeldlab.n5.N5Reader;
1013
import org.janelia.saalfeldlab.n5.N5Writer;
1114
import org.janelia.saalfeldlab.n5.universe.N5TreeNode;
1215
import org.janelia.saalfeldlab.n5.universe.metadata.MetadataUtils;
13-
import org.janelia.saalfeldlab.n5.universe.metadata.N5DatasetMetadata;
1416
import org.janelia.saalfeldlab.n5.universe.metadata.N5MetadataParser;
1517
import org.janelia.saalfeldlab.n5.universe.metadata.N5MetadataWriter;
1618
import org.janelia.saalfeldlab.n5.universe.metadata.axes.Axis;
@@ -20,7 +22,7 @@
2022
import org.janelia.saalfeldlab.n5.universe.metadata.ome.ngff.coordinateTransformations.CoordinateTransformationAdapter;
2123
import org.janelia.saalfeldlab.n5.universe.metadata.ome.ngff.v03.OmeNgffV03MetadataProcessor;
2224
import org.janelia.saalfeldlab.n5.zarr.ZarrKeyValueReader;
23-
import org.janelia.saalfeldlab.n5.zarr.ZarrKeyValueWriter;
25+
import org.janelia.saalfeldlab.n5.zarr.v3.ZarrV3DatasetAttributes;
2426
import org.janelia.saalfeldlab.n5.zarr.v3.ZarrV3KeyValueReader;
2527
import org.janelia.saalfeldlab.n5.zarr.v3.ZarrV3KeyValueWriter;
2628

@@ -163,9 +165,29 @@ public void writeMetadata(final OmeNgffMetadata t, final N5Writer n5, final Stri
163165
if( t.multiscales[0].version.equals("0.5")) {
164166
n5.setAttribute(groupPath, OME + "/version", "0.5");
165167
n5.setAttribute(groupPath, OMEMS, jsonElem);
168+
writeZarr3DimensionNames(n5, groupPath, ms);
166169
}
167170
else
168171
n5.setAttribute(groupPath, MS, jsonElem);
169172
}
170173

174+
private void writeZarr3DimensionNames(N5Writer n5, final String groupPath, OmeNgffMultiScaleMetadata[] ms) {
175+
176+
if (!(n5 instanceof ZarrV3KeyValueWriter)) {
177+
return;
178+
}
179+
180+
final ZarrV3KeyValueWriter zarr3 = (ZarrV3KeyValueWriter)n5;
181+
final List<String> axisNames = Stream.of(ms[0].getAxes()).map(Axis::getName)
182+
.collect(Collectors.toList());
183+
184+
if (reverse)
185+
Collections.reverse(axisNames);
186+
187+
for (OmeNgffDataset dataset : ms[0].getDatasets()) {
188+
final String path = groupPath + "/" + dataset.path;
189+
zarr3.setRawAttribute(path, ZarrV3DatasetAttributes.DIMENSION_NAMES_KEY, axisNames);
190+
}
191+
}
192+
171193
}

0 commit comments

Comments
 (0)