ngio 0.5.0b7__py3-none-any.whl → 0.5.1__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/common/_masking_roi.py +18 -5
- ngio/hcs/_plate.py +30 -24
- ngio/images/_abstract_image.py +65 -12
- ngio/images/_create_synt_container.py +1 -1
- ngio/images/_create_utils.py +60 -61
- ngio/images/_image.py +342 -86
- ngio/images/_label.py +31 -31
- ngio/images/_masked_image.py +2 -2
- ngio/images/_ome_zarr_container.py +247 -96
- ngio/io_pipes/_match_shape.py +10 -14
- ngio/io_pipes/_ops_slices.py +6 -4
- ngio/io_pipes/_ops_slices_utils.py +8 -7
- ngio/ome_zarr_meta/_meta_handlers.py +2 -26
- ngio/ome_zarr_meta/ngio_specs/__init__.py +2 -0
- ngio/ome_zarr_meta/ngio_specs/_axes.py +161 -58
- ngio/ome_zarr_meta/ngio_specs/_ngio_hcs.py +78 -32
- ngio/ome_zarr_meta/ngio_specs/_ngio_image.py +36 -0
- ngio/ome_zarr_meta/v04/_v04_spec.py +2 -21
- ngio/ome_zarr_meta/v05/_v05_spec.py +4 -22
- ngio/resources/__init__.py +1 -1
- ngio/resources/resource_model.py +1 -1
- ngio/tables/_tables_container.py +39 -7
- ngio/tables/v1/_roi_table.py +4 -4
- ngio/utils/_zarr_utils.py +8 -15
- {ngio-0.5.0b7.dist-info → ngio-0.5.1.dist-info}/METADATA +3 -2
- {ngio-0.5.0b7.dist-info → ngio-0.5.1.dist-info}/RECORD +28 -28
- {ngio-0.5.0b7.dist-info → ngio-0.5.1.dist-info}/WHEEL +0 -0
- {ngio-0.5.0b7.dist-info → ngio-0.5.1.dist-info}/licenses/LICENSE +0 -0
ngio/images/_label.py
CHANGED
|
@@ -18,12 +18,9 @@ from ngio.ome_zarr_meta import (
|
|
|
18
18
|
update_ngio_labels_group_meta,
|
|
19
19
|
)
|
|
20
20
|
from ngio.ome_zarr_meta.ngio_specs import (
|
|
21
|
-
DefaultSpaceUnit,
|
|
22
|
-
DefaultTimeUnit,
|
|
23
21
|
NgffVersions,
|
|
24
|
-
SpaceUnits,
|
|
25
|
-
TimeUnits,
|
|
26
22
|
)
|
|
23
|
+
from ngio.ome_zarr_meta.ngio_specs._axes import AxesSetup
|
|
27
24
|
from ngio.tables import MaskingRoiTable
|
|
28
25
|
from ngio.utils import (
|
|
29
26
|
NgioValidationError,
|
|
@@ -49,7 +46,7 @@ class Label(AbstractImage):
|
|
|
49
46
|
self,
|
|
50
47
|
group_handler: ZarrGroupHandler,
|
|
51
48
|
path: str,
|
|
52
|
-
meta_handler: LabelMetaHandler
|
|
49
|
+
meta_handler: LabelMetaHandler,
|
|
53
50
|
) -> None:
|
|
54
51
|
"""Initialize the Image at a single level.
|
|
55
52
|
|
|
@@ -59,8 +56,6 @@ class Label(AbstractImage):
|
|
|
59
56
|
meta_handler: The image metadata handler.
|
|
60
57
|
|
|
61
58
|
"""
|
|
62
|
-
if meta_handler is None:
|
|
63
|
-
meta_handler = LabelMetaHandler(group_handler)
|
|
64
59
|
super().__init__(
|
|
65
60
|
group_handler=group_handler, path=path, meta_handler=meta_handler
|
|
66
61
|
)
|
|
@@ -82,21 +77,6 @@ class Label(AbstractImage):
|
|
|
82
77
|
assert isinstance(meta, NgioLabelMeta)
|
|
83
78
|
return meta
|
|
84
79
|
|
|
85
|
-
def set_axes_unit(
|
|
86
|
-
self,
|
|
87
|
-
space_unit: SpaceUnits = DefaultSpaceUnit,
|
|
88
|
-
time_unit: TimeUnits = DefaultTimeUnit,
|
|
89
|
-
) -> None:
|
|
90
|
-
"""Set the axes unit of the image.
|
|
91
|
-
|
|
92
|
-
Args:
|
|
93
|
-
space_unit (SpaceUnits): The space unit of the image.
|
|
94
|
-
time_unit (TimeUnits): The time unit of the image.
|
|
95
|
-
"""
|
|
96
|
-
meta = self.meta
|
|
97
|
-
meta = meta.to_units(space_unit=space_unit, time_unit=time_unit)
|
|
98
|
-
self.meta_handler.update_meta(meta)
|
|
99
|
-
|
|
100
80
|
def build_masking_roi_table(
|
|
101
81
|
self, axes_order: Sequence[str] | None = None
|
|
102
82
|
) -> MaskingRoiTable:
|
|
@@ -120,10 +100,12 @@ class LabelsContainer:
|
|
|
120
100
|
def __init__(
|
|
121
101
|
self,
|
|
122
102
|
group_handler: ZarrGroupHandler,
|
|
103
|
+
axes_setup: AxesSetup | None = None,
|
|
123
104
|
ngff_version: NgffVersions | None = None,
|
|
124
105
|
) -> None:
|
|
125
106
|
"""Initialize the LabelGroupHandler."""
|
|
126
107
|
self._group_handler = group_handler
|
|
108
|
+
self._axes_setup = axes_setup or AxesSetup()
|
|
127
109
|
# If the group is empty, initialize the metadata
|
|
128
110
|
try:
|
|
129
111
|
self._meta_handler = LabelsGroupMetaHandler(group_handler)
|
|
@@ -147,8 +129,13 @@ class LabelsContainer:
|
|
|
147
129
|
meta = self._meta_handler.get_meta()
|
|
148
130
|
return meta
|
|
149
131
|
|
|
132
|
+
@property
|
|
133
|
+
def axes_setup(self) -> AxesSetup:
|
|
134
|
+
"""Return the axes setup."""
|
|
135
|
+
return self._axes_setup
|
|
136
|
+
|
|
150
137
|
def list(self) -> list[str]:
|
|
151
|
-
"""
|
|
138
|
+
"""Return the list of label names in the group."""
|
|
152
139
|
return self.meta.labels
|
|
153
140
|
|
|
154
141
|
def get(
|
|
@@ -176,13 +163,17 @@ class LabelsContainer:
|
|
|
176
163
|
)
|
|
177
164
|
|
|
178
165
|
group_handler = self._group_handler.get_handler(name)
|
|
179
|
-
label_meta_handler = LabelMetaHandler(group_handler)
|
|
166
|
+
label_meta_handler = LabelMetaHandler(group_handler, axes_setup=self.axes_setup)
|
|
180
167
|
path = (
|
|
181
168
|
label_meta_handler.get_meta()
|
|
182
169
|
.get_dataset(path=path, pixel_size=pixel_size, strict=strict)
|
|
183
170
|
.path
|
|
184
171
|
)
|
|
185
|
-
return Label(
|
|
172
|
+
return Label(
|
|
173
|
+
group_handler=group_handler,
|
|
174
|
+
path=path,
|
|
175
|
+
meta_handler=label_meta_handler,
|
|
176
|
+
)
|
|
186
177
|
|
|
187
178
|
def delete(self, name: str, missing_ok: bool = False) -> None:
|
|
188
179
|
"""Delete a label from the group.
|
|
@@ -282,7 +273,6 @@ class LabelsContainer:
|
|
|
282
273
|
)
|
|
283
274
|
|
|
284
275
|
label_group = self._group_handler.get_group(name, create_mode=True)
|
|
285
|
-
|
|
286
276
|
derive_label(
|
|
287
277
|
ref_image=ref_image,
|
|
288
278
|
store=label_group,
|
|
@@ -339,7 +329,7 @@ def derive_label(
|
|
|
339
329
|
# Deprecated arguments
|
|
340
330
|
labels: Sequence[str] | None = None,
|
|
341
331
|
pixel_size: PixelSize | None = None,
|
|
342
|
-
) -> ZarrGroupHandler:
|
|
332
|
+
) -> tuple[ZarrGroupHandler, AxesSetup]:
|
|
343
333
|
"""Derive a new OME-Zarr label from an existing image or label.
|
|
344
334
|
|
|
345
335
|
If a kwarg is not provided, the value from the reference image will be used.
|
|
@@ -378,12 +368,13 @@ def derive_label(
|
|
|
378
368
|
and time_spacing instead.
|
|
379
369
|
|
|
380
370
|
Returns:
|
|
381
|
-
ZarrGroupHandler: The group handler of the new label
|
|
371
|
+
tuple[ZarrGroupHandler, AxesSetup]: The group handler of the new label
|
|
372
|
+
and the axes setup.
|
|
382
373
|
|
|
383
374
|
"""
|
|
384
375
|
if dtype is None and isinstance(ref_image, Image):
|
|
385
376
|
dtype = "uint32"
|
|
386
|
-
group_handler = abstract_derive(
|
|
377
|
+
group_handler, axes_setup = abstract_derive(
|
|
387
378
|
ref_image=ref_image,
|
|
388
379
|
meta_type=NgioLabelMeta,
|
|
389
380
|
store=store,
|
|
@@ -406,13 +397,22 @@ def derive_label(
|
|
|
406
397
|
labels=labels,
|
|
407
398
|
pixel_size=pixel_size,
|
|
408
399
|
)
|
|
409
|
-
return group_handler
|
|
400
|
+
return group_handler, axes_setup
|
|
410
401
|
|
|
411
402
|
|
|
412
403
|
def build_masking_roi_table(
|
|
413
404
|
label: Label, axes_order: Sequence[str] | None = None
|
|
414
405
|
) -> MaskingRoiTable:
|
|
415
|
-
"""Compute the masking ROI table for a label.
|
|
406
|
+
"""Compute the masking ROI table for a label.
|
|
407
|
+
|
|
408
|
+
Args:
|
|
409
|
+
label: The label to compute the masking ROI table for.
|
|
410
|
+
axes_order: The order of axes for the computation. If None,
|
|
411
|
+
uses the label's default axes order.
|
|
412
|
+
|
|
413
|
+
Returns:
|
|
414
|
+
A MaskingRoiTable containing ROIs for each label in the segmentation.
|
|
415
|
+
"""
|
|
416
416
|
axes_order = axes_order or label.axes
|
|
417
417
|
array = label.get_as_dask(axes_order=axes_order)
|
|
418
418
|
rois = compute_masking_roi(array, label.pixel_size, axes_order=axes_order)
|
ngio/images/_masked_image.py
CHANGED
|
@@ -34,7 +34,7 @@ class MaskedImage(Image):
|
|
|
34
34
|
self,
|
|
35
35
|
group_handler: ZarrGroupHandler,
|
|
36
36
|
path: str,
|
|
37
|
-
meta_handler: ImageMetaHandler
|
|
37
|
+
meta_handler: ImageMetaHandler,
|
|
38
38
|
label: Label,
|
|
39
39
|
masking_roi_table: MaskingRoiTable,
|
|
40
40
|
) -> None:
|
|
@@ -299,7 +299,7 @@ class MaskedLabel(Label):
|
|
|
299
299
|
self,
|
|
300
300
|
group_handler: ZarrGroupHandler,
|
|
301
301
|
path: str,
|
|
302
|
-
meta_handler: LabelMetaHandler
|
|
302
|
+
meta_handler: LabelMetaHandler,
|
|
303
303
|
label: Label,
|
|
304
304
|
masking_roi_table: MaskingRoiTable,
|
|
305
305
|
) -> None:
|