ngio 0.5.0__py3-none-any.whl → 0.5.0a1__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.
Files changed (54) hide show
  1. ngio/__init__.py +2 -5
  2. ngio/common/__init__.py +6 -11
  3. ngio/common/_masking_roi.py +54 -34
  4. ngio/common/_pyramid.py +87 -321
  5. ngio/common/_roi.py +330 -258
  6. ngio/experimental/iterators/_feature.py +3 -3
  7. ngio/experimental/iterators/_rois_utils.py +11 -10
  8. ngio/hcs/_plate.py +136 -192
  9. ngio/images/_abstract_image.py +35 -539
  10. ngio/images/_create.py +283 -0
  11. ngio/images/_create_synt_container.py +43 -40
  12. ngio/images/_image.py +251 -517
  13. ngio/images/_label.py +172 -249
  14. ngio/images/_masked_image.py +2 -2
  15. ngio/images/_ome_zarr_container.py +241 -644
  16. ngio/io_pipes/_io_pipes.py +9 -9
  17. ngio/io_pipes/_io_pipes_masked.py +7 -7
  18. ngio/io_pipes/_io_pipes_roi.py +6 -6
  19. ngio/io_pipes/_io_pipes_types.py +3 -3
  20. ngio/io_pipes/_match_shape.py +8 -6
  21. ngio/io_pipes/_ops_slices_utils.py +5 -8
  22. ngio/ome_zarr_meta/__init__.py +18 -29
  23. ngio/ome_zarr_meta/_meta_handlers.py +708 -392
  24. ngio/ome_zarr_meta/ngio_specs/__init__.py +0 -4
  25. ngio/ome_zarr_meta/ngio_specs/_axes.py +51 -152
  26. ngio/ome_zarr_meta/ngio_specs/_dataset.py +22 -13
  27. ngio/ome_zarr_meta/ngio_specs/_ngio_hcs.py +91 -129
  28. ngio/ome_zarr_meta/ngio_specs/_ngio_image.py +68 -57
  29. ngio/ome_zarr_meta/v04/__init__.py +1 -5
  30. ngio/ome_zarr_meta/v04/{_v04_spec.py → _v04_spec_utils.py} +85 -54
  31. ngio/ome_zarr_meta/v05/__init__.py +1 -5
  32. ngio/ome_zarr_meta/v05/{_v05_spec.py → _v05_spec_utils.py} +87 -64
  33. ngio/resources/__init__.py +1 -1
  34. ngio/resources/resource_model.py +1 -1
  35. ngio/tables/_tables_container.py +27 -85
  36. ngio/tables/backends/_anndata.py +8 -58
  37. ngio/tables/backends/_anndata_utils.py +6 -1
  38. ngio/tables/backends/_csv.py +19 -3
  39. ngio/tables/backends/_json.py +13 -10
  40. ngio/tables/backends/_non_zarr_backends.py +196 -0
  41. ngio/tables/backends/_parquet.py +31 -3
  42. ngio/tables/v1/_roi_table.py +27 -44
  43. ngio/utils/__init__.py +12 -8
  44. ngio/utils/_datasets.py +0 -6
  45. ngio/utils/_logger.py +50 -0
  46. ngio/utils/_zarr_utils.py +250 -292
  47. {ngio-0.5.0.dist-info → ngio-0.5.0a1.dist-info}/METADATA +6 -13
  48. ngio-0.5.0a1.dist-info/RECORD +88 -0
  49. {ngio-0.5.0.dist-info → ngio-0.5.0a1.dist-info}/WHEEL +1 -1
  50. ngio/images/_create_utils.py +0 -406
  51. ngio/tables/backends/_py_arrow_backends.py +0 -222
  52. ngio/utils/_cache.py +0 -48
  53. ngio-0.5.0.dist-info/RECORD +0 -88
  54. {ngio-0.5.0.dist-info → ngio-0.5.0a1.dist-info}/licenses/LICENSE +0 -0
