ngio 0.5.0b7__tar.gz → 0.5.1__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 (441) hide show
  1. {ngio-0.5.0b7 → ngio-0.5.1}/.github/workflows/build_docs.yml +5 -6
  2. {ngio-0.5.0b7 → ngio-0.5.1}/.github/workflows/ci.yml +1 -1
  3. {ngio-0.5.0b7 → ngio-0.5.1}/.gitignore +5 -1
  4. {ngio-0.5.0b7 → ngio-0.5.1}/CHANGELOG.md +79 -2
  5. {ngio-0.5.0b7 → ngio-0.5.1}/PKG-INFO +3 -2
  6. ngio-0.5.1/docs/api/ngio/ngio.md +17 -0
  7. ngio-0.5.1/docs/changelog.md +3 -0
  8. {ngio-0.5.0b7 → ngio-0.5.1}/docs/getting_started/0_quickstart.md +1 -1
  9. {ngio-0.5.0b7 → ngio-0.5.1}/docs/getting_started/1_ome_zarr_containers.md +65 -6
  10. {ngio-0.5.0b7 → ngio-0.5.1}/docs/getting_started/2_images.md +1 -1
  11. {ngio-0.5.0b7 → ngio-0.5.1}/docs/getting_started/3_tables.md +13 -11
  12. {ngio-0.5.0b7 → ngio-0.5.1}/docs/getting_started/4_masked_images.md +7 -7
  13. {ngio-0.5.0b7 → ngio-0.5.1}/docs/index.md +2 -3
  14. {ngio-0.5.0b7 → ngio-0.5.1}/docs/tutorials/create_ome_zarr.ipynb +2 -2
  15. {ngio-0.5.0b7 → ngio-0.5.1}/docs/tutorials/feature_extraction.ipynb +8 -1
  16. {ngio-0.5.0b7 → ngio-0.5.1}/docs/tutorials/hcs_exploration.ipynb +8 -1
  17. {ngio-0.5.0b7 → ngio-0.5.1}/docs/tutorials/image_processing.ipynb +8 -1
  18. {ngio-0.5.0b7 → ngio-0.5.1}/docs/tutorials/image_segmentation.ipynb +1 -8
  19. {ngio-0.5.0b7 → ngio-0.5.1}/pyproject.toml +2 -1
  20. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/common/_masking_roi.py +18 -5
  21. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/hcs/_plate.py +30 -24
  22. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/images/_abstract_image.py +65 -12
  23. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/images/_create_synt_container.py +1 -1
  24. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/images/_create_utils.py +60 -61
  25. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/images/_image.py +342 -86
  26. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/images/_label.py +31 -31
  27. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/images/_masked_image.py +2 -2
  28. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/images/_ome_zarr_container.py +247 -96
  29. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/io_pipes/_match_shape.py +10 -14
  30. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/io_pipes/_ops_slices.py +6 -4
  31. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/io_pipes/_ops_slices_utils.py +8 -7
  32. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/ome_zarr_meta/_meta_handlers.py +2 -26
  33. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/ome_zarr_meta/ngio_specs/__init__.py +2 -0
  34. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/ome_zarr_meta/ngio_specs/_axes.py +161 -58
  35. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/ome_zarr_meta/ngio_specs/_ngio_hcs.py +78 -32
  36. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/ome_zarr_meta/ngio_specs/_ngio_image.py +36 -0
  37. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/ome_zarr_meta/v04/_v04_spec.py +2 -21
  38. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/ome_zarr_meta/v05/_v05_spec.py +4 -22
  39. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/resources/__init__.py +1 -1
  40. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/resources/resource_model.py +1 -1
  41. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/tables/_tables_container.py +39 -7
  42. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/tables/v1/_roi_table.py +4 -4
  43. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/utils/_zarr_utils.py +8 -15
  44. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/hcs/test_plate.py +37 -0
  45. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/images/test_create.py +2 -2
  46. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/images/test_omezarr_container.py +46 -2
  47. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/ome_zarr_meta/test_unit_ngio_specs.py +52 -52
  48. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/ome_zarr_meta/test_unit_v04_utils.py +3 -2
  49. ngio-0.5.0b7/docs/api/ngio/ngio.md +0 -3
  50. ngio-0.5.0b7/docs/changelog.md +0 -5
  51. {ngio-0.5.0b7 → ngio-0.5.1}/.copier-answers.yml +0 -0
  52. {ngio-0.5.0b7 → ngio-0.5.1}/.gitattributes +0 -0
  53. {ngio-0.5.0b7 → ngio-0.5.1}/.github/ISSUE_TEMPLATE.md +0 -0
  54. {ngio-0.5.0b7 → ngio-0.5.1}/.github/TEST_FAIL_TEMPLATE.md +0 -0
  55. {ngio-0.5.0b7 → ngio-0.5.1}/.github/dependabot.yml +0 -0
  56. {ngio-0.5.0b7 → ngio-0.5.1}/.github/pull_request_template.md +0 -0
  57. {ngio-0.5.0b7 → ngio-0.5.1}/.pre-commit-config.yaml +0 -0
  58. {ngio-0.5.0b7 → ngio-0.5.1}/LICENSE +0 -0
  59. {ngio-0.5.0b7 → ngio-0.5.1}/README.md +0 -0
  60. {ngio-0.5.0b7 → ngio-0.5.1}/_typos.toml +0 -0
  61. {ngio-0.5.0b7 → ngio-0.5.1}/docs/api/hcs.md +0 -0
  62. {ngio-0.5.0b7 → ngio-0.5.1}/docs/api/images.md +0 -0
  63. {ngio-0.5.0b7 → ngio-0.5.1}/docs/api/iterators.md +0 -0
  64. {ngio-0.5.0b7 → ngio-0.5.1}/docs/api/ngio/common.md +0 -0
  65. {ngio-0.5.0b7 → ngio-0.5.1}/docs/api/ngio/hcs.md +0 -0
  66. {ngio-0.5.0b7 → ngio-0.5.1}/docs/api/ngio/images.md +0 -0
  67. {ngio-0.5.0b7 → ngio-0.5.1}/docs/api/ngio/io_pipes.md +0 -0
  68. {ngio-0.5.0b7 → ngio-0.5.1}/docs/api/ngio/iterators.md +0 -0
  69. {ngio-0.5.0b7 → ngio-0.5.1}/docs/api/ngio/tables.md +0 -0
  70. {ngio-0.5.0b7 → ngio-0.5.1}/docs/api/ngio/transforms.md +0 -0
  71. {ngio-0.5.0b7 → ngio-0.5.1}/docs/api/ngio/utils.md +0 -0
  72. {ngio-0.5.0b7 → ngio-0.5.1}/docs/api/ome_zarr_container.md +0 -0
  73. {ngio-0.5.0b7 → ngio-0.5.1}/docs/api/tables.md +0 -0
  74. {ngio-0.5.0b7 → ngio-0.5.1}/docs/code_of_conduct.md +0 -0
  75. {ngio-0.5.0b7 → ngio-0.5.1}/docs/contributing.md +0 -0
  76. {ngio-0.5.0b7 → ngio-0.5.1}/docs/getting_started/5_hcs.md +0 -0
  77. {ngio-0.5.0b7 → ngio-0.5.1}/docs/getting_started/6_iterators.md +0 -0
  78. {ngio-0.5.0b7 → ngio-0.5.1}/docs/table_specs/backend.md +0 -0
  79. {ngio-0.5.0b7 → ngio-0.5.1}/docs/table_specs/overview.md +0 -0
  80. {ngio-0.5.0b7 → ngio-0.5.1}/docs/table_specs/table_types/condition_table.md +0 -0
  81. {ngio-0.5.0b7 → ngio-0.5.1}/docs/table_specs/table_types/custom_table.md +0 -0
  82. {ngio-0.5.0b7 → ngio-0.5.1}/docs/table_specs/table_types/feature_table.md +0 -0
  83. {ngio-0.5.0b7 → ngio-0.5.1}/docs/table_specs/table_types/generic_table.md +0 -0
  84. {ngio-0.5.0b7 → ngio-0.5.1}/docs/table_specs/table_types/masking_roi_table.md +0 -0
  85. {ngio-0.5.0b7 → ngio-0.5.1}/docs/table_specs/table_types/roi_table.md +0 -0
  86. {ngio-0.5.0b7 → ngio-0.5.1}/mkdocs.yml +0 -0
  87. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/__init__.py +0 -0
  88. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/common/__init__.py +0 -0
  89. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/common/_dimensions.py +0 -0
  90. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/common/_pyramid.py +0 -0
  91. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/common/_roi.py +0 -0
  92. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/common/_synt_images_utils.py +0 -0
  93. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/common/_zoom.py +0 -0
  94. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/experimental/__init__.py +0 -0
  95. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/experimental/iterators/__init__.py +0 -0
  96. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/experimental/iterators/_abstract_iterator.py +0 -0
  97. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/experimental/iterators/_feature.py +0 -0
  98. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/experimental/iterators/_image_processing.py +0 -0
  99. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/experimental/iterators/_mappers.py +0 -0
  100. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/experimental/iterators/_rois_utils.py +0 -0
  101. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/experimental/iterators/_segmentation.py +0 -0
  102. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/hcs/__init__.py +0 -0
  103. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/images/__init__.py +0 -0
  104. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/images/_table_ops.py +0 -0
  105. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/io_pipes/__init__.py +0 -0
  106. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/io_pipes/_io_pipes.py +0 -0
  107. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/io_pipes/_io_pipes_masked.py +0 -0
  108. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/io_pipes/_io_pipes_roi.py +0 -0
  109. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/io_pipes/_io_pipes_types.py +0 -0
  110. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/io_pipes/_ops_axes.py +0 -0
  111. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/io_pipes/_ops_transforms.py +0 -0
  112. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/io_pipes/_zoom_transform.py +0 -0
  113. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/ome_zarr_meta/__init__.py +0 -0
  114. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/ome_zarr_meta/ngio_specs/_channels.py +0 -0
  115. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/ome_zarr_meta/ngio_specs/_dataset.py +0 -0
  116. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/ome_zarr_meta/ngio_specs/_pixel_size.py +0 -0
  117. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/ome_zarr_meta/v04/__init__.py +0 -0
  118. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/ome_zarr_meta/v04/_custom_models.py +0 -0
  119. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/ome_zarr_meta/v05/__init__.py +0 -0
  120. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/ome_zarr_meta/v05/_custom_models.py +0 -0
  121. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/mask.png +0 -0
  122. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/nuclei.png +0 -0
  123. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/raw.jpg +0 -0
  124. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/tables/__init__.py +0 -0
  125. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/tables/_abstract_table.py +0 -0
  126. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/tables/backends/__init__.py +0 -0
  127. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/tables/backends/_abstract_backend.py +0 -0
  128. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/tables/backends/_anndata.py +0 -0
  129. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/tables/backends/_anndata_utils.py +0 -0
  130. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/tables/backends/_csv.py +0 -0
  131. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/tables/backends/_json.py +0 -0
  132. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/tables/backends/_parquet.py +0 -0
  133. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/tables/backends/_py_arrow_backends.py +0 -0
  134. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/tables/backends/_table_backends.py +0 -0
  135. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/tables/backends/_utils.py +0 -0
  136. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/tables/v1/__init__.py +0 -0
  137. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/tables/v1/_condition_table.py +0 -0
  138. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/tables/v1/_feature_table.py +0 -0
  139. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/tables/v1/_generic_table.py +0 -0
  140. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/transforms/__init__.py +0 -0
  141. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/transforms/_zoom.py +0 -0
  142. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/utils/__init__.py +0 -0
  143. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/utils/_cache.py +0 -0
  144. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/utils/_datasets.py +0 -0
  145. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/utils/_errors.py +0 -0
  146. {ngio-0.5.0b7 → ngio-0.5.1}/src/ngio/utils/_fractal_fsspec_store.py +0 -0
  147. {ngio-0.5.0b7 → ngio-0.5.1}/tests/conftest.py +0 -0
  148. {ngio-0.5.0b7 → ngio-0.5.1}/tests/create_test_data.py +0 -0
  149. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_c1yx.zarr/.zattrs +0 -0
  150. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_c1yx.zarr/.zgroup +0 -0
  151. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_c1yx.zarr/0/.zarray +0 -0
  152. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_c1yx.zarr/0/.zattrs +0 -0
  153. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_c1yx.zarr/1/.zarray +0 -0
  154. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_c1yx.zarr/1/.zattrs +0 -0
  155. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_c1yx.zarr/labels/.zattrs +0 -0
  156. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_c1yx.zarr/labels/.zgroup +0 -0
  157. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zattrs +0 -0
  158. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zgroup +0 -0
  159. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/0/.zarray +0 -0
  160. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/0/.zattrs +0 -0
  161. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/1/.zarray +0 -0
  162. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/1/.zattrs +0 -0
  163. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_c1yx.zarr/tables/.zattrs +0 -0
  164. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_c1yx.zarr/tables/.zgroup +0 -0
  165. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_c1yx.zarr/tables/well_ROI_table/.zattrs +0 -0
  166. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_c1yx.zarr/tables/well_ROI_table/.zgroup +0 -0
  167. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_c1yx.zarr/tables/well_ROI_table/table.csv +0 -0
  168. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_cyx.zarr/.zattrs +0 -0
  169. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_cyx.zarr/.zgroup +0 -0
  170. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_cyx.zarr/0/.zarray +0 -0
  171. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_cyx.zarr/0/.zattrs +0 -0
  172. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_cyx.zarr/1/.zarray +0 -0
  173. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_cyx.zarr/1/.zattrs +0 -0
  174. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_cyx.zarr/labels/.zattrs +0 -0
  175. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_cyx.zarr/labels/.zgroup +0 -0
  176. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zattrs +0 -0
  177. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zgroup +0 -0
  178. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_cyx.zarr/labels/label/0/.zarray +0 -0
  179. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_cyx.zarr/labels/label/0/.zattrs +0 -0
  180. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_cyx.zarr/labels/label/1/.zarray +0 -0
  181. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_cyx.zarr/labels/label/1/.zattrs +0 -0
  182. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_cyx.zarr/tables/.zattrs +0 -0
  183. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_cyx.zarr/tables/.zgroup +0 -0
  184. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_cyx.zarr/tables/well_ROI_table/.zattrs +0 -0
  185. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_cyx.zarr/tables/well_ROI_table/.zgroup +0 -0
  186. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_cyx.zarr/tables/well_ROI_table/table.csv +0 -0
  187. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_czyx.zarr/.zattrs +0 -0
  188. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_czyx.zarr/.zgroup +0 -0
  189. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_czyx.zarr/0/.zarray +0 -0
  190. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_czyx.zarr/0/.zattrs +0 -0
  191. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_czyx.zarr/1/.zarray +0 -0
  192. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_czyx.zarr/1/.zattrs +0 -0
  193. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_czyx.zarr/labels/.zattrs +0 -0
  194. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_czyx.zarr/labels/.zgroup +0 -0
  195. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zattrs +0 -0
  196. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zgroup +0 -0
  197. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_czyx.zarr/labels/label/0/.zarray +0 -0
  198. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_czyx.zarr/labels/label/0/.zattrs +0 -0
  199. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_czyx.zarr/labels/label/1/.zarray +0 -0
  200. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_czyx.zarr/labels/label/1/.zattrs +0 -0
  201. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_czyx.zarr/tables/.zattrs +0 -0
  202. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_czyx.zarr/tables/.zgroup +0 -0
  203. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_czyx.zarr/tables/well_ROI_table/.zattrs +0 -0
  204. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_czyx.zarr/tables/well_ROI_table/.zgroup +0 -0
  205. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_czyx.zarr/tables/well_ROI_table/table.csv +0 -0
  206. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tcyx.zarr/.zattrs +0 -0
  207. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tcyx.zarr/.zgroup +0 -0
  208. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tcyx.zarr/0/.zarray +0 -0
  209. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tcyx.zarr/0/.zattrs +0 -0
  210. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tcyx.zarr/1/.zarray +0 -0
  211. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tcyx.zarr/1/.zattrs +0 -0
  212. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tcyx.zarr/labels/.zattrs +0 -0
  213. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tcyx.zarr/labels/.zgroup +0 -0
  214. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zattrs +0 -0
  215. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zgroup +0 -0
  216. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/0/.zarray +0 -0
  217. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/0/.zattrs +0 -0
  218. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/1/.zarray +0 -0
  219. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/1/.zattrs +0 -0
  220. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tcyx.zarr/tables/.zattrs +0 -0
  221. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tcyx.zarr/tables/.zgroup +0 -0
  222. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tcyx.zarr/tables/well_ROI_table/.zattrs +0 -0
  223. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tcyx.zarr/tables/well_ROI_table/.zgroup +0 -0
  224. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tcyx.zarr/tables/well_ROI_table/table.csv +0 -0
  225. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tczyx.zarr/.zattrs +0 -0
  226. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tczyx.zarr/.zgroup +0 -0
  227. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tczyx.zarr/0/.zarray +0 -0
  228. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tczyx.zarr/0/.zattrs +0 -0
  229. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tczyx.zarr/1/.zarray +0 -0
  230. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tczyx.zarr/1/.zattrs +0 -0
  231. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tczyx.zarr/labels/.zattrs +0 -0
  232. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tczyx.zarr/labels/.zgroup +0 -0
  233. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zattrs +0 -0
  234. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zgroup +0 -0
  235. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/0/.zarray +0 -0
  236. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/0/.zattrs +0 -0
  237. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/1/.zarray +0 -0
  238. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/1/.zattrs +0 -0
  239. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tczyx.zarr/tables/.zattrs +0 -0
  240. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tczyx.zarr/tables/.zgroup +0 -0
  241. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tczyx.zarr/tables/well_ROI_table/.zattrs +0 -0
  242. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tczyx.zarr/tables/well_ROI_table/.zgroup +0 -0
  243. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tczyx.zarr/tables/well_ROI_table/table.csv +0 -0
  244. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tyx.zarr/.zattrs +0 -0
  245. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tyx.zarr/.zgroup +0 -0
  246. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tyx.zarr/0/.zarray +0 -0
  247. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tyx.zarr/0/.zattrs +0 -0
  248. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tyx.zarr/1/.zarray +0 -0
  249. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tyx.zarr/1/.zattrs +0 -0
  250. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tyx.zarr/labels/.zattrs +0 -0
  251. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tyx.zarr/labels/.zgroup +0 -0
  252. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zattrs +0 -0
  253. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zgroup +0 -0
  254. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tyx.zarr/labels/label/0/.zarray +0 -0
  255. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tyx.zarr/labels/label/0/.zattrs +0 -0
  256. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tyx.zarr/labels/label/1/.zarray +0 -0
  257. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tyx.zarr/labels/label/1/.zattrs +0 -0
  258. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tyx.zarr/tables/.zattrs +0 -0
  259. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tyx.zarr/tables/.zgroup +0 -0
  260. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tyx.zarr/tables/well_ROI_table/.zattrs +0 -0
  261. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tyx.zarr/tables/well_ROI_table/.zgroup +0 -0
  262. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tyx.zarr/tables/well_ROI_table/table.csv +0 -0
  263. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tzyx.zarr/.zattrs +0 -0
  264. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tzyx.zarr/.zgroup +0 -0
  265. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tzyx.zarr/0/.zarray +0 -0
  266. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tzyx.zarr/0/.zattrs +0 -0
  267. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tzyx.zarr/1/.zarray +0 -0
  268. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tzyx.zarr/1/.zattrs +0 -0
  269. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tzyx.zarr/labels/.zattrs +0 -0
  270. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tzyx.zarr/labels/.zgroup +0 -0
  271. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zattrs +0 -0
  272. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zgroup +0 -0
  273. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/0/.zarray +0 -0
  274. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/0/.zattrs +0 -0
  275. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/1/.zarray +0 -0
  276. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/1/.zattrs +0 -0
  277. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tzyx.zarr/tables/.zattrs +0 -0
  278. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tzyx.zarr/tables/.zgroup +0 -0
  279. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tzyx.zarr/tables/well_ROI_table/.zattrs +0 -0
  280. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tzyx.zarr/tables/well_ROI_table/.zgroup +0 -0
  281. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_tzyx.zarr/tables/well_ROI_table/table.csv +0 -0
  282. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_yx.zarr/.zattrs +0 -0
  283. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_yx.zarr/.zgroup +0 -0
  284. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_yx.zarr/0/.zarray +0 -0
  285. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_yx.zarr/0/.zattrs +0 -0
  286. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_yx.zarr/1/.zarray +0 -0
  287. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_yx.zarr/1/.zattrs +0 -0
  288. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_yx.zarr/labels/.zattrs +0 -0
  289. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_yx.zarr/labels/.zgroup +0 -0
  290. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_yx.zarr/labels/label/.zattrs +0 -0
  291. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_yx.zarr/labels/label/.zgroup +0 -0
  292. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_yx.zarr/labels/label/0/.zarray +0 -0
  293. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_yx.zarr/labels/label/0/.zattrs +0 -0
  294. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_yx.zarr/labels/label/1/.zarray +0 -0
  295. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_yx.zarr/labels/label/1/.zattrs +0 -0
  296. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_yx.zarr/tables/.zattrs +0 -0
  297. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_yx.zarr/tables/.zgroup +0 -0
  298. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_yx.zarr/tables/well_ROI_table/.zattrs +0 -0
  299. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_yx.zarr/tables/well_ROI_table/.zgroup +0 -0
  300. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_yx.zarr/tables/well_ROI_table/table.csv +0 -0
  301. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_zyx.zarr/.zattrs +0 -0
  302. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_zyx.zarr/.zgroup +0 -0
  303. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_zyx.zarr/0/.zarray +0 -0
  304. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_zyx.zarr/0/.zattrs +0 -0
  305. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_zyx.zarr/1/.zarray +0 -0
  306. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_zyx.zarr/1/.zattrs +0 -0
  307. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_zyx.zarr/labels/.zattrs +0 -0
  308. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_zyx.zarr/labels/.zgroup +0 -0
  309. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zattrs +0 -0
  310. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zgroup +0 -0
  311. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_zyx.zarr/labels/label/0/.zarray +0 -0
  312. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_zyx.zarr/labels/label/0/.zattrs +0 -0
  313. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_zyx.zarr/labels/label/1/.zarray +0 -0
  314. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_zyx.zarr/labels/label/1/.zattrs +0 -0
  315. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_zyx.zarr/tables/.zattrs +0 -0
  316. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_zyx.zarr/tables/.zgroup +0 -0
  317. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_zyx.zarr/tables/well_ROI_table/.zattrs +0 -0
  318. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_zyx.zarr/tables/well_ROI_table/.zgroup +0 -0
  319. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/images/test_image_zyx.zarr/tables/well_ROI_table/table.csv +0 -0
  320. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/meta/base_ome_zarr_image_meta.json +0 -0
  321. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/meta/base_ome_zarr_image_meta_wrong_axis_order.json +0 -0
  322. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/meta/base_ome_zarr_label_meta.json +0 -0
  323. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/meta/base_ome_zarr_well_meta.json +0 -0
  324. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v04/meta/ome_zarr_well_path_normalization_meta.json +0 -0
  325. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_c1yx.zarr/0/zarr.json +0 -0
  326. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_c1yx.zarr/1/zarr.json +0 -0
  327. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_c1yx.zarr/labels/label/0/zarr.json +0 -0
  328. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_c1yx.zarr/labels/label/1/zarr.json +0 -0
  329. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_c1yx.zarr/labels/label/zarr.json +0 -0
  330. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_c1yx.zarr/labels/zarr.json +0 -0
  331. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_c1yx.zarr/tables/well_ROI_table/table.csv +0 -0
  332. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_c1yx.zarr/tables/well_ROI_table/zarr.json +0 -0
  333. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_c1yx.zarr/tables/zarr.json +0 -0
  334. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_c1yx.zarr/zarr.json +0 -0
  335. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_cyx.zarr/0/zarr.json +0 -0
  336. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_cyx.zarr/1/zarr.json +0 -0
  337. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_cyx.zarr/labels/label/0/zarr.json +0 -0
  338. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_cyx.zarr/labels/label/1/zarr.json +0 -0
  339. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_cyx.zarr/labels/label/zarr.json +0 -0
  340. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_cyx.zarr/labels/zarr.json +0 -0
  341. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_cyx.zarr/tables/well_ROI_table/table.csv +0 -0
  342. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_cyx.zarr/tables/well_ROI_table/zarr.json +0 -0
  343. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_cyx.zarr/tables/zarr.json +0 -0
  344. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_cyx.zarr/zarr.json +0 -0
  345. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_czyx.zarr/0/zarr.json +0 -0
  346. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_czyx.zarr/1/zarr.json +0 -0
  347. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_czyx.zarr/labels/label/0/zarr.json +0 -0
  348. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_czyx.zarr/labels/label/1/zarr.json +0 -0
  349. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_czyx.zarr/labels/label/zarr.json +0 -0
  350. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_czyx.zarr/labels/zarr.json +0 -0
  351. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_czyx.zarr/tables/well_ROI_table/table.csv +0 -0
  352. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_czyx.zarr/tables/well_ROI_table/zarr.json +0 -0
  353. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_czyx.zarr/tables/zarr.json +0 -0
  354. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_czyx.zarr/zarr.json +0 -0
  355. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tcyx.zarr/0/zarr.json +0 -0
  356. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tcyx.zarr/1/zarr.json +0 -0
  357. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tcyx.zarr/labels/label/0/zarr.json +0 -0
  358. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tcyx.zarr/labels/label/1/zarr.json +0 -0
  359. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tcyx.zarr/labels/label/zarr.json +0 -0
  360. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tcyx.zarr/labels/zarr.json +0 -0
  361. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tcyx.zarr/tables/well_ROI_table/table.csv +0 -0
  362. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tcyx.zarr/tables/well_ROI_table/zarr.json +0 -0
  363. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tcyx.zarr/tables/zarr.json +0 -0
  364. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tcyx.zarr/zarr.json +0 -0
  365. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tczyx.zarr/0/zarr.json +0 -0
  366. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tczyx.zarr/1/zarr.json +0 -0
  367. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tczyx.zarr/labels/label/0/zarr.json +0 -0
  368. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tczyx.zarr/labels/label/1/zarr.json +0 -0
  369. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tczyx.zarr/labels/label/zarr.json +0 -0
  370. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tczyx.zarr/labels/zarr.json +0 -0
  371. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tczyx.zarr/tables/well_ROI_table/table.csv +0 -0
  372. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tczyx.zarr/tables/well_ROI_table/zarr.json +0 -0
  373. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tczyx.zarr/tables/zarr.json +0 -0
  374. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tczyx.zarr/zarr.json +0 -0
  375. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tyx.zarr/0/zarr.json +0 -0
  376. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tyx.zarr/1/zarr.json +0 -0
  377. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tyx.zarr/labels/label/0/zarr.json +0 -0
  378. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tyx.zarr/labels/label/1/zarr.json +0 -0
  379. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tyx.zarr/labels/label/zarr.json +0 -0
  380. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tyx.zarr/labels/zarr.json +0 -0
  381. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tyx.zarr/tables/well_ROI_table/table.csv +0 -0
  382. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tyx.zarr/tables/well_ROI_table/zarr.json +0 -0
  383. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tyx.zarr/tables/zarr.json +0 -0
  384. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tyx.zarr/zarr.json +0 -0
  385. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tzyx.zarr/0/zarr.json +0 -0
  386. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tzyx.zarr/1/zarr.json +0 -0
  387. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tzyx.zarr/labels/label/0/zarr.json +0 -0
  388. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tzyx.zarr/labels/label/1/zarr.json +0 -0
  389. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tzyx.zarr/labels/label/zarr.json +0 -0
  390. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tzyx.zarr/labels/zarr.json +0 -0
  391. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tzyx.zarr/tables/well_ROI_table/table.csv +0 -0
  392. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tzyx.zarr/tables/well_ROI_table/zarr.json +0 -0
  393. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tzyx.zarr/tables/zarr.json +0 -0
  394. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_tzyx.zarr/zarr.json +0 -0
  395. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_yx.zarr/0/zarr.json +0 -0
  396. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_yx.zarr/1/zarr.json +0 -0
  397. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_yx.zarr/labels/label/0/zarr.json +0 -0
  398. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_yx.zarr/labels/label/1/zarr.json +0 -0
  399. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_yx.zarr/labels/label/zarr.json +0 -0
  400. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_yx.zarr/labels/zarr.json +0 -0
  401. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_yx.zarr/tables/well_ROI_table/table.csv +0 -0
  402. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_yx.zarr/tables/well_ROI_table/zarr.json +0 -0
  403. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_yx.zarr/tables/zarr.json +0 -0
  404. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_yx.zarr/zarr.json +0 -0
  405. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_zyx.zarr/0/zarr.json +0 -0
  406. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_zyx.zarr/1/zarr.json +0 -0
  407. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_zyx.zarr/labels/label/0/zarr.json +0 -0
  408. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_zyx.zarr/labels/label/1/zarr.json +0 -0
  409. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_zyx.zarr/labels/label/zarr.json +0 -0
  410. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_zyx.zarr/labels/zarr.json +0 -0
  411. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_zyx.zarr/tables/well_ROI_table/table.csv +0 -0
  412. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_zyx.zarr/tables/well_ROI_table/zarr.json +0 -0
  413. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_zyx.zarr/tables/zarr.json +0 -0
  414. {ngio-0.5.0b7 → ngio-0.5.1}/tests/data/v05/images/test_image_zyx.zarr/zarr.json +0 -0
  415. {ngio-0.5.0b7 → ngio-0.5.1}/tests/stores/conftest.py +0 -0
  416. {ngio-0.5.0b7 → ngio-0.5.1}/tests/stores/test_http_store.py +0 -0
  417. {ngio-0.5.0b7 → ngio-0.5.1}/tests/stores/test_local_store.py +0 -0
  418. {ngio-0.5.0b7 → ngio-0.5.1}/tests/stores/test_memory_store.py +0 -0
  419. {ngio-0.5.0b7 → ngio-0.5.1}/tests/stores/test_s3_store.py +0 -0
  420. {ngio-0.5.0b7 → ngio-0.5.1}/tests/stores/utils.py +0 -0
  421. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/common/test_dimensions.py +0 -0
  422. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/common/test_pyramid.py +0 -0
  423. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/common/test_roi.py +0 -0
  424. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/common/test_transforms.py +0 -0
  425. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/hcs/test_well.py +0 -0
  426. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/images/test_images.py +0 -0
  427. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/images/test_masked_images.py +0 -0
  428. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/images/test_table_ops.py +0 -0
  429. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/io_pipes/test_axes_ops.py +0 -0
  430. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/io_pipes/test_slicing_ops.py +0 -0
  431. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/iterators/test_iterators.py +0 -0
  432. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/ome_zarr_meta/test_image_handler.py +0 -0
  433. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/tables/test_backends.py +0 -0
  434. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/tables/test_backends_utils.py +0 -0
  435. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/tables/test_feature_table.py +0 -0
  436. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/tables/test_generic_table.py +0 -0
  437. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/tables/test_masking_roi_table_v1.py +0 -0
  438. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/tables/test_roi_table_v1.py +0 -0
  439. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/tables/test_table_group.py +0 -0
  440. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/utils/test_download_datasets.py +0 -0
  441. {ngio-0.5.0b7 → ngio-0.5.1}/tests/unit/utils/test_zarr_utils.py +0 -0
