|
17 | 17 | import zarr |
18 | 18 | import zarr.storage |
19 | 19 | from ._zarr_open_array import open_array |
| 20 | +from .v04.zarr_metadata import Metadata as Metadata_v04 |
| 21 | +from .v05.zarr_metadata import Metadata as Metadata_v05 |
20 | 22 |
|
21 | 23 | # Zarr Python 3 |
22 | 24 | if hasattr(zarr.storage, "StoreLike"): |
@@ -182,7 +184,23 @@ def to_ngff_zarr( |
182 | 184 | if version != "0.4" and version != "0.5": |
183 | 185 | raise ValueError(f"Unsupported version: {version}") |
184 | 186 |
|
185 | | - metadata_dict = asdict(multiscales.metadata) |
| 187 | + metadata = multiscales.metadata |
| 188 | + if version == "0.4" and isinstance(metadata, Metadata_v05): |
| 189 | + metadata = Metadata_v04( |
| 190 | + axes=metadata.axes, |
| 191 | + datasets=metadata.datasets, |
| 192 | + coordinateTransformations=metadata.coordinateTransformations, |
| 193 | + name=metadata.name, |
| 194 | + ) |
| 195 | + if version == "0.5" and isinstance(metadata, Metadata_v04): |
| 196 | + metadata = Metadata_v05( |
| 197 | + axes=metadata.axes, |
| 198 | + datasets=metadata.datasets, |
| 199 | + coordinateTransformations=metadata.coordinateTransformations, |
| 200 | + name=metadata.name, |
| 201 | + ) |
| 202 | + |
| 203 | + metadata_dict = asdict(metadata) |
186 | 204 | metadata_dict = _pop_metadata_optionals(metadata_dict) |
187 | 205 | metadata_dict["@type"] = "ngff:Image" |
188 | 206 | zarr_format = 2 if version == "0.4" else 3 |
@@ -224,7 +242,7 @@ def to_ngff_zarr( |
224 | 242 | progress.update_multiscales_task_completed(index + 1) |
225 | 243 | image = next_image |
226 | 244 | arr = image.data |
227 | | - path = multiscales.metadata.datasets[index].path |
| 245 | + path = metadata.datasets[index].path |
228 | 246 | parent = str(PurePosixPath(path).parent) |
229 | 247 | if parent not in (".", "/"): |
230 | 248 | array_dims_group = root.create_group(parent) |
|
0 commit comments