ngio 0.3.5__tar.gz → 0.4.0__tar.gz

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 (285) hide show
  1. {ngio-0.3.5 → ngio-0.4.0}/.github/workflows/build_docs.yml +2 -2
  2. {ngio-0.3.5 → ngio-0.4.0}/.github/workflows/ci.yml +5 -5
  3. {ngio-0.3.5 → ngio-0.4.0}/.pre-commit-config.yaml +4 -4
  4. ngio-0.4.0/CHANGELOG.md +56 -0
  5. {ngio-0.3.5 → ngio-0.4.0}/PKG-INFO +16 -14
  6. {ngio-0.3.5 → ngio-0.4.0}/README.md +13 -12
  7. ngio-0.4.0/docs/api/hcs.md +17 -0
  8. ngio-0.4.0/docs/api/images.md +17 -0
  9. ngio-0.4.0/docs/api/iterators.md +17 -0
  10. ngio-0.4.0/docs/api/ngio/common.md +3 -0
  11. ngio-0.4.0/docs/api/ngio/hcs.md +3 -0
  12. ngio-0.4.0/docs/api/ngio/images.md +3 -0
  13. ngio-0.4.0/docs/api/ngio/io_pipes.md +3 -0
  14. ngio-0.4.0/docs/api/ngio/iterators.md +3 -0
  15. ngio-0.4.0/docs/api/ngio/ngio.md +3 -0
  16. ngio-0.4.0/docs/api/ngio/tables.md +3 -0
  17. ngio-0.4.0/docs/api/ngio/transforms.md +3 -0
  18. ngio-0.4.0/docs/api/ngio/utils.md +3 -0
  19. ngio-0.4.0/docs/api/ome_zarr_container.md +14 -0
  20. ngio-0.4.0/docs/api/tables.md +1 -0
  21. {ngio-0.3.5 → ngio-0.4.0}/docs/getting_started/1_ome_zarr_containers.md +2 -2
  22. {ngio-0.3.5 → ngio-0.4.0}/docs/getting_started/2_images.md +23 -10
  23. {ngio-0.3.5 → ngio-0.4.0}/docs/getting_started/3_tables.md +5 -5
  24. ngio-0.4.0/docs/getting_started/6_iterators.md +14 -0
  25. {ngio-0.3.5 → ngio-0.4.0}/docs/index.md +11 -9
  26. {ngio-0.3.5 → ngio-0.4.0}/docs/table_specs/backend.md +1 -1
  27. {ngio-0.3.5 → ngio-0.4.0}/docs/table_specs/table_types/masking_roi_table.md +2 -0
  28. {ngio-0.3.5 → ngio-0.4.0}/docs/table_specs/table_types/roi_table.md +1 -0
  29. ngio-0.4.0/docs/tutorials/create_ome_zarr.ipynb +101 -0
  30. ngio-0.4.0/docs/tutorials/feature_extraction.ipynb +168 -0
  31. ngio-0.4.0/docs/tutorials/hcs_exploration.ipynb +128 -0
  32. ngio-0.4.0/docs/tutorials/image_processing.ipynb +267 -0
  33. ngio-0.4.0/docs/tutorials/image_segmentation.ipynb +273 -0
  34. {ngio-0.3.5 → ngio-0.4.0}/mkdocs.yml +37 -7
  35. {ngio-0.3.5 → ngio-0.4.0}/pyproject.toml +3 -1
  36. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/__init__.py +7 -2
  37. ngio-0.4.0/src/ngio/common/__init__.py +23 -0
  38. ngio-0.4.0/src/ngio/common/_dimensions.py +335 -0
  39. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/common/_masking_roi.py +38 -10
  40. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/common/_pyramid.py +51 -30
  41. ngio-0.4.0/src/ngio/common/_roi.py +354 -0
  42. ngio-0.4.0/src/ngio/common/_synt_images_utils.py +101 -0
  43. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/common/_zoom.py +49 -19
  44. ngio-0.4.0/src/ngio/experimental/__init__.py +5 -0
  45. ngio-0.4.0/src/ngio/experimental/iterators/__init__.py +15 -0
  46. ngio-0.4.0/src/ngio/experimental/iterators/_abstract_iterator.py +390 -0
  47. ngio-0.4.0/src/ngio/experimental/iterators/_feature.py +189 -0
  48. ngio-0.4.0/src/ngio/experimental/iterators/_image_processing.py +130 -0
  49. ngio-0.4.0/src/ngio/experimental/iterators/_mappers.py +48 -0
  50. ngio-0.4.0/src/ngio/experimental/iterators/_rois_utils.py +127 -0
  51. ngio-0.4.0/src/ngio/experimental/iterators/_segmentation.py +235 -0
  52. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/hcs/_plate.py +41 -36
  53. ngio-0.4.0/src/ngio/images/__init__.py +44 -0
  54. ngio-0.4.0/src/ngio/images/_abstract_image.py +587 -0
  55. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/images/_create.py +31 -15
  56. ngio-0.4.0/src/ngio/images/_create_synt_container.py +138 -0
  57. ngio-0.4.0/src/ngio/images/_image.py +921 -0
  58. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/images/_label.py +56 -30
  59. ngio-0.4.0/src/ngio/images/_masked_image.py +531 -0
  60. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/images/_ome_zarr_container.py +237 -67
  61. {ngio-0.3.5/src/ngio/common → ngio-0.4.0/src/ngio/images}/_table_ops.py +41 -41
  62. ngio-0.4.0/src/ngio/io_pipes/__init__.py +75 -0
  63. ngio-0.4.0/src/ngio/io_pipes/_io_pipes.py +361 -0
  64. ngio-0.4.0/src/ngio/io_pipes/_io_pipes_masked.py +488 -0
  65. ngio-0.4.0/src/ngio/io_pipes/_io_pipes_roi.py +152 -0
  66. ngio-0.4.0/src/ngio/io_pipes/_io_pipes_types.py +56 -0
  67. ngio-0.4.0/src/ngio/io_pipes/_match_shape.py +376 -0
  68. ngio-0.4.0/src/ngio/io_pipes/_ops_axes.py +344 -0
  69. ngio-0.4.0/src/ngio/io_pipes/_ops_slices.py +446 -0
  70. ngio-0.4.0/src/ngio/io_pipes/_ops_slices_utils.py +196 -0
  71. ngio-0.4.0/src/ngio/io_pipes/_ops_transforms.py +104 -0
  72. ngio-0.4.0/src/ngio/io_pipes/_zoom_transform.py +175 -0
  73. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/ome_zarr_meta/__init__.py +4 -2
  74. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/ome_zarr_meta/ngio_specs/__init__.py +4 -10
  75. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/ome_zarr_meta/ngio_specs/_axes.py +186 -175
  76. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/ome_zarr_meta/ngio_specs/_channels.py +55 -18
  77. ngio-0.4.0/src/ngio/ome_zarr_meta/ngio_specs/_dataset.py +98 -0
  78. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/ome_zarr_meta/ngio_specs/_ngio_hcs.py +3 -3
  79. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/ome_zarr_meta/ngio_specs/_ngio_image.py +38 -87
  80. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/ome_zarr_meta/ngio_specs/_pixel_size.py +17 -1
  81. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/ome_zarr_meta/v04/_v04_spec_utils.py +34 -31
  82. ngio-0.4.0/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/mask.png +0 -0
  83. ngio-0.4.0/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/nuclei.png +0 -0
  84. ngio-0.4.0/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/raw.jpg +0 -0
  85. ngio-0.4.0/src/ngio/resources/__init__.py +55 -0
  86. ngio-0.4.0/src/ngio/resources/resource_model.py +36 -0
  87. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/backends/_abstract_backend.py +5 -6
  88. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/backends/_anndata.py +1 -1
  89. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/backends/_anndata_utils.py +3 -3
  90. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/backends/_non_zarr_backends.py +1 -1
  91. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/backends/_table_backends.py +0 -1
  92. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/backends/_utils.py +3 -3
  93. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/v1/_roi_table.py +165 -70
  94. ngio-0.4.0/src/ngio/transforms/__init__.py +5 -0
  95. ngio-0.4.0/src/ngio/transforms/_zoom.py +19 -0
  96. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/utils/__init__.py +2 -3
  97. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/utils/_datasets.py +5 -0
  98. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/utils/_logger.py +19 -0
  99. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/utils/_zarr_utils.py +6 -6
  100. ngio-0.4.0/tests/unit/common/test_dimensions.py +161 -0
  101. {ngio-0.3.5 → ngio-0.4.0}/tests/unit/common/test_pyramid.py +11 -8
  102. ngio-0.4.0/tests/unit/common/test_roi.py +201 -0
  103. ngio-0.4.0/tests/unit/common/test_transforms.py +45 -0
  104. {ngio-0.3.5 → ngio-0.4.0}/tests/unit/hcs/test_plate.py +2 -2
  105. {ngio-0.3.5 → ngio-0.4.0}/tests/unit/images/test_create.py +13 -1
  106. ngio-0.4.0/tests/unit/images/test_images.py +189 -0
  107. ngio-0.4.0/tests/unit/images/test_masked_images.py +157 -0
  108. {ngio-0.3.5 → ngio-0.4.0}/tests/unit/images/test_omezarr_container.py +137 -9
  109. {ngio-0.3.5/tests/unit/common → ngio-0.4.0/tests/unit/images}/test_table_ops.py +7 -7
  110. ngio-0.4.0/tests/unit/io_pipes/test_axes_ops.py +48 -0
  111. ngio-0.4.0/tests/unit/io_pipes/test_slicing_ops.py +112 -0
  112. ngio-0.4.0/tests/unit/iterators/test_iterators.py +193 -0
  113. {ngio-0.3.5 → ngio-0.4.0}/tests/unit/ome_zarr_meta/test_unit_ngio_specs.py +117 -159
  114. ngio-0.3.5/CHANGELOG.md +0 -26
  115. ngio-0.3.5/docs/api/common.md +0 -6
  116. ngio-0.3.5/docs/api/hcs.md +0 -6
  117. ngio-0.3.5/docs/api/images.md +0 -6
  118. ngio-0.3.5/docs/api/ngio.md +0 -6
  119. ngio-0.3.5/docs/api/tables.md +0 -6
  120. ngio-0.3.5/docs/api/utils.md +0 -6
  121. ngio-0.3.5/docs/tutorials/feature_extraction.ipynb +0 -35
  122. ngio-0.3.5/docs/tutorials/hcs_processing.ipynb +0 -21
  123. ngio-0.3.5/docs/tutorials/image_processing.ipynb +0 -21
  124. ngio-0.3.5/docs/tutorials/image_segmentation.ipynb +0 -176
  125. ngio-0.3.5/src/ngio/common/__init__.py +0 -70
  126. ngio-0.3.5/src/ngio/common/_array_pipe.py +0 -288
  127. ngio-0.3.5/src/ngio/common/_axes_transforms.py +0 -64
  128. ngio-0.3.5/src/ngio/common/_common_types.py +0 -5
  129. ngio-0.3.5/src/ngio/common/_dimensions.py +0 -120
  130. ngio-0.3.5/src/ngio/common/_roi.py +0 -167
  131. ngio-0.3.5/src/ngio/common/_slicer.py +0 -96
  132. ngio-0.3.5/src/ngio/images/__init__.py +0 -23
  133. ngio-0.3.5/src/ngio/images/_abstract_image.py +0 -360
  134. ngio-0.3.5/src/ngio/images/_image.py +0 -532
  135. ngio-0.3.5/src/ngio/images/_masked_image.py +0 -273
  136. ngio-0.3.5/src/ngio/ome_zarr_meta/ngio_specs/_dataset.py +0 -172
  137. ngio-0.3.5/tests/unit/common/test_dimensions.py +0 -78
  138. ngio-0.3.5/tests/unit/common/test_roi.py +0 -44
  139. ngio-0.3.5/tests/unit/images/test_images.py +0 -25
  140. ngio-0.3.5/tests/unit/images/test_masked_images.py +0 -78
  141. {ngio-0.3.5 → ngio-0.4.0}/.copier-answers.yml +0 -0
  142. {ngio-0.3.5 → ngio-0.4.0}/.gitattributes +0 -0
  143. {ngio-0.3.5 → ngio-0.4.0}/.github/ISSUE_TEMPLATE.md +0 -0
  144. {ngio-0.3.5 → ngio-0.4.0}/.github/TEST_FAIL_TEMPLATE.md +0 -0
  145. {ngio-0.3.5 → ngio-0.4.0}/.github/dependabot.yml +0 -0
  146. {ngio-0.3.5 → ngio-0.4.0}/.github/pull_request_template.md +0 -0
  147. {ngio-0.3.5 → ngio-0.4.0}/.gitignore +0 -0
  148. {ngio-0.3.5 → ngio-0.4.0}/LICENSE +0 -0
  149. {ngio-0.3.5 → ngio-0.4.0}/_typos.toml +0 -0
  150. {ngio-0.3.5 → ngio-0.4.0}/docs/changelog.md +0 -0
  151. {ngio-0.3.5 → ngio-0.4.0}/docs/code_of_conduct.md +0 -0
  152. {ngio-0.3.5 → ngio-0.4.0}/docs/contributing.md +0 -0
  153. {ngio-0.3.5 → ngio-0.4.0}/docs/getting_started/0_quickstart.md +0 -0
  154. {ngio-0.3.5 → ngio-0.4.0}/docs/getting_started/4_masked_images.md +0 -0
  155. {ngio-0.3.5 → ngio-0.4.0}/docs/getting_started/5_hcs.md +0 -0
  156. {ngio-0.3.5 → ngio-0.4.0}/docs/table_specs/overview.md +0 -0
  157. {ngio-0.3.5 → ngio-0.4.0}/docs/table_specs/table_types/condition_table.md +0 -0
  158. {ngio-0.3.5 → ngio-0.4.0}/docs/table_specs/table_types/custom_table.md +0 -0
  159. {ngio-0.3.5 → ngio-0.4.0}/docs/table_specs/table_types/feature_table.md +0 -0
  160. {ngio-0.3.5 → ngio-0.4.0}/docs/table_specs/table_types/generic_table.md +0 -0
  161. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/hcs/__init__.py +0 -0
  162. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/ome_zarr_meta/_meta_handlers.py +0 -0
  163. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/ome_zarr_meta/v04/__init__.py +0 -0
  164. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/ome_zarr_meta/v04/_custom_models.py +0 -0
  165. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/__init__.py +0 -0
  166. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/_abstract_table.py +0 -0
  167. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/_tables_container.py +0 -0
  168. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/backends/__init__.py +0 -0
  169. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/backends/_csv.py +0 -0
  170. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/backends/_json.py +0 -0
  171. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/backends/_parquet.py +0 -0
  172. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/v1/__init__.py +0 -0
  173. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/v1/_condition_table.py +0 -0
  174. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/v1/_feature_table.py +0 -0
  175. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/v1/_generic_table.py +0 -0
  176. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/utils/_errors.py +0 -0
  177. {ngio-0.3.5 → ngio-0.4.0}/src/ngio/utils/_fractal_fsspec_store.py +0 -0
  178. {ngio-0.3.5 → ngio-0.4.0}/tests/conftest.py +0 -0
  179. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_c1yx.zarr/.zattrs +0 -0
  180. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_c1yx.zarr/.zgroup +0 -0
  181. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_c1yx.zarr/0/.zarray +0 -0
  182. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_c1yx.zarr/1/.zarray +0 -0
  183. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_c1yx.zarr/labels/.zattrs +0 -0
  184. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_c1yx.zarr/labels/.zgroup +0 -0
  185. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zattrs +0 -0
  186. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zgroup +0 -0
  187. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/0/.zarray +0 -0
  188. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/1/.zarray +0 -0
  189. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_cyx.zarr/.zattrs +0 -0
  190. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_cyx.zarr/.zgroup +0 -0
  191. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_cyx.zarr/0/.zarray +0 -0
  192. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_cyx.zarr/1/.zarray +0 -0
  193. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_cyx.zarr/labels/.zattrs +0 -0
  194. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_cyx.zarr/labels/.zgroup +0 -0
  195. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zattrs +0 -0
  196. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zgroup +0 -0
  197. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_cyx.zarr/labels/label/0/.zarray +0 -0
  198. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_cyx.zarr/labels/label/1/.zarray +0 -0
  199. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_czyx.zarr/.zattrs +0 -0
  200. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_czyx.zarr/.zgroup +0 -0
  201. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_czyx.zarr/0/.zarray +0 -0
  202. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_czyx.zarr/1/.zarray +0 -0
  203. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_czyx.zarr/labels/.zattrs +0 -0
  204. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_czyx.zarr/labels/.zgroup +0 -0
  205. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zattrs +0 -0
  206. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zgroup +0 -0
  207. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_czyx.zarr/labels/label/0/.zarray +0 -0
  208. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_czyx.zarr/labels/label/1/.zarray +0 -0
  209. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tcyx.zarr/.zattrs +0 -0
  210. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tcyx.zarr/.zgroup +0 -0
  211. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tcyx.zarr/0/.zarray +0 -0
  212. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tcyx.zarr/1/.zarray +0 -0
  213. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tcyx.zarr/labels/.zattrs +0 -0
  214. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tcyx.zarr/labels/.zgroup +0 -0
  215. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zattrs +0 -0
  216. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zgroup +0 -0
  217. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/0/.zarray +0 -0
  218. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/1/.zarray +0 -0
  219. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tczyx.zarr/.zattrs +0 -0
  220. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tczyx.zarr/.zgroup +0 -0
  221. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tczyx.zarr/0/.zarray +0 -0
  222. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tczyx.zarr/1/.zarray +0 -0
  223. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tczyx.zarr/labels/.zattrs +0 -0
  224. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tczyx.zarr/labels/.zgroup +0 -0
  225. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zattrs +0 -0
  226. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zgroup +0 -0
  227. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/0/.zarray +0 -0
  228. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/1/.zarray +0 -0
  229. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tyx.zarr/.zattrs +0 -0
  230. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tyx.zarr/.zgroup +0 -0
  231. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tyx.zarr/0/.zarray +0 -0
  232. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tyx.zarr/1/.zarray +0 -0
  233. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tyx.zarr/labels/.zattrs +0 -0
  234. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tyx.zarr/labels/.zgroup +0 -0
  235. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zattrs +0 -0
  236. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zgroup +0 -0
  237. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tyx.zarr/labels/label/0/.zarray +0 -0
  238. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tyx.zarr/labels/label/1/.zarray +0 -0
  239. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tzyx.zarr/.zattrs +0 -0
  240. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tzyx.zarr/.zgroup +0 -0
  241. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tzyx.zarr/0/.zarray +0 -0
  242. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tzyx.zarr/1/.zarray +0 -0
  243. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tzyx.zarr/labels/.zattrs +0 -0
  244. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tzyx.zarr/labels/.zgroup +0 -0
  245. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zattrs +0 -0
  246. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zgroup +0 -0
  247. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/0/.zarray +0 -0
  248. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/1/.zarray +0 -0
  249. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_yx.zarr/.zattrs +0 -0
  250. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_yx.zarr/.zgroup +0 -0
  251. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_yx.zarr/0/.zarray +0 -0
  252. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_yx.zarr/1/.zarray +0 -0
  253. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_yx.zarr/labels/.zattrs +0 -0
  254. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_yx.zarr/labels/.zgroup +0 -0
  255. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_yx.zarr/labels/label/.zattrs +0 -0
  256. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_yx.zarr/labels/label/.zgroup +0 -0
  257. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_yx.zarr/labels/label/0/.zarray +0 -0
  258. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_yx.zarr/labels/label/1/.zarray +0 -0
  259. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_zyx.zarr/.zattrs +0 -0
  260. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_zyx.zarr/.zgroup +0 -0
  261. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_zyx.zarr/0/.zarray +0 -0
  262. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_zyx.zarr/1/.zarray +0 -0
  263. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_zyx.zarr/labels/.zattrs +0 -0
  264. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_zyx.zarr/labels/.zgroup +0 -0
  265. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zattrs +0 -0
  266. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zgroup +0 -0
  267. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_zyx.zarr/labels/label/0/.zarray +0 -0
  268. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_zyx.zarr/labels/label/1/.zarray +0 -0
  269. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/meta/base_ome_zarr_image_meta.json +0 -0
  270. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/meta/base_ome_zarr_image_meta_wrong_axis_order.json +0 -0
  271. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/meta/base_ome_zarr_label_meta.json +0 -0
  272. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/meta/base_ome_zarr_well_meta.json +0 -0
  273. {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/meta/ome_zarr_well_path_normalization_meta.json +0 -0
  274. {ngio-0.3.5 → ngio-0.4.0}/tests/unit/hcs/test_well.py +0 -0
  275. {ngio-0.3.5 → ngio-0.4.0}/tests/unit/ome_zarr_meta/test_image_handler.py +0 -0
  276. {ngio-0.3.5 → ngio-0.4.0}/tests/unit/ome_zarr_meta/test_unit_v04_utils.py +0 -0
  277. {ngio-0.3.5 → ngio-0.4.0}/tests/unit/tables/test_backends.py +0 -0
  278. {ngio-0.3.5 → ngio-0.4.0}/tests/unit/tables/test_backends_utils.py +0 -0
  279. {ngio-0.3.5 → ngio-0.4.0}/tests/unit/tables/test_feature_table.py +0 -0
  280. {ngio-0.3.5 → ngio-0.4.0}/tests/unit/tables/test_generic_table.py +0 -0
  281. {ngio-0.3.5 → ngio-0.4.0}/tests/unit/tables/test_masking_roi_table_v1.py +0 -0
  282. {ngio-0.3.5 → ngio-0.4.0}/tests/unit/tables/test_roi_table_v1.py +0 -0
  283. {ngio-0.3.5 → ngio-0.4.0}/tests/unit/tables/test_table_group.py +0 -0
  284. {ngio-0.3.5 → ngio-0.4.0}/tests/unit/utils/test_download_datasets.py +0 -0
  285. {ngio-0.3.5 → ngio-0.4.0}/tests/unit/utils/test_zarr_utils.py +0 -0
@@ -18,11 +18,11 @@ jobs:
18
18
  runs-on: ubuntu-latest
19
19
 
20
20
  steps:
21
- - uses: actions/checkout@v4
21
+ - uses: actions/checkout@v5
22
22
  with:
23
23
  fetch-depth: 0
24
24
  - name: 🐍 Set up Python
25
- uses: actions/setup-python@v5
25
+ uses: actions/setup-python@v6
26
26
  with:
27
27
  python-version: "3.13"
28
28
  cache-dependency-path: "pyproject.toml"
@@ -24,7 +24,7 @@ jobs:
24
24
  # included in the sdist (unless explicitly excluded)
25
25
  runs-on: ubuntu-latest
26
26
  steps:
27
- - uses: actions/checkout@v4
27
+ - uses: actions/checkout@v5
28
28
  - run: pipx run check-manifest
29
29
 
30
30
  test:
@@ -37,10 +37,10 @@ jobs:
37
37
  platform: [ubuntu-latest, macos-latest, windows-latest]
38
38
 
39
39
  steps:
40
- - uses: actions/checkout@v4
40
+ - uses: actions/checkout@v5
41
41
 
42
42
  - name: 🐍 Set up Python ${{ matrix.python-version }}
43
- uses: actions/setup-python@v5
43
+ uses: actions/setup-python@v6
44
44
  with:
45
45
  python-version: ${{ matrix.python-version }}
46
46
  cache-dependency-path: "pyproject.toml"
@@ -98,12 +98,12 @@ jobs:
98
98
  contents: write
99
99
 
100
100
  steps:
101
- - uses: actions/checkout@v4
101
+ - uses: actions/checkout@v5
102
102
  with:
103
103
  fetch-depth: 0
104
104
 
105
105
  - name: 🐍 Set up Python
106
- uses: actions/setup-python@v5
106
+ uses: actions/setup-python@v6
107
107
  with:
108
108
  python-version: "3.x"
109
109
 
@@ -9,19 +9,19 @@ ci:
9
9
 
10
10
  repos:
11
11
  - repo: https://github.com/abravalheri/validate-pyproject
12
- rev: v0.18
12
+ rev: v0.24.1
13
13
  hooks:
14
14
  - id: validate-pyproject
15
15
 
16
16
  - repo: https://github.com/crate-ci/typos
17
- rev: v1
17
+ rev: v1.36.2
18
18
  hooks:
19
19
  - id: typos
20
20
  #args: [--force-exclude] # omitting --write-changes
21
21
  args: [--force-exclude, --write-changes]
22
22
 
23
23
  - repo: https://github.com/charliermarsh/ruff-pre-commit
24
- rev: v0.9.6
24
+ rev: v0.12.12
25
25
  hooks:
26
26
  - id: ruff
27
27
  args: [--fix] # may also add '--unsafe-fixes'
@@ -37,7 +37,7 @@ repos:
37
37
  # # - numpy
38
38
 
39
39
  - repo: https://github.com/kynan/nbstripout
40
- rev: 0.7.1
40
+ rev: 0.8.1
41
41
  hooks:
42
42
  - id: nbstripout
43
43
 
@@ -0,0 +1,56 @@
1
+ # Changelog
2
+
3
+ ## [v0.4.0]
4
+
5
+ ### Features
6
+
7
+ - Add Iterators for image processing pipelines
8
+ - Add support for time in rois and roi-tables
9
+ - Building masking roi tables expanded to time series data
10
+ - Add zoom transformation
11
+ - Add support for rescaling on-the-fly masks for masked images
12
+ - Big refactor of the io pipeline to support iterators and lazy loading
13
+ - Add support for customize dimension separators and compression codecs
14
+ - Simplify AxesHandler and Dataset Classes
15
+
16
+ ### API Changes
17
+
18
+ - The image-like `get_*` api have been slightly changed. Now if a single int is passed as slice_kwargs, it is interpreted as a single index. So the dimension is automatically squeezed.
19
+ - Remove the `get_*_delayed` methods, now data cam only be loaded as numpy or dask array.Use the `get_as_dask` method instead, which returns a dask array that can be used with dask delayed.
20
+ - A new model for channel selection is available. Now channels can be selected by name, index or with `ChannelSelectionModel` object.
21
+ - Change `table_name` keyword argument to `name` for consistency in all table concatenation functions, e.g. `concatenate_image_tables`, `concatenate_image_tables_as`, etc.
22
+ - Change to `Dimension` class. `get_shape` and `get_canonical_shape` have been removed, `get` uses new keyword arguments `default` instead of `strict`.
23
+ - Image like objects now have a more clean API to load data. Instead of `get_array` and `set_array`, they now use `get_as_numpy`, and `get_as_dask` for delayed arrays.
24
+ - Also for `get_roi` now specific methods are available. For ROI objects, the `get_roi_as_numpy`, and `get_roi_as_dask` methods.
25
+ - Table ops moved to `ngio.images`
26
+ - int `label` as an explicit attribute in `Roi` objects (previously only in stored in name and relying on convention)
27
+ - Slight changes to `Image` and `Label` objects. Some minor attributes have been renamed for consistency.
28
+
29
+ ### Table specs
30
+
31
+ - Add `t_second` and `len_t_second` to ROI tables and masking ROI tables
32
+
33
+ ## [v0.3.5]
34
+
35
+ - Remove path normalization for images in wells. While the spec requires paths to be alphanumeric, this patch removes the normalization to allow for arbitrary image paths.
36
+
37
+ ## [v0.3.4]
38
+
39
+ - allow to write as `anndata_v1` for backward compatibility with older ngio versions.
40
+
41
+ ## [v0.3.3]
42
+
43
+ ### Chores
44
+
45
+ - improve dataset download process and streamline the CI workflows
46
+
47
+ ## [v0.3.2]
48
+
49
+ ### API Changes
50
+
51
+ - change table backend default to `anndata_v1` for backward compatibility. This will be chaanged again when ngio `v0.2.x` is no longer supported.
52
+
53
+ ### Bug Fixes
54
+
55
+ - fix [#13](https://github.com/BioVisionCenter/fractal-converters-tools/issues/13) (converters tools)
56
+ - fix [#88](https://github.com/BioVisionCenter/ngio/issues/88)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ngio
3
- Version: 0.3.5
3
+ Version: 0.4.0
4
4
  Summary: Next Generation file format IO
5
5
  Project-URL: homepage, https://github.com/BioVisionCenter/ngio
6
6
  Project-URL: repository, https://github.com/BioVisionCenter/ngio
@@ -28,7 +28,6 @@ Requires-Dist: pooch
28
28
  Requires-Dist: pyarrow
29
29
  Requires-Dist: pydantic
30
30
  Requires-Dist: requests
31
- Requires-Dist: xarray
32
31
  Requires-Dist: zarr<3
33
32
  Provides-Extra: dev
34
33
  Requires-Dist: devtools; extra == 'dev'
@@ -38,11 +37,13 @@ Requires-Dist: napari; extra == 'dev'
38
37
  Requires-Dist: notebook; extra == 'dev'
39
38
  Requires-Dist: pdbpp; extra == 'dev'
40
39
  Requires-Dist: pre-commit; extra == 'dev'
40
+ Requires-Dist: pympler; extra == 'dev'
41
41
  Requires-Dist: pyqt5; extra == 'dev'
42
42
  Requires-Dist: rich; extra == 'dev'
43
43
  Requires-Dist: ruff; extra == 'dev'
44
44
  Requires-Dist: scikit-image; extra == 'dev'
45
45
  Provides-Extra: docs
46
+ Requires-Dist: griffe-typingdoc; extra == 'docs'
46
47
  Requires-Dist: markdown-exec[ansi]; extra == 'docs'
47
48
  Requires-Dist: matplotlib; extra == 'docs'
48
49
  Requires-Dist: mike; extra == 'docs'
@@ -81,20 +82,22 @@ Ngio's mission is to streamline working with OME-Zarr files by providing a simpl
81
82
 
82
83
  ## Key Features
83
84
 
84
- ### 📊 Simple Object-Based API
85
+ ### 🔍 Simple Object-Based API
85
86
 
86
87
  - Easily open, explore, and manipulate OME-Zarr images and HCS plates
87
88
  - Create and derive new images and labels with minimal boilerplate code
88
89
 
89
- ### 🔍 Rich Tables and Regions of Interest (ROI) Support
90
+ ### 📊 Rich Tables and Regions of Interest (ROI) Support
90
91
 
92
+ - Tight integration with [tabular data](https://biovisioncenter.github.io/ngio/stable/table_specs/overview/)
91
93
  - Extract and analyze specific regions of interest
92
- - Tight integration with [Tabular Data](https://BioVisionCenter.github.io/ngio/stable/table_specs/overview/)
94
+ - Store measurements and other metadata in the OME-Zarr container
95
+ - Extensible & modular allowing users to define custom table schemas and on disk serialization
93
96
 
94
- ### 🔄 Scalable Data Processing (Coming Soon)
97
+ ### 🔄 Scalable Data Processing
95
98
 
96
- - Powerful iterators for processing data at scale
97
- - Efficient memory management for large datasets
99
+ - Powerful iterators for building scalable and generalizable image processing pipelines
100
+ - Extensible mapping mechanism for custom parallelization strategies
98
101
 
99
102
  ## Installation
100
103
 
@@ -112,23 +115,22 @@ Currently, ngio only supports OME-Zarr v0.4. Support for version 0.5 and higher
112
115
 
113
116
  ## Development Status
114
117
 
115
- !!! warning
116
- Ngio is under active development and is not yet stable. The API is subject to change, and bugs and breaking changes are expected.
117
- We follow [Semantic Versioning](https://semver.org/). Which means for 0.x releases potentially breaking changes can be introduced in minor releases.
118
+ Ngio is under active development and is not yet stable. The API is subject to change, and bugs and breaking changes are expected.
119
+ We follow [Semantic Versioning](https://semver.org/). Which means for 0.x releases potentially breaking changes can be introduced in minor releases.
118
120
 
119
121
  ### Available Features
120
122
 
121
123
  - ✅ OME-Zarr metadata handling and validation
122
124
  - ✅ Image and label access across pyramid levels
123
125
  - ✅ ROI and table support
126
+ - ✅ Image processing iterators
124
127
  - ✅ Streaming from remote sources
125
128
  - ✅ Documentation and examples
126
129
 
127
130
  ### Upcoming Features
128
131
 
129
- - Advanced image processing iterators
130
- - Parallel processing capabilities
131
- - Support for OME-Zarr v0.5 and Zarr v3
132
+ - Support for OME-Zarr v0.5 and Zarr v3 (via `zarr-python` v3)
133
+ - Enhanced performance optimizations (parallel iterators, optimized io strategies)
132
134
 
133
135
  ## Contributors
134
136
 
@@ -16,20 +16,22 @@ Ngio's mission is to streamline working with OME-Zarr files by providing a simpl
16
16
 
17
17
  ## Key Features
18
18
 
19
- ### 📊 Simple Object-Based API
19
+ ### 🔍 Simple Object-Based API
20
20
 
21
21
  - Easily open, explore, and manipulate OME-Zarr images and HCS plates
22
22
  - Create and derive new images and labels with minimal boilerplate code
23
23
 
24
- ### 🔍 Rich Tables and Regions of Interest (ROI) Support
24
+ ### 📊 Rich Tables and Regions of Interest (ROI) Support
25
25
 
26
+ - Tight integration with [tabular data](https://biovisioncenter.github.io/ngio/stable/table_specs/overview/)
26
27
  - Extract and analyze specific regions of interest
27
- - Tight integration with [Tabular Data](https://BioVisionCenter.github.io/ngio/stable/table_specs/overview/)
28
+ - Store measurements and other metadata in the OME-Zarr container
29
+ - Extensible & modular allowing users to define custom table schemas and on disk serialization
28
30
 
29
- ### 🔄 Scalable Data Processing (Coming Soon)
31
+ ### 🔄 Scalable Data Processing
30
32
 
31
- - Powerful iterators for processing data at scale
32
- - Efficient memory management for large datasets
33
+ - Powerful iterators for building scalable and generalizable image processing pipelines
34
+ - Extensible mapping mechanism for custom parallelization strategies
33
35
 
34
36
  ## Installation
35
37
 
@@ -47,23 +49,22 @@ Currently, ngio only supports OME-Zarr v0.4. Support for version 0.5 and higher
47
49
 
48
50
  ## Development Status
49
51
 
50
- !!! warning
51
- Ngio is under active development and is not yet stable. The API is subject to change, and bugs and breaking changes are expected.
52
- We follow [Semantic Versioning](https://semver.org/). Which means for 0.x releases potentially breaking changes can be introduced in minor releases.
52
+ Ngio is under active development and is not yet stable. The API is subject to change, and bugs and breaking changes are expected.
53
+ We follow [Semantic Versioning](https://semver.org/). Which means for 0.x releases potentially breaking changes can be introduced in minor releases.
53
54
 
54
55
  ### Available Features
55
56
 
56
57
  - ✅ OME-Zarr metadata handling and validation
57
58
  - ✅ Image and label access across pyramid levels
58
59
  - ✅ ROI and table support
60
+ - ✅ Image processing iterators
59
61
  - ✅ Streaming from remote sources
60
62
  - ✅ Documentation and examples
61
63
 
62
64
  ### Upcoming Features
63
65
 
64
- - Advanced image processing iterators
65
- - Parallel processing capabilities
66
- - Support for OME-Zarr v0.5 and Zarr v3
66
+ - Support for OME-Zarr v0.5 and Zarr v3 (via `zarr-python` v3)
67
+ - Enhanced performance optimizations (parallel iterators, optimized io strategies)
67
68
 
68
69
  ## Contributors
69
70
 
@@ -0,0 +1,17 @@
1
+ # HCS API Documentation
2
+
3
+ ## Open a Plate
4
+
5
+ ::: ngio.open_ome_zarr_plate
6
+
7
+ ## ngio.OmeZarrPlate Class Reference
8
+
9
+ ::: ngio.OmeZarrPlate
10
+
11
+ ## Open a Well
12
+
13
+ ::: ngio.open_ome_zarr_well
14
+
15
+ ## ngio.OmeZarrWell Class Reference
16
+
17
+ ::: ngio.OmeZarrWell
@@ -0,0 +1,17 @@
1
+ # Images Like: API Documentation
2
+
3
+ ## Open an Image
4
+
5
+ ::: ngio.open_image
6
+
7
+ ## ngio.Image Class Reference
8
+
9
+ ::: ngio.Image
10
+
11
+ ## Open a Label
12
+
13
+ ::: ngio.open_label
14
+
15
+ ## ngio.Label Class Reference
16
+
17
+ ::: ngio.Label
@@ -0,0 +1,17 @@
1
+ # Iterators API Reference
2
+
3
+ ## ImageProcessingIterator
4
+
5
+ ::: ngio.experimental.iterators.ImageProcessingIterator
6
+
7
+ ## SegmentationIterator
8
+
9
+ ::: ngio.experimental.iterators.SegmentationIterator
10
+
11
+ ## MaskedSegmentationIterator
12
+
13
+ ::: ngio.experimental.iterators.MaskedSegmentationIterator
14
+
15
+ ## FeatureExtractorIterator
16
+
17
+ ::: ngio.experimental.iterators.FeatureExtractorIterator
@@ -0,0 +1,3 @@
1
+ # ngio.common API documentation
2
+
3
+ ::: ngio.common
@@ -0,0 +1,3 @@
1
+ # ngio.hcs API documentation
2
+
3
+ ::: ngio.hcs
@@ -0,0 +1,3 @@
1
+ # ngio.images API documentation
2
+
3
+ ::: ngio.images
@@ -0,0 +1,3 @@
1
+ # ngio.io_pipes API documentation
2
+
3
+ ::: ngio.io_pipes
@@ -0,0 +1,3 @@
1
+ # ngio.iterators API documentation
2
+
3
+ ::: ngio.experimental.iterators
@@ -0,0 +1,3 @@
1
+ # ngio API documentation
2
+
3
+ ::: ngio
@@ -0,0 +1,3 @@
1
+ # ngio.tables API documentation
2
+
3
+ ::: ngio.tables
@@ -0,0 +1,3 @@
1
+ # ngio.transforms API documentation
2
+
3
+ ::: ngio.transforms
@@ -0,0 +1,3 @@
1
+ # ngio.utils
2
+
3
+ ::: ngio.utils
@@ -0,0 +1,14 @@
1
+ # OmeZarrContainer: API Documentation
2
+
3
+ ## Open an OME-Zarr Container
4
+
5
+ ::: ngio.open_ome_zarr_container
6
+
7
+ ## Create an OME-Zarr Container
8
+
9
+ ::: ngio.create_empty_ome_zarr
10
+ ::: ngio.create_ome_zarr_from_array
11
+
12
+ ## OmeZarrContainer Class
13
+
14
+ ::: ngio.OmeZarrContainer
@@ -0,0 +1 @@
1
+ # Ngio Tables API Documentation
@@ -81,8 +81,8 @@ Examples of the OME-Zarr metadata access:
81
81
  ```
82
82
  The metadata object contains all the information about the image, for example, the channel labels:
83
83
  ```pycon exec="true" source="console" session="get_started"
84
- >>> metadata.channel_labels
85
- >>> print(metadata.channel_labels) # markdown-exec: hide
84
+ >>> metadata.channels_meta.channel_labels
85
+ >>> print(metadata.channels_meta.channel_labels) # markdown-exec: hide
86
86
  ```
87
87
 
88
88
  ## Accessing images / labels / tables
@@ -72,29 +72,31 @@ Once you have the `Image` object, you can access the image data as a:
72
72
 
73
73
  === "Numpy Array"
74
74
  ```pycon exec="true" source="console" session="get_started"
75
- >>> data = image.get_array() # Get the image as a numpy array
75
+ >>> data = image.get_as_numpy() # Get the image as a numpy array
76
76
  >>> data.shape, data.dtype
77
77
  >>> print(data.shape, data.dtype) # markdown-exec: hide
78
78
  ```
79
79
 
80
80
  === "Dask Array"
81
81
  ```pycon exec="true" source="console" session="get_started"
82
- >>> dask_array = image.get_array(mode="dask") # Get the image as a dask array
82
+ >>> dask_array = image.get_as_dask() # Get the image as a dask array
83
83
  >>> dask_array
84
84
  >>> print(dask_array) # markdown-exec: hide
85
85
  ```
86
86
 
87
- === "Dask Delayed"
87
+ === "Legacy"
88
+ A generic `get_array` method is still available for backwards compatibility.
89
+
88
90
  ```pycon exec="true" source="console" session="get_started"
89
- >>> dask_delayed = image.get_array(mode="delayed") # Get the image as a dask delayed object
90
- >>> dask_delayed
91
- >>> print(dask_delayed) # markdown-exec: hide
91
+ >>> data = image.get_array(mode="numpy") # Get the image as a numpy or dask or delayed object
92
+ >>> data.shape, data.dtype
93
+ >>> print(data.shape, data.dtype) # markdown-exec: hide
92
94
  ```
93
95
 
94
- The `get_array` can also be used to slice the image data, and query specific axes in specific orders:
96
+ The `get_as_*` can also be used to slice the image data, and query specific axes in specific orders:
95
97
 
96
98
  ```pycon exec="true" source="console" session="get_started"
97
- >>> image_slice = image.get_array(c=0, x=slice(0, 128), axes_order=["t", "z", "y", "x", "c"]) # Get a specific channel and axes order
99
+ >>> image_slice = image.get_as_numpy(channel_selection="DAPI", x=slice(0, 128), axes_order=["t", "z", "y", "x", "c"]) # Get a specific channel and axes order
98
100
  >>> image_slice.shape
99
101
  >>> print(image_slice.shape) # markdown-exec: hide
100
102
  ```
@@ -111,14 +113,14 @@ A minimal example of how to use the `get_array` and `set_array` methods:
111
113
 
112
114
  ```python exec="true" source="material-block" session="get_started"
113
115
  # Get the image data as a numpy array
114
- data = image.get_array(c=0, x=slice(0, 128), y=slice(0, 128), axes_order=["z", "y", "x", "c"])
116
+ data = image.get_as_numpy(channel_selection="DAPI", x=slice(0, 128), y=slice(0, 128), axes_order=["z", "y", "x", "c"])
115
117
 
116
118
  # Modify the image data
117
119
  some_function = lambda x: x # markdown-exec: hide
118
120
  data = some_function(data)
119
121
 
120
122
  # Set the modified image data
121
- image.set_array(data, c=0, x=slice(0, 128), y=slice(0, 128), axes_order=["z", "y", "x", "c"])
123
+ image.set_array(data, channel_selection="DAPI", x=slice(0, 128), y=slice(0, 128), axes_order=["z", "y", "x", "c"])
122
124
  image.consolidate() # Consolidate the changes to all resolution levels, see below for more details
123
125
  ```
124
126
 
@@ -129,6 +131,17 @@ image.consolidate() # Consolidate the changes to all resolution levels, see belo
129
131
  ```
130
132
  This will write the changes to the OME-Zarr file at all resolution levels.
131
133
 
134
+ ### World coordinates slicing
135
+
136
+ To read or write a specific region of the image defined in world coordinates, you can use the `Roi` object.
137
+
138
+ ```pycon exec="true" source="console" session="get_started"
139
+ >>> from ngio import Roi
140
+ >>> roi = Roi(x=34.1, y=10, x_length=321.6, y_length=330) # Define a ROI in world coordinates
141
+ >>> image.get_roi_as_numpy(roi) # Get the image data in the ROI as a numpy array
142
+ >>> print(image.get_roi_as_numpy(roi).shape) # markdown-exec: hide
143
+ ```
144
+
132
145
  ## Labels
133
146
 
134
147
  `Labels` represent segmentation masks that identify objects in the image. In ngio `Labels` are similar to `Images` and can
@@ -38,7 +38,7 @@ Ngio supports three types of tables: `roi_table`, `feature_table`, and `masking_
38
38
  image_data = image_3.get_array(c=0)
39
39
  image_data = np.squeeze(image_data)
40
40
  roi = roi_table.get("FOV_1")
41
- roi = roi.to_pixel_roi(pixel_size=image_3.pixel_size, dimensions=image_3.dimensions)
41
+ roi = roi.to_roi_pixels(pixel_size=image_3.pixel_size)
42
42
  #label_3 = ome_zarr_container.get_label("nuclei", pixel_size=image_3.pixel_size)
43
43
  #label_data = label_3.get_array()
44
44
  #label_data = np.squeeze(label_data)
@@ -98,12 +98,12 @@ Ngio supports three types of tables: `roi_table`, `feature_table`, and `masking_
98
98
  The `nuclei_ROI_table` contains the masks for the `nuclei` label in the image, and is indexed by the label id.
99
99
  ```pycon exec="true" source="console" session="get_started"
100
100
  >>> masking_table = ome_zarr_container.get_table("nuclei_ROI_table") # Get a mask table
101
- >>> masking_table.get(1)
102
- >>> print(masking_table.get(100)) # markdown-exec: hide
101
+ >>> masking_table.get_label(1)
102
+ >>> print(masking_table.get_label(100)) # markdown-exec: hide
103
103
  ```
104
104
  ROIs can be used to slice the image data:
105
105
  ```pycon exec="true" source="console" session="get_started"
106
- >>> roi = masking_table.get(100)
106
+ >>> roi = masking_table.get_label(100)
107
107
  >>> roi_data = image.get_roi(roi)
108
108
  >>> roi_data.shape
109
109
  >>> print(roi_data.shape) # markdown-exec: hide
@@ -120,7 +120,7 @@ Ngio supports three types of tables: `roi_table`, `feature_table`, and `masking_
120
120
  cmap_array = np.random.rand(1000, 3)
121
121
  cmap_array[0] = 0
122
122
  cmap = ListedColormap(cmap_array)
123
- roi = masking_table.get(100)
123
+ roi = masking_table.get_label(100)
124
124
  image_3 = ome_zarr_container.get_image(path="2")
125
125
  image_data = image_3.get_roi(roi, c=0)
126
126
  image_data = np.squeeze(image_data)
@@ -0,0 +1,14 @@
1
+ # 6. Iterators
2
+
3
+ When building image processing pipelines it is often useful to iterate over specific regions of the image, for example to process the image in smaller tiles or to process only specific regions of interest (ROIs).
4
+
5
+ Moreover, when working with OME-Zarr Images it is often useful to set specific broadcasting rules for the iteration, for example to iterate over all z-planes or iterate over all timepoints.
6
+
7
+ Ngio provides a set of `Iterator` classes that can be used for this purpose. We provide iterators four basic iterators:
8
+
9
+ * The `SegmentationIterator` is designed to build segmentation pipelines, where an input image is processed to produce a segmentation mask. An example use case on how to use the `SegmentationIterator` can be found in the [Image Segmentation Tutorial](../tutorials/image_segmentation.ipynb).
10
+ * The `MaskedSegmentationIterator` is similar to the `SegmentationIterator`, but it uses a masking roi table to restrict the segmentation to masks. This is useful when you want to segment only specific regions of the image, for example, segmenting cells only within a specific tissue region. An example use case on how to use the `MaskedSegmentationIterator` can be found in the [Image Segmentation Tutorial](../tutorials/image_segmentation.ipynb).
11
+ * The `ImageProcessingIterator` is designed to build image processing pipelines, where an input image is processed to produce a new image. An example use case on how to use the `ImageProcessingIterator` can be found in the [Image Processing Tutorial](../tutorials/image_processing.ipynb).
12
+ * The `FeatureExtractionIterator` is read-only iterator designed to iterate over pairs of images and labels to extract features from the image based on the labels. An example use case on how to use the `FeatureExtractionIterator` can be found in the [Feature Extraction Tutorial](../tutorials/feature_extraction.ipynb).
13
+
14
+ A set of more complete example can be found in the [Fractal Tasks Template](https://github.com/fractal-analytics-platform/fractal-tasks-template).
@@ -8,20 +8,22 @@ Ngio's mission is to streamline working with OME-Zarr files by providing a simpl
8
8
 
9
9
  ## Key Features
10
10
 
11
- ### 📊 Simple Object-Based API
11
+ ### 🔍 Simple Object-Based API
12
12
 
13
13
  - Easily open, explore, and manipulate OME-Zarr images and HCS plates
14
14
  - Create and derive new images and labels with minimal boilerplate code
15
15
 
16
- ### 🔍 Rich Tables and Regions of Interest (ROI) Support
16
+ ### 📊 Rich Tables and Regions of Interest (ROI) Support
17
17
 
18
+ - Tight integration with [tabular data](https://biovisioncenter.github.io/ngio/stable/table_specs/overview/)
18
19
  - Extract and analyze specific regions of interest
19
- - Tight integration with [Fractal's table framework](https://BioVisionCenter.github.io/fractal-tasks-core/tables/)
20
+ - Store measurements and other metadata in the OME-Zarr container
21
+ - Extensible & modular allowing users to define custom table schemas and on disk serialization
20
22
 
21
- ### 🔄 Scalable Data Processing (Coming Soon)
23
+ ### 🔄 Scalable Data Processing
22
24
 
23
- - Powerful iterators for processing data at scale
24
- - Efficient memory management for large datasets
25
+ - Powerful iterators for building scalable and generalizable image processing pipelines
26
+ - Extensible mapping mechanism for custom parallelization strategies
25
27
 
26
28
  ## Getting Started
27
29
 
@@ -43,14 +45,14 @@ Currently, ngio only supports OME-Zarr v0.4. Support for version 0.5 and higher
43
45
  - ✅ OME-Zarr metadata handling and validation
44
46
  - ✅ Image and label access across pyramid levels
45
47
  - ✅ ROI and table support
48
+ - ✅ Image processing iterators
46
49
  - ✅ Streaming from remote sources
47
50
  - ✅ Documentation and examples
48
51
 
49
52
  ### Upcoming Features
50
53
 
51
- - Advanced image processing iterators
52
- - Parallel processing capabilities
53
- - Support for OME-Zarr v0.5 and Zarr v3
54
+ - Support for OME-Zarr v0.5 and Zarr v3 (via `zarr-python` v3)
55
+ - Enhanced performance optimizations (parallel iterators, optimized io strategies)
54
56
 
55
57
  ## Contributors
56
58
 
@@ -66,7 +66,7 @@ table.zarr # Zarr group for the table
66
66
 
67
67
  The CSV backend is a plain text format that is widely used for tabular data. It is easy to read and write, and can be used across many different tools.
68
68
 
69
- The CSV backen in ngio follows closely the same specifications as the Parquet backend, with the following metadata:
69
+ The CSV backend in ngio follows closely the same specifications as the Parquet backend, with the following metadata:
70
70
 
71
71
  ```json
72
72
  {
@@ -31,5 +31,7 @@ Moreover the ROI table must include the following columns:
31
31
 
32
32
  - `x_micrometer`, `y_micrometer`, `z_micrometer`: the top-left corner coordinates of the ROI in micrometers.
33
33
  - `len_x_micrometer`, `len_y_micrometer`, `len_z_micrometer`: the size of the ROI in micrometers along each axis.
34
+ - `label`: An integer column label associated with the ROI, which corresponds to a specific label in the label image. This can also be the table index key.
35
+ - (Optional) `t_second` and `len_t_second`: the time coordinate of the ROI in seconds, and the length of the time coordinate in seconds. This is useful for multiplexing acquisitions.
34
36
 
35
37
  Additionally, each ROI can include the following optional columns: see [ROI Table](./roi_table.md).
@@ -33,6 +33,7 @@ Moreover the ROI table must include the following columns:
33
33
 
34
34
  Additionally, each ROI can include the following optional columns:
35
35
 
36
+ - `t_second` and `len_t_second`: the time coordinate of the ROI in seconds, and the length of the time coordinate in seconds. This is useful for multiplexing acquisitions.
36
37
  - `x_micrometer_original`, `y_micrometer_original` and `z_micrometer_original` which are the original coordinates of the ROI in micrometers. These are typically used when the data is saved in different coordinates during conversion, e.g. to avoid overwriting data from overlapping ROIs.
37
38
  - `translation_x`, `translation_y` and `translation_z`, which are used during registration of multiplexing acquisitions.
38
39