@@ -3,7 +3,6 @@ name: Build Docs
3
3
  on:
4
4
  push:
5
5
  branches:
6
- - dev
7
6
  - main
8
7
  tags:
9
8
  - "v*"
@@ -38,16 +37,16 @@ jobs:
38
37
  run: |
39
38
  git config --local user.email "github-actions[bot]@users.noreply.github.com"
40
39
  git config --local user.name "github-actions[bot]"
41
-
40
+
42
41
  - name: Restore shared data cache
43
42
  id: cache-data
44
- uses: actions/cache@v4
43
+ uses: actions/cache@v5
45
44
  with:
46
45
  path: data/
47
46
  key: "${{ runner.os }}-data-${{ hashFiles('tests/conftest.py') }}"
48
47
  restore-keys: |
49
48
  "${{ runner.os }}-data-"
50
-
49
+
51
50
  - name: Deploy docs
52
51
  run: |
53
52
  VERSION=$(echo $GITHUB_REF | sed 's/refs\/tags\///' | sed 's/refs\/heads\///')
@@ -59,8 +58,8 @@ jobs:
59
58
  mike set-default --push stable
60
59
  echo "Deployed stable version $VERSION (stable)"
61
60
 
62
- elif [[ $GITHUB_REF == refs/heads/dev ]]; then
61
+ elif [[ $GITHUB_REF == refs/heads/main ]]; then
63
62
  mike deploy --push dev