@@ -1,222 +0,0 @@
1
- from typing import Literal
2
-
3
- import polars as pl
4
- import pyarrow as pa
5
- import pyarrow.csv as pa_csv
6
- import pyarrow.dataset as pa_ds
7
- import pyarrow.fs as pa_fs
8
- import pyarrow.parquet as pa_parquet
9
- from pandas import DataFrame
10
- from polars import DataFrame as PolarsDataFrame
11
- from polars import LazyFrame
12
- from zarr.storage import FsspecStore, LocalStore, MemoryStore, ZipStore
13
-
14
- from ngio.tables.backends._abstract_backend import AbstractTableBackend
15
- from ngio.tables.backends._utils import normalize_pandas_df, normalize_polars_lf
16
- from ngio.utils import NgioValueError
17
- from ngio.utils._zarr_utils import _make_sync_fs
18
-
19
-
20
- class PyArrowBackend(AbstractTableBackend):
21
- """A class to load and write small tables in CSV format."""
22
-
23
- def __init__(
24
- self,
25
- table_name: str,
26
- table_format: Literal["csv", "parquet"] = "parquet",
27
- ):
28
- self.table_name = table_name
29
- self.table_format = table_format
30
-
31
- @staticmethod
32
- def implements_anndata() -> bool:
33
- """Whether the handler implements the anndata protocol."""
34
- return False
35
-
36
- @staticmethod
37
- def implements_pandas() -> bool:
38
- """Whether the handler implements the dataframe protocol."""
39
- return True
40
-
41
- @staticmethod
42
- def implements_polars() -> bool:
43
- """Whether the handler implements the polars protocol."""
44
- return True
45
-
46
- @staticmethod
47
- def backend_name() -> str:
48
- """Return the name of the backend."""
49
- raise NotImplementedError(
50
- "The backend_name method must be implemented in the subclass."
51
- )
52
-
53
- def _raise_store_type_not_supported(self):
54
- """Raise an error for unsupported store types."""
55
- ext = self.table_name.split(".")[-1]
56
- store = self._group_handler.store
57
- raise NgioValueError(
58
- f"Ngio does not support reading a {ext} table from a "
59
- f"store of type {type(store)}. "
60
- "Please make sure to use a compatible "
61
- "store like a LocalStore, or "
62
- "FsspecStore, or MemoryStore, or ZipStore."
63
- )
64
-
65
- def _load_from_local_store(self, store: LocalStore, path: str) -> pa_ds.Dataset:
66
- """Load the table from a directory store."""
67
- root_path = store.root
68
- table_path = f"{root_path}/{path}/{self.table_name}"
69
- dataset = pa_ds.dataset(table_path, format=self.table_format)
70
- return dataset
71
-
72
- def _load_from_fsspec_store(self, store: FsspecStore, path: str) -> pa_ds.Dataset:
73
- """Load the table from an FS store."""
74
- table_path = f"{store.path}/{path}/{self.table_name}"
75
- fs = _make_sync_fs(store.fs)
76
- dataset = pa_ds.dataset(table_path, format=self.table_format, filesystem=fs)
77
- return dataset
78
-
79
- def _load_from_in_memory_store(
80
- self, store: MemoryStore, path: str
81
- ) -> pa_ds.Dataset:
82
- """Load the table from an in-memory store."""
83
- table_path = f"{path}/{self.table_name}"
84
- table = store._store_dict.get(table_path, None)
85
- if table is None:
86
- raise NgioValueError(
87
- f"Table {self.table_name} not found in the in-memory store at "
88
- f"path {path}."
89
- )
90
- assert isinstance(table, pa.Table)
91
- dataset = pa_ds.dataset(table)
92
- return dataset
93
-
94
- def _load_from_zip_store(self, store: ZipStore, path: str) -> pa_ds.Dataset:
95
- """Load the table from a zip store."""
96
- raise NotImplementedError("Zip store loading is not implemented yet.")
97
-
98
- def _load_pyarrow_dataset(self) -> pa_ds.Dataset:
99
- """Load the table as a pyarrow Dataset."""
100
- store = self._group_handler.store
101
- path = self._group_handler.group.path
102
- if isinstance(store, LocalStore):
103
- return self._load_from_local_store(store, path)
104
- elif isinstance(store, FsspecStore):
105
- return self._load_from_fsspec_store(store, path)
106
- elif isinstance(store, MemoryStore):
107
- return self._load_from_in_memory_store(store, path)
108
- elif isinstance(store, ZipStore):
109
- return self._load_from_zip_store(store, path)
110
- self._raise_store_type_not_supported()
111
-
112
- def load_as_pandas_df(self) -> DataFrame:
113
- """Load the table as a pandas DataFrame."""
114
- dataset = self._load_pyarrow_dataset()
115
- dataframe = dataset.to_table().to_pandas()
116
- dataframe = normalize_pandas_df(
117
- dataframe,
118
- index_key=self.index_key,
119
- index_type=self.index_type,
120
- reset_index=False,
121
- )
122
- return dataframe
123
-
124
- def load(self) -> DataFrame:
125
- """Load the table as a pandas DataFrame."""
126
- return self.load_as_pandas_df()
127
-
128
- def load_as_polars_lf(self) -> LazyFrame:
129
- """Load the table as a polars LazyFrame."""
130
- dataset = self._load_pyarrow_dataset()
131
- lazy_frame = pl.scan_pyarrow_dataset(dataset)
132
- if not isinstance(lazy_frame, LazyFrame):
133
- raise NgioValueError(
134
- "Table is not a lazy frame. Please report this issue as an ngio bug."
135
- f" {type(lazy_frame)}"
136
- )
137
-
138
- lazy_frame = normalize_polars_lf(
139
- lazy_frame,
140
- index_key=self.index_key,
141
- index_type=self.index_type,
142
- )
143
- return lazy_frame
144
-
145
- def _write_to_stream(self, stream, table: pa.Table) -> None:
146
- """Write the table to a stream."""
147
- if self.table_format == "parquet":
148
- pa_parquet.write_table(table, stream)
149
- elif self.table_format == "csv":
150
- pa_csv.write_csv(table, stream)
151
- else:
152
- raise NgioValueError(
153
- f"Unsupported table format: {self.table_format}. "
154
- "Supported formats are 'parquet' and 'csv'."
155
- )
156
-
157
- def _write_to_local_store(
158
- self, store: LocalStore, path: str, table: pa.Table
159
- ) -> None:
160
- """Write the table to a directory store."""
161
- root_path = store.root
162
- table_path = f"{root_path}/{path}/{self.table_name}"
163
- self._write_to_stream(table_path, table)
164
-
165
- def _write_to_fsspec_store(
166
- self, store: FsspecStore, path: str, table: pa.Table
167
- ) -> None:
168
- """Write the table to an FS store."""
169
- table_path = f"{store.path}/{path}/{self.table_name}"
170
- fs = _make_sync_fs(store.fs)
171
- fs = pa_fs.PyFileSystem(pa_fs.FSSpecHandler(fs))
172
- with fs.open_output_stream(table_path) as out_stream:
173
- self._write_to_stream(out_stream, table)
174
-
175
- def _write_to_in_memory_store(
176
- self, store: MemoryStore, path: str, table: pa.Table
177
- ) -> None:
178
- """Write the table to an in-memory store."""
179
- table_path = f"{path}/{self.table_name}"
180
- store._store_dict[table_path] = table
181
-
182
- def _write_to_zip_store(self, store: ZipStore, path: str, table: pa.Table) -> None:
183
- """Write the table to a zip store."""
184
- raise NotImplementedError("Writing to zip store is not implemented yet.")
185
-
186
- def _write_pyarrow_dataset(self, dataset: pa.Table) -> None:
187
- """Write the table from a pyarrow Dataset."""
188
- store = self._group_handler.store
189
- path = self._group_handler.group.path
190
- if isinstance(store, LocalStore):
191
- return self._write_to_local_store(store=store, path=path, table=dataset)
192
- elif isinstance(store, FsspecStore):
193
- return self._write_to_fsspec_store(store=store, path=path, table=dataset)
194
- elif isinstance(store, MemoryStore):
195
- return self._write_to_in_memory_store(store=store, path=path, table=dataset)
196
- elif isinstance(store, ZipStore):
197
- return self._write_to_zip_store(store=store, path=path, table=dataset)
198
- self._raise_store_type_not_supported()
199
-
200
- def write_from_pandas(self, table: DataFrame) -> None:
201
- """Write the table from a pandas DataFrame."""
202
- table = normalize_pandas_df(
203
- table,
204
- index_key=self.index_key,
205
- index_type=self.index_type,
206
- reset_index=True,
207
- )
208
- table = pa.Table.from_pandas(table, preserve_index=False)
209
- self._write_pyarrow_dataset(table)
210
-
211
- def write_from_polars(self, table: PolarsDataFrame | LazyFrame) -> None:
212
- """Write the table from a polars DataFrame or LazyFrame."""
213
- table = normalize_polars_lf(
214
- table,
215
- index_key=self.index_key,
216
- index_type=self.index_type,
217
- )
218
-
219
- if isinstance(table, LazyFrame):
220
- table = table.collect()
221
- table = table.to_arrow()
222
- self._write_pyarrow_dataset(table)
ngio/utils/_cache.py DELETED
@@ -1,48 +0,0 @@
1
- from typing import Generic, TypeVar
2
-
3
- T = TypeVar("T")
4
-
5
-
6
- class NgioCache(Generic[T]):
7
- """A simple cache for NGIO objects."""
8
-
9
- def __init__(self, use_cache: bool = True):
10
- self._cache: dict[str, T] = {}
11
- self._use_cache = use_cache
12
-
13
- def _cache_sanity_check(self) -> None:
14
- if len(self._cache) > 0:
15
- raise RuntimeError(
16
- "Cache is disabled, but cache contains items. "
17
- "This indicates a logic error."
18
- )
19
-
20
- @property
21
- def use_cache(self) -> bool:
22
- return self._use_cache
23
-
24
- @property
25
- def cache(self) -> dict[str, T]:
26
- return self._cache
27
-
28
- @property
29
- def is_empty(self) -> bool:
30
- return len(self._cache) == 0
31
-
32
- def get(self, key: str, default: T | None = None) -> T | None:
33
- if not self._use_cache:
34
- self._cache_sanity_check()
35
- return default
36
- return self._cache.get(key, default)
37
-
38
- def set(self, key: str, value: T, overwrite: bool = True) -> None:
39
- if not self._use_cache:
40
- self._cache_sanity_check()
41
- return
42
- self._cache[key] = value
43
-
44
- def clear(self) -> None:
45
- if not self._use_cache:
46
- self._cache_sanity_check()
47
- return
48
- self._cache.clear()
@@ -1,88 +0,0 @@
1
- ngio/__init__.py,sha256=kyInohhWrBs4qkbMYFIQeAiy1CDpvbSOtXB4buFocbw,1535
2
- ngio/common/__init__.py,sha256=F3zAHQIhwig1xUA-SpmFVRtMeOrEj926-nHWhj-wS6c,684
3
- ngio/common/_dimensions.py,sha256=w8PYgyWxA8hgJETjFbw5CXf7WrasCL5FbzgfL1in86M,11361
4
- ngio/common/_masking_roi.py,sha256=-2IzQvaIpdgAxS8LY3DRb-Eax5efX6H0OhV7lNVdL1E,5202
5
- ngio/common/_pyramid.py,sha256=7kbvCY4J0hLl_iV5oT267j_h3UTkbqIdltqHcrwicvw,17571
6
- ngio/common/_roi.py,sha256=IM0rYaekNvEDSMctYbAEZkeG9iPaJ1qjtnJ9kOVV8as,11416
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=TECOMGb5PEEZ0yXxt8pqIGvLKG41g_L1fTJU-zGPeV8,488
11
- ngio/experimental/iterators/_abstract_iterator.py,sha256=7aAoMI-6vYGCMKxO3M10WpuBMTdqX4zr0K-TutAOp88,13195
12
- ngio/experimental/iterators/_feature.py,sha256=OnqeSP-UMWku7AIBcutsDsAWqnFqPrjCJiMvMGM96fk,6714
13
- ngio/experimental/iterators/_image_processing.py,sha256=cM7sL7xgdcjSOKAu-6367Aov89o6wgiJ_wqCGkU2Bsw,5091
14
- ngio/experimental/iterators/_mappers.py,sha256=VVVsjems57wJUnWeufUFcgqa23k7VPeFL4Nc04HVw4o,1399
15
- ngio/experimental/iterators/_rois_utils.py,sha256=5foGjt3qrACNrO29LlvSUbJ4yfI0z6MhU2oVCzEU214,4363
16
- ngio/experimental/iterators/_segmentation.py,sha256=xzotGvTn04HPeMeXZ_URnQqWco6d2lH6Ng6vkCUh9NM,9153
17
- ngio/hcs/__init__.py,sha256=G8j9vD-liLeB_UeGtKYIgshWvJnUA6ks9GwjvWBLdHs,357
18
- ngio/hcs/_plate.py,sha256=-dFlUuB4DbzR-A5OONafiIGaTpasd9uybRybNgGDFPQ,46118
19
- ngio/images/__init__.py,sha256=9Whvt7GTiCgT_vXaEEqGnDaY1-UsRk3dhLTv091F_g4,1211
20
- ngio/images/_abstract_image.py,sha256=YUBLCqLOWD_9BlwhoVqNc6ISdmmqP1DUbZKn_sk8DJU,36022
21
- ngio/images/_create_synt_container.py,sha256=4hZa0wKfI5RL30vsPE841SCVhWNb9Kj8kJiaTsD-0BA,5399
22
- ngio/images/_create_utils.py,sha256=CxRO-b0_vyL27jMg6koXlt9vFNU1lmqKIWOU5ypAtvg,13811
23
- ngio/images/_image.py,sha256=Ei2_bqsLg7q1rhjDIKusXqSdqhar8Ojsd6mYZ9ar6GI,45558
24
- ngio/images/_label.py,sha256=iC9XPyM5SOWcI3Z3PZ0M1RUUCCUbBQ98zdrchva00Jw,16002
25
- ngio/images/_masked_image.py,sha256=25BFnEHTqWdq5ImLs6dbo_X-ryGLIL7vJ2mmbx4Npv8,18834
26
- ngio/images/_ome_zarr_container.py,sha256=ddcDRGhmJoyg47NHFaoNLZuWfXpLfNkZtP-hzLWWBIQ,56100
27
- ngio/images/_table_ops.py,sha256=jFv_AMqoB4JBpoWsMtZppZVW7dAOC_u-JpfNm8b33kY,15292
28
- ngio/io_pipes/__init__.py,sha256=arW_7GWzZs82kPNKdm_6B1sIDFV0lWwp-ZaORr9Q1FQ,2412
29
- ngio/io_pipes/_io_pipes.py,sha256=l85mmjj1l0uYU3qzsSHg9l8cMIEevInm_MTD-8MlXgw,10603
30
- ngio/io_pipes/_io_pipes_masked.py,sha256=uvfNIuW8prWux3fZ-a25l44zDfZW4qBaXZEm0TkhloA,16916
31
- ngio/io_pipes/_io_pipes_roi.py,sha256=HJHlItx2nsFYcE4OjvVR-W0lFMMK8CcyYK23dKUrP8w,4472
32
- ngio/io_pipes/_io_pipes_types.py,sha256=PcRdnjBJIsXcDT1_dbH2LZiH6d3z6D7y48cmybyZCXk,1358
33
- ngio/io_pipes/_match_shape.py,sha256=sCAhJHzlqZwnz1MmwFCUQkH_6rohMSNwPCAmCuDElEA,13002
34
- ngio/io_pipes/_ops_axes.py,sha256=Geg4ZXxB0njWWopX9YeiwRJJ9Ef2GKfG0NIUafOmi2c,10043
35
- ngio/io_pipes/_ops_slices.py,sha256=hHMIOQ_niUSK9uFl8P2-10dP_K4GX3Do6vivN4fGRE0,14520
36
- ngio/io_pipes/_ops_slices_utils.py,sha256=mps_I0eTI4gdBVM9MCKsd8rCyefdo9bIK9fEmqwr23E,6633
37
- ngio/io_pipes/_ops_transforms.py,sha256=uITs6v6sZ7DQ_Hpw3JdX8MuPOzir-bihvGzY84Qn4wY,2934
38
- ngio/io_pipes/_zoom_transform.py,sha256=WBY1tO6_Qhf8FaDujfTdipuuqFf7PSi204wx5VKKs88,6884
39
- ngio/ome_zarr_meta/__init__.py,sha256=7VDrX-ev5Gg2zQfGsrlj-YPTeIGzbplxbptxw1u-vU0,1491
40
- ngio/ome_zarr_meta/_meta_handlers.py,sha256=u6a-z-q4Gu0TSahpD5qCmpIOLwnJqNjfoAnOyzzCyrg,14794
41
- ngio/ome_zarr_meta/ngio_specs/__init__.py,sha256=FukhukN9ksW-SDUiAtmiwpQ7c9qWAyq0cnTnSqZLsVc,1800
42
- ngio/ome_zarr_meta/ngio_specs/_axes.py,sha256=yfFylcr_xGda5HuXWRV25V4gRUbNJdfJwyn9mqXEB6I,20313
43
- ngio/ome_zarr_meta/ngio_specs/_channels.py,sha256=TDxIy-yVc2YaWPIFJRYnYwZbA8O5Ee_OiWppHYrEdpU,16647
44
- ngio/ome_zarr_meta/ngio_specs/_dataset.py,sha256=5YdAplk90koX3vjoIJimms-CJYxt095rJ9YagZSQg88,2872
45
- ngio/ome_zarr_meta/ngio_specs/_ngio_hcs.py,sha256=kktIwHWZ8u2f6xMUB4zXiUfNF6i-We86_agLjJ7XVOU,18363
46
- ngio/ome_zarr_meta/ngio_specs/_ngio_image.py,sha256=LJE_bA8e5KIEm_7pr15Etda-KhKCAqjWCUFHoCnwTag,15654
47
- ngio/ome_zarr_meta/ngio_specs/_pixel_size.py,sha256=4VF1djY9T5tp6GCJXppFrUJwALI1XgIm0imoM5rNvdE,3876
48
- ngio/ome_zarr_meta/v04/__init__.py,sha256=tRt3zGelL948EoLfy_gW-LKvJcBbSkbT9kwIgU0hQV8,721
49
- ngio/ome_zarr_meta/v04/_custom_models.py,sha256=5GxiDERvLuvq4QvApcA6EiKLS6hLFX1R0R_9rSaa85A,530
50
- ngio/ome_zarr_meta/v04/_v04_spec.py,sha256=S9a9Z3wYLI-WHnOZsg3RKPAcovssqGIr-x8GVAjV0IU,14321
51
- ngio/ome_zarr_meta/v05/__init__.py,sha256=B6VIUkrm5W4lcrvy4R7c7NZ6dEx-0a1AhqhZ7snCnCo,721
52
- ngio/ome_zarr_meta/v05/_custom_models.py,sha256=ZN3bE9nwx4y3tElhsYafI4S2zp_WzdkQKcyuuBiaXXo,530
53
- ngio/ome_zarr_meta/v05/_v05_spec.py,sha256=pCIoSsYmJjmrZ3jbgkdio7e6qKV2_ggd4WQe4zBSt8M,15225
54
- ngio/resources/__init__.py,sha256=pOo2YqxDlzTSWo6qyYQzXZbIKWSUoEl3iqX41Iw-oQI,1661
55
- ngio/resources/resource_model.py,sha256=mmx8gbfDHBg_gVNvtZZydAZDATdmcaM8DsOfnRVrXXA,858
56
- ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/mask.png,sha256=g3QmxQdmeciAtBe5cTCRfR6yw3keG9cBYfjizMo6EGo,11890
57
- ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/nuclei.png,sha256=Yw0k5pn2EHDMWTwyb7N51NX7WVk6-MlwfP9WZrhY-Ic,19446
58
- ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/raw.jpg,sha256=82lejQAIokj5w9g-qqhysDTWpHtNvJTkdURG_BjqIxQ,37743
59
- ngio/tables/__init__.py,sha256=_BV3sclNMLITu_J8_3DkkUrCB6Kro0HzeWLDCD1ivKM,877
60
- ngio/tables/_abstract_table.py,sha256=rwGa47TzbFmosucBWVfFq6JEXtgGvOdUVtU9DIelV88,8204
61
- ngio/tables/_tables_container.py,sha256=4frJpcfuW-J8N13enzFuH6wQIVwRVRKN7FOLWx_VxRc,14035
62
- ngio/tables/backends/__init__.py,sha256=MwSRXNF1rWQBFOTDA_vT3oGoNZpviVgytsL5Txnu08I,1619
63
- ngio/tables/backends/_abstract_backend.py,sha256=M1ogsBpWBiQMV65YweZhA845PAtkzG2BsZCPN_7Xp8U,7613
64
- ngio/tables/backends/_anndata.py,sha256=T67N-SPNO4eqe7-VGAUfgtwaSy_o2DqCvZgE2yRH5jE,4582
65
- ngio/tables/backends/_anndata_utils.py,sha256=PoHiLkGeDhBgPsEMJi9QH-NejHmfrfILcwj1CYubyCM,3095
66
- ngio/tables/backends/_csv.py,sha256=iZJNLHOXYysV_2iq6Lmekq0XXYsVE7OYrKz2HP2TU9w,479
67
- ngio/tables/backends/_json.py,sha256=A4iaKOIc5Q_XKDOm321QNqAN4DAOuA-dEinnfTlk1Fk,3091
68
- ngio/tables/backends/_parquet.py,sha256=Fi3VZlTH5UTykk0eqr43_e_Qt_GQcEN-3pHK07XFBwk,503
69
- ngio/tables/backends/_py_arrow_backends.py,sha256=lxxI5TN4lFYwpsjD1g1xAxEt4lZ9Mu7YW3-m3nIuo2g,8587
70
- ngio/tables/backends/_table_backends.py,sha256=ksP2NAosXZkNMZf-IMrLx7bjQgp_eKfvPYK4vMdT1A8,7250
71
- ngio/tables/backends/_utils.py,sha256=t4dLXSPxx2AnJvVtj0GIwrLoO11h4Ges6U7hj4md0hY,19730
72
- ngio/tables/v1/__init__.py,sha256=Wr1_9RZFpaN8FYMTnxT9Yjkw4AS7y9FMWailmB_uj5g,617
73
- ngio/tables/v1/_condition_table.py,sha256=T0Uq5BKkmMoEspt_Rx0U99Ow6S9GAMZDHqvUO5obCAM,1780
74
- ngio/tables/v1/_feature_table.py,sha256=n9uMHwoBh-_dlOhUXCFbmAjXFVXncNCR3SjE2qzXI68,3821
75
- ngio/tables/v1/_generic_table.py,sha256=1ktJHeuv7U1g5Z8PFUuTkCjOzcYMQd8xegKHKUedJB8,1240
76
- ngio/tables/v1/_roi_table.py,sha256=DuKJlDmtQtLOfL0g4CSdncfm4hBsKWG6F6fkMUpt4Nk,17821
77
- ngio/transforms/__init__.py,sha256=JA0-Ui7skbXkm9ofN-AEhU1FTLutkMkwTdVD-310frQ,113
78
- ngio/transforms/_zoom.py,sha256=otyE-vxFnywUJ8U4mHjat-bNG_7_jv62ckTpqDMxyVQ,550
79
- ngio/utils/__init__.py,sha256=d2OHQGMFPpf8-_ipuqquxtqCNGJpX5yXt34A65nScUU,1037
80
- ngio/utils/_cache.py,sha256=Ey9fgc_BTdMyqg6c80C0CuGDhOafln8-3e_1MQ0MFzw,1283
81
- ngio/utils/_datasets.py,sha256=YOV367skFA8nbKAqbyK0EsUU7E9UId_u5ButuLesrzk,5896
82
- ngio/utils/_errors.py,sha256=pKQ12LUjQLYE1nUawemA5h7HsgznjaSvV1n2PQU33N0,759
83
- ngio/utils/_fractal_fsspec_store.py,sha256=RdcCFOgHexRKX9zZvJV5RI-5OPc7VOPS6q_IeRxm24I,1548
84
- ngio/utils/_zarr_utils.py,sha256=n9EvUIZFNIBIHBoadefSz_7r9q8GLu7x7FF2G6Dgb94,18095
85
- ngio-0.5.0.dist-info/METADATA,sha256=tecky39dej2Kd41NqWTJaAloeiXQAgGDtoyXJNJdWgU,6424
86
- ngio-0.5.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
87
- ngio-0.5.0.dist-info/licenses/LICENSE,sha256=UgN_a1QCeNh9rZWfz-wORQFxE3elQzLWPQaoK6N6fxQ,1502
88
- ngio-0.5.0.dist-info/RECORD,,