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.
Files changed (88) hide show
  1. ngio/__init__.py +69 -0
  2. ngio/common/__init__.py +28 -0
  3. ngio/common/_dimensions.py +335 -0
  4. ngio/common/_masking_roi.py +153 -0
  5. ngio/common/_pyramid.py +408 -0
  6. ngio/common/_roi.py +315 -0
  7. ngio/common/_synt_images_utils.py +101 -0
  8. ngio/common/_zoom.py +188 -0
  9. ngio/experimental/__init__.py +5 -0
  10. ngio/experimental/iterators/__init__.py +15 -0
  11. ngio/experimental/iterators/_abstract_iterator.py +390 -0
  12. ngio/experimental/iterators/_feature.py +189 -0
  13. ngio/experimental/iterators/_image_processing.py +130 -0
  14. ngio/experimental/iterators/_mappers.py +48 -0
  15. ngio/experimental/iterators/_rois_utils.py +126 -0
  16. ngio/experimental/iterators/_segmentation.py +235 -0
  17. ngio/hcs/__init__.py +19 -0
  18. ngio/hcs/_plate.py +1354 -0
  19. ngio/images/__init__.py +44 -0
  20. ngio/images/_abstract_image.py +967 -0
  21. ngio/images/_create_synt_container.py +132 -0
  22. ngio/images/_create_utils.py +423 -0
  23. ngio/images/_image.py +926 -0
  24. ngio/images/_label.py +411 -0
  25. ngio/images/_masked_image.py +531 -0
  26. ngio/images/_ome_zarr_container.py +1237 -0
  27. ngio/images/_table_ops.py +471 -0
  28. ngio/io_pipes/__init__.py +75 -0
  29. ngio/io_pipes/_io_pipes.py +361 -0
  30. ngio/io_pipes/_io_pipes_masked.py +488 -0
  31. ngio/io_pipes/_io_pipes_roi.py +146 -0
  32. ngio/io_pipes/_io_pipes_types.py +56 -0
  33. ngio/io_pipes/_match_shape.py +377 -0
  34. ngio/io_pipes/_ops_axes.py +344 -0
  35. ngio/io_pipes/_ops_slices.py +411 -0
  36. ngio/io_pipes/_ops_slices_utils.py +199 -0
  37. ngio/io_pipes/_ops_transforms.py +104 -0
  38. ngio/io_pipes/_zoom_transform.py +180 -0
  39. ngio/ome_zarr_meta/__init__.py +65 -0
  40. ngio/ome_zarr_meta/_meta_handlers.py +536 -0
  41. ngio/ome_zarr_meta/ngio_specs/__init__.py +77 -0
  42. ngio/ome_zarr_meta/ngio_specs/_axes.py +515 -0
  43. ngio/ome_zarr_meta/ngio_specs/_channels.py +462 -0
  44. ngio/ome_zarr_meta/ngio_specs/_dataset.py +89 -0
  45. ngio/ome_zarr_meta/ngio_specs/_ngio_hcs.py +539 -0
  46. ngio/ome_zarr_meta/ngio_specs/_ngio_image.py +438 -0
  47. ngio/ome_zarr_meta/ngio_specs/_pixel_size.py +122 -0
  48. ngio/ome_zarr_meta/v04/__init__.py +27 -0
  49. ngio/ome_zarr_meta/v04/_custom_models.py +18 -0
  50. ngio/ome_zarr_meta/v04/_v04_spec.py +473 -0
  51. ngio/ome_zarr_meta/v05/__init__.py +27 -0
  52. ngio/ome_zarr_meta/v05/_custom_models.py +18 -0
  53. ngio/ome_zarr_meta/v05/_v05_spec.py +511 -0
  54. ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/mask.png +0 -0
  55. ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/nuclei.png +0 -0
  56. ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/raw.jpg +0 -0
  57. ngio/resources/__init__.py +55 -0
  58. ngio/resources/resource_model.py +36 -0
  59. ngio/tables/__init__.py +43 -0
  60. ngio/tables/_abstract_table.py +270 -0
  61. ngio/tables/_tables_container.py +449 -0
  62. ngio/tables/backends/__init__.py +57 -0
  63. ngio/tables/backends/_abstract_backend.py +240 -0
  64. ngio/tables/backends/_anndata.py +139 -0
  65. ngio/tables/backends/_anndata_utils.py +90 -0
  66. ngio/tables/backends/_csv.py +19 -0
  67. ngio/tables/backends/_json.py +92 -0
  68. ngio/tables/backends/_parquet.py +19 -0
  69. ngio/tables/backends/_py_arrow_backends.py +222 -0
  70. ngio/tables/backends/_table_backends.py +226 -0
  71. ngio/tables/backends/_utils.py +608 -0
  72. ngio/tables/v1/__init__.py +23 -0
  73. ngio/tables/v1/_condition_table.py +71 -0
  74. ngio/tables/v1/_feature_table.py +125 -0
  75. ngio/tables/v1/_generic_table.py +49 -0
  76. ngio/tables/v1/_roi_table.py +575 -0
  77. ngio/transforms/__init__.py +5 -0
  78. ngio/transforms/_zoom.py +19 -0
  79. ngio/utils/__init__.py +45 -0
  80. ngio/utils/_cache.py +48 -0
  81. ngio/utils/_datasets.py +165 -0
  82. ngio/utils/_errors.py +37 -0
  83. ngio/utils/_fractal_fsspec_store.py +42 -0
  84. ngio/utils/_zarr_utils.py +534 -0
  85. ngio-0.5.0b6.dist-info/METADATA +148 -0
  86. ngio-0.5.0b6.dist-info/RECORD +88 -0
  87. ngio-0.5.0b6.dist-info/WHEEL +4 -0
  88. 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
+ ]