64
63
  mike set-default --push dev
65
- echo "Deployed development version (dev)"
64
+ echo "Deployed development version (dev) from main"
66
65
  fi
@@ -54,7 +54,7 @@ jobs:
54
54
 
55
55
  - name: Restore shared data cache
56
56
  id: cache-data
57
- uses: actions/cache@v4
57
+ uses: actions/cache@v5
58
58
  with:
59
59
  path: data/
60
60
  key: "${{ runner.os }}-data-${{ hashFiles('tests/conftest.py') }}"
@@ -131,4 +131,8 @@ tests/_v01
131
131
  # Ignore locks
132
132
  *.lock
133
133
 
134
- benchmark/*
134
+ benchmark/*
135
+
136
+ # Agents files (for now let's not track them)
137
+ AGENTS.md
138
+ CLAUDE.md
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## [Unreleased]
4
+
5
+ ### Fix
6
+ - Fix bug causing incorrect channel metadata when creating an image.
7
+ - Fix correctly setting the space and time units when creating an image.
8
+ - Fix minor bug in `set_channel_windows_with_percentiles` method.
9
+
10
+ ### Chores
11
+ - Improve logging consistency across the codebase.
12
+
3
13
  ## [v0.5.0]
4
14
 
5
15
  ### Features
@@ -7,20 +17,87 @@
7
17
  - Move to zarr-python v3
8
18
  - API to delete labels and tables from OME-Zarr containers and HCS plates.
9
19
  - Allow to explicitly set axes order when building masking roi tables.
20
+ - New metadata modification APIs for `Image`, `Label`, and `OmeZarrContainer`:
21
+ - `set_channel_labels` - Update channel labels
22
+ - `set_channel_colors` - Update channel colors
23
+ - `set_channel_windows` - Update channel display windows (start/end values)
24
+ - `set_channel_windows_with_percentiles` - Update display windows based on data percentiles
25
+ - `set_axes_names` - Rename axes in the metadata
26
+ - `set_axes_unit` - Set space and time units for axes
27
+ - `set_name` - Set the image/label name in metadata
28
+ - Add translation support in all image/label creation and derivation APIs.
10
29
 
11
30
  ### API Breaking Changes
12
31
 
13
32
  - New `Roi` models, now supporting arbitrary axes.
14
33
  - The `compressor` argument has been renamed to `compressors` in all relevant functions and methods to reflect the support for multiple compressors in zarr v3.
15
34
  - The `version` argument has been renamed to `ngff_version` in all relevant functions and methods to specify the OME-NGFF version.
16
- - Remove the `parallel_safe` argument from all zarr related functions and methods. The locking mechanism is now handled internally and only depends on the
35
+ - Remove the `parallel_safe` argument from all zarr related functions and methods. The locking mechanism is now handled internally and only depends on the
17
36
  `cache`.
18
37
  - Remove the unused `parent` argument from `ZarrGroupHandler`.
19
38
  - Internal changes to `ZarrGroupHandler` to support cleanup unused apis.
20
39
  - Remove `ngio_logger` in favor of standard warnings module.
21
40
 
41
+ ### Migration Guide (v0.4 → v0.5)
42
+
43
+ #### Roi API Changes
44
+
45
+ The `Roi` class now uses a flexible slice-based model supporting arbitrary axes:
46
+
47
+ ```python
48
+ # Old (v0.4)
49
+ roi = Roi(x=34.1, y=10, x_length=321.6, y_length=330)
50
+
51
+ # New (v0.5)
52
+ roi = Roi.from_values(slices={"x": (34.1, 321.6), "y": (10, 330)}, name=None)
53
+
54
+ # Accessing coordinates
55
+ # Old: roi.x, roi.y, roi.x_length, roi.y_length
56
+ # New: roi.get("x").start, roi.get("y").start, roi.get("x").length, roi.get("y").length
57
+ ```
58
+
59
+ #### Argument Renames
60
+
61
+ ```python
62
+ # compressor → compressors
63
+ # Old (v0.4)
64
+ create_empty_ome_zarr(..., compressor=Blosc())
65
+
66
+ # New (v0.5)
67
+ create_empty_ome_zarr(..., compressors=Blosc())
68
+
69
+ # version → ngff_version
70
+ # Old (v0.4)
71
+ create_empty_ome_zarr(..., version="0.4")
72
+
73
+ # New (v0.5)
74
+ create_empty_ome_zarr(..., ngff_version="0.4")
75
+ ```
76
+
77
+ #### Removed Arguments
78
+
79
+ - `parallel_safe`: No longer needed, locking is handled internally
80
+ - `ngio_logger`: Use Python's standard `warnings` module instead
81
+
82
+ ### Deprecations
83
+ - Standardized all deprecation warnings to indicate removal in `ngio=0.6`.
84
+ - Deprecated `set_channel_percentiles` method, use `set_channel_windows_with_percentiles` instead.
85
+
22
86
  ### Bug Fixes
23
- - Fix bug in `consolidate` function when using corsening mode with non power-of-two shapes.
87
+ - Fix bug in `consolidate` function when using coarsening mode with non power-of-two shapes.
88
+ - Fix HCS plate column name formatting to use standardized zero-padding (e.g., column `3` is now stored as `"03"`).
89
+ - Fix `_stringify_column` not passing `num_digits` parameter to `_format_int_column`.
90
+
91
+ ### Documentation
92
+ - Fix incorrect and incomplete docstrings across the codebase:
93
+ - `compute_masking_roi`: Added Args/Returns, fixed description (supports 2D, 3D, 4D).
94
+ - `lazy_compute_slices`: Added Args/Returns sections.
95
+ - `LabelsContainer.list`: Fixed description (was "Create the /labels group").
96
+ - `build_masking_roi_table`: Added Args/Returns sections.
97
+ - `TablesContainer`: Fixed class and method descriptions (were referencing labels instead of tables).
98
+ - `NgioPlateMeta.add_well`: Fixed description (was "Add an image to the well").
99
+ - `NgioPlateMeta.derive`: Fixed type annotation in docstring (`NgffVersion` → `NgffVersions`).
100
+ - Added missing docstrings to several HCS helper functions.
24
101
 
25
102
  ## [v0.4.7]
26
103
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ngio
3
- Version: 0.5.0b7
3
+ Version: 0.5.1
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
@@ -23,7 +23,7 @@ Requires-Dist: dask[distributed]<2025.11.0
23
23
  Requires-Dist: filelock
24
24
  Requires-Dist: numpy
25
25
  Requires-Dist: ome-zarr-models
26
- Requires-Dist: pandas>=1.2.0
26
+ Requires-Dist: pandas<3.0.0,>=1.2.0
27
27
  Requires-Dist: pillow
28
28
  Requires-Dist: polars
29
29
  Requires-Dist: pooch
@@ -58,6 +58,7 @@ Requires-Dist: mkdocs-jupyter; extra == 'docs'
58
58
  Requires-Dist: mkdocs-material; extra == 'docs'
59
59
  Requires-Dist: mkdocstrings[python]; extra == 'docs'
60
60
  Requires-Dist: rich; extra == 'docs'
61
+ Requires-Dist: ruff; extra == 'docs'
61
62
  Requires-Dist: scikit-image; extra == 'docs'
62
63
  Requires-Dist: tabulate; extra == 'docs'
63
64
  Provides-Extra: test
@@ -0,0 +1,17 @@
1
+ # ngio API documentation
2
+
3
+ ::: ngio
4
+ options:
5
+ members:
6
+ - AxesSetup
7
+ - ChannelSelectionModel
8
+ - DefaultNgffVersion
9
+ - Dimensions
10
+ - ImageInWellPath
11
+ - NgffVersions
12
+ - NgioSupportedStore
13
+ - PixelSize
14
+ - Roi
15
+ - RoiSlice
16
+ - StoreOrGroup
17
+ - create_synthetic_ome_zarr
@@ -0,0 +1,3 @@
1
+ {%
2
+ include-markdown "../CHANGELOG.md"
3
+ %}
@@ -96,4 +96,4 @@ Also, checkout our jupyer notebook tutorials for more examples:
96
96
  - [Image Processing](../tutorials/image_processing.ipynb): Learn how to perform simple image processing operations.
97
97
  - [Image Segmentation](../tutorials/image_segmentation.ipynb): Learn how to create new labels from images.
98
98
  - [Feature Extraction](../tutorials/feature_extraction.ipynb): Learn how to extract features from images.
99
- - [HCS Processing](../tutorials/hcs_processing.ipynb): Learn how to process high-content screening data using ngio.
99
+ - [HCS Exploration](../tutorials/hcs_exploration.ipynb): Learn how to explore high-content screening data using ngio.
@@ -58,8 +58,8 @@ Examples of the OME-Zarr metadata access:
58
58
  === "Available Paths"
59
59
  Show the paths to all available resolution levels:
60
60
  ```pycon exec="true" source="console" session="get_started"
61
- >>> ome_zarr_container.levels_paths # Show the paths to all available images
62
- >>> print(ome_zarr_container.levels_paths) # markdown-exec: hide
61
+ >>> ome_zarr_container.level_paths # Show the paths to all available images
62
+ >>> print(ome_zarr_container.level_paths) # markdown-exec: hide
63
63
  ```
64
64
 
65
65
  === "Dimensionality"
@@ -76,7 +76,7 @@ Examples of the OME-Zarr metadata access:
76
76
 
77
77
  === "Full Metadata Object"
78
78
  ```pycon exec="true" source="console" session="get_started"
79
- >>> metadata = ome_zarr_container.image_meta
79
+ >>> metadata = ome_zarr_container.meta
80
80
  >>> print(metadata) # markdown-exec: hide
81
81
  ```
82
82
  The metadata object contains all the information about the image, for example, the channel labels:
@@ -85,6 +85,65 @@ Examples of the OME-Zarr metadata access:
85
85
  >>> print(metadata.channels_meta.channel_labels) # markdown-exec: hide
86
86
  ```
87
87
 
88
+ ## Modifying metadata
89
+
90
+ ngio provides methods to modify the image metadata, such as channel labels, colors, display windows, axes names, and units.
91
+
92
+ ### Channel metadata
93
+
94
+ You can update channel labels, colors, and display windows:
95
+
96
+ === "Channel Labels"
97
+ Update the labels (names) of the channels:
98
+ ```python
99
+ >>> ome_zarr_container.set_channel_labels(["DAPI", "GFP", "RFP"])
100
+ ```
101
+
102
+ === "Channel Colors"
103
+ Update the display colors of the channels (hex format):
104
+ ```python
105
+ >>> ome_zarr_container.set_channel_colors(["0000FF", "00FF00", "FF0000"])
106
+ ```
107
+
108
+ === "Channel Windows"
109
+ Update the display windows (start/end values) for each channel:
110
+ ```python
111
+ >>> ome_zarr_container.set_channel_windows([(0, 255), (0, 1000), (0, 500)])
112
+ ```
113
+
114
+ === "Channel Windows from Percentiles"
115
+ Automatically compute display windows based on data percentiles:
116
+ ```python
117
+ >>> ome_zarr_container.set_channel_windows_with_percentiles(percentiles=(0.1, 99.9))
118
+ ```
119
+
120
+ ### Axes metadata
121
+
122
+ You can update the axes names and units:
123
+
124
+ === "Axes Names"
125
+ Rename the axes in the metadata:
126
+ ```python
127
+ >>> ome_zarr_container.set_axes_names(["t", "c", "z", "y", "x"])
128
+ ```
129
+
130
+ === "Axes Units"
131
+ Set the space and time units:
132
+ ```python
133
+ >>> ome_zarr_container.set_axes_units(space_unit="micrometer", time_unit="second")
134
+ ```
135
+
136
+ ### Image name
137
+
138
+ You can set the name of the image in the metadata:
139
+
140
+ ```python
141
+ >>> ome_zarr_container.set_name("My Processed Image")
142
+ ```
143
+
144
+ !!! note
145
+ The `set_name` method only updates the metadata. It does not change the group name or file paths.
146
+
88
147
  ## Accessing images / labels / tables
89
148
 
90
149
  To access images, labels, and tables, you can use the `get_image`, `get_label`, and `get_table` methods of the `OME-Zarr Container` object.
@@ -109,7 +168,7 @@ new_image = ome_zarr_container.derive_image(
109
168
  "data/new_ome.zarr",
110
169
  overwrite=True,
111
170
  shape=(16, 128, 128),
112
- xy_pixelsize=0.65,
171
+ pixelsize=0.65,
113
172
  z_spacing=1.0
114
173
  )
115
174
  ```
@@ -129,7 +188,7 @@ x = np.random.randint(0, 255, (16, 128, 128), dtype=np.uint8)
129
188
  new_ome_zarr_image = create_ome_zarr_from_array(
130
189
  store="random_ome.zarr",
131
190
  array=x,
132
- xy_pixelsize=0.65,
191
+ pixelsize=0.65,
133
192
  z_spacing=1.0
134
193
  )
135
194
  ```
@@ -142,7 +201,7 @@ from ngio import create_empty_ome_zarr
142
201
  new_ome_zarr_image = create_empty_ome_zarr(
143
202
  store="empty_ome.zarr",
144
203
  shape=(16, 128, 128),
145
- xy_pixelsize=0.65,
204
+ pixelsize=0.65,
146
205
  z_spacing=1.0
147
206
  )
148
207
  ```
@@ -137,7 +137,7 @@ To read or write a specific region of the image defined in world coordinates, yo
137
137
 
138
138
  ```pycon exec="true" source="console" session="get_started"
139
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
140
+ >>> roi = Roi.from_values(slices={"x": (34.1, 321.6), "y": (10, 330)}, name=None) # Define a ROI in world coordinates
141
141
  >>> image.get_roi_as_numpy(roi) # Get the image data in the ROI as a numpy array
142
142
  >>> print(image.get_roi_as_numpy(roi).shape) # markdown-exec: hide
143
143
  ```
@@ -35,17 +35,19 @@ Ngio supports three types of tables: `roi_table`, `feature_table`, and `masking_
35
35
  cmap_array[0] = 0
36
36
  cmap = ListedColormap(cmap_array)
37
37
  image_3 = ome_zarr_container.get_image(path="3")
38
- image_data = image_3.get_array(c=0)
38
+ image_data = image_3.get_as_numpy(c=0)
39
39
  image_data = np.squeeze(image_data)
40
40
  roi = roi_table.get("FOV_1")
41
- roi = roi.to_roi_pixels(pixel_size=image_3.pixel_size)
41
+ roi = roi.to_pixel(pixel_size=image_3.pixel_size)
42
+ x_slice = roi.get("x")
43
+ y_slice = roi.get("y")
42
44
  #label_3 = ome_zarr_container.get_label("nuclei", pixel_size=image_3.pixel_size)
43
- #label_data = label_3.get_array()
45
+ #label_data = label_3.get_as_numpy()
44
46
  #label_data = np.squeeze(label_data)
45
47
  fig, ax = plt.subplots(figsize=(8, 4))
46
48
  ax.set_title("FOV_1 ROI")
47
49
  ax.imshow(image_data, cmap='gray')
48
- ax.add_patch(Rectangle((roi.x, roi.y), roi.x_length, roi.y_length, edgecolor='red', facecolor='none', lw=2))
50
+ ax.add_patch(Rectangle((x_slice.start, y_slice.start), x_slice.length, y_slice.length, edgecolor='red', facecolor='none', lw=2))
49
51
  #ax.imshow(label_data, cmap=cmap, alpha=0.6)
50
52
  # make sure the roi is centered
51
53
  ax.axis('off')
@@ -58,7 +60,7 @@ Ngio supports three types of tables: `roi_table`, `feature_table`, and `masking_
58
60
  ROIs can be used to slice the image data:
59
61
  ```pycon exec="true" source="console" session="get_started"
60
62
  >>> roi = roi_table.get("FOV_1")
61
- >>> roi_data = image.get_roi(roi)
63
+ >>> roi_data = image.get_roi_as_numpy(roi)
62
64
  >>> roi_data.shape
63
65
  >>> print(roi_data.shape) # markdown-exec: hide
64
66
  ```
@@ -76,10 +78,10 @@ Ngio supports three types of tables: `roi_table`, `feature_table`, and `masking_
76
78
  cmap = ListedColormap(cmap_array)
77
79
  roi = roi_table.get("FOV_1")
78
80
  image_3 = ome_zarr_container.get_image(path="3")
79
- image_data = image_3.get_roi(roi, c=0)
81
+ image_data = image_3.get_roi_as_numpy(roi, c=0)
80
82
  image_data = np.squeeze(image_data)
81
83
  #label_3 = ome_zarr_container.get_label("nuclei", pixel_size=image_3.pixel_size)
82
- #label_data = label_3.get_array()
84
+ #label_data = label_3.get_as_numpy()
83
85
  #label_data = np.squeeze(label_data)
84
86
  fig, ax = plt.subplots(figsize=(8, 4))
85
87
  ax.set_title("FOV_1 ROI")
@@ -104,7 +106,7 @@ Ngio supports three types of tables: `roi_table`, `feature_table`, and `masking_
104
106
  ROIs can be used to slice the image data:
105
107
  ```pycon exec="true" source="console" session="get_started"
106
108
  >>> roi = masking_table.get_label(100)
107
- >>> roi_data = image.get_roi(roi)
109
+ >>> roi_data = image.get_roi_as_numpy(roi)
108
110
  >>> roi_data.shape
109
111
  >>> print(roi_data.shape) # markdown-exec: hide
110
112
  ```
@@ -122,10 +124,10 @@ Ngio supports three types of tables: `roi_table`, `feature_table`, and `masking_
122
124
  cmap = ListedColormap(cmap_array)
123
125
  roi = masking_table.get_label(100)
124
126
  image_3 = ome_zarr_container.get_image(path="2")
125
- image_data = image_3.get_roi(roi, c=0)
127
+ image_data = image_3.get_roi_as_numpy(roi, c=0)
126
128
  image_data = np.squeeze(image_data)
127
129
  label_3 = ome_zarr_container.get_label("nuclei", pixel_size=image_3.pixel_size)
128
- label_data = label_3.get_roi(roi)
130
+ label_data = label_3.get_roi_as_numpy(roi)
129
131
  label_data = np.squeeze(label_data)
130
132
  fig, ax = plt.subplots(figsize=(8, 4))
131
133
  ax.set_title("Label 1 ROI")
@@ -156,7 +158,7 @@ Tables (differently from Images and Labels) can be purely in memory objects, and
156
158
  ```pycon exec="true" source="console" session="get_started"
157
159
  >>> from ngio.tables import RoiTable
158
160
  >>> from ngio import Roi
159
- >>> roi = Roi(x=0, y=0, x_length=128, y_length=128, name="FOV_1")
161
+ >>> roi = Roi.from_values(slices={"x": (0, 128), "y": (0, 128)}, name="FOV_1")
160
162
  >>> roi_table = RoiTable(rois=[roi])
161
163
  >>> print(roi_table) # markdown-exec: hide
162
164
  ```
@@ -30,10 +30,10 @@ Let's create a masked image from the `nuclei` label:
30
30
 
31
31
  Since the `MaskedImage` is a subclass of `Image`, we can use all the methods available for `Image` objects.
32
32
 
33
- The two most notable exceptions are the `get_roi` and `set_roi` which now instead of requiring a `roi` object, require an integer `label`.
33
+ The two most notable exceptions are the `get_roi_as_numpy` (or `get_roi_as_dask`) and `set_roi` which now instead of requiring a `roi` object, require an integer `label`.
34
34
 
35
35
  ```pycon exec="true" source="console" session="masked_images"
36
- >>> roi_data = masked_image.get_roi(label=1009, c=0)
36
+ >>> roi_data = masked_image.get_roi_as_numpy(label=1009, c=0)
37
37
  >>> roi_data.shape
38
38
  >>> print(roi_data.shape) # markdown-exec: hide
39
39
  ```
@@ -50,7 +50,7 @@ cmap_array = np.random.rand(1000, 3)
50
50
  cmap_array[0] = 0
51
51
  cmap = ListedColormap(cmap_array)
52
52
 
53
- image_data = masked_image.get_roi(label=1009, c=0)
53
+ image_data = masked_image.get_roi_as_numpy(label=1009, c=0)
54
54
  image_data = np.squeeze(image_data)
55
55
 
56
56
  fig, ax = plt.subplots(figsize=(8, 4))
@@ -68,13 +68,13 @@ Additionally we can used the `zoom_factor` argument to get more context around t
68
68
  For example we can zoom out the ROI by a factor of `2`:
69
69
 
70
70
  ```pycon exec="true" source="console" session="masked_images"
71
- >>> roi_data = masked_image.get_roi(label=1009, c=0, zoom_factor=2)
71
+ >>> roi_data = masked_image.get_roi_as_numpy(label=1009, c=0, zoom_factor=2)
72
72
  >>> roi_data.shape
73
73
  >>> print(roi_data.shape) # markdown-exec: hide
74
74
  ```
75
75
 
76
76
  ```python exec="1" html="1" session="masked_images"
77
- image_data = masked_image.get_roi(label=1009, c=0, zoom_factor=2)
77
+ image_data = masked_image.get_roi_as_numpy(label=1009, c=0, zoom_factor=2)
78
78
  image_data = np.squeeze(image_data)
79
79
 
80
80
  fig, ax = plt.subplots(figsize=(8, 4))
@@ -90,7 +90,7 @@ print(buffer.getvalue())
90
90
 
91
91
  ## Masked operations
92
92
 
93
- In addition to the `get_roi` method, the `MaskedImage` class also provides a masked operation method that allows you to perform reading and writing only on the masked pixels.
93
+ In addition to the `get_roi_as_numpy` method, the `MaskedImage` class also provides a masked operation method that allows you to perform reading and writing only on the masked pixels.
94
94
 
95
95
  For these operations we can use the `get_roi_masked` and `set_roi_masked` methods.
96
96
  For example, we can use the `get_roi_masked` method to get the masked data for a specific label:
@@ -123,7 +123,7 @@ We can also use the `set_roi_masked` method to set the masked data for a specifi
123
123
  ```
124
124
 
125
125
  ```python exec="1" html="1" session="masked_images"
126
- masked_data = masked_image.get_roi(label=1009, c=0, zoom_factor=2)
126
+ masked_data = masked_image.get_roi_as_numpy(label=1009, c=0, zoom_factor=2)
127
127
  masked_data = np.squeeze(masked_data)
128
128
  fig, ax = plt.subplots(figsize=(8, 4))
129
129
  ax.set_title("Masked Label 1009 ROI - After setting")
@@ -28,11 +28,11 @@ Ngio's mission is to streamline working with OME-Zarr files by providing a simpl
28
28
  ## Getting Started
29
29
 
30
30
  Refer to the [Getting Started](getting_started/0_quickstart.md) guide to integrate ngio into your workflows. We also provide a collection of [Tutorials](tutorials/image_processing.ipynb) to help you get up and running quickly.
31
- For more advanced usage and API documentation, see our [API Reference](api/ngio.md).
31
+ For more advanced usage and API documentation, see our [API Reference](api/ome_zarr_container.md).
32
32
 
33
33
  ## Supported OME-Zarr versions
34
34
 
35
- Currently, ngio only supports OME-Zarr v0.4. Support for version 0.5 and higher is planned for future releases.
35
+ Ngio supports OME-Zarr v0.4 and v0.5, with Zarr v2 and v3 storage formats.
36
36
 
37
37
  ## Development Status
38
38
 
@@ -51,7 +51,6 @@ Currently, ngio only supports OME-Zarr v0.4. Support for version 0.5 and higher
51
51
 
52
52
  ### Upcoming Features
53
53
 
54
- - Support for OME-Zarr v0.5 and Zarr v3 (via `zarr-python` v3)
55
54
  - Enhanced performance optimizations (parallel iterators, optimized io strategies)
56
55
 
57
56
  ## Contributors
@@ -42,7 +42,7 @@
42
42
  "ome_zarr = create_ome_zarr_from_array(\n",
43
43
  " store=\"./data/human_mitosis.zarr\",\n",
44
44
  " array=skimage.data.human_mitosis(),\n",
45
- " xy_pixelsize=0.1, # Just a guess\n",
45
+ " pixelsize=0.1, # Just a guess\n",
46
46
  ")\n",
47
47
  "ome_zarr"
48
48
  ]
@@ -93,7 +93,7 @@
93
93
  "name": "python",
94
94
  "nbconvert_exporter": "python",
95
95
  "pygments_lexer": "ipython3",
96
- "version": "3.11.13"
96
+ "version": "3.11.14"
97
97
  }
98
98
  },
99
99
  "nbformat": 4,
@@ -142,6 +142,13 @@
142
142
  "source": [
143
143
  "ome_zarr.get_table(\"nuclei_regionprops\").lazy_frame.collect()"
144
144
  ]
145
+ },
146
+ {
147
+ "cell_type": "code",
148
+ "execution_count": null,
149
+ "metadata": {},
150
+ "outputs": [],
151
+ "source": []
145
152
  }
146
153
  ],
147
154
  "metadata": {
@@ -160,7 +167,7 @@
160
167
  "name": "python",
161
168
  "nbconvert_exporter": "python",
162
169
  "pygments_lexer": "ipython3",
163
- "version": "3.11.13"
170
+ "version": "3.11.14"
164
171
  }
165
172
  },
166
173
  "nbformat": 4,
@@ -102,6 +102,13 @@
102
102
  "print(test_plate)\n",
103
103
  "print(f\"Rows: {test_plate.rows}, Columns: {test_plate.columns}\")"
104
104
  ]
105
+ },
106
+ {
107
+ "cell_type": "code",
108
+ "execution_count": null,
109
+ "metadata": {},
110
+ "outputs": [],
111
+ "source": []
105
112
  }
106
113
  ],
107
114
  "metadata": {
@@ -120,7 +127,7 @@
120
127
  "name": "python",
121
128
  "nbconvert_exporter": "python",
122
129
  "pygments_lexer": "ipython3",
123
- "version": "3.11.13"
130
+ "version": "3.11.14"
124
131
  }
125
132
  },
126
133
  "nbformat": 4,
@@ -241,6 +241,13 @@
241
241
  "# No need to consolidate, the iterator takes care of that\n",
242
242
  "# after all the regions have been processed"
243
243
  ]
244
+ },
245
+ {
246
+ "cell_type": "code",
247
+ "execution_count": null,
248
+ "metadata": {},
249
+ "outputs": [],
250
+ "source": []
244
251
  }
245
252
  ],
246
253
  "metadata": {
@@ -259,7 +266,7 @@
259
266
  "name": "python",
260
267
  "nbconvert_exporter": "python",
261
268
  "pygments_lexer": "ipython3",
262
- "version": "3.11.13"
269
+ "version": "3.11.14"
263
270
  }
264
271
  },
265
272
  "nbformat": 4,
@@ -240,13 +240,6 @@
240
240
  "plt.tight_layout()\n",
241
241
  "plt.show()"
242
242
  ]
243
- },
244
- {
245
- "cell_type": "code",
246
- "execution_count": null,
247
- "metadata": {},
248
- "outputs": [],
249
- "source": []
250
243
  }
251
244
  ],
252
245
  "metadata": {
@@ -265,7 +258,7 @@
265
258
  "name": "python",
266
259
  "nbconvert_exporter": "python",
267
260
  "pygments_lexer": "ipython3",
268
- "version": "3.11.13"
261
+ "version": "3.11.14"
269
262
  }
270
263
  },
271
264
  "nbformat": 4,
@@ -39,7 +39,7 @@ dependencies = [
39
39
  "zarr>3",
40
40
  "anndata",
41
41
  "pydantic",
42
- "pandas>=1.2.0",
42
+ "pandas>=1.2.0,<3.0.0",
43
43
  "requests",
44
44
  "aiohttp",
45
45
  "dask[array]<2025.11.0",
@@ -82,6 +82,7 @@ dev = [
82
82
  ] # add anything else you like to have in your dev environment here
83
83
 
84
84
  docs = [
85
+ "ruff",
85
86
  "mkdocs",
86
87
  "mkdocs-include-markdown-plugin",
87
88
  "mkdocs-material",
@@ -99,7 +99,14 @@ def compute_slices(segmentation: np.ndarray) -> dict[int, tuple[slice, ...]]:
99
99
 
100
100
 
101
101
  def lazy_compute_slices(segmentation: da.Array) -> dict[int, tuple[slice, ...]]:
102
- """Compute slices for each label in a segmentation."""
102
+ """Compute slices for each label in a segmentation using lazy evaluation.
103
+
104
+ Args:
105
+ segmentation: The dask segmentation array.
106
+
107
+ Returns:
108
+ A dictionary mapping label IDs to their bounding box slices.
109
+ """
103
110
  global_offsets = _compute_offsets(segmentation.chunks)
104
111
  delayed_chunks = segmentation.to_delayed() # type: ignore
105
112
 
@@ -120,12 +127,18 @@ def compute_masking_roi(
120
127
  pixel_size: PixelSize,
121
128
  axes_order: Sequence[str],
122
129
  ) -> list[Roi]:
123
- """Compute a ROIs for each label in a segmentation.
130
+ """Compute ROIs for each label in a segmentation.
131
+
132
+ This function expects a 2D, 3D, or 4D segmentation array.
133
+ The axes order should match the segmentation dimensions.
124
134
 
125
- This function expects a 2D or 3D segmentation array.
126
- And this function expects the axes order to be 'zyx' or 'yx'.
127
- Other axes orders are not supported.
135
+ Args:
136
+ segmentation: The segmentation array (2D, 3D, or 4D).
137
+ pixel_size: The pixel size metadata for coordinate conversion.
138
+ axes_order: The order of axes in the segmentation (e.g., 'zyx' or 'yx').
128
139
 
140
+ Returns:
141
+ A list of Roi objects, one for each unique label in the segmentation.
129
142
  """
130
143
  if segmentation.ndim not in [2, 3, 4]:
131
144
  raise NgioValueError("Only 2D, 3D, and 4D segmentations are supported.")