ngio 0.5.0b6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ngio/__init__.py +69 -0
- ngio/common/__init__.py +28 -0
- ngio/common/_dimensions.py +335 -0
- ngio/common/_masking_roi.py +153 -0
- ngio/common/_pyramid.py +408 -0
- ngio/common/_roi.py +315 -0
- ngio/common/_synt_images_utils.py +101 -0
- ngio/common/_zoom.py +188 -0
- ngio/experimental/__init__.py +5 -0
- ngio/experimental/iterators/__init__.py +15 -0
- ngio/experimental/iterators/_abstract_iterator.py +390 -0
- ngio/experimental/iterators/_feature.py +189 -0
- ngio/experimental/iterators/_image_processing.py +130 -0
- ngio/experimental/iterators/_mappers.py +48 -0
- ngio/experimental/iterators/_rois_utils.py +126 -0
- ngio/experimental/iterators/_segmentation.py +235 -0
- ngio/hcs/__init__.py +19 -0
- ngio/hcs/_plate.py +1354 -0
- ngio/images/__init__.py +44 -0
- ngio/images/_abstract_image.py +967 -0
- ngio/images/_create_synt_container.py +132 -0
- ngio/images/_create_utils.py +423 -0
- ngio/images/_image.py +926 -0
- ngio/images/_label.py +411 -0
- ngio/images/_masked_image.py +531 -0
- ngio/images/_ome_zarr_container.py +1237 -0
- ngio/images/_table_ops.py +471 -0
- ngio/io_pipes/__init__.py +75 -0
- ngio/io_pipes/_io_pipes.py +361 -0
- ngio/io_pipes/_io_pipes_masked.py +488 -0
- ngio/io_pipes/_io_pipes_roi.py +146 -0
- ngio/io_pipes/_io_pipes_types.py +56 -0
- ngio/io_pipes/_match_shape.py +377 -0
- ngio/io_pipes/_ops_axes.py +344 -0
- ngio/io_pipes/_ops_slices.py +411 -0
- ngio/io_pipes/_ops_slices_utils.py +199 -0
- ngio/io_pipes/_ops_transforms.py +104 -0
- ngio/io_pipes/_zoom_transform.py +180 -0
- ngio/ome_zarr_meta/__init__.py +65 -0
- ngio/ome_zarr_meta/_meta_handlers.py +536 -0
- ngio/ome_zarr_meta/ngio_specs/__init__.py +77 -0
- ngio/ome_zarr_meta/ngio_specs/_axes.py +515 -0
- ngio/ome_zarr_meta/ngio_specs/_channels.py +462 -0
- ngio/ome_zarr_meta/ngio_specs/_dataset.py +89 -0
- ngio/ome_zarr_meta/ngio_specs/_ngio_hcs.py +539 -0
- ngio/ome_zarr_meta/ngio_specs/_ngio_image.py +438 -0
- ngio/ome_zarr_meta/ngio_specs/_pixel_size.py +122 -0
- ngio/ome_zarr_meta/v04/__init__.py +27 -0
- ngio/ome_zarr_meta/v04/_custom_models.py +18 -0
- ngio/ome_zarr_meta/v04/_v04_spec.py +473 -0
- ngio/ome_zarr_meta/v05/__init__.py +27 -0
- ngio/ome_zarr_meta/v05/_custom_models.py +18 -0
- ngio/ome_zarr_meta/v05/_v05_spec.py +511 -0
- ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/mask.png +0 -0
- ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/nuclei.png +0 -0
- ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/raw.jpg +0 -0
- ngio/resources/__init__.py +55 -0
- ngio/resources/resource_model.py +36 -0
- ngio/tables/__init__.py +43 -0
- ngio/tables/_abstract_table.py +270 -0
- ngio/tables/_tables_container.py +449 -0
- ngio/tables/backends/__init__.py +57 -0
- ngio/tables/backends/_abstract_backend.py +240 -0
- ngio/tables/backends/_anndata.py +139 -0
- ngio/tables/backends/_anndata_utils.py +90 -0
- ngio/tables/backends/_csv.py +19 -0
- ngio/tables/backends/_json.py +92 -0
- ngio/tables/backends/_parquet.py +19 -0
- ngio/tables/backends/_py_arrow_backends.py +222 -0
- ngio/tables/backends/_table_backends.py +226 -0
- ngio/tables/backends/_utils.py +608 -0
- ngio/tables/v1/__init__.py +23 -0
- ngio/tables/v1/_condition_table.py +71 -0
- ngio/tables/v1/_feature_table.py +125 -0
- ngio/tables/v1/_generic_table.py +49 -0
- ngio/tables/v1/_roi_table.py +575 -0
- ngio/transforms/__init__.py +5 -0
- ngio/transforms/_zoom.py +19 -0
- ngio/utils/__init__.py +45 -0
- ngio/utils/_cache.py +48 -0
- ngio/utils/_datasets.py +165 -0
- ngio/utils/_errors.py +37 -0
- ngio/utils/_fractal_fsspec_store.py +42 -0
- ngio/utils/_zarr_utils.py +534 -0
- ngio-0.5.0b6.dist-info/METADATA +148 -0
- ngio-0.5.0b6.dist-info/RECORD +88 -0
- ngio-0.5.0b6.dist-info/WHEEL +4 -0
- ngio-0.5.0b6.dist-info/licenses/LICENSE +28 -0
|
@@ -0,0 +1,536 @@
|
|
|
1
|
+
"""Base class for handling OME-NGFF metadata in Zarr groups."""
|
|
2
|
+
|
|
3
|
+
from collections.abc import Callable
|
|
4
|
+
from typing import TypeVar
|
|
5
|
+
|
|
6
|
+
from ngio.ome_zarr_meta.ngio_specs import (
|
|
7
|
+
AxesSetup,
|
|
8
|
+
NgioImageMeta,
|
|
9
|
+
NgioLabelMeta,
|
|
10
|
+
NgioLabelsGroupMeta,
|
|
11
|
+
NgioPlateMeta,
|
|
12
|
+
NgioWellMeta,
|
|
13
|
+
)
|
|
14
|
+
from ngio.ome_zarr_meta.ngio_specs._ngio_image import NgffVersions
|
|
15
|
+
from ngio.ome_zarr_meta.v04 import (
|
|
16
|
+
ngio_to_v04_image_meta,
|
|
17
|
+
ngio_to_v04_label_meta,
|
|
18
|
+
ngio_to_v04_labels_group_meta,
|
|
19
|
+
ngio_to_v04_plate_meta,
|
|
20
|
+
ngio_to_v04_well_meta,
|
|
21
|
+
v04_to_ngio_image_meta,
|
|
22
|
+
v04_to_ngio_label_meta,
|
|
23
|
+
v04_to_ngio_labels_group_meta,
|
|
24
|
+
v04_to_ngio_plate_meta,
|
|
25
|
+
v04_to_ngio_well_meta,
|
|
26
|
+
)
|
|
27
|
+
from ngio.ome_zarr_meta.v05 import (
|
|
28
|
+
ngio_to_v05_image_meta,
|
|
29
|
+
ngio_to_v05_label_meta,
|
|
30
|
+
ngio_to_v05_labels_group_meta,
|
|
31
|
+
ngio_to_v05_plate_meta,
|
|
32
|
+
ngio_to_v05_well_meta,
|
|
33
|
+
v05_to_ngio_image_meta,
|
|
34
|
+
v05_to_ngio_label_meta,
|
|
35
|
+
v05_to_ngio_labels_group_meta,
|
|
36
|
+
v05_to_ngio_plate_meta,
|
|
37
|
+
v05_to_ngio_well_meta,
|
|
38
|
+
)
|
|
39
|
+
from ngio.utils import (
|
|
40
|
+
NgioValidationError,
|
|
41
|
+
NgioValueError,
|
|
42
|
+
ZarrGroupHandler,
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
# This could be replaced with a more dynamic registry if needed in the future
|
|
46
|
+
_image_encoder_registry = {"0.4": ngio_to_v04_image_meta, "0.5": ngio_to_v05_image_meta}
|
|
47
|
+
_image_decoder_registry = {"0.4": v04_to_ngio_image_meta, "0.5": v05_to_ngio_image_meta}
|
|
48
|
+
_label_encoder_registry = {"0.4": ngio_to_v04_label_meta, "0.5": ngio_to_v05_label_meta}
|
|
49
|
+
_label_decoder_registry = {"0.4": v04_to_ngio_label_meta, "0.5": v05_to_ngio_label_meta}
|
|
50
|
+
_plate_encoder_registry = {"0.4": ngio_to_v04_plate_meta, "0.5": ngio_to_v05_plate_meta}
|
|
51
|
+
_plate_decoder_registry = {"0.4": v04_to_ngio_plate_meta, "0.5": v05_to_ngio_plate_meta}
|
|
52
|
+
_well_encoder_registry = {"0.4": ngio_to_v04_well_meta, "0.5": ngio_to_v05_well_meta}
|
|
53
|
+
_well_decoder_registry = {"0.4": v04_to_ngio_well_meta, "0.5": v05_to_ngio_well_meta}
|
|
54
|
+
_labels_group_encoder_registry = {
|
|
55
|
+
"0.4": ngio_to_v04_labels_group_meta,
|
|
56
|
+
"0.5": ngio_to_v05_labels_group_meta,
|
|
57
|
+
}
|
|
58
|
+
_labels_group_decoder_registry = {
|
|
59
|
+
"0.4": v04_to_ngio_labels_group_meta,
|
|
60
|
+
"0.5": v05_to_ngio_labels_group_meta,
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
_meta_type = TypeVar(
|
|
64
|
+
"_meta_type",
|
|
65
|
+
NgioImageMeta,
|
|
66
|
+
NgioLabelMeta,
|
|
67
|
+
NgioLabelsGroupMeta,
|
|
68
|
+
NgioPlateMeta,
|
|
69
|
+
NgioWellMeta,
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def _find_encoder_registry(
|
|
74
|
+
ngio_meta: _meta_type,
|
|
75
|
+
) -> dict[str, Callable]:
|
|
76
|
+
if isinstance(ngio_meta, NgioImageMeta):
|
|
77
|
+
return _image_encoder_registry
|
|
78
|
+
elif isinstance(ngio_meta, NgioLabelMeta):
|
|
79
|
+
return _label_encoder_registry
|
|
80
|
+
elif isinstance(ngio_meta, NgioPlateMeta):
|
|
81
|
+
return _plate_encoder_registry
|
|
82
|
+
elif isinstance(ngio_meta, NgioWellMeta):
|
|
83
|
+
return _well_encoder_registry
|
|
84
|
+
elif isinstance(ngio_meta, NgioLabelsGroupMeta):
|
|
85
|
+
return _labels_group_encoder_registry
|
|
86
|
+
else:
|
|
87
|
+
raise NgioValueError(f"Unsupported NGIO metadata type: {type(ngio_meta)}")
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def update_ngio_meta(
|
|
91
|
+
group_handler: ZarrGroupHandler,
|
|
92
|
+
ngio_meta: _meta_type,
|
|
93
|
+
) -> None:
|
|
94
|
+
"""Update the metadata in the Zarr group.
|
|
95
|
+
|
|
96
|
+
Args:
|
|
97
|
+
group_handler (ZarrGroupHandler): The Zarr group handler.
|
|
98
|
+
ngio_meta (_meta_type): The new NGIO metadata.
|
|
99
|
+
|
|
100
|
+
"""
|
|
101
|
+
registry = _find_encoder_registry(ngio_meta)
|
|
102
|
+
exporter = registry.get(ngio_meta.version)
|
|
103
|
+
if exporter is None:
|
|
104
|
+
raise NgioValueError(f"Unsupported NGFF version: {ngio_meta.version}")
|
|
105
|
+
|
|
106
|
+
zarr_meta = exporter(ngio_meta)
|
|
107
|
+
group_handler.write_attrs(zarr_meta)
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
def _find_decoder_registry(
|
|
111
|
+
meta_type: type[_meta_type],
|
|
112
|
+
) -> dict[str, Callable]:
|
|
113
|
+
if meta_type is NgioImageMeta:
|
|
114
|
+
return _image_decoder_registry
|
|
115
|
+
elif meta_type is NgioLabelMeta:
|
|
116
|
+
return _label_decoder_registry
|
|
117
|
+
elif meta_type is NgioPlateMeta:
|
|
118
|
+
return _plate_decoder_registry
|
|
119
|
+
elif meta_type is NgioWellMeta:
|
|
120
|
+
return _well_decoder_registry
|
|
121
|
+
elif meta_type is NgioLabelsGroupMeta:
|
|
122
|
+
return _labels_group_decoder_registry
|
|
123
|
+
else:
|
|
124
|
+
raise NgioValueError(f"Unsupported NGIO metadata type: {meta_type}")
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
def get_ngio_meta(
|
|
128
|
+
group_handler: ZarrGroupHandler,
|
|
129
|
+
meta_type: type[_meta_type],
|
|
130
|
+
version: str | None = None,
|
|
131
|
+
**kwargs,
|
|
132
|
+
) -> _meta_type:
|
|
133
|
+
"""Retrieve the NGIO metadata from the Zarr group.
|
|
134
|
+
|
|
135
|
+
Args:
|
|
136
|
+
group_handler (ZarrGroupHandler): The Zarr group handler.
|
|
137
|
+
meta_type (type[_meta_type]): The type of NGIO metadata to retrieve.
|
|
138
|
+
version (str | None): Optional NGFF version to use for decoding.
|
|
139
|
+
**kwargs: Additional arguments to pass to the decoder.
|
|
140
|
+
|
|
141
|
+
Returns:
|
|
142
|
+
_meta_type: The NGIO metadata.
|
|
143
|
+
"""
|
|
144
|
+
registry = _find_decoder_registry(meta_type)
|
|
145
|
+
if version is not None:
|
|
146
|
+
decoder = registry.get(version)
|
|
147
|
+
if decoder is None:
|
|
148
|
+
raise NgioValueError(f"Unsupported NGFF version: {version}")
|
|
149
|
+
versions_to_try = {version: decoder}
|
|
150
|
+
else:
|
|
151
|
+
versions_to_try = registry
|
|
152
|
+
|
|
153
|
+
attrs = group_handler.load_attrs()
|
|
154
|
+
all_errors = []
|
|
155
|
+
for version, decoder in versions_to_try.items():
|
|
156
|
+
try:
|
|
157
|
+
ngio_meta = decoder(attrs, **kwargs)
|
|
158
|
+
return ngio_meta
|
|
159
|
+
except Exception as e:
|
|
160
|
+
all_errors.append(f"Version {version}: {e}")
|
|
161
|
+
error_message = (
|
|
162
|
+
f"Failed to decode NGIO {meta_type.__name__} metadata:\n"
|
|
163
|
+
+ "\n".join(all_errors)
|
|
164
|
+
)
|
|
165
|
+
raise NgioValidationError(error_message)
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
##################################################
|
|
169
|
+
#
|
|
170
|
+
# Concrete implementations for NGIO metadata types
|
|
171
|
+
#
|
|
172
|
+
##################################################
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def get_ngio_image_meta(
|
|
176
|
+
group_handler: ZarrGroupHandler,
|
|
177
|
+
version: str | None = None,
|
|
178
|
+
axes_setup: AxesSetup | None = None,
|
|
179
|
+
allow_non_canonical_axes: bool = False,
|
|
180
|
+
strict_canonical_order: bool = True,
|
|
181
|
+
) -> NgioImageMeta:
|
|
182
|
+
"""Retrieve the NGIO image metadata from the Zarr group.
|
|
183
|
+
|
|
184
|
+
Args:
|
|
185
|
+
group_handler (ZarrGroupHandler): The Zarr group handler.
|
|
186
|
+
version (str | None): Optional NGFF version to use for decoding.
|
|
187
|
+
axes_setup (AxesSetup | None): Optional axes setup for validation.
|
|
188
|
+
allow_non_canonical_axes (bool): Whether to allow non-canonical axes.
|
|
189
|
+
strict_canonical_order (bool): Whether to enforce strict canonical order.
|
|
190
|
+
|
|
191
|
+
Returns:
|
|
192
|
+
NgioImageMeta: The NGIO image metadata.
|
|
193
|
+
"""
|
|
194
|
+
return get_ngio_meta(
|
|
195
|
+
group_handler=group_handler,
|
|
196
|
+
meta_type=NgioImageMeta,
|
|
197
|
+
version=version,
|
|
198
|
+
axes_setup=axes_setup,
|
|
199
|
+
allow_non_canonical_axes=allow_non_canonical_axes,
|
|
200
|
+
strict_canonical_order=strict_canonical_order,
|
|
201
|
+
)
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
def update_ngio_image_meta(
|
|
205
|
+
group_handler: ZarrGroupHandler,
|
|
206
|
+
ngio_meta: NgioImageMeta,
|
|
207
|
+
) -> None:
|
|
208
|
+
"""Update the NGIO image metadata in the Zarr group.
|
|
209
|
+
|
|
210
|
+
Args:
|
|
211
|
+
group_handler (ZarrGroupHandler): The Zarr group handler.
|
|
212
|
+
ngio_meta (NgioImageMeta): The new NGIO image metadata.
|
|
213
|
+
|
|
214
|
+
"""
|
|
215
|
+
update_ngio_meta(
|
|
216
|
+
group_handler=group_handler,
|
|
217
|
+
ngio_meta=ngio_meta,
|
|
218
|
+
)
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
class ImageMetaHandler:
|
|
222
|
+
def __init__(
|
|
223
|
+
self,
|
|
224
|
+
group_handler: ZarrGroupHandler,
|
|
225
|
+
version: str | None = None,
|
|
226
|
+
axes_setup: AxesSetup | None = None,
|
|
227
|
+
allow_non_canonical_axes: bool = False,
|
|
228
|
+
strict_canonical_order: bool = True,
|
|
229
|
+
):
|
|
230
|
+
self._group_handler = group_handler
|
|
231
|
+
self._version = version
|
|
232
|
+
self._axes_setup = axes_setup
|
|
233
|
+
self._allow_non_canonical_axes = allow_non_canonical_axes
|
|
234
|
+
self._strict_canonical_order = strict_canonical_order
|
|
235
|
+
|
|
236
|
+
# Validate metadata
|
|
237
|
+
meta = self.get_meta()
|
|
238
|
+
# Store the resolved version
|
|
239
|
+
self._version = meta.version
|
|
240
|
+
|
|
241
|
+
def get_meta(self) -> NgioImageMeta:
|
|
242
|
+
"""Retrieve the NGIO image metadata."""
|
|
243
|
+
return get_ngio_image_meta(
|
|
244
|
+
group_handler=self._group_handler,
|
|
245
|
+
version=self._version,
|
|
246
|
+
axes_setup=self._axes_setup,
|
|
247
|
+
allow_non_canonical_axes=self._allow_non_canonical_axes,
|
|
248
|
+
strict_canonical_order=self._strict_canonical_order,
|
|
249
|
+
)
|
|
250
|
+
|
|
251
|
+
def update_meta(self, ngio_meta: NgioImageMeta) -> None:
|
|
252
|
+
"""Update the NGIO image metadata."""
|
|
253
|
+
update_ngio_meta(
|
|
254
|
+
group_handler=self._group_handler,
|
|
255
|
+
ngio_meta=ngio_meta,
|
|
256
|
+
)
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
def get_ngio_label_meta(
|
|
260
|
+
group_handler: ZarrGroupHandler,
|
|
261
|
+
version: str | None = None,
|
|
262
|
+
axes_setup: AxesSetup | None = None,
|
|
263
|
+
allow_non_canonical_axes: bool = False,
|
|
264
|
+
strict_canonical_order: bool = True,
|
|
265
|
+
) -> NgioLabelMeta:
|
|
266
|
+
"""Retrieve the NGIO label metadata from the Zarr group.
|
|
267
|
+
|
|
268
|
+
Args:
|
|
269
|
+
group_handler (ZarrGroupHandler): The Zarr group handler.
|
|
270
|
+
version (str | None): Optional NGFF version to use for decoding.
|
|
271
|
+
axes_setup (AxesSetup | None): Optional axes setup for validation.
|
|
272
|
+
allow_non_canonical_axes (bool): Whether to allow non-canonical axes.
|
|
273
|
+
strict_canonical_order (bool): Whether to enforce strict canonical order.
|
|
274
|
+
|
|
275
|
+
Returns:
|
|
276
|
+
NgioLabelMeta: The NGIO label metadata.
|
|
277
|
+
"""
|
|
278
|
+
return get_ngio_meta(
|
|
279
|
+
group_handler=group_handler,
|
|
280
|
+
meta_type=NgioLabelMeta,
|
|
281
|
+
version=version,
|
|
282
|
+
axes_setup=axes_setup,
|
|
283
|
+
allow_non_canonical_axes=allow_non_canonical_axes,
|
|
284
|
+
strict_canonical_order=strict_canonical_order,
|
|
285
|
+
)
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
def update_ngio_label_meta(
|
|
289
|
+
group_handler: ZarrGroupHandler,
|
|
290
|
+
ngio_meta: NgioLabelMeta,
|
|
291
|
+
) -> None:
|
|
292
|
+
"""Update the NGIO label metadata in the Zarr group.
|
|
293
|
+
|
|
294
|
+
Args:
|
|
295
|
+
group_handler (ZarrGroupHandler): The Zarr group handler.
|
|
296
|
+
ngio_meta (NgioLabelMeta): The new NGIO label metadata.
|
|
297
|
+
|
|
298
|
+
"""
|
|
299
|
+
update_ngio_meta(
|
|
300
|
+
group_handler=group_handler,
|
|
301
|
+
ngio_meta=ngio_meta,
|
|
302
|
+
)
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
class LabelMetaHandler:
|
|
306
|
+
def __init__(
|
|
307
|
+
self,
|
|
308
|
+
group_handler: ZarrGroupHandler,
|
|
309
|
+
version: str | None = None,
|
|
310
|
+
axes_setup: AxesSetup | None = None,
|
|
311
|
+
allow_non_canonical_axes: bool = False,
|
|
312
|
+
strict_canonical_order: bool = True,
|
|
313
|
+
):
|
|
314
|
+
self._group_handler = group_handler
|
|
315
|
+
self._version = version
|
|
316
|
+
self._axes_setup = axes_setup
|
|
317
|
+
self._allow_non_canonical_axes = allow_non_canonical_axes
|
|
318
|
+
self._strict_canonical_order = strict_canonical_order
|
|
319
|
+
|
|
320
|
+
# Validate metadata
|
|
321
|
+
meta = self.get_meta()
|
|
322
|
+
# Store the resolved version
|
|
323
|
+
self._version = meta.version
|
|
324
|
+
|
|
325
|
+
def get_meta(self) -> NgioLabelMeta:
|
|
326
|
+
"""Retrieve the NGIO label metadata."""
|
|
327
|
+
return get_ngio_label_meta(
|
|
328
|
+
group_handler=self._group_handler,
|
|
329
|
+
version=self._version,
|
|
330
|
+
axes_setup=self._axes_setup,
|
|
331
|
+
allow_non_canonical_axes=self._allow_non_canonical_axes,
|
|
332
|
+
strict_canonical_order=self._strict_canonical_order,
|
|
333
|
+
)
|
|
334
|
+
|
|
335
|
+
def update_meta(self, ngio_meta: NgioLabelMeta) -> None:
|
|
336
|
+
"""Update the NGIO label metadata."""
|
|
337
|
+
update_ngio_meta(
|
|
338
|
+
group_handler=self._group_handler,
|
|
339
|
+
ngio_meta=ngio_meta,
|
|
340
|
+
)
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
def get_ngio_plate_meta(
|
|
344
|
+
group_handler: ZarrGroupHandler,
|
|
345
|
+
version: str | None = None,
|
|
346
|
+
) -> NgioPlateMeta:
|
|
347
|
+
"""Retrieve the NGIO plate metadata from the Zarr group.
|
|
348
|
+
|
|
349
|
+
Args:
|
|
350
|
+
group_handler (ZarrGroupHandler): The Zarr group handler.
|
|
351
|
+
version (str | None): Optional NGFF version to use for decoding.
|
|
352
|
+
|
|
353
|
+
Returns:
|
|
354
|
+
NgioPlateMeta: The NGIO plate metadata.
|
|
355
|
+
"""
|
|
356
|
+
return get_ngio_meta(
|
|
357
|
+
group_handler=group_handler,
|
|
358
|
+
meta_type=NgioPlateMeta,
|
|
359
|
+
version=version,
|
|
360
|
+
)
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
def update_ngio_plate_meta(
|
|
364
|
+
group_handler: ZarrGroupHandler,
|
|
365
|
+
ngio_meta: NgioPlateMeta,
|
|
366
|
+
) -> None:
|
|
367
|
+
"""Update the NGIO plate metadata in the Zarr group.
|
|
368
|
+
|
|
369
|
+
Args:
|
|
370
|
+
group_handler (ZarrGroupHandler): The Zarr group handler.
|
|
371
|
+
ngio_meta (NgioPlateMeta): The new NGIO plate metadata.
|
|
372
|
+
|
|
373
|
+
"""
|
|
374
|
+
update_ngio_meta(
|
|
375
|
+
group_handler=group_handler,
|
|
376
|
+
ngio_meta=ngio_meta,
|
|
377
|
+
)
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
class PlateMetaHandler:
|
|
381
|
+
def __init__(
|
|
382
|
+
self,
|
|
383
|
+
group_handler: ZarrGroupHandler,
|
|
384
|
+
version: str | None = None,
|
|
385
|
+
):
|
|
386
|
+
self._group_handler = group_handler
|
|
387
|
+
self._version = version
|
|
388
|
+
|
|
389
|
+
# Validate metadata
|
|
390
|
+
_ = self.get_meta()
|
|
391
|
+
# Store the resolved version
|
|
392
|
+
# self._version = meta.version
|
|
393
|
+
|
|
394
|
+
def get_meta(self) -> NgioPlateMeta:
|
|
395
|
+
"""Retrieve the NGIO plate metadata."""
|
|
396
|
+
return get_ngio_plate_meta(
|
|
397
|
+
group_handler=self._group_handler,
|
|
398
|
+
version=self._version,
|
|
399
|
+
)
|
|
400
|
+
|
|
401
|
+
def update_meta(self, ngio_meta: NgioPlateMeta) -> None:
|
|
402
|
+
"""Update the NGIO plate metadata."""
|
|
403
|
+
update_ngio_meta(
|
|
404
|
+
group_handler=self._group_handler,
|
|
405
|
+
ngio_meta=ngio_meta,
|
|
406
|
+
)
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
def get_ngio_well_meta(
|
|
410
|
+
group_handler: ZarrGroupHandler,
|
|
411
|
+
version: str | None = None,
|
|
412
|
+
) -> NgioWellMeta:
|
|
413
|
+
"""Retrieve the NGIO well metadata from the Zarr group.
|
|
414
|
+
|
|
415
|
+
Args:
|
|
416
|
+
group_handler (ZarrGroupHandler): The Zarr group handler.
|
|
417
|
+
version (str | None): Optional NGFF version to use for decoding.
|
|
418
|
+
|
|
419
|
+
Returns:
|
|
420
|
+
NgioWellMeta: The NGIO well metadata.
|
|
421
|
+
"""
|
|
422
|
+
return get_ngio_meta(
|
|
423
|
+
group_handler=group_handler,
|
|
424
|
+
meta_type=NgioWellMeta,
|
|
425
|
+
version=version,
|
|
426
|
+
)
|
|
427
|
+
|
|
428
|
+
|
|
429
|
+
def update_ngio_well_meta(
|
|
430
|
+
group_handler: ZarrGroupHandler,
|
|
431
|
+
ngio_meta: NgioWellMeta,
|
|
432
|
+
) -> None:
|
|
433
|
+
"""Update the NGIO well metadata in the Zarr group.
|
|
434
|
+
|
|
435
|
+
Args:
|
|
436
|
+
group_handler (ZarrGroupHandler): The Zarr group handler.
|
|
437
|
+
ngio_meta (NgioWellMeta): The new NGIO well metadata.
|
|
438
|
+
|
|
439
|
+
"""
|
|
440
|
+
update_ngio_meta(
|
|
441
|
+
group_handler=group_handler,
|
|
442
|
+
ngio_meta=ngio_meta,
|
|
443
|
+
)
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
class WellMetaHandler:
|
|
447
|
+
def __init__(
|
|
448
|
+
self,
|
|
449
|
+
group_handler: ZarrGroupHandler,
|
|
450
|
+
version: str | None = None,
|
|
451
|
+
):
|
|
452
|
+
self._group_handler = group_handler
|
|
453
|
+
self._version = version
|
|
454
|
+
|
|
455
|
+
# Validate metadata
|
|
456
|
+
_ = self.get_meta()
|
|
457
|
+
# Store the resolved version
|
|
458
|
+
# self._version = meta.version
|
|
459
|
+
|
|
460
|
+
def get_meta(self) -> NgioWellMeta:
|
|
461
|
+
"""Retrieve the NGIO well metadata."""
|
|
462
|
+
return get_ngio_well_meta(
|
|
463
|
+
group_handler=self._group_handler,
|
|
464
|
+
version=self._version,
|
|
465
|
+
)
|
|
466
|
+
|
|
467
|
+
def update_meta(self, ngio_meta: NgioWellMeta) -> None:
|
|
468
|
+
"""Update the NGIO well metadata."""
|
|
469
|
+
update_ngio_meta(
|
|
470
|
+
group_handler=self._group_handler,
|
|
471
|
+
ngio_meta=ngio_meta,
|
|
472
|
+
)
|
|
473
|
+
|
|
474
|
+
|
|
475
|
+
def get_ngio_labels_group_meta(
|
|
476
|
+
group_handler: ZarrGroupHandler,
|
|
477
|
+
version: str | None = None,
|
|
478
|
+
) -> NgioLabelsGroupMeta:
|
|
479
|
+
"""Retrieve the NGIO labels group metadata from the Zarr group.
|
|
480
|
+
|
|
481
|
+
Args:
|
|
482
|
+
group_handler (ZarrGroupHandler): The Zarr group handler.
|
|
483
|
+
version (str | None): Optional NGFF version to use for decoding.
|
|
484
|
+
|
|
485
|
+
Returns:
|
|
486
|
+
NgioLabelsGroupMeta: The NGIO labels group metadata.
|
|
487
|
+
"""
|
|
488
|
+
return get_ngio_meta(
|
|
489
|
+
group_handler=group_handler,
|
|
490
|
+
meta_type=NgioLabelsGroupMeta,
|
|
491
|
+
version=version,
|
|
492
|
+
)
|
|
493
|
+
|
|
494
|
+
|
|
495
|
+
def update_ngio_labels_group_meta(
|
|
496
|
+
group_handler: ZarrGroupHandler,
|
|
497
|
+
ngio_meta: NgioLabelsGroupMeta,
|
|
498
|
+
) -> None:
|
|
499
|
+
"""Update the NGIO labels group metadata in the Zarr group.
|
|
500
|
+
|
|
501
|
+
Args:
|
|
502
|
+
group_handler (ZarrGroupHandler): The Zarr group handler.
|
|
503
|
+
ngio_meta (NgioLabelsGroupMeta): The new NGIO labels group metadata.
|
|
504
|
+
|
|
505
|
+
"""
|
|
506
|
+
update_ngio_meta(
|
|
507
|
+
group_handler=group_handler,
|
|
508
|
+
ngio_meta=ngio_meta,
|
|
509
|
+
)
|
|
510
|
+
|
|
511
|
+
|
|
512
|
+
class LabelsGroupMetaHandler:
|
|
513
|
+
def __init__(
|
|
514
|
+
self,
|
|
515
|
+
group_handler: ZarrGroupHandler,
|
|
516
|
+
version: NgffVersions | None = None,
|
|
517
|
+
):
|
|
518
|
+
self._group_handler = group_handler
|
|
519
|
+
self._version = version
|
|
520
|
+
|
|
521
|
+
meta = self.get_meta()
|
|
522
|
+
self._version = meta.version
|
|
523
|
+
|
|
524
|
+
def get_meta(self) -> NgioLabelsGroupMeta:
|
|
525
|
+
"""Retrieve the NGIO labels group metadata."""
|
|
526
|
+
return get_ngio_labels_group_meta(
|
|
527
|
+
group_handler=self._group_handler,
|
|
528
|
+
version=self._version,
|
|
529
|
+
)
|
|
530
|
+
|
|
531
|
+
def update_meta(self, ngio_meta: NgioLabelsGroupMeta) -> None:
|
|
532
|
+
"""Update the NGIO labels group metadata."""
|
|
533
|
+
update_ngio_labels_group_meta(
|
|
534
|
+
group_handler=self._group_handler,
|
|
535
|
+
ngio_meta=ngio_meta,
|
|
536
|
+
)
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"""ngio internal specs module.
|
|
2
|
+
|
|
3
|
+
Since the OME-Zarr specification are still evolving, this module provides a
|
|
4
|
+
set of classes to internally handle the metadata.
|
|
5
|
+
|
|
6
|
+
This models can be tr
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from ngio.ome_zarr_meta.ngio_specs._axes import (
|
|
10
|
+
AxesHandler,
|
|
11
|
+
AxesSetup,
|
|
12
|
+
Axis,
|
|
13
|
+
AxisType,
|
|
14
|
+
DefaultSpaceUnit,
|
|
15
|
+
DefaultTimeUnit,
|
|
16
|
+
SpaceUnits,
|
|
17
|
+
TimeUnits,
|
|
18
|
+
build_canonical_axes_handler,
|
|
19
|
+
canonical_axes_order,
|
|
20
|
+
canonical_label_axes_order,
|
|
21
|
+
)
|
|
22
|
+
from ngio.ome_zarr_meta.ngio_specs._channels import (
|
|
23
|
+
Channel,
|
|
24
|
+
ChannelsMeta,
|
|
25
|
+
ChannelVisualisation,
|
|
26
|
+
NgioColors,
|
|
27
|
+
default_channel_name,
|
|
28
|
+
)
|
|
29
|
+
from ngio.ome_zarr_meta.ngio_specs._dataset import Dataset
|
|
30
|
+
from ngio.ome_zarr_meta.ngio_specs._ngio_hcs import (
|
|
31
|
+
ImageInWellPath,
|
|
32
|
+
NgioPlateMeta,
|
|
33
|
+
NgioWellMeta,
|
|
34
|
+
path_in_well_validation,
|
|
35
|
+
)
|
|
36
|
+
from ngio.ome_zarr_meta.ngio_specs._ngio_image import (
|
|
37
|
+
DefaultNgffVersion,
|
|
38
|
+
ImageLabelSource,
|
|
39
|
+
NgffVersions,
|
|
40
|
+
NgioImageLabelMeta,
|
|
41
|
+
NgioImageMeta,
|
|
42
|
+
NgioLabelMeta,
|
|
43
|
+
NgioLabelsGroupMeta,
|
|
44
|
+
)
|
|
45
|
+
from ngio.ome_zarr_meta.ngio_specs._pixel_size import PixelSize
|
|
46
|
+
|
|
47
|
+
__all__ = [
|
|
48
|
+
"AxesHandler",
|
|
49
|
+
"AxesSetup",
|
|
50
|
+
"Axis",
|
|
51
|
+
"AxisType",
|
|
52
|
+
"Channel",
|
|
53
|
+
"ChannelVisualisation",
|
|
54
|
+
"ChannelsMeta",
|
|
55
|
+
"Dataset",
|
|
56
|
+
"DefaultNgffVersion",
|
|
57
|
+
"DefaultSpaceUnit",
|
|
58
|
+
"DefaultTimeUnit",
|
|
59
|
+
"ImageInWellPath",
|
|
60
|
+
"ImageLabelSource",
|
|
61
|
+
"NgffVersions",
|
|
62
|
+
"NgioColors",
|
|
63
|
+
"NgioImageLabelMeta",
|
|
64
|
+
"NgioImageMeta",
|
|
65
|
+
"NgioLabelMeta",
|
|
66
|
+
"NgioLabelsGroupMeta",
|
|
67
|
+
"NgioPlateMeta",
|
|
68
|
+
"NgioWellMeta",
|
|
69
|
+
"PixelSize",
|
|
70
|
+
"SpaceUnits",
|
|
71
|
+
"TimeUnits",
|
|
72
|
+
"build_canonical_axes_handler",
|
|
73
|
+
"canonical_axes_order",
|
|
74
|
+
"canonical_label_axes_order",
|
|
75
|
+
"default_channel_name",
|
|
76
|
+
"path_in_well_validation",
|
|
77
|
+
]
|