ngio 0.2.0b3__py3-none-any.whl → 0.2.2__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.
@@ -5,7 +5,12 @@ from functools import total_ordering
5
5
 
6
6
  import numpy as np
7
7
 
8
- from ngio.ome_zarr_meta.ngio_specs import SpaceUnits, TimeUnits
8
+ from ngio.ome_zarr_meta.ngio_specs import (
9
+ DefaultSpaceUnit,
10
+ DefaultTimeUnit,
11
+ SpaceUnits,
12
+ TimeUnits,
13
+ )
9
14
 
10
15
  ################################################################################################
11
16
  #
@@ -33,8 +38,8 @@ class PixelSize:
33
38
  y: float,
34
39
  z: float,
35
40
  t: float = 1,
36
- space_unit: SpaceUnits = SpaceUnits.micrometer,
37
- time_unit: TimeUnits | None = TimeUnits.s,
41
+ space_unit: SpaceUnits | str | None = DefaultSpaceUnit,
42
+ time_unit: TimeUnits | str | None = DefaultTimeUnit,
38
43
  ):
39
44
  """Initialize the pixel size."""
40
45
  self.x = _validate_type(x, "x")
@@ -42,13 +47,8 @@ class PixelSize:
42
47
  self.z = _validate_type(z, "z")
43
48
  self.t = _validate_type(t, "t")
44
49
 
45
- if not isinstance(space_unit, SpaceUnits):
46
- raise TypeError("space_unit must be of type SpaceUnits.")
47
- self.space_unit = space_unit
48
-
49
- if time_unit is not None and not isinstance(time_unit, TimeUnits):
50
- raise TypeError("time_unit must be of type TimeUnits.")
51
- self.time_unit = time_unit
50
+ self._space_unit = space_unit
51
+ self._time_unit = time_unit
52
52
 
53
53
  def __repr__(self) -> str:
54
54
  """Return a string representation of the pixel size."""
@@ -74,13 +74,30 @@ class PixelSize:
74
74
  """Check if one pixel size is less than the other."""
75
75
  if not isinstance(other, PixelSize):
76
76
  raise TypeError("Can only compare PixelSize with PixelSize.")
77
- ref = PixelSize(0, 0, 0, 0, self.space_unit, self.time_unit)
77
+ ref = PixelSize(
78
+ 0,
79
+ 0,
80
+ 0,
81
+ 0,
82
+ space_unit=self.space_unit,
83
+ time_unit=self.time_unit, # type: ignore
84
+ )
78
85
  return self.distance(ref) < other.distance(ref)
79
86
 
80
87
  def as_dict(self) -> dict:
81
88
  """Return the pixel size as a dictionary."""
82
89
  return {"t": self.t, "z": self.z, "y": self.y, "x": self.x}
83
90
 
91
+ @property
92
+ def space_unit(self) -> SpaceUnits | str | None:
93
+ """Return the space unit."""
94
+ return self._space_unit
95
+
96
+ @property
97
+ def time_unit(self) -> TimeUnits | str | None:
98
+ """Return the time unit."""
99
+ return self._time_unit
100
+
84
101
  @property
85
102
  def tzyx(self) -> tuple[float, float, float, float]:
86
103
  """Return the voxel size in t, z, y, x order."""
@@ -0,0 +1,18 @@
1
+ from typing import Annotated
2
+
3
+ from ome_zarr_models.v04.well import WellAttrs as WellAttrs04
4
+ from ome_zarr_models.v04.well_types import WellImage as WellImage04
5
+ from ome_zarr_models.v04.well_types import WellMeta as WellMeta04
6
+ from pydantic import SkipValidation
7
+
8
+
9
+ class CustomWellImage(WellImage04):
10
+ path: Annotated[str, SkipValidation]
11
+
12
+
13
+ class CustomWellMeta(WellMeta04):
14
+ images: list[CustomWellImage] # type: ignore[valid-type]
15
+
16
+
17
+ class CustomWellAttrs(WellAttrs04):
18
+ well: CustomWellMeta # type: ignore[valid-type]
@@ -23,7 +23,6 @@ from ome_zarr_models.v04.multiscales import Multiscale as MultiscaleV04
23
23
  from ome_zarr_models.v04.omero import Channel as ChannelV04
24
24
  from ome_zarr_models.v04.omero import Omero as OmeroV04
25
25
  from ome_zarr_models.v04.omero import Window as WindowV04
26
- from ome_zarr_models.v04.well import WellAttrs as WellAttrsV04
27
26
  from pydantic import ValidationError
28
27
 
