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/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 | None,
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
- """Create the /labels group if it doesn't exist."""
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(group_handler, path, label_meta_handler)
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)
@@ -34,7 +34,7 @@ class MaskedImage(Image):
34
34
  self,
35
35
  group_handler: ZarrGroupHandler,
36
36
  path: str,
37
- meta_handler: ImageMetaHandler | None,
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 | None,
302
+ meta_handler: LabelMetaHandler,
303
303
  label: Label,
304
304
  masking_roi_table: MaskingRoiTable,
305
305
  ) -> None: