ngio 0.5.0a2__py3-none-any.whl → 0.5.0a3__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 +2 -2
- ngio/common/__init__.py +11 -6
- ngio/common/_masking_roi.py +12 -41
- ngio/common/_pyramid.py +206 -76
- ngio/common/_roi.py +257 -329
- ngio/experimental/iterators/_feature.py +3 -3
- ngio/experimental/iterators/_rois_utils.py +10 -11
- ngio/hcs/_plate.py +50 -43
- ngio/images/_abstract_image.py +417 -35
- ngio/images/_create_synt_container.py +35 -42
- ngio/images/_create_utils.py +423 -0
- ngio/images/_image.py +154 -176
- ngio/images/_label.py +144 -119
- ngio/images/_ome_zarr_container.py +361 -196
- ngio/io_pipes/_io_pipes.py +9 -9
- ngio/io_pipes/_io_pipes_masked.py +7 -7
- ngio/io_pipes/_io_pipes_roi.py +6 -6
- ngio/io_pipes/_io_pipes_types.py +3 -3
- ngio/io_pipes/_match_shape.py +5 -4
- ngio/io_pipes/_ops_slices_utils.py +8 -5
- ngio/ome_zarr_meta/__init__.py +15 -18
- ngio/ome_zarr_meta/_meta_handlers.py +334 -713
- ngio/ome_zarr_meta/ngio_specs/_axes.py +1 -0
- ngio/ome_zarr_meta/ngio_specs/_dataset.py +13 -22
- ngio/ome_zarr_meta/ngio_specs/_ngio_hcs.py +54 -61
- ngio/ome_zarr_meta/ngio_specs/_ngio_image.py +14 -68
- ngio/ome_zarr_meta/v04/__init__.py +1 -1
- ngio/ome_zarr_meta/v04/{_v04_spec_utils.py → _v04_spec.py} +16 -61
- ngio/ome_zarr_meta/v05/__init__.py +1 -1
- ngio/ome_zarr_meta/v05/{_v05_spec_utils.py → _v05_spec.py} +18 -61
- ngio/tables/_tables_container.py +2 -4
- ngio/tables/backends/_anndata.py +57 -8
- ngio/tables/backends/_anndata_utils.py +1 -6
- ngio/tables/backends/_csv.py +3 -19
- ngio/tables/backends/_json.py +10 -13
- ngio/tables/backends/_parquet.py +3 -31
- ngio/tables/backends/_py_arrow_backends.py +222 -0
- ngio/tables/v1/_roi_table.py +41 -24
- ngio/utils/__init__.py +4 -12
- ngio/utils/_zarr_utils.py +160 -53
- {ngio-0.5.0a2.dist-info → ngio-0.5.0a3.dist-info}/METADATA +6 -2
- {ngio-0.5.0a2.dist-info → ngio-0.5.0a3.dist-info}/RECORD +44 -45
- {ngio-0.5.0a2.dist-info → ngio-0.5.0a3.dist-info}/WHEEL +1 -1
- ngio/images/_create.py +0 -287
- ngio/tables/backends/_non_zarr_backends.py +0 -196
- ngio/utils/_logger.py +0 -50
- {ngio-0.5.0a2.dist-info → ngio-0.5.0a3.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from ngio import Roi
|
|
1
|
+
from ngio import Roi
|
|
2
2
|
from ngio.images._abstract_image import AbstractImage
|
|
3
3
|
|
|
4
4
|
|
|
@@ -48,18 +48,17 @@ def grid(
|
|
|
48
48
|
for z in range(0, z_dim, stride_z):
|
|
49
49
|
for y in range(0, y_dim, stride_y):
|
|
50
50
|
for x in range(0, x_dim, stride_x):
|
|
51
|
-
roi =
|
|
51
|
+
roi = Roi.from_values(
|
|
52
52
|
name=base_name,
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
t_length=size_t,
|
|
53
|
+
slices={
|
|
54
|
+
"x": (x, size_x),
|
|
55
|
+
"y": (y, size_y),
|
|
56
|
+
"z": (z, size_z),
|
|
57
|
+
"t": (t, size_t),
|
|
58
|
+
},
|
|
59
|
+
space="pixel",
|
|
61
60
|
)
|
|
62
|
-
new_rois.append(roi.
|
|
61
|
+
new_rois.append(roi.to_world(pixel_size=ref_image.pixel_size))
|
|
63
62
|
|
|
64
63
|
return rois_product(rois, new_rois)
|
|
65
64
|
|
ngio/hcs/_plate.py
CHANGED
|
@@ -19,11 +19,11 @@ from ngio.ome_zarr_meta import (
|
|
|
19
19
|
NgffVersions,
|
|
20
20
|
NgioPlateMeta,
|
|
21
21
|
NgioWellMeta,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
get_plate_meta_handler,
|
|
25
|
-
get_well_meta_handler,
|
|
22
|
+
PlateMetaHandler,
|
|
23
|
+
WellMetaHandler,
|
|
26
24
|
path_in_well_validation,
|
|
25
|
+
update_ngio_plate_meta,
|
|
26
|
+
update_ngio_well_meta,
|
|
27
27
|
)
|
|
28
28
|
from ngio.tables import (
|
|
29
29
|
ConditionTable,
|
|
@@ -41,17 +41,22 @@ from ngio.tables import (
|
|
|
41
41
|
from ngio.utils import (
|
|
42
42
|
AccessModeLiteral,
|
|
43
43
|
NgioCache,
|
|
44
|
+
NgioError,
|
|
44
45
|
NgioValueError,
|
|
45
46
|
StoreOrGroup,
|
|
46
47
|
ZarrGroupHandler,
|
|
47
48
|
)
|
|
48
49
|
|
|
49
50
|
|
|
50
|
-
def
|
|
51
|
+
def _try_get_table_container(
|
|
52
|
+
handler: ZarrGroupHandler, create_mode: bool = True
|
|
53
|
+
) -> TablesContainer | None:
|
|
51
54
|
"""Return a default table container."""
|
|
52
|
-
|
|
53
|
-
|
|
55
|
+
try:
|
|
56
|
+
table_handler = handler.get_handler("tables", create_mode=create_mode)
|
|
54
57
|
return TablesContainer(table_handler)
|
|
58
|
+
except NgioError:
|
|
59
|
+
return None
|
|
55
60
|
|
|
56
61
|
|
|
57
62
|
# Mock lock class that does nothing
|
|
@@ -77,7 +82,7 @@ class OmeZarrWell:
|
|
|
77
82
|
group_handler: The Zarr group handler that contains the Well.
|
|
78
83
|
"""
|
|
79
84
|
self._group_handler = group_handler
|
|
80
|
-
self._meta_handler =
|
|
85
|
+
self._meta_handler = WellMetaHandler(group_handler)
|
|
81
86
|
|
|
82
87
|
def __repr__(self) -> str:
|
|
83
88
|
"""Return a string representation of the well."""
|
|
@@ -91,7 +96,7 @@ class OmeZarrWell:
|
|
|
91
96
|
@property
|
|
92
97
|
def meta(self):
|
|
93
98
|
"""Return the metadata."""
|
|
94
|
-
return self._meta_handler.
|
|
99
|
+
return self._meta_handler.get_meta()
|
|
95
100
|
|
|
96
101
|
@property
|
|
97
102
|
def acquisition_ids(self) -> list[int]:
|
|
@@ -137,7 +142,7 @@ class OmeZarrWell:
|
|
|
137
142
|
Returns:
|
|
138
143
|
OmeZarrContainer: The image.
|
|
139
144
|
"""
|
|
140
|
-
handler = self._group_handler.
|
|
145
|
+
handler = self._group_handler.get_handler(image_path)
|
|
141
146
|
return OmeZarrContainer(handler)
|
|
142
147
|
|
|
143
148
|
def _add_image(
|
|
@@ -159,7 +164,7 @@ class OmeZarrWell:
|
|
|
159
164
|
meta = self.meta.add_image(
|
|
160
165
|
path=image_path, acquisition=acquisition_id, strict=strict
|
|
161
166
|
)
|
|
162
|
-
self.meta_handler.
|
|
167
|
+
self.meta_handler.update_meta(meta)
|
|
163
168
|
self.meta_handler._group_handler.clean_cache()
|
|
164
169
|
|
|
165
170
|
return self._group_handler.get_group(image_path, create_mode=True)
|
|
@@ -238,7 +243,7 @@ class OmeZarrPlate:
|
|
|
238
243
|
table_container: The tables container that contains plate level tables.
|
|
239
244
|
"""
|
|
240
245
|
self._group_handler = group_handler
|
|
241
|
-
self._meta_handler =
|
|
246
|
+
self._meta_handler = PlateMetaHandler(group_handler)
|
|
242
247
|
self._tables_container = table_container
|
|
243
248
|
self._wells_cache: NgioCache[OmeZarrWell] = NgioCache(
|
|
244
249
|
use_cache=self._group_handler.use_cache
|
|
@@ -259,7 +264,7 @@ class OmeZarrPlate:
|
|
|
259
264
|
@property
|
|
260
265
|
def meta(self):
|
|
261
266
|
"""Return the metadata."""
|
|
262
|
-
return self._meta_handler.
|
|
267
|
+
return self._meta_handler.get_meta()
|
|
263
268
|
|
|
264
269
|
@property
|
|
265
270
|
def columns(self) -> list[str]:
|
|
@@ -377,7 +382,7 @@ class OmeZarrPlate:
|
|
|
377
382
|
if cached_well is not None:
|
|
378
383
|
return cached_well
|
|
379
384
|
|
|
380
|
-
group_handler = self._group_handler.
|
|
385
|
+
group_handler = self._group_handler.get_handler(well_path)
|
|
381
386
|
self._wells_cache.set(well_path, OmeZarrWell(group_handler))
|
|
382
387
|
return OmeZarrWell(group_handler)
|
|
383
388
|
|
|
@@ -438,7 +443,7 @@ class OmeZarrPlate:
|
|
|
438
443
|
cached_image = self._images_cache.get(image_path)
|
|
439
444
|
if cached_image is not None:
|
|
440
445
|
return cached_image
|
|
441
|
-
img_group_handler = self._group_handler.
|
|
446
|
+
img_group_handler = self._group_handler.get_handler(image_path)
|
|
442
447
|
image = OmeZarrContainer(img_group_handler)
|
|
443
448
|
self._images_cache.set(image_path, image)
|
|
444
449
|
return image
|
|
@@ -529,7 +534,7 @@ class OmeZarrPlate:
|
|
|
529
534
|
for image_paths in self.well_images_paths(
|
|
530
535
|
row=row, column=column, acquisition=acquisition
|
|
531
536
|
):
|
|
532
|
-
group_handler = self._group_handler.
|
|
537
|
+
group_handler = self._group_handler.get_handler(image_paths)
|
|
533
538
|
images[image_paths] = OmeZarrContainer(group_handler)
|
|
534
539
|
return images
|
|
535
540
|
|
|
@@ -558,11 +563,11 @@ class OmeZarrPlate:
|
|
|
558
563
|
meta = meta.add_acquisition(
|
|
559
564
|
acquisition_id=acquisition_id, acquisition_name=acquisition_name
|
|
560
565
|
)
|
|
561
|
-
self.meta_handler.
|
|
566
|
+
self.meta_handler.update_meta(meta)
|
|
562
567
|
self.meta_handler._group_handler.clean_cache()
|
|
563
568
|
|
|
564
569
|
well_path = self.meta.get_well_path(row=row, column=column)
|
|
565
|
-
group_handler = self._group_handler.
|
|
570
|
+
group_handler = self._group_handler.get_handler(well_path)
|
|
566
571
|
|
|
567
572
|
if atomic:
|
|
568
573
|
well_lock = group_handler.lock
|
|
@@ -577,18 +582,19 @@ class OmeZarrPlate:
|
|
|
577
582
|
well_meta = NgioWellMeta.default_init()
|
|
578
583
|
version = self.meta.plate.version
|
|
579
584
|
version = version if version is not None else "0.4"
|
|
580
|
-
|
|
585
|
+
update_ngio_well_meta(group_handler, well_meta)
|
|
586
|
+
meta_handler = WellMetaHandler(group_handler=group_handler)
|
|
581
587
|
else:
|
|
582
|
-
meta_handler =
|
|
583
|
-
well_meta = meta_handler.
|
|
588
|
+
meta_handler = WellMetaHandler(group_handler=group_handler)
|
|
589
|
+
well_meta = meta_handler.get_meta()
|
|
584
590
|
|
|
585
|
-
group_handler = self._group_handler.
|
|
591
|
+
group_handler = self._group_handler.get_handler(well_path)
|
|
586
592
|
|
|
587
593
|
if image_path is not None:
|
|
588
594
|
well_meta = well_meta.add_image(
|
|
589
595
|
path=image_path, acquisition=acquisition_id, strict=False
|
|
590
596
|
)
|
|
591
|
-
meta_handler.
|
|
597
|
+
meta_handler.update_meta(well_meta)
|
|
592
598
|
meta_handler._group_handler.clean_cache()
|
|
593
599
|
|
|
594
600
|
if image_path is not None:
|
|
@@ -665,7 +671,7 @@ class OmeZarrPlate:
|
|
|
665
671
|
) -> "OmeZarrPlate":
|
|
666
672
|
"""Add a column to an ome-zarr plate."""
|
|
667
673
|
meta, _ = self.meta.add_column(column)
|
|
668
|
-
self.meta_handler.
|
|
674
|
+
self.meta_handler.update_meta(meta)
|
|
669
675
|
self.meta_handler._group_handler.clean_cache()
|
|
670
676
|
return self
|
|
671
677
|
|
|
@@ -675,7 +681,7 @@ class OmeZarrPlate:
|
|
|
675
681
|
) -> "OmeZarrPlate":
|
|
676
682
|
"""Add a row to an ome-zarr plate."""
|
|
677
683
|
meta, _ = self.meta.add_row(row)
|
|
678
|
-
self.meta_handler.
|
|
684
|
+
self.meta_handler.update_meta(meta)
|
|
679
685
|
self.meta_handler._group_handler.clean_cache()
|
|
680
686
|
return self
|
|
681
687
|
|
|
@@ -695,7 +701,7 @@ class OmeZarrPlate:
|
|
|
695
701
|
meta = self.meta.add_acquisition(
|
|
696
702
|
acquisition_id=acquisition_id, acquisition_name=acquisition_name
|
|
697
703
|
)
|
|
698
|
-
self.meta_handler.
|
|
704
|
+
self.meta_handler.update_meta(meta)
|
|
699
705
|
self.meta_handler._group_handler.clean_cache()
|
|
700
706
|
return self
|
|
701
707
|
|
|
@@ -714,7 +720,7 @@ class OmeZarrPlate:
|
|
|
714
720
|
with plate_lock:
|
|
715
721
|
meta = self.meta
|
|
716
722
|
meta = meta.remove_well(row, column)
|
|
717
|
-
self.meta_handler.
|
|
723
|
+
self.meta_handler.update_meta(meta)
|
|
718
724
|
self.meta_handler._group_handler.clean_cache()
|
|
719
725
|
|
|
720
726
|
def _remove_image(
|
|
@@ -735,7 +741,7 @@ class OmeZarrPlate:
|
|
|
735
741
|
with well_lock:
|
|
736
742
|
well_meta = well.meta
|
|
737
743
|
well_meta = well_meta.remove_image(path=image_path)
|
|
738
|
-
well.meta_handler.
|
|
744
|
+
well.meta_handler.update_meta(well_meta)
|
|
739
745
|
well.meta_handler._group_handler.clean_cache()
|
|
740
746
|
if len(well_meta.paths()) == 0:
|
|
741
747
|
self._remove_well(row, column, atomic=atomic)
|
|
@@ -797,13 +803,14 @@ class OmeZarrPlate:
|
|
|
797
803
|
overwrite=overwrite,
|
|
798
804
|
)
|
|
799
805
|
|
|
800
|
-
def _get_tables_container(self) -> TablesContainer | None:
|
|
806
|
+
def _get_tables_container(self, create_mode: bool = True) -> TablesContainer | None:
|
|
801
807
|
"""Return the tables container."""
|
|
802
|
-
if self._tables_container is None:
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
808
|
+
if self._tables_container is not None:
|
|
809
|
+
return self._tables_container
|
|
810
|
+
_tables_container = _try_get_table_container(
|
|
811
|
+
self._group_handler, create_mode=create_mode
|
|
812
|
+
)
|
|
813
|
+
self._tables_container = _tables_container
|
|
807
814
|
return self._tables_container
|
|
808
815
|
|
|
809
816
|
@property
|
|
@@ -818,17 +825,20 @@ class OmeZarrPlate:
|
|
|
818
825
|
|
|
819
826
|
def list_tables(self, filter_types: TypedTable | str | None = None) -> list[str]:
|
|
820
827
|
"""List all tables in the image."""
|
|
828
|
+
_tables_container = self._get_tables_container(create_mode=False)
|
|
829
|
+
if _tables_container is None:
|
|
830
|
+
return []
|
|
821
831
|
return self.tables_container.list(filter_types=filter_types)
|
|
822
832
|
|
|
823
833
|
def list_roi_tables(self) -> list[str]:
|
|
824
834
|
"""List all ROI tables in the image."""
|
|
825
|
-
masking_roi = self.tables_container.list(
|
|
826
|
-
filter_types="masking_roi_table",
|
|
827
|
-
)
|
|
828
835
|
roi = self.tables_container.list(
|
|
829
836
|
filter_types="roi_table",
|
|
830
837
|
)
|
|
831
|
-
|
|
838
|
+
masking_roi = self.tables_container.list(
|
|
839
|
+
filter_types="masking_roi_table",
|
|
840
|
+
)
|
|
841
|
+
return roi + masking_roi
|
|
832
842
|
|
|
833
843
|
def get_roi_table(self, name: str) -> RoiTable:
|
|
834
844
|
"""Get a ROI table from the image.
|
|
@@ -1153,8 +1163,7 @@ def _create_empty_plate_from_meta(
|
|
|
1153
1163
|
"""Create an empty OME-Zarr plate from metadata."""
|
|
1154
1164
|
mode = "w" if overwrite else "w-"
|
|
1155
1165
|
group_handler = ZarrGroupHandler(store=store, cache=True, mode=mode)
|
|
1156
|
-
|
|
1157
|
-
meta_handler.write_meta(meta)
|
|
1166
|
+
update_ngio_plate_meta(group_handler, meta)
|
|
1158
1167
|
return group_handler
|
|
1159
1168
|
|
|
1160
1169
|
|
|
@@ -1283,9 +1292,7 @@ def create_empty_well(
|
|
|
1283
1292
|
group_handler = ZarrGroupHandler(
|
|
1284
1293
|
store=store, cache=True, mode="w" if overwrite else "w-"
|
|
1285
1294
|
)
|
|
1286
|
-
|
|
1287
|
-
meta = NgioWellMeta.default_init()
|
|
1288
|
-
meta_handler.write_meta(meta)
|
|
1295
|
+
update_ngio_well_meta(group_handler, NgioWellMeta.default_init())
|
|
1289
1296
|
|
|
1290
1297
|
return open_ome_zarr_well(
|
|
1291
1298
|
store=store,
|