ngio 0.2.0a2__py3-none-any.whl → 0.5.0b4__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 +40 -12
- ngio/common/__init__.py +16 -32
- ngio/common/_dimensions.py +270 -48
- ngio/common/_masking_roi.py +153 -0
- ngio/common/_pyramid.py +267 -73
- ngio/common/_roi.py +290 -66
- ngio/common/_synt_images_utils.py +101 -0
- ngio/common/_zoom.py +54 -22
- 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 +17 -58
- ngio/hcs/_plate.py +1354 -0
- ngio/images/__init__.py +30 -9
- ngio/images/_abstract_image.py +968 -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 +417 -0
- ngio/images/_masked_image.py +531 -0
- ngio/images/_ome_zarr_container.py +1235 -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 +39 -15
- ngio/ome_zarr_meta/_meta_handlers.py +490 -96
- ngio/ome_zarr_meta/ngio_specs/__init__.py +24 -10
- ngio/ome_zarr_meta/ngio_specs/_axes.py +268 -234
- ngio/ome_zarr_meta/ngio_specs/_channels.py +125 -41
- ngio/ome_zarr_meta/ngio_specs/_dataset.py +42 -87
- ngio/ome_zarr_meta/ngio_specs/_ngio_hcs.py +536 -2
- ngio/ome_zarr_meta/ngio_specs/_ngio_image.py +202 -198
- ngio/ome_zarr_meta/ngio_specs/_pixel_size.py +72 -34
- ngio/ome_zarr_meta/v04/__init__.py +21 -5
- ngio/ome_zarr_meta/v04/_custom_models.py +18 -0
- ngio/ome_zarr_meta/v04/{_v04_spec_utils.py → _v04_spec.py} +151 -90
- 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 +20 -4
- ngio/tables/_abstract_table.py +270 -0
- ngio/tables/_tables_container.py +449 -0
- ngio/tables/backends/__init__.py +50 -1
- ngio/tables/backends/_abstract_backend.py +200 -31
- ngio/tables/backends/_anndata.py +139 -0
- ngio/tables/backends/_anndata_utils.py +10 -114
- 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 +162 -38
- ngio/tables/backends/_utils.py +608 -0
- ngio/tables/v1/__init__.py +19 -4
- ngio/tables/v1/_condition_table.py +71 -0
- ngio/tables/v1/_feature_table.py +79 -115
- ngio/tables/v1/_generic_table.py +21 -90
- ngio/tables/v1/_roi_table.py +486 -137
- ngio/transforms/__init__.py +5 -0
- ngio/transforms/_zoom.py +19 -0
- ngio/utils/__init__.py +16 -14
- ngio/utils/_cache.py +48 -0
- ngio/utils/_datasets.py +121 -13
- ngio/utils/_fractal_fsspec_store.py +42 -0
- ngio/utils/_zarr_utils.py +374 -218
- ngio-0.5.0b4.dist-info/METADATA +147 -0
- ngio-0.5.0b4.dist-info/RECORD +88 -0
- {ngio-0.2.0a2.dist-info → ngio-0.5.0b4.dist-info}/WHEEL +1 -1
- ngio/common/_array_pipe.py +0 -160
- ngio/common/_axes_transforms.py +0 -63
- ngio/common/_common_types.py +0 -5
- ngio/common/_slicer.py +0 -97
- ngio/images/abstract_image.py +0 -240
- ngio/images/create.py +0 -251
- ngio/images/image.py +0 -389
- ngio/images/label.py +0 -236
- ngio/images/omezarr_container.py +0 -535
- ngio/ome_zarr_meta/_generic_handlers.py +0 -320
- ngio/ome_zarr_meta/v04/_meta_handlers.py +0 -54
- ngio/tables/_validators.py +0 -192
- ngio/tables/backends/_anndata_v1.py +0 -75
- ngio/tables/backends/_json_v1.py +0 -56
- ngio/tables/tables_container.py +0 -300
- ngio/tables/v1/_masking_roi_table.py +0 -175
- ngio/utils/_logger.py +0 -29
- ngio-0.2.0a2.dist-info/METADATA +0 -95
- ngio-0.2.0a2.dist-info/RECORD +0 -53
- {ngio-0.2.0a2.dist-info → ngio-0.5.0b4.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,142 +1,536 @@
|
|
|
1
|
-
|
|
1
|
+
"""Base class for handling OME-NGFF metadata in Zarr groups."""
|
|
2
2
|
|
|
3
|
-
from
|
|
3
|
+
from collections.abc import Callable
|
|
4
|
+
from typing import TypeVar
|
|
4
5
|
|
|
5
|
-
from ngio.ome_zarr_meta.
|
|
6
|
-
|
|
7
|
-
|
|
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,
|
|
8
38
|
)
|
|
9
|
-
from ngio.ome_zarr_meta.ngio_specs import AxesSetup
|
|
10
|
-
from ngio.ome_zarr_meta.v04 import V04ImageMetaHandler, V04LabelMetaHandler
|
|
11
39
|
from ngio.utils import (
|
|
12
|
-
AccessModeLiteral,
|
|
13
40
|
NgioValidationError,
|
|
14
41
|
NgioValueError,
|
|
15
|
-
StoreOrGroup,
|
|
16
42
|
ZarrGroupHandler,
|
|
17
43
|
)
|
|
18
44
|
|
|
19
|
-
|
|
20
|
-
|
|
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,
|
|
21
70
|
)
|
|
22
71
|
|
|
23
72
|
|
|
24
|
-
|
|
25
|
-
|
|
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
|
+
|
|
26
203
|
|
|
27
|
-
|
|
28
|
-
|
|
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.
|
|
29
209
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
cls._instance = super().__new__(cls)
|
|
34
|
-
cls._instance._implemented_handlers = {}
|
|
35
|
-
return cls._instance
|
|
210
|
+
Args:
|
|
211
|
+
group_handler (ZarrGroupHandler): The Zarr group handler.
|
|
212
|
+
ngio_meta (NgioImageMeta): The new NGIO image metadata.
|
|
36
213
|
|
|
37
|
-
|
|
38
|
-
|
|
214
|
+
"""
|
|
215
|
+
update_ngio_meta(
|
|
216
|
+
group_handler=group_handler,
|
|
217
|
+
ngio_meta=ngio_meta,
|
|
218
|
+
)
|
|
39
219
|
|
|
40
|
-
The versions are returned in descending order.
|
|
41
|
-
such that the latest version is the first in the list and the fist to be
|
|
42
|
-
checked.
|
|
43
|
-
"""
|
|
44
|
-
return list(reversed(self._implemented_handlers.keys()))
|
|
45
220
|
|
|
46
|
-
|
|
221
|
+
class ImageMetaHandler:
|
|
222
|
+
def __init__(
|
|
47
223
|
self,
|
|
48
224
|
group_handler: ZarrGroupHandler,
|
|
225
|
+
version: str | None = None,
|
|
49
226
|
axes_setup: AxesSetup | None = None,
|
|
50
227
|
allow_non_canonical_axes: bool = False,
|
|
51
228
|
strict_canonical_order: bool = True,
|
|
52
|
-
)
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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,
|
|
72
249
|
)
|
|
73
250
|
|
|
74
|
-
def
|
|
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__(
|
|
75
307
|
self,
|
|
76
|
-
version: str,
|
|
77
308
|
group_handler: ZarrGroupHandler,
|
|
309
|
+
version: str | None = None,
|
|
78
310
|
axes_setup: AxesSetup | None = None,
|
|
79
311
|
allow_non_canonical_axes: bool = False,
|
|
80
312
|
strict_canonical_order: bool = True,
|
|
81
|
-
)
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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,
|
|
90
333
|
)
|
|
91
334
|
|
|
92
|
-
def
|
|
93
|
-
|
|
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,
|
|
94
385
|
):
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
raise NgioValueError(f"Image handler for version {key} already exists.")
|
|
98
|
-
self._implemented_handlers[key] = handler
|
|
386
|
+
self._group_handler = group_handler
|
|
387
|
+
self._version = version
|
|
99
388
|
|
|
389
|
+
# Validate metadata
|
|
390
|
+
_ = self.get_meta()
|
|
391
|
+
# Store the resolved version
|
|
392
|
+
# self._version = meta.version
|
|
100
393
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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
|
+
)
|
|
104
407
|
|
|
105
408
|
|
|
106
|
-
|
|
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.
|
|
107
414
|
|
|
415
|
+
Args:
|
|
416
|
+
group_handler (ZarrGroupHandler): The Zarr group handler.
|
|
417
|
+
version (str | None): Optional NGFF version to use for decoding.
|
|
108
418
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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
|
+
)
|
|
112
427
|
|
|
113
428
|
|
|
114
|
-
|
|
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.
|
|
115
434
|
|
|
435
|
+
Args:
|
|
436
|
+
group_handler (ZarrGroupHandler): The Zarr group handler.
|
|
437
|
+
ngio_meta (NgioWellMeta): The new NGIO well metadata.
|
|
116
438
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
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.
|
|
126
480
|
|
|
127
481
|
Args:
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
allow_non_canonical_axes: Whether to allow non-canonical axes.
|
|
134
|
-
strict_canonical_order: Whether to enforce strict canonical order.
|
|
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.
|
|
135
487
|
"""
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
allow_non_canonical_axes=allow_non_canonical_axes,
|
|
141
|
-
strict_canonical_order=strict_canonical_order,
|
|
488
|
+
return get_ngio_meta(
|
|
489
|
+
group_handler=group_handler,
|
|
490
|
+
meta_type=NgioLabelsGroupMeta,
|
|
491
|
+
version=version,
|
|
142
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
|
+
)
|