ngio 0.4.0a3__py3-none-any.whl → 0.4.0a4__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 +1 -2
- ngio/common/__init__.py +2 -51
- ngio/common/_dimensions.py +223 -64
- ngio/common/_pyramid.py +42 -23
- ngio/common/_roi.py +47 -411
- ngio/common/_zoom.py +32 -7
- ngio/experimental/iterators/_abstract_iterator.py +2 -2
- ngio/experimental/iterators/_feature.py +9 -14
- ngio/experimental/iterators/_image_processing.py +17 -27
- ngio/experimental/iterators/_rois_utils.py +4 -4
- ngio/experimental/iterators/_segmentation.py +37 -53
- ngio/images/_abstract_image.py +135 -93
- ngio/images/_create.py +16 -0
- ngio/images/_create_synt_container.py +10 -0
- ngio/images/_image.py +33 -9
- ngio/images/_label.py +24 -3
- ngio/images/_masked_image.py +60 -81
- ngio/images/_ome_zarr_container.py +33 -0
- ngio/io_pipes/__init__.py +49 -0
- ngio/io_pipes/_io_pipes.py +286 -0
- ngio/io_pipes/_io_pipes_masked.py +481 -0
- ngio/io_pipes/_io_pipes_roi.py +143 -0
- ngio/io_pipes/_io_pipes_utils.py +299 -0
- ngio/io_pipes/_match_shape.py +376 -0
- ngio/io_pipes/_ops_axes.py +146 -0
- ngio/io_pipes/_ops_slices.py +218 -0
- ngio/io_pipes/_ops_transforms.py +104 -0
- ngio/io_pipes/_zoom_transform.py +175 -0
- ngio/ome_zarr_meta/__init__.py +6 -2
- ngio/ome_zarr_meta/ngio_specs/__init__.py +6 -4
- ngio/ome_zarr_meta/ngio_specs/_axes.py +182 -70
- ngio/ome_zarr_meta/ngio_specs/_dataset.py +47 -121
- ngio/ome_zarr_meta/ngio_specs/_ngio_image.py +30 -22
- ngio/ome_zarr_meta/ngio_specs/_pixel_size.py +17 -1
- ngio/ome_zarr_meta/v04/_v04_spec_utils.py +33 -30
- ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/nuclei.png +0 -0
- ngio/resources/__init__.py +1 -0
- ngio/resources/resource_model.py +1 -0
- ngio/{common/transforms → transforms}/__init__.py +1 -1
- ngio/transforms/_zoom.py +19 -0
- ngio/utils/_zarr_utils.py +5 -1
- {ngio-0.4.0a3.dist-info → ngio-0.4.0a4.dist-info}/METADATA +1 -1
- ngio-0.4.0a4.dist-info/RECORD +83 -0
- ngio/common/_array_io_pipes.py +0 -554
- ngio/common/_array_io_utils.py +0 -508
- ngio/common/transforms/_label.py +0 -12
- ngio/common/transforms/_zoom.py +0 -109
- ngio-0.4.0a3.dist-info/RECORD +0 -76
- {ngio-0.4.0a3.dist-info → ngio-0.4.0a4.dist-info}/WHEEL +0 -0
- {ngio-0.4.0a3.dist-info → ngio-0.4.0a4.dist-info}/licenses/LICENSE +0 -0
|
@@ -17,7 +17,7 @@ from ngio.ome_zarr_meta.ngio_specs._axes import (
|
|
|
17
17
|
DefaultTimeUnit,
|
|
18
18
|
SpaceUnits,
|
|
19
19
|
TimeUnits,
|
|
20
|
-
|
|
20
|
+
build_canonical_axes_handler,
|
|
21
21
|
)
|
|
22
22
|
from ngio.ome_zarr_meta.ngio_specs._channels import ChannelsMeta
|
|
23
23
|
from ngio.ome_zarr_meta.ngio_specs._dataset import Dataset
|
|
@@ -55,13 +55,13 @@ class AbstractNgioImageMeta:
|
|
|
55
55
|
raise NgioValidationError("At least one dataset must be provided.")
|
|
56
56
|
|
|
57
57
|
self._datasets = datasets
|
|
58
|
-
self.
|
|
58
|
+
self._axes_handler = datasets[0].axes_handler
|
|
59
59
|
|
|
60
60
|
def __repr__(self):
|
|
61
61
|
class_name = type(self).__name__
|
|
62
62
|
paths = [dataset.path for dataset in self.datasets]
|
|
63
|
-
|
|
64
|
-
return f"{class_name}(name={self.name}, datasets={paths}, axes={
|
|
63
|
+
axes = self.axes_handler.axes_names
|
|
64
|
+
return f"{class_name}(name={self.name}, datasets={paths}, axes={axes})"
|
|
65
65
|
|
|
66
66
|
@classmethod
|
|
67
67
|
def default_init(
|
|
@@ -74,19 +74,20 @@ class AbstractNgioImageMeta:
|
|
|
74
74
|
version: NgffVersions = DefaultNgffVersion,
|
|
75
75
|
):
|
|
76
76
|
"""Initialize the ImageMeta object."""
|
|
77
|
-
|
|
77
|
+
axes_handler = build_canonical_axes_handler(
|
|
78
78
|
axes_names,
|
|
79
79
|
space_units=pixel_size.space_unit,
|
|
80
80
|
time_units=pixel_size.time_unit,
|
|
81
81
|
)
|
|
82
82
|
|
|
83
83
|
px_size_dict = pixel_size.as_dict()
|
|
84
|
-
scale = [px_size_dict.get(
|
|
85
|
-
translation = [0.0] * len(scale)
|
|
84
|
+
scale = [px_size_dict.get(name, 1.0) for name in axes_handler.axes_names]
|
|
86
85
|
|
|
87
86
|
if scaling_factors is None:
|
|
88
87
|
_default = {"x": 2.0, "y": 2.0}
|
|
89
|
-
scaling_factors = [
|
|
88
|
+
scaling_factors = [
|
|
89
|
+
_default.get(name, 1.0) for name in axes_handler.axes_names
|
|
90
|
+
]
|
|
90
91
|
|
|
91
92
|
if isinstance(levels, int):
|
|
92
93
|
levels = [str(i) for i in range(levels)]
|
|
@@ -95,11 +96,9 @@ class AbstractNgioImageMeta:
|
|
|
95
96
|
for level in levels:
|
|
96
97
|
dataset = Dataset(
|
|
97
98
|
path=level,
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
allow_non_canonical_axes=False,
|
|
102
|
-
strict_canonical_order=True,
|
|
99
|
+
axes_handler=axes_handler,
|
|
100
|
+
scale=scale,
|
|
101
|
+
translation=None,
|
|
103
102
|
)
|
|
104
103
|
datasets.append(dataset)
|
|
105
104
|
scale = [s * f for s, f in zip(scale, scaling_factors, strict=True)]
|
|
@@ -122,9 +121,18 @@ class AbstractNgioImageMeta:
|
|
|
122
121
|
space_unit(str): The space unit to convert to.
|
|
123
122
|
time_unit(str): The time unit to convert to.
|
|
124
123
|
"""
|
|
124
|
+
new_axes_handler = self.axes_handler.to_units(
|
|
125
|
+
space_unit=space_unit,
|
|
126
|
+
time_unit=time_unit,
|
|
127
|
+
)
|
|
125
128
|
new_datasets = []
|
|
126
129
|
for dataset in self.datasets:
|
|
127
|
-
new_dataset =
|
|
130
|
+
new_dataset = Dataset(
|
|
131
|
+
path=dataset.path,
|
|
132
|
+
axes_handler=new_axes_handler,
|
|
133
|
+
scale=dataset.scale,
|
|
134
|
+
translation=dataset.translation,
|
|
135
|
+
)
|
|
128
136
|
new_datasets.append(new_dataset)
|
|
129
137
|
|
|
130
138
|
return type(self)(
|
|
@@ -149,9 +157,9 @@ class AbstractNgioImageMeta:
|
|
|
149
157
|
return self._datasets
|
|
150
158
|
|
|
151
159
|
@property
|
|
152
|
-
def
|
|
160
|
+
def axes_handler(self):
|
|
153
161
|
"""Return the axes mapper."""
|
|
154
|
-
return self.
|
|
162
|
+
return self._axes_handler
|
|
155
163
|
|
|
156
164
|
@property
|
|
157
165
|
def levels(self) -> int:
|
|
@@ -166,12 +174,12 @@ class AbstractNgioImageMeta:
|
|
|
166
174
|
@property
|
|
167
175
|
def space_unit(self) -> str | None:
|
|
168
176
|
"""Get the space unit of the pixel size."""
|
|
169
|
-
return self.
|
|
177
|
+
return self.axes_handler.space_unit
|
|
170
178
|
|
|
171
179
|
@property
|
|
172
180
|
def time_unit(self) -> str | None:
|
|
173
181
|
"""Get the time unit of the pixel size."""
|
|
174
|
-
return self.
|
|
182
|
+
return self.axes_handler.time_unit
|
|
175
183
|
|
|
176
184
|
def _get_dataset_by_path(self, path: str) -> Dataset:
|
|
177
185
|
"""Get a dataset by its path."""
|
|
@@ -321,11 +329,11 @@ class AbstractNgioImageMeta:
|
|
|
321
329
|
def scaling_factor(self, path: str | None = None) -> list[float]:
|
|
322
330
|
"""Get the scaling factors from a dataset to its lower resolution."""
|
|
323
331
|
if self.levels == 1:
|
|
324
|
-
return [1.0] * len(self.
|
|
332
|
+
return [1.0] * len(self.axes_handler.axes_names)
|
|
325
333
|
dataset, lr_dataset = self._get_closest_datasets(path=path)
|
|
326
334
|
|
|
327
335
|
scaling_factors = []
|
|
328
|
-
for ax_name in self.
|
|
336
|
+
for ax_name in self.axes_handler.axes_names:
|
|
329
337
|
s_d = dataset.get_scale(ax_name)
|
|
330
338
|
s_lr_d = lr_dataset.get_scale(ax_name)
|
|
331
339
|
scaling_factors.append(s_lr_d / s_d)
|
|
@@ -359,8 +367,8 @@ class AbstractNgioImageMeta:
|
|
|
359
367
|
return 1.0
|
|
360
368
|
dataset, lr_dataset = self._get_closest_datasets(path=path)
|
|
361
369
|
|
|
362
|
-
s_d = dataset.get_scale("z")
|
|
363
|
-
s_lr_d = lr_dataset.get_scale("z")
|
|
370
|
+
s_d = dataset.get_scale("z", default=1.0)
|
|
371
|
+
s_lr_d = lr_dataset.get_scale("z", default=1.0)
|
|
364
372
|
return s_lr_d / s_d
|
|
365
373
|
|
|
366
374
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import math
|
|
4
4
|
from functools import total_ordering
|
|
5
|
+
from typing import overload
|
|
5
6
|
|
|
6
7
|
import numpy as np
|
|
7
8
|
|
|
@@ -84,10 +85,25 @@ class PixelSize:
|
|
|
84
85
|
)
|
|
85
86
|
return self.distance(ref) < other.distance(ref)
|
|
86
87
|
|
|
87
|
-
def as_dict(self) -> dict:
|
|
88
|
+
def as_dict(self) -> dict[str, float]:
|
|
88
89
|
"""Return the pixel size as a dictionary."""
|
|
89
90
|
return {"t": self.t, "z": self.z, "y": self.y, "x": self.x}
|
|
90
91
|
|
|
92
|
+
@overload
|
|
93
|
+
def get(self, axis: str, default: float) -> float: ...
|
|
94
|
+
|
|
95
|
+
@overload
|
|
96
|
+
def get(self, axis: str, default: None = None) -> float | None: ...
|
|
97
|
+
|
|
98
|
+
def get(self, axis: str, default: float | None = None) -> float | None:
|
|
99
|
+
"""Get the pixel size for a given axis (in canonical name)."""
|
|
100
|
+
px_size = self.as_dict().get(axis, default)
|
|
101
|
+
if px_size is None:
|
|
102
|
+
raise ValueError(
|
|
103
|
+
f"Invalid axis name: {axis}, must be one of 'x', 'y', 'z', 't'."
|
|
104
|
+
)
|
|
105
|
+
return px_size
|
|
106
|
+
|
|
91
107
|
@property
|
|
92
108
|
def space_unit(self) -> SpaceUnits | str | None:
|
|
93
109
|
"""Return the space unit."""
|
|
@@ -26,6 +26,7 @@ from ome_zarr_models.v04.omero import Window as WindowV04
|
|
|
26
26
|
from pydantic import ValidationError
|
|
27
27
|
|
|
28
28
|
from ngio.ome_zarr_meta.ngio_specs import (
|
|
29
|
+
AxesHandler,
|
|
29
30
|
AxesSetup,
|
|
30
31
|
Axis,
|
|
31
32
|
AxisType,
|
|
@@ -160,34 +161,38 @@ def _v04_to_ngio_datasets(
|
|
|
160
161
|
v04_multiscale.coordinateTransformations, global_scale, global_translation
|
|
161
162
|
)
|
|
162
163
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
)
|
|
164
|
+
# Prepare axes handler
|
|
165
|
+
axes = []
|
|
166
|
+
for v04_axis in v04_multiscale.axes:
|
|
167
|
+
unit = v04_axis.unit
|
|
168
|
+
if unit is not None and not isinstance(unit, str):
|
|
169
|
+
unit = str(unit)
|
|
170
|
+
axes.append(
|
|
171
|
+
Axis(
|
|
172
|
+
name=v04_axis.name,
|
|
173
|
+
axis_type=AxisType(v04_axis.type),
|
|
174
|
+
# (for some reason the type is a generic JsonValue,
|
|
175
|
+
# but it should be a string or None)
|
|
176
|
+
unit=v04_axis.unit, # type: ignore
|
|
177
177
|
)
|
|
178
|
+
)
|
|
179
|
+
axes_handler = AxesHandler(
|
|
180
|
+
axes=axes,
|
|
181
|
+
axes_setup=axes_setup,
|
|
182
|
+
allow_non_canonical_axes=allow_non_canonical_axes,
|
|
183
|
+
strict_canonical_order=strict_canonical_order,
|
|
184
|
+
)
|
|
178
185
|
|
|
179
|
-
|
|
186
|
+
for v04_dataset in v04_multiscale.datasets:
|
|
187
|
+
_scale, _translation = _compute_scale_translation(
|
|
180
188
|
v04_dataset.coordinateTransformations, global_scale, global_translation
|
|
181
189
|
)
|
|
182
190
|
datasets.append(
|
|
183
191
|
Dataset(
|
|
184
192
|
path=v04_dataset.path,
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
axes_setup=axes_setup,
|
|
189
|
-
allow_non_canonical_axes=allow_non_canonical_axes,
|
|
190
|
-
strict_canonical_order=strict_canonical_order,
|
|
193
|
+
axes_handler=axes_handler,
|
|
194
|
+
scale=_scale,
|
|
195
|
+
translation=_translation,
|
|
191
196
|
)
|
|
192
197
|
)
|
|
193
198
|
return datasets
|
|
@@ -314,12 +319,12 @@ def _ngio_to_v04_multiscale(name: str | None, datasets: list[Dataset]) -> Multis
|
|
|
314
319
|
Returns:
|
|
315
320
|
MultiscaleV04: The v04 multiscale.
|
|
316
321
|
"""
|
|
317
|
-
ax_mapper = datasets[0].
|
|
322
|
+
ax_mapper = datasets[0].axes_handler
|
|
318
323
|
v04_axes = []
|
|
319
324
|
for axis in ax_mapper.axes:
|
|
320
325
|
v04_axes.append(
|
|
321
326
|
AxisV04(
|
|
322
|
-
name=axis.
|
|
327
|
+
name=axis.name,
|
|
323
328
|
type=axis.axis_type.value if axis.axis_type is not None else None,
|
|
324
329
|
unit=axis.unit if axis.unit is not None else None,
|
|
325
330
|
)
|
|
@@ -327,18 +332,16 @@ def _ngio_to_v04_multiscale(name: str | None, datasets: list[Dataset]) -> Multis
|
|
|
327
332
|
|
|
328
333
|
v04_datasets = []
|
|
329
334
|
for dataset in datasets:
|
|
330
|
-
transform = [VectorScaleV04(type="scale", scale=list(dataset.
|
|
331
|
-
if sum(dataset.
|
|
335
|
+
transform = [VectorScaleV04(type="scale", scale=list(dataset._scale))]
|
|
336
|
+
if sum(dataset._translation) > 0:
|
|
332
337
|
transform = (
|
|
333
|
-
VectorScaleV04(type="scale", scale=list(dataset.
|
|
338
|
+
VectorScaleV04(type="scale", scale=list(dataset._scale)),
|
|
334
339
|
VectorTranslationV04(
|
|
335
|
-
type="translation", translation=list(dataset.
|
|
340
|
+
type="translation", translation=list(dataset._translation)
|
|
336
341
|
),
|
|
337
342
|
)
|
|
338
343
|
else:
|
|
339
|
-
transform = (
|
|
340
|
-
VectorScaleV04(type="scale", scale=list(dataset._on_disk_scale)),
|
|
341
|
-
)
|
|
344
|
+
transform = (VectorScaleV04(type="scale", scale=list(dataset._scale)),)
|
|
342
345
|
|
|
343
346
|
v04_datasets.append(
|
|
344
347
|
DatasetV04(path=dataset.path, coordinateTransformations=transform)
|
|
Binary file
|
ngio/resources/__init__.py
CHANGED
ngio/resources/resource_model.py
CHANGED
ngio/transforms/_zoom.py
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from ngio.common._zoom import (
|
|
2
|
+
InterpolationOrder,
|
|
3
|
+
)
|
|
4
|
+
from ngio.images._abstract_image import AbstractImage
|
|
5
|
+
from ngio.io_pipes._zoom_transform import BaseZoomTransform
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class ZoomTransform(BaseZoomTransform):
|
|
9
|
+
def __init__(
|
|
10
|
+
self,
|
|
11
|
+
input_image: AbstractImage,
|
|
12
|
+
target_image: AbstractImage,
|
|
13
|
+
order: InterpolationOrder = "nearest",
|
|
14
|
+
) -> None:
|
|
15
|
+
super().__init__(
|
|
16
|
+
input_dimensions=input_image.dimensions,
|
|
17
|
+
target_dimensions=target_image.dimensions,
|
|
18
|
+
order=order,
|
|
19
|
+
)
|
ngio/utils/_zarr_utils.py
CHANGED
|
@@ -8,6 +8,7 @@ import zarr
|
|
|
8
8
|
from filelock import BaseFileLock, FileLock
|
|
9
9
|
from zarr.errors import ContainsGroupError, GroupNotFoundError
|
|
10
10
|
from zarr.storage import DirectoryStore, FSStore, MemoryStore, Store, StoreLike
|
|
11
|
+
from zarr.types import DIMENSION_SEPARATOR
|
|
11
12
|
|
|
12
13
|
from ngio.utils import NgioFileExistsError, NgioFileNotFoundError, NgioValueError
|
|
13
14
|
from ngio.utils._errors import NgioError
|
|
@@ -342,6 +343,8 @@ class ZarrGroupHandler:
|
|
|
342
343
|
shape: tuple[int, ...],
|
|
343
344
|
dtype: str,
|
|
344
345
|
chunks: tuple[int, ...] | None = None,
|
|
346
|
+
dimension_separator: DIMENSION_SEPARATOR = "/",
|
|
347
|
+
compressor: str = "default",
|
|
345
348
|
overwrite: bool = False,
|
|
346
349
|
) -> zarr.Array:
|
|
347
350
|
if self.mode == "r":
|
|
@@ -353,7 +356,8 @@ class ZarrGroupHandler:
|
|
|
353
356
|
shape=shape,
|
|
354
357
|
dtype=dtype,
|
|
355
358
|
chunks=chunks,
|
|
356
|
-
dimension_separator=
|
|
359
|
+
dimension_separator=dimension_separator,
|
|
360
|
+
compressor=compressor,
|
|
357
361
|
overwrite=overwrite,
|
|
358
362
|
)
|
|
359
363
|
except ContainsGroupError as e:
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
ngio/__init__.py,sha256=rEgnXuU6TCejUUGsxt4eKmjMhxjYh0fYBxWF4o5YjbE,1435
|
|
2
|
+
ngio/common/__init__.py,sha256=aPSuUbdGryrxbnlWrsVNe3LZoBAWC4GijR1BNH1UwuU,612
|
|
3
|
+
ngio/common/_dimensions.py,sha256=zl9mPiYYYxr_s1MT0jQiUhpeG5qAc0l3u-IHgvcJ1XY,10877
|
|
4
|
+
ngio/common/_masking_roi.py,sha256=ZZTXordEZoq_ADk0OzADvq-5dPOwUBSuNobzFR8fpTw,5697
|
|
5
|
+
ngio/common/_pyramid.py,sha256=F5OI_mULxzMTpMeihC4Y22cjuB5GKN2jRdpwfMXJHiE,8018
|
|
6
|
+
ngio/common/_roi.py,sha256=gW-_ouxoHrcG5ox6Kl8NOyMhu8XJFKm7xu8w03O6xds,10185
|
|
7
|
+
ngio/common/_synt_images_utils.py,sha256=B6uYOW1NyrM06YMR-csca3_YnAAkPRTbvnbLdy9tk9E,3188
|
|
8
|
+
ngio/common/_zoom.py,sha256=U01c-vqXjzZkrpd9Yvs24frVfTls_xPJeeaFCGmUwYI,6727
|
|
9
|
+
ngio/experimental/__init__.py,sha256=3pmBtHi-i8bKjTsvrOJM56ZyRX3Pv_dceCdt88-8COQ,147
|
|
10
|
+
ngio/experimental/iterators/__init__.py,sha256=on_sUvuRhHBb7-r5u3Ojvu6K9FGjUOrWGUkLQ4aRzbs,556
|
|
11
|
+
ngio/experimental/iterators/_abstract_iterator.py,sha256=4YNnL8OZ01KEG0Ga6UuETmXy4TV8oyhYC0ZlB_WLiBA,5537
|
|
12
|
+
ngio/experimental/iterators/_feature.py,sha256=5opX2o9iJazOOro0hEAF0oF7gJtFzmprRd2vusP3lcI,5874
|
|
13
|
+
ngio/experimental/iterators/_image_processing.py,sha256=Dt8mgrlrehwIaHpxNh9e7GSPRme7vWwStdsF9oSwR7E,6082
|
|
14
|
+
ngio/experimental/iterators/_rois_utils.py,sha256=Q-8lQ26neYn63h_RvfypYqvrq2UUN2O3xqVe57k_ufU,4363
|
|
15
|
+
ngio/experimental/iterators/_segmentation.py,sha256=M0SVSyBBJDc_pYzMOJJiUmeULk9QXoKe4Lg1EwMz4H8,10276
|
|
16
|
+
ngio/hcs/__init__.py,sha256=G8j9vD-liLeB_UeGtKYIgshWvJnUA6ks9GwjvWBLdHs,357
|
|
17
|
+
ngio/hcs/_plate.py,sha256=qfRwbCKaoz_AWTi8RDFFwOxy5geSknfJrPcqFVno9zI,44288
|
|
18
|
+
ngio/images/__init__.py,sha256=9Whvt7GTiCgT_vXaEEqGnDaY1-UsRk3dhLTv091F_g4,1211
|
|
19
|
+
ngio/images/_abstract_image.py,sha256=0o1wiNnzHXcSJHAJPd7cMdYatS_B8wT2bcWMzfyFd6A,16841
|
|
20
|
+
ngio/images/_create.py,sha256=61cuco2jUK25WzOY-Sel9s931FtGPL2ut25L9W10bJ4,10171
|
|
21
|
+
ngio/images/_create_synt_container.py,sha256=il_rr5_2KIQ5Xsskj2rb2fEm100ZErZq89aW06kn_7k,5444
|
|
22
|
+
ngio/images/_image.py,sha256=TB-xCGeYRxPj8pzREjj0tkGJz6EqjiUoDLw148ocWi4,32966
|
|
23
|
+
ngio/images/_label.py,sha256=ZQYtsECM04oPrXoiGAWvfIRz7CtsCTPd5ktUMCi-5nA,11712
|
|
24
|
+
ngio/images/_masked_image.py,sha256=0RFW5YudH8cfjLMa263PenBmok2FhYm-eNtgoQkz2Es,18731
|
|
25
|
+
ngio/images/_ome_zarr_container.py,sha256=UJERXEgBkwclpLaHzWqUIQc6P-TG4zYuKuxPukJGa4Y,38433
|
|
26
|
+
ngio/images/_table_ops.py,sha256=jFv_AMqoB4JBpoWsMtZppZVW7dAOC_u-JpfNm8b33kY,15292
|
|
27
|
+
ngio/io_pipes/__init__.py,sha256=HkqzC1gwGLFzIcHMkgEQ8-rh7w6LDEfvEwkwli-0IHE,1179
|
|
28
|
+
ngio/io_pipes/_io_pipes.py,sha256=loYbsFv0dbpngkd1HYsJ5s9HDcP9lb-QJQBwymSJyg8,8568
|
|
29
|
+
ngio/io_pipes/_io_pipes_masked.py,sha256=jRDS7m4b6Hl7AdxRvg9Dz3nOIl9nypoktj43FHEuBUI,16943
|
|
30
|
+
ngio/io_pipes/_io_pipes_roi.py,sha256=Rgvqy9C-fYEEmg2yoDROE3xiRGhjo5lH5_B8gXvt2dg,4678
|
|
31
|
+
ngio/io_pipes/_io_pipes_utils.py,sha256=r_c1N48L01McTLPRgezW9KGFes3JHQYYkpzOXnQElQ0,10505
|
|
32
|
+
ngio/io_pipes/_match_shape.py,sha256=eDy_Eqzld08m9zDuIjAvJnIhWh_HVjQS-5Pw9BMjdbw,13200
|
|
33
|
+
ngio/io_pipes/_ops_axes.py,sha256=BHOSFBGTKF32f4kqj8uu_NpiyLpR0zzBy9HN01OPGSs,4014
|
|
34
|
+
ngio/io_pipes/_ops_slices.py,sha256=9o2HqsiEfeBVcTcTpqmLEKrV-UOkILHdvii-nTXP_0w,7887
|
|
35
|
+
ngio/io_pipes/_ops_transforms.py,sha256=HsxLLGjQ8kx9HpkikYHhXC4s4DD1T56GJ4StjO7FCSk,2946
|
|
36
|
+
ngio/io_pipes/_zoom_transform.py,sha256=Au2nqNfODQWEpvc12OmYVmP-Uso7fEc-14hTK_GsGi4,6723
|
|
37
|
+
ngio/ome_zarr_meta/__init__.py,sha256=A5pyhdyLpwRyXXB81tMHFu36rq9-QzAzG0htRqBMpTo,1293
|
|
38
|
+
ngio/ome_zarr_meta/_meta_handlers.py,sha256=ctknNDT8jxwyvxQf9on5gW31H1tRRsnneO38GT2UXoE,25880
|
|
39
|
+
ngio/ome_zarr_meta/ngio_specs/__init__.py,sha256=PXTmXX9aeOlM9FLL-BXzW8v9ByezL_X7EDNx2zoBYm4,1726
|
|
40
|
+
ngio/ome_zarr_meta/ngio_specs/_axes.py,sha256=R2HIL31FreeqawvXQbhRRu3lPxYPviFOSnCOses6Dhw,21134
|
|
41
|
+
ngio/ome_zarr_meta/ngio_specs/_channels.py,sha256=CVsbG52U31TaMdTj8XqvClUdBya2Ar3qBjDo_xhP-NM,16967
|
|
42
|
+
ngio/ome_zarr_meta/ngio_specs/_dataset.py,sha256=CrHnjVWBGYPqErKkHR-E2DKrE3DmGznXMkd3Y9Z4uYo,3434
|
|
43
|
+
ngio/ome_zarr_meta/ngio_specs/_ngio_hcs.py,sha256=N1CGPOubwf0pvm8tiTnh-C1cOu9lToyDe3WagnEnPN4,17207
|
|
44
|
+
ngio/ome_zarr_meta/ngio_specs/_ngio_image.py,sha256=XmqeffYRspBZmv8gCrfJvnykmBViWgDo2AtJJkR7OEs,15886
|
|
45
|
+
ngio/ome_zarr_meta/ngio_specs/_pixel_size.py,sha256=SofMjLERvCxqP-ACxqyTEwYYAPeq0hjxt8Ujn4OZhZY,4656
|
|
46
|
+
ngio/ome_zarr_meta/v04/__init__.py,sha256=dJRzzxyYc81kf-0Hip_bqvbdManaM8XTdQX2meWyCSs,583
|
|
47
|
+
ngio/ome_zarr_meta/v04/_custom_models.py,sha256=5GxiDERvLuvq4QvApcA6EiKLS6hLFX1R0R_9rSaa85A,530
|
|
48
|
+
ngio/ome_zarr_meta/v04/_v04_spec_utils.py,sha256=OFMAKYvjhgCRhN_RNs8mJmOtyFHuw3k-lqOOrTRXvzU,15764
|
|
49
|
+
ngio/resources/__init__.py,sha256=4E4TXTNYEgRHt26C1XcC4pPobJJsmZRYm1Ml4uAuAkE,1664
|
|
50
|
+
ngio/resources/resource_model.py,sha256=eE1m0dyk-2psPC4X8Ifyan524QHUOd52TEQdvoU0m8I,861
|
|
51
|
+
ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/mask.png,sha256=g3QmxQdmeciAtBe5cTCRfR6yw3keG9cBYfjizMo6EGo,11890
|
|
52
|
+
ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/nuclei.png,sha256=Yw0k5pn2EHDMWTwyb7N51NX7WVk6-MlwfP9WZrhY-Ic,19446
|
|
53
|
+
ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/raw.jpg,sha256=82lejQAIokj5w9g-qqhysDTWpHtNvJTkdURG_BjqIxQ,37743
|
|
54
|
+
ngio/tables/__init__.py,sha256=_BV3sclNMLITu_J8_3DkkUrCB6Kro0HzeWLDCD1ivKM,877
|
|
55
|
+
ngio/tables/_abstract_table.py,sha256=rwGa47TzbFmosucBWVfFq6JEXtgGvOdUVtU9DIelV88,8204
|
|
56
|
+
ngio/tables/_tables_container.py,sha256=3xmpREaN671l40MPprnl1BD-VoOb6xfjECb5mNoMW0w,12173
|
|
57
|
+
ngio/tables/backends/__init__.py,sha256=MwSRXNF1rWQBFOTDA_vT3oGoNZpviVgytsL5Txnu08I,1619
|
|
58
|
+
ngio/tables/backends/_abstract_backend.py,sha256=54Vh9yPfLx1NixGVfFkW4msD51nsim0zIfHRnO80Xt8,7276
|
|
59
|
+
ngio/tables/backends/_anndata.py,sha256=97RWG4Hjc42JBxm-YxjHEU8HHd14NiayelKlI1PTsCo,2868
|
|
60
|
+
ngio/tables/backends/_anndata_utils.py,sha256=HsmP27fm7JW1kjahl4lUnnViK_iqmu2bnsu86z43U98,3116
|
|
61
|
+
ngio/tables/backends/_csv.py,sha256=Ev61D-AUKo4LIhXRmWPJgYbHI7eQdxiajQR574DevEM,932
|
|
62
|
+
ngio/tables/backends/_json.py,sha256=1ZsEuXDJm1rOZV_KjFm8CB0qhv7L1W7L2EGWPf4q_p0,3137
|
|
63
|
+
ngio/tables/backends/_non_zarr_backends.py,sha256=BybUl800pqCdqJJmsGnUi4jsH1ibpQSUl0ZnumkFDwY,7298
|
|
64
|
+
ngio/tables/backends/_parquet.py,sha256=ic-p86h8lce8q9luBJGRzy6vxlWyJvA0-2l5cUD6OqY,1398
|
|
65
|
+
ngio/tables/backends/_table_backends.py,sha256=ksP2NAosXZkNMZf-IMrLx7bjQgp_eKfvPYK4vMdT1A8,7250
|
|
66
|
+
ngio/tables/backends/_utils.py,sha256=YFB7u2_l8lLAK_jrmlSfzH-2sOAFaDP1bmeUfuNo7YM,19719
|
|
67
|
+
ngio/tables/v1/__init__.py,sha256=Wr1_9RZFpaN8FYMTnxT9Yjkw4AS7y9FMWailmB_uj5g,617
|
|
68
|
+
ngio/tables/v1/_condition_table.py,sha256=T0Uq5BKkmMoEspt_Rx0U99Ow6S9GAMZDHqvUO5obCAM,1780
|
|
69
|
+
ngio/tables/v1/_feature_table.py,sha256=n9uMHwoBh-_dlOhUXCFbmAjXFVXncNCR3SjE2qzXI68,3821
|
|
70
|
+
ngio/tables/v1/_generic_table.py,sha256=1ktJHeuv7U1g5Z8PFUuTkCjOzcYMQd8xegKHKUedJB8,1240
|
|
71
|
+
ngio/tables/v1/_roi_table.py,sha256=g7UpMmpf3uAfaG59WYRnimUBgiB_T1qUJRwMZpMt9cI,17099
|
|
72
|
+
ngio/transforms/__init__.py,sha256=JA0-Ui7skbXkm9ofN-AEhU1FTLutkMkwTdVD-310frQ,113
|
|
73
|
+
ngio/transforms/_zoom.py,sha256=otyE-vxFnywUJ8U4mHjat-bNG_7_jv62ckTpqDMxyVQ,550
|
|
74
|
+
ngio/utils/__init__.py,sha256=XPYh8ehC7uXNU2cFFXZAw-S3DpWpX1Yq2xGkffZv5vI,1142
|
|
75
|
+
ngio/utils/_datasets.py,sha256=2g-Neg78dNcqyDz39QQw-Ifp9GITHjVHisdqgvvDNDE,5475
|
|
76
|
+
ngio/utils/_errors.py,sha256=pKQ12LUjQLYE1nUawemA5h7HsgznjaSvV1n2PQU33N0,759
|
|
77
|
+
ngio/utils/_fractal_fsspec_store.py,sha256=RdcCFOgHexRKX9zZvJV5RI-5OPc7VOPS6q_IeRxm24I,1548
|
|
78
|
+
ngio/utils/_logger.py,sha256=N5W0a_xwze4blS1MolidBkTMbjTbg8GPguJZNun3mAE,1392
|
|
79
|
+
ngio/utils/_zarr_utils.py,sha256=GUOcAx02IcfrJ5tIdKu8ChtRUUaBbkkddW5jaCCYnS8,13797
|
|
80
|
+
ngio-0.4.0a4.dist-info/METADATA,sha256=Xg_Fe1eqlYK8VSvuZO2eRctss4pRDD1hjwgT4v_grHs,5868
|
|
81
|
+
ngio-0.4.0a4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
82
|
+
ngio-0.4.0a4.dist-info/licenses/LICENSE,sha256=UgN_a1QCeNh9rZWfz-wORQFxE3elQzLWPQaoK6N6fxQ,1502
|
|
83
|
+
ngio-0.4.0a4.dist-info/RECORD,,
|