29
28
  from ngio.ome_zarr_meta.ngio_specs import (
@@ -41,7 +40,7 @@ from ngio.ome_zarr_meta.ngio_specs import (
41
40
  NgioWellMeta,
42
41
  default_channel_name,
43
42
  )
44
- from ngio.ome_zarr_meta.ngio_specs._ngio_image import NgffVersion
43
+ from ngio.ome_zarr_meta.v04._custom_models import CustomWellAttrs as WellAttrsV04
45
44
 
46
45
 
47
46
  def _is_v04_image_meta(metadata: dict) -> ImageAttrsV04 | ValidationError:
@@ -290,7 +289,7 @@ def v04_to_ngio_label_meta(
290
289
  else:
291
290
  image_label_source = source.image
292
291
  image_label_source = ImageLabelSource(
293
- version=NgffVersion.v04,
292
+ version="0.4",
294
293
  source={"image": image_label_source},
295
294
  )
296
295
  name = v04_muliscale.name
@@ -322,7 +321,7 @@ def _ngio_to_v04_multiscale(name: str | None, datasets: list[Dataset]) -> Multis
322
321
  AxisV04(
323
322
  name=axis.on_disk_name,
324
323
  type=axis.axis_type.value if axis.axis_type is not None else None,
325
- unit=axis.unit.value if axis.unit is not None else None,
324
+ unit=axis.unit if axis.unit is not None else None,
326
325
  )
327
326
  )
328
327
 
ngio/tables/__init__.py CHANGED
@@ -4,7 +4,7 @@ from ngio.tables.backends import ImplementedTableBackends
4
4
  from ngio.tables.tables_container import (
5
5
  FeatureTable,
6
6
  GenericRoiTable,
7
- MaskingROITable,
7
+ MaskingRoiTable,
8
8
  RoiTable,
9
9
  Table,
10
10
  TablesContainer,
@@ -19,7 +19,7 @@ __all__ = [
19
19
  "GenericRoiTable",
20
20
  "GenericTable",
21
21
  "ImplementedTableBackends",
22
- "MaskingROITable",
22
+ "MaskingRoiTable",
23
23
  "RoiTable",
24
24
  "Table",
25
25
  "TablesContainer",
@@ -2,7 +2,7 @@
2
2
 
3
3
  from typing import Literal, Protocol
4
4
 
5
- from ngio.tables.v1 import FeatureTableV1, MaskingROITableV1, RoiTableV1
5
+ from ngio.tables.v1 import FeatureTableV1, MaskingRoiTableV1, RoiTableV1
6
6
  from ngio.tables.v1._generic_table import GenericTable
7
7
  from ngio.tables.v1._roi_table import _GenericRoiTableV1
8
8
  from ngio.utils import (
@@ -15,7 +15,7 @@ from ngio.utils import (
15
15
 
16
16
  GenericRoiTable = _GenericRoiTableV1
17
17
  RoiTable = RoiTableV1
18
- MaskingROITable = MaskingROITableV1
18
+ MaskingRoiTable = MaskingRoiTableV1
19
19
  FeatureTable = FeatureTableV1
20
20
 
21
21
 
@@ -253,7 +253,7 @@ class TablesContainer:
253
253
 
254
254
 
255
255
  ImplementedTables().add_implementation(RoiTableV1)
256
- ImplementedTables().add_implementation(MaskingROITableV1)
256
+ ImplementedTables().add_implementation(MaskingRoiTableV1)
257
257
  ImplementedTables().add_implementation(FeatureTableV1)
258
258
 
259
259
  ###################################################################################
@@ -2,6 +2,6 @@
2
2
 
3
3
  from ngio.tables.v1._feature_table import FeatureTableV1
4
4
  from ngio.tables.v1._generic_table import GenericTable
5
- from ngio.tables.v1._roi_table import MaskingROITableV1, RoiTableV1
5
+ from ngio.tables.v1._roi_table import MaskingRoiTableV1, RoiTableV1
6
6
 
7
- __all__ = ["FeatureTableV1", "GenericTable", "MaskingROITableV1", "RoiTableV1"]
7
+ __all__ = ["FeatureTableV1", "GenericTable", "MaskingRoiTableV1", "RoiTableV1"]
@@ -49,7 +49,6 @@ class FeatureTableV1:
49
49
  path = f"../labels/{reference_label}"
50
50
  self._meta = FeatureTableMeta(region=RegionMeta(path=path))
51
51
 
52
- self._reference_label = reference_label
53
52
  self._instance_key = "label"
54
53
  if dataframe is None:
55
54
  self._dataframe = None
@@ -59,6 +58,15 @@ class FeatureTableV1:
59
58
  )
60
59
  self._table_backend = None
61
60
 
61
+ def __repr__(self) -> str:
62
+ """Return a string representation of the table."""
63
+ num_rows = len(self.dataframe) if self.dataframe is not None else 0
64
+ num_columns = len(self.dataframe.columns) if self.dataframe is not None else 0
65
+ properties = f"num_rows={num_rows}, num_columns={num_columns}"
66
+ if self.reference_label is not None:
67
+ properties += f", reference_label={self.reference_label}"
68
+ return f"FeatureTableV1({properties})"
69
+
62
70
  @staticmethod
63
71
  def type() -> str:
64
72
  """Return the type of the table."""
@@ -79,6 +87,17 @@ class FeatureTableV1:
79
87
  return None
80
88
  return self._table_backend.backend_name()
81
89
 
90
+ @property
91
+ def reference_label(self) -> str | None:
92
+ """Return the reference label."""
93
+ path = self._meta.region
94
+ if path is None:
95
+ return None
96
+
97
+ path = path.path
98
+ path = path.split("/")[-1]
99
+ return path
100
+
82
101
  @property
83
102
  def dataframe(self) -> pd.DataFrame:
84
103
  """Return the table as a DataFrame."""
@@ -51,6 +51,16 @@ class GenericTable:
51
51
 
52
52
  self._table_backend = None
53
53
 
54
+ def __repr__(self) -> str:
55
+ """Return a string representation of the table."""
56
+ if self._dataframe is not None:
57
+ num_rows = len(self.dataframe)
58
+ num_columns = len(self.dataframe.columns)
59
+ prop = f"num_rows={num_rows}, num_columns={num_columns}, mode=dataframe"
60
+ else:
61
+ prop = "mode=anndata"
62
+ return f"GenericTable({prop})"
63
+
54
64
  @staticmethod
55
65
  def type() -> str:
56
66
  """Return the type of the table."""
@@ -12,7 +12,7 @@ from typing import Generic, Literal, TypeVar
12
12
  import pandas as pd
13
13
  from pydantic import BaseModel
14
14
 
15
- from ngio.common import WorldCooROI
15
+ from ngio.common import Roi
16
16
  from ngio.tables._validators import validate_columns
17
17
  from ngio.tables.backends import ImplementedTableBackends
18
18
  from ngio.utils import NgioValueError, ZarrGroupHandler
@@ -37,7 +37,7 @@ TRANSLATION_COLUMNS = ["translation_x", "translation_y", "translation_z"]
37
37
  OPTIONAL_COLUMNS = ORIGIN_COLUMNS + TRANSLATION_COLUMNS
38
38
 
39
39
 
40
- def _dataframe_to_rois(dataframe: pd.DataFrame) -> dict[str, WorldCooROI]:
40
+ def _dataframe_to_rois(dataframe: pd.DataFrame) -> dict[str, Roi]:
41
41
  """Convert a DataFrame to a WorldCooROI object."""
42
42
  rois = {}
43
43
  for key, row in dataframe.iterrows():
@@ -47,7 +47,7 @@ def _dataframe_to_rois(dataframe: pd.DataFrame) -> dict[str, WorldCooROI]:
47
47
  translation = {col: row.get(col, None) for col in TRANSLATION_COLUMNS}
48
48
  translation = dict(filter(lambda x: x[1] is not None, translation.items()))
49
49
 
50
- roi = WorldCooROI(
50
+ roi = Roi(
51
51
  name=str(key),
52
52
  x=row["x_micrometer"],
53
53
  y=row["y_micrometer"],
@@ -63,7 +63,7 @@ def _dataframe_to_rois(dataframe: pd.DataFrame) -> dict[str, WorldCooROI]:
63
63
  return rois
64
64
 
65
65
 
66
- def _rois_to_dataframe(rois: dict[str, WorldCooROI], index_key: str) -> pd.DataFrame:
66
+ def _rois_to_dataframe(rois: dict[str, Roi], index_key: str) -> pd.DataFrame:
67
67
  """Convert a list of WorldCooROI objects to a DataFrame."""
68
68
  data = []
69
69
  for roi in rois.values():
@@ -124,7 +124,7 @@ class _GenericRoiTableV1(Generic[_roi_meta]):
124
124
  _meta: _roi_meta
125
125
 
126
126
  def __init__(
127
- self, meta: _roi_meta | None = None, rois: Iterable[WorldCooROI] | None = None
127
+ self, meta: _roi_meta | None = None, rois: Iterable[Roi] | None = None
128
128
  ) -> None:
129
129
  """Create a new ROI table."""
130
130
  if meta is None:
@@ -225,13 +225,13 @@ class _GenericRoiTableV1(Generic[_roi_meta]):
225
225
  self._meta.backend = backend_name
226
226
  self._table_backend = backend
227
227
 
228
- def rois(self) -> list[WorldCooROI]:
228
+ def rois(self) -> list[Roi]:
229
229
  """List all ROIs in the table."""
230
230
  return list(self._rois.values())
231
231
 
232
- def add(self, roi: WorldCooROI | Iterable[WorldCooROI]) -> None:
232
+ def add(self, roi: Roi | Iterable[Roi]) -> None:
233
233
  """Append ROIs to the current table."""
234
- if isinstance(roi, WorldCooROI):
234
+ if isinstance(roi, Roi):
235
235
  roi = [roi]
236
236
 
237
237
  for _roi in roi:
@@ -266,10 +266,15 @@ class RoiTableV1(_GenericRoiTableV1[RoiTableV1Meta]):
266
266
  https://fractal-analytics-platform.github.io/fractal-tasks-core/tables/
267
267
  """
268
268
 
269
- def __init__(self, rois: Iterable[WorldCooROI] | None = None) -> None:
269
+ def __init__(self, rois: Iterable[Roi] | None = None) -> None:
270
270
  """Create a new ROI table."""
271
271
  super().__init__(RoiTableV1Meta(), rois)
272
272
 
273
+ def __repr__(self) -> str:
274
+ """Return a string representation of the table."""
275
+ prop = f"num_rois={len(self._rois)}"
276
+ return f"RoiTableV1({prop})"
277
+
273
278
  @staticmethod
274
279
  def type() -> Literal["roi_table"]:
275
280
  """Return the type of the table."""
@@ -290,14 +295,14 @@ class RoiTableV1(_GenericRoiTableV1[RoiTableV1Meta]):
290
295
  """Return the metadata type of the table."""
291
296
  return RoiTableV1Meta
292
297
 
293
- def get(self, roi_name: str) -> WorldCooROI:
298
+ def get(self, roi_name: str) -> Roi:
294
299
  """Get an ROI from the table."""
295
300
  if roi_name not in self._rois:
296
301
  raise NgioValueError(f"ROI {roi_name} not found in the table.")
297
302
  return self._rois[roi_name]
298
303
 
299
304
 
300
- class MaskingROITableV1(_GenericRoiTableV1[MaskingRoiTableV1Meta]):
305
+ class MaskingRoiTableV1(_GenericRoiTableV1[MaskingRoiTableV1Meta]):
301
306
  """Class to handle fractal ROI tables.
302
307
 
303
308
  To know more about the ROI table format, please refer to the
@@ -307,7 +312,7 @@ class MaskingROITableV1(_GenericRoiTableV1[MaskingRoiTableV1Meta]):
307
312
 
308
313
  def __init__(
309
314
  self,
310
- rois: Iterable[WorldCooROI] | None = None,
315
+ rois: Iterable[Roi] | None = None,
311
316
  reference_label: str | None = None,
312
317
  ) -> None:
313
318
  """Create a new ROI table."""
@@ -316,6 +321,13 @@ class MaskingROITableV1(_GenericRoiTableV1[MaskingRoiTableV1Meta]):
316
321
  meta.region = RegionMeta(path=reference_label)
317
322
  super().__init__(meta, rois)
318
323
 
324
+ def __repr__(self) -> str:
325
+ """Return a string representation of the table."""
326
+ prop = f"num_rois={len(self._rois)}"
327
+ if self.reference_label is not None:
328
+ prop += f", reference_label={self.reference_label}"
329
+ return f"MaskingRoiTableV1({prop})"
330
+
319
331
  @staticmethod
320
332
  def type() -> Literal["masking_roi_table"]:
321
333
  """Return the type of the table."""
@@ -336,7 +348,17 @@ class MaskingROITableV1(_GenericRoiTableV1[MaskingRoiTableV1Meta]):
336
348
  """Return the metadata type of the table."""
337
349
  return MaskingRoiTableV1Meta
338
350
 
339
- def get(self, label: int) -> WorldCooROI:
351
+ @property
352
+ def reference_label(self) -> str | None:
353
+ """Return the reference label."""
354
+ path = self._meta.region
355
+ if path is None:
356
+ return None
357
+ path = path.path
358
+ path = path.split("/")[-1]
359
+ return path
360
+
361
+ def get(self, label: int) -> Roi:
340
362
  """Get an ROI from the table."""
341
363
  _label = str(label)
342
364
  if _label not in self._rois:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ngio
3
- Version: 0.2.0b3
3
+ Version: 0.2.2
4
4
  Summary: Next Generation file format IO
5
5
  Project-URL: homepage, https://github.com/lorenzocerrone/ngio
6
6
  Project-URL: repository, https://github.com/lorenzocerrone/ngio
@@ -41,6 +41,8 @@ Requires-Dist: rich; extra == 'dev'
41
41
  Requires-Dist: ruff; extra == 'dev'
42
42
  Requires-Dist: scikit-image; extra == 'dev'
43
43
  Provides-Extra: docs
44
+ Requires-Dist: markdown-exec[ansi]; extra == 'docs'
45
+ Requires-Dist: matplotlib; extra == 'docs'
44
46
  Requires-Dist: mike; extra == 'docs'
45
47
  Requires-Dist: mkdocs; extra == 'docs'
46
48
  Requires-Dist: mkdocs-autorefs; extra == 'docs'
@@ -49,7 +51,9 @@ Requires-Dist: mkdocs-git-revision-date-localized-plugin; extra == 'docs'
49
51
  Requires-Dist: mkdocs-jupyter; extra == 'docs'
50
52
  Requires-Dist: mkdocs-material; extra == 'docs'
51
53
  Requires-Dist: mkdocstrings[python]; extra == 'docs'
54
+ Requires-Dist: rich; extra == 'docs'
52
55
  Requires-Dist: scikit-image; extra == 'docs'
56
+ Requires-Dist: tabulate; extra == 'docs'
53
57
  Provides-Extra: test
54
58
  Requires-Dist: pytest; extra == 'test'
55
59
  Requires-Dist: pytest-cov; extra == 'test'
@@ -69,9 +73,9 @@ NGIO is a Python library to streamline OME-Zarr image analysis workflows.
69
73
  **Main Goals:**
70
74
 
71
75
  - Abstract object base API for handling OME-Zarr files
72
- - Powefull iterators for processing data using common access patterns
76
+ - Powerful iterators for processing data using common access patterns
73
77
  - Tight integration with [Fractal's Table Fractal](https://fractal-analytics-platform.github.io/fractal-tasks-core/tables/)
74
- - Validate OME-Zarr files
78
+ - Validation of OME-Zarr files
75
79
 
76
80
  To get started, check out the [Getting Started](https://fractal-analytics-platform.github.io/ngio/getting-started/) guide. Or checkout our [Documentation](https://fractal-analytics-platform.github.io/ngio/)
77
81
 
@@ -91,10 +95,9 @@ To get started, check out the [Getting Started](https://fractal-analytics-platfo
91
95
  | Basic Iterators | Ongoing | End-September | Read and Write Iterators for common access patterns |
92
96
  | Base Documentation | ✅ | End-September | API Documentation and Examples |
93
97
  | Beta Ready Testing | ✅ | End-September | Beta Testing; Library is ready for testing, but the API is not stable |
94
- | Streaming from Fractal | Ongoing | December | Ngio can stream ome-zarr from fractal |
98
+ | Streaming from Fractal | Ongoing | December | Ngio can stream OME-Zarr from fractal |
95
99
  | Mask Iterators | Ongoing | Early 2025 | Iterators over Masked Tables |
96
100
  | Advanced Iterators | Not started | mid-2025 | Iterators for advanced access patterns |
97
101
  | Parallel Iterators | Not started | mid-2025 | Concurrent Iterators for parallel read and write |
98
102
  | Full Documentation | Not started | 2025 | Complete Documentation |
99
103
  | Release 1.0 (Commitment to API) | Not started | 2025 | API is stable; breaking changes will be avoided |
100
-
@@ -0,0 +1,55 @@
1
+ ngio/__init__.py,sha256=zce-RIfRhkiFyfKwO6s7A1-9ZCD3n6RuVuW3GeRj_VA,1309
2
+ ngio/common/__init__.py,sha256=tMKp1eZzGfpdKDkpfHn0iVzSO11dmp-RZARpuxoGGQk,1351
3
+ ngio/common/_array_pipe.py,sha256=we3gZLhgUsiPQwPQqg_XVkyG_9EpQ2xoe0L_nOALDho,7828
4
+ ngio/common/_axes_transforms.py,sha256=kWU0M5erNmgWBXdu5LNv-tLW3jqkT00MMYX7cz-kyHs,2035
5
+ ngio/common/_common_types.py,sha256=OkAYNSNjZkixL1MI-HPBVuXamheFBr862uJ4PvTxmhk,129
6
+ ngio/common/_dimensions.py,sha256=UV2XulWaROb3Y2f4fv27ZkTIu-MoS53U26aDkrv-_lk,3900
7
+ ngio/common/_masking_roi.py,sha256=-o6meGP17iTXEbkO9aGh1VX2drkc2laIcRJvCy_pRRM,4919
8
+ ngio/common/_pyramid.py,sha256=8xTFnrKcldYXSnBqcVtH1E6hzS9_et8NdoPo8zfTCjc,7308
9
+ ngio/common/_roi.py,sha256=dq1iVT8-G_zWuxcYWJeHfviBSbPgsyKUcDL3Vg6jx6I,5122
10
+ ngio/common/_slicer.py,sha256=AKpwXRncOmF9nhjKYma0C_41WqAgSv860beKGx-aw-0,3075
11
+ ngio/common/_zoom.py,sha256=KsURa5VuixmpbAAY5-6obmuQV8vfiHKZqBxZDXvchpM,5473
12
+ ngio/hcs/__init__.py,sha256=5oAYT_454WGhms97kxo8gS4_rKHtFf_x-9uu8M_VeVM,356
13
+ ngio/hcs/plate.py,sha256=Upmq8-1zi0rWtsTVHsZYAma6EwvbgaEF54nHlcL5PBU,26219
14
+ ngio/images/__init__.py,sha256=DYbXAdBgPxyjBRdJrWvU0UnBRI0gUMmx9KaJ-Bucvz4,533
15
+ ngio/images/abstract_image.py,sha256=oR0CeWUdQJkJ8bbI4kegX3xFIRcR3x5F_yaT4Z-mbag,10226
16
+ ngio/images/create.py,sha256=XYn30m_2OSZeHHASYHc3eK9u_gZIYy9wo6mGdRGaq5c,9473
17
+ ngio/images/image.py,sha256=FSlYvwOk3Fz4ywUZwWcLeCMWLMB4wQ-U0lCGYomVI-o,16108
18
+ ngio/images/label.py,sha256=bmwWuOfZWApjttL_CspiNg-j728ODF1i2zKtKIP_u6k,10120
19
+ ngio/images/masked_image.py,sha256=IBo8x2jHyXBXn7ORo8fSiwBPjV_1JOTb_vatjKNxbJ0,8531
20
+ ngio/images/ome_zarr_container.py,sha256=mEKOtZtZkJbMG02ne0pRIKtlFoi8B1QV8j9WSXDavRs,28705
21
+ ngio/ome_zarr_meta/__init__.py,sha256=oZ8PEsWM7U0KwzpsnvVfX9k4UfuTz5sZ8B6B9eY5hyY,1193
22
+ ngio/ome_zarr_meta/_meta_handlers.py,sha256=BLvYt5PONYrWkEb2XgEiAXR_OX9rfeX_C0eEqen0jQA,25549
23
+ ngio/ome_zarr_meta/ngio_specs/__init__.py,sha256=05NQukZG0nNvjzf8AKWGu7PhjhQcImGSAOK3D3Bg-Js,1786
24
+ ngio/ome_zarr_meta/ngio_specs/_axes.py,sha256=Kqe9T7LWa_9o3UWS5uzALyyNluIhXxWhDGxWY4-GIo8,16707
25
+ ngio/ome_zarr_meta/ngio_specs/_channels.py,sha256=ufZuYuTO5PJA1vcBrNAcuZCMgIEwF57buPloTHIzB1Q,14082
26
+ ngio/ome_zarr_meta/ngio_specs/_dataset.py,sha256=hY8ogPPxvCgVg6k02t3zUr24lasYrvnxBd1iPEigdG4,5892
27
+ ngio/ome_zarr_meta/ngio_specs/_ngio_hcs.py,sha256=VhXfgy87z3xpzIqC4Pz5iwcoh0C47mvRiAhN0vLVSJA,17294
28
+ ngio/ome_zarr_meta/ngio_specs/_ngio_image.py,sha256=8E38Mgw-l0Ff1nkmCJIzo64G_paAVhM8xktUS_V5egY,17960
29
+ ngio/ome_zarr_meta/ngio_specs/_pixel_size.py,sha256=5TT8250XdCKUnk3OwZeyXIMNFKOg_jx4NnoCo9RLsXI,4079
30
+ ngio/ome_zarr_meta/v04/__init__.py,sha256=dJRzzxyYc81kf-0Hip_bqvbdManaM8XTdQX2meWyCSs,583
31
+ ngio/ome_zarr_meta/v04/_custom_models.py,sha256=5GxiDERvLuvq4QvApcA6EiKLS6hLFX1R0R_9rSaa85A,530
32
+ ngio/ome_zarr_meta/v04/_v04_spec_utils.py,sha256=05tEr2eEP_XVIfBMOAWLT7lzJV4KS5eYrpK8l94tn3w,15876
33
+ ngio/tables/__init__.py,sha256=gxvNvAgLePgrngOm06H5qU50Axc6boeIs5iCfrmqTi0,609
34
+ ngio/tables/_validators.py,sha256=RzF09YrlUSb-xdVlosuU-_BaLswtvhpduHfzLaWu2mY,6468
35
+ ngio/tables/tables_container.py,sha256=elOTjpRuC_zsRuZmGeBWfMl2y6OLp2g6FmOe__xLsWE,9845
36
+ ngio/tables/backends/__init__.py,sha256=NlOXmZXDA1kOCVONUyo_aqSjdMHmfqk-3xuKBLXpaUM,217
37
+ ngio/tables/backends/_abstract_backend.py,sha256=JlaHqLjDm2uVnXFWxsHMojNeKo3leg6uauzoFMSF5O4,2256
38
+ ngio/tables/backends/_anndata_utils.py,sha256=zo85K0bwgyQKBj8hQASfOSWugdd4BPUTyT6_tRO58fI,6917
39
+ ngio/tables/backends/_anndata_v1.py,sha256=hhEwoBybWFDHqajOk_JEazniYmhAlCehOYTtmcYJfyY,2615
40
+ ngio/tables/backends/_json_v1.py,sha256=9ZC0d_tMiiugm-VXDL3sRFfESzSnnY9kAtSxoXYV-dY,1910
41
+ ngio/tables/backends/_table_backends.py,sha256=XXtnZqVDbMqFkbUkHbf9IBNz4teCouLpa5fWgEgVtfg,3269
42
+ ngio/tables/v1/__init__.py,sha256=XWi6f_KbjbX45Ku-7uymJRSTVWyFAPAAEp_TXDeZV4s,314
43
+ ngio/tables/v1/_feature_table.py,sha256=mR8BwvZfkUT42mQuS0KACW7fTqcsIl6Ckiwg-1UEGpY,5865
44
+ ngio/tables/v1/_generic_table.py,sha256=jVW0vv0HMPXZjuP_uAvz-rPsvLQhjo3RfSa2Y9vdg1o,5679
45
+ ngio/tables/v1/_roi_table.py,sha256=oE898CUh0ZbtnFXiM05T6VwTwRguv-aVYKkBmSx0Kj0,11296
46
+ ngio/utils/__init__.py,sha256=r3nuLWgp6-cQlS4ODjYSBrfgdTLkCOVke9jKbn1NpkA,1129
47
+ ngio/utils/_datasets.py,sha256=EdYJHIifpRou4f43dIuiKsdxe4K6FaeS4f1_e_EYrcI,1727
48
+ ngio/utils/_errors.py,sha256=pKQ12LUjQLYE1nUawemA5h7HsgznjaSvV1n2PQU33N0,759
49
+ ngio/utils/_fractal_fsspec_store.py,sha256=7qoGLiLi8JQFh9Ej_z5WNwQQuWrujb0f6p9nj8ocsS8,548
50
+ ngio/utils/_logger.py,sha256=HIuqD_2ShfFGDswBddcouStbKfL0Vz_ah8cAIFGhbS8,888
51
+ ngio/utils/_zarr_utils.py,sha256=r075cNpr-JHZ1PaDHX1KlENIGMvLf-WTTYwpODACWm4,12924
52
+ ngio-0.2.2.dist-info/METADATA,sha256=tYJbuBZdqsie42NofiB0ALq7NhAaFn-ccwLe-QQ-bY0,5170
53
+ ngio-0.2.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
54
+ ngio-0.2.2.dist-info/licenses/LICENSE,sha256=UgN_a1QCeNh9rZWfz-wORQFxE3elQzLWPQaoK6N6fxQ,1502
55
+ ngio-0.2.2.dist-info/RECORD,,
@@ -1,54 +0,0 @@
1
- ngio/__init__.py,sha256=8-5UcDEIPVIM3mk4GqyBJNteQo0WZNOox1-F6UJoHjg,1001
2
- ngio/common/__init__.py,sha256=4MLD3Xgr6-I6NwGoY7pa5qQfbfEobFCW3KvLybYcgOc,1373
3
- ngio/common/_array_pipe.py,sha256=rZQMB3cgMSnpvZpLZEndNZVdWZIOMWgvYqeEOLz7XQ0,7576
4
- ngio/common/_axes_transforms.py,sha256=kWU0M5erNmgWBXdu5LNv-tLW3jqkT00MMYX7cz-kyHs,2035
5
- ngio/common/_common_types.py,sha256=OkAYNSNjZkixL1MI-HPBVuXamheFBr862uJ4PvTxmhk,129
6
- ngio/common/_dimensions.py,sha256=UV2XulWaROb3Y2f4fv27ZkTIu-MoS53U26aDkrv-_lk,3900
7
- ngio/common/_masking_roi.py,sha256=WSlFwoLH4Rjh0AJFFNa2FtFNfs5NB0exgzGb3Gy5K0s,4951
8
- ngio/common/_pyramid.py,sha256=8xTFnrKcldYXSnBqcVtH1E6hzS9_et8NdoPo8zfTCjc,7308
9
- ngio/common/_roi.py,sha256=PIxiMarPZwIjqcd1P4aUpwZttvaTQscqXOS7xJCxz7Y,5181
10
- ngio/common/_slicer.py,sha256=AKpwXRncOmF9nhjKYma0C_41WqAgSv860beKGx-aw-0,3075
11
- ngio/common/_zoom.py,sha256=KsURa5VuixmpbAAY5-6obmuQV8vfiHKZqBxZDXvchpM,5473
12
- ngio/hcs/__init__.py,sha256=9YNmtHgCKhYSjmAE2-YVg5BycH-5cQGAE9xFrxxWo8c,188
13
- ngio/hcs/plate.py,sha256=b-EHns-OGQF_RXEa-GDzP2TJFqpRFc0rBKdgf4l7MwU,12409
14
- ngio/images/__init__.py,sha256=aijqG14eyqVgHtnlcKVNx37FRfT6QvKt8V6bwBpX_r8,526
15
- ngio/images/abstract_image.py,sha256=UQpcp--SzJITIZfSg_KZWU9_mIC11LdHTuITJdxCNTE,9671
16
- ngio/images/create.py,sha256=wQfoB9pmQkHFFYE3WNbhgQt36XhoTopGcPGcEXTNI-0,9764
17
- ngio/images/image.py,sha256=BL9TINwYrT2_HdkhCKoRcfy7XqiiwEIVQvHDFkF8ZWc,15246
18
- ngio/images/label.py,sha256=gvVuRUsrDBk-EpsuUMepC4M5hYPb5yTVvWwozaLM7-g,9333
19
- ngio/images/masked_image.py,sha256=4YYVqf8OtIp-wWGVGUKMHMTqod4p4F7ZyWrsUIXMjEs,7905
20
- ngio/images/omezarr_container.py,sha256=db5KnWAfWoaEekNmWxVQPAI3xXXeQGItQ3gvBbr55VA,27376
21
- ngio/ome_zarr_meta/__init__.py,sha256=EfBX9ppb_wliSIcVb4NBDt3dFVldeIJ0h9tY9HELRY4,1075
22
- ngio/ome_zarr_meta/_meta_handlers.py,sha256=BLvYt5PONYrWkEb2XgEiAXR_OX9rfeX_C0eEqen0jQA,25549
23
- ngio/ome_zarr_meta/ngio_specs/__init__.py,sha256=ZpghXfbq0r-YJklD7J76BRMTlzEIAJFzneYlsosdyTY,1548
24
- ngio/ome_zarr_meta/ngio_specs/_axes.py,sha256=zgAE0-2DHzJfqGqBhyjY7y_6qAgDLdV9iuWz-YsHe9Y,16682
25
- ngio/ome_zarr_meta/ngio_specs/_channels.py,sha256=ufZuYuTO5PJA1vcBrNAcuZCMgIEwF57buPloTHIzB1Q,14082
26
- ngio/ome_zarr_meta/ngio_specs/_dataset.py,sha256=xT4GY2mdIsm6nAP8bXRj5E9-P6rS-iwzcXT_o3pZajo,4696
27
- ngio/ome_zarr_meta/ngio_specs/_ngio_hcs.py,sha256=YQlobPYU7vbo9fShHQyCfzLlDUlP-mprAivay6W4-A0,11610
28
- ngio/ome_zarr_meta/ngio_specs/_ngio_image.py,sha256=74L3ibo0SurKnbkxt0Re9jEVcLf63ZJouL2ZHpHZDbc,16776
29
- ngio/ome_zarr_meta/ngio_specs/_pixel_size.py,sha256=QZy94THDBkeLgOtN6o_jF3oXSewRxdM2E7ZTSBTo7RU,3878
30
- ngio/ome_zarr_meta/v04/__init__.py,sha256=dJRzzxyYc81kf-0Hip_bqvbdManaM8XTdQX2meWyCSs,583
31
- ngio/ome_zarr_meta/v04/_v04_spec_utils.py,sha256=G4GGarkktjdsIzHUhaoZEL69-r-ZLpLz6y5TDVsN4W0,15939
32
- ngio/tables/__init__.py,sha256=Mu3P8D-AtAxv9l4vUo-UJPfTYkgvB5A8qpOh3gMWX4E,609
33
- ngio/tables/_validators.py,sha256=RzF09YrlUSb-xdVlosuU-_BaLswtvhpduHfzLaWu2mY,6468
34
- ngio/tables/tables_container.py,sha256=FXp-s_zKqbMcBFh4515kbSdxYaFK1ULE2Pf0pzlnpEE,9845
35
- ngio/tables/backends/__init__.py,sha256=NlOXmZXDA1kOCVONUyo_aqSjdMHmfqk-3xuKBLXpaUM,217
36
- ngio/tables/backends/_abstract_backend.py,sha256=JlaHqLjDm2uVnXFWxsHMojNeKo3leg6uauzoFMSF5O4,2256
37
- ngio/tables/backends/_anndata_utils.py,sha256=zo85K0bwgyQKBj8hQASfOSWugdd4BPUTyT6_tRO58fI,6917
38
- ngio/tables/backends/_anndata_v1.py,sha256=hhEwoBybWFDHqajOk_JEazniYmhAlCehOYTtmcYJfyY,2615
39
- ngio/tables/backends/_json_v1.py,sha256=9ZC0d_tMiiugm-VXDL3sRFfESzSnnY9kAtSxoXYV-dY,1910
40
- ngio/tables/backends/_table_backends.py,sha256=XXtnZqVDbMqFkbUkHbf9IBNz4teCouLpa5fWgEgVtfg,3269
41
- ngio/tables/v1/__init__.py,sha256=VtS1RUiPn_jHa__IUsGGzXSYsG0O1V0fpVR6xCOSFHY,314
42
- ngio/tables/v1/_feature_table.py,sha256=yO1fWUfEM5nTSU6vx4QEwSY3MsgB8zZyr6Ui0fwc16w,5161
43
- ngio/tables/v1/_generic_table.py,sha256=NcDWa6NI7LQplSVPOn0HG5CjrILTf0ZKZ1i_E-H5LJM,5279
44
- ngio/tables/v1/_roi_table.py,sha256=GanlVPcmtFn5mzQYQi3-ldDLAdxPdC92NAvtvezp5Ps,10674
45
- ngio/utils/__init__.py,sha256=r3nuLWgp6-cQlS4ODjYSBrfgdTLkCOVke9jKbn1NpkA,1129
46
- ngio/utils/_datasets.py,sha256=EdYJHIifpRou4f43dIuiKsdxe4K6FaeS4f1_e_EYrcI,1727
47
- ngio/utils/_errors.py,sha256=pKQ12LUjQLYE1nUawemA5h7HsgznjaSvV1n2PQU33N0,759
48
- ngio/utils/_fractal_fsspec_store.py,sha256=7qoGLiLi8JQFh9Ej_z5WNwQQuWrujb0f6p9nj8ocsS8,548
49
- ngio/utils/_logger.py,sha256=HIuqD_2ShfFGDswBddcouStbKfL0Vz_ah8cAIFGhbS8,888
50
- ngio/utils/_zarr_utils.py,sha256=r075cNpr-JHZ1PaDHX1KlENIGMvLf-WTTYwpODACWm4,12924
51
- ngio-0.2.0b3.dist-info/METADATA,sha256=hvC4PR-EEJBiDvSHl4Bq_0I924a0ifhf0r1vdVsiQ6k,4995
52
- ngio-0.2.0b3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
53
- ngio-0.2.0b3.dist-info/licenses/LICENSE,sha256=UgN_a1QCeNh9rZWfz-wORQFxE3elQzLWPQaoK6N6fxQ,1502
54
- ngio-0.2.0b3.dist-info/RECORD,,
File without changes