ngio 0.5.0b2__tar.gz → 0.5.0b4__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 (439) hide show
  1. {ngio-0.5.0b2 → ngio-0.5.0b4}/CHANGELOG.md +5 -1
  2. {ngio-0.5.0b2 → ngio-0.5.0b4}/PKG-INFO +2 -1
  3. {ngio-0.5.0b2 → ngio-0.5.0b4}/pyproject.toml +1 -0
  4. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/common/_masking_roi.py +12 -16
  5. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/common/_pyramid.py +4 -0
  6. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/common/_roi.py +2 -2
  7. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/images/_abstract_image.py +2 -4
  8. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/images/_image.py +13 -4
  9. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/images/_label.py +14 -9
  10. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/images/_ome_zarr_container.py +5 -4
  11. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/images/test_create.py +26 -0
  12. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/images/test_images.py +0 -1
  13. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/tables/test_backends.py +0 -2
  14. {ngio-0.5.0b2 → ngio-0.5.0b4}/.copier-answers.yml +0 -0
  15. {ngio-0.5.0b2 → ngio-0.5.0b4}/.gitattributes +0 -0
  16. {ngio-0.5.0b2 → ngio-0.5.0b4}/.github/ISSUE_TEMPLATE.md +0 -0
  17. {ngio-0.5.0b2 → ngio-0.5.0b4}/.github/TEST_FAIL_TEMPLATE.md +0 -0
  18. {ngio-0.5.0b2 → ngio-0.5.0b4}/.github/dependabot.yml +0 -0
  19. {ngio-0.5.0b2 → ngio-0.5.0b4}/.github/pull_request_template.md +0 -0
  20. {ngio-0.5.0b2 → ngio-0.5.0b4}/.github/workflows/build_docs.yml +0 -0
  21. {ngio-0.5.0b2 → ngio-0.5.0b4}/.github/workflows/ci.yml +0 -0
  22. {ngio-0.5.0b2 → ngio-0.5.0b4}/.gitignore +0 -0
  23. {ngio-0.5.0b2 → ngio-0.5.0b4}/.pre-commit-config.yaml +0 -0
  24. {ngio-0.5.0b2 → ngio-0.5.0b4}/LICENSE +0 -0
  25. {ngio-0.5.0b2 → ngio-0.5.0b4}/README.md +0 -0
  26. {ngio-0.5.0b2 → ngio-0.5.0b4}/_typos.toml +0 -0
  27. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/api/hcs.md +0 -0
  28. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/api/images.md +0 -0
  29. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/api/iterators.md +0 -0
  30. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/api/ngio/common.md +0 -0
  31. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/api/ngio/hcs.md +0 -0
  32. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/api/ngio/images.md +0 -0
  33. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/api/ngio/io_pipes.md +0 -0
  34. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/api/ngio/iterators.md +0 -0
  35. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/api/ngio/ngio.md +0 -0
  36. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/api/ngio/tables.md +0 -0
  37. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/api/ngio/transforms.md +0 -0
  38. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/api/ngio/utils.md +0 -0
  39. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/api/ome_zarr_container.md +0 -0
  40. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/api/tables.md +0 -0
  41. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/changelog.md +0 -0
  42. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/code_of_conduct.md +0 -0
  43. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/contributing.md +0 -0
  44. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/getting_started/0_quickstart.md +0 -0
  45. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/getting_started/1_ome_zarr_containers.md +0 -0
  46. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/getting_started/2_images.md +0 -0
  47. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/getting_started/3_tables.md +0 -0
  48. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/getting_started/4_masked_images.md +0 -0
  49. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/getting_started/5_hcs.md +0 -0
  50. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/getting_started/6_iterators.md +0 -0
  51. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/index.md +0 -0
  52. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/table_specs/backend.md +0 -0
  53. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/table_specs/overview.md +0 -0
  54. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/table_specs/table_types/condition_table.md +0 -0
  55. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/table_specs/table_types/custom_table.md +0 -0
  56. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/table_specs/table_types/feature_table.md +0 -0
  57. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/table_specs/table_types/generic_table.md +0 -0
  58. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/table_specs/table_types/masking_roi_table.md +0 -0
  59. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/table_specs/table_types/roi_table.md +0 -0
  60. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/tutorials/create_ome_zarr.ipynb +0 -0
  61. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/tutorials/feature_extraction.ipynb +0 -0
  62. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/tutorials/hcs_exploration.ipynb +0 -0
  63. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/tutorials/image_processing.ipynb +0 -0
  64. {ngio-0.5.0b2 → ngio-0.5.0b4}/docs/tutorials/image_segmentation.ipynb +0 -0
  65. {ngio-0.5.0b2 → ngio-0.5.0b4}/mkdocs.yml +0 -0
  66. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/__init__.py +0 -0
  67. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/common/__init__.py +0 -0
  68. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/common/_dimensions.py +0 -0
  69. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/common/_synt_images_utils.py +0 -0
  70. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/common/_zoom.py +0 -0
  71. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/experimental/__init__.py +0 -0
  72. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/experimental/iterators/__init__.py +0 -0
  73. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/experimental/iterators/_abstract_iterator.py +0 -0
  74. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/experimental/iterators/_feature.py +0 -0
  75. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/experimental/iterators/_image_processing.py +0 -0
  76. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/experimental/iterators/_mappers.py +0 -0
  77. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/experimental/iterators/_rois_utils.py +0 -0
  78. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/experimental/iterators/_segmentation.py +0 -0
  79. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/hcs/__init__.py +0 -0
  80. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/hcs/_plate.py +0 -0
  81. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/images/__init__.py +0 -0
  82. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/images/_create_synt_container.py +0 -0
  83. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/images/_create_utils.py +0 -0
  84. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/images/_masked_image.py +0 -0
  85. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/images/_table_ops.py +0 -0
  86. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/io_pipes/__init__.py +0 -0
  87. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/io_pipes/_io_pipes.py +0 -0
  88. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/io_pipes/_io_pipes_masked.py +0 -0
  89. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/io_pipes/_io_pipes_roi.py +0 -0
  90. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/io_pipes/_io_pipes_types.py +0 -0
  91. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/io_pipes/_match_shape.py +0 -0
  92. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/io_pipes/_ops_axes.py +0 -0
  93. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/io_pipes/_ops_slices.py +0 -0
  94. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/io_pipes/_ops_slices_utils.py +0 -0
  95. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/io_pipes/_ops_transforms.py +0 -0
  96. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/io_pipes/_zoom_transform.py +0 -0
  97. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/ome_zarr_meta/__init__.py +0 -0
  98. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/ome_zarr_meta/_meta_handlers.py +0 -0
  99. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/ome_zarr_meta/ngio_specs/__init__.py +0 -0
  100. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/ome_zarr_meta/ngio_specs/_axes.py +0 -0
  101. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/ome_zarr_meta/ngio_specs/_channels.py +0 -0
  102. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/ome_zarr_meta/ngio_specs/_dataset.py +0 -0
  103. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/ome_zarr_meta/ngio_specs/_ngio_hcs.py +0 -0
  104. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/ome_zarr_meta/ngio_specs/_ngio_image.py +0 -0
  105. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/ome_zarr_meta/ngio_specs/_pixel_size.py +0 -0
  106. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/ome_zarr_meta/v04/__init__.py +0 -0
  107. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/ome_zarr_meta/v04/_custom_models.py +0 -0
  108. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/ome_zarr_meta/v04/_v04_spec.py +0 -0
  109. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/ome_zarr_meta/v05/__init__.py +0 -0
  110. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/ome_zarr_meta/v05/_custom_models.py +0 -0
  111. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/ome_zarr_meta/v05/_v05_spec.py +0 -0
  112. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/mask.png +0 -0
  113. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/nuclei.png +0 -0
  114. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/raw.jpg +0 -0
  115. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/resources/__init__.py +0 -0
  116. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/resources/resource_model.py +0 -0
  117. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/tables/__init__.py +0 -0
  118. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/tables/_abstract_table.py +0 -0
  119. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/tables/_tables_container.py +0 -0
  120. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/tables/backends/__init__.py +0 -0
  121. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/tables/backends/_abstract_backend.py +0 -0
  122. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/tables/backends/_anndata.py +0 -0
  123. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/tables/backends/_anndata_utils.py +0 -0
  124. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/tables/backends/_csv.py +0 -0
  125. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/tables/backends/_json.py +0 -0
  126. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/tables/backends/_parquet.py +0 -0
  127. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/tables/backends/_py_arrow_backends.py +0 -0
  128. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/tables/backends/_table_backends.py +0 -0
  129. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/tables/backends/_utils.py +0 -0
  130. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/tables/v1/__init__.py +0 -0
  131. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/tables/v1/_condition_table.py +0 -0
  132. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/tables/v1/_feature_table.py +0 -0
  133. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/tables/v1/_generic_table.py +0 -0
  134. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/tables/v1/_roi_table.py +0 -0
  135. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/transforms/__init__.py +0 -0
  136. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/transforms/_zoom.py +0 -0
  137. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/utils/__init__.py +0 -0
  138. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/utils/_cache.py +0 -0
  139. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/utils/_datasets.py +0 -0
  140. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/utils/_errors.py +0 -0
  141. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/utils/_fractal_fsspec_store.py +0 -0
  142. {ngio-0.5.0b2 → ngio-0.5.0b4}/src/ngio/utils/_zarr_utils.py +0 -0
  143. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/conftest.py +0 -0
  144. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/create_test_data.py +0 -0
  145. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_c1yx.zarr/.zattrs +0 -0
  146. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_c1yx.zarr/.zgroup +0 -0
  147. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_c1yx.zarr/0/.zarray +0 -0
  148. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_c1yx.zarr/0/.zattrs +0 -0
  149. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_c1yx.zarr/1/.zarray +0 -0
  150. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_c1yx.zarr/1/.zattrs +0 -0
  151. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_c1yx.zarr/labels/.zattrs +0 -0
  152. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_c1yx.zarr/labels/.zgroup +0 -0
  153. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zattrs +0 -0
  154. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zgroup +0 -0
  155. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/0/.zarray +0 -0
  156. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/0/.zattrs +0 -0
  157. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/1/.zarray +0 -0
  158. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/1/.zattrs +0 -0
  159. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_c1yx.zarr/tables/.zattrs +0 -0
  160. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_c1yx.zarr/tables/.zgroup +0 -0
  161. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_c1yx.zarr/tables/well_ROI_table/.zattrs +0 -0
  162. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_c1yx.zarr/tables/well_ROI_table/.zgroup +0 -0
  163. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_c1yx.zarr/tables/well_ROI_table/table.csv +0 -0
  164. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_cyx.zarr/.zattrs +0 -0
  165. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_cyx.zarr/.zgroup +0 -0
  166. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_cyx.zarr/0/.zarray +0 -0
  167. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_cyx.zarr/0/.zattrs +0 -0
  168. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_cyx.zarr/1/.zarray +0 -0
  169. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_cyx.zarr/1/.zattrs +0 -0
  170. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_cyx.zarr/labels/.zattrs +0 -0
  171. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_cyx.zarr/labels/.zgroup +0 -0
  172. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zattrs +0 -0
  173. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zgroup +0 -0
  174. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_cyx.zarr/labels/label/0/.zarray +0 -0
  175. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_cyx.zarr/labels/label/0/.zattrs +0 -0
  176. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_cyx.zarr/labels/label/1/.zarray +0 -0
  177. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_cyx.zarr/labels/label/1/.zattrs +0 -0
  178. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_cyx.zarr/tables/.zattrs +0 -0
  179. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_cyx.zarr/tables/.zgroup +0 -0
  180. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_cyx.zarr/tables/well_ROI_table/.zattrs +0 -0
  181. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_cyx.zarr/tables/well_ROI_table/.zgroup +0 -0
  182. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_cyx.zarr/tables/well_ROI_table/table.csv +0 -0
  183. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_czyx.zarr/.zattrs +0 -0
  184. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_czyx.zarr/.zgroup +0 -0
  185. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_czyx.zarr/0/.zarray +0 -0
  186. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_czyx.zarr/0/.zattrs +0 -0
  187. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_czyx.zarr/1/.zarray +0 -0
  188. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_czyx.zarr/1/.zattrs +0 -0
  189. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_czyx.zarr/labels/.zattrs +0 -0
  190. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_czyx.zarr/labels/.zgroup +0 -0
  191. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zattrs +0 -0
  192. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zgroup +0 -0
  193. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_czyx.zarr/labels/label/0/.zarray +0 -0
  194. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_czyx.zarr/labels/label/0/.zattrs +0 -0
  195. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_czyx.zarr/labels/label/1/.zarray +0 -0
  196. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_czyx.zarr/labels/label/1/.zattrs +0 -0
  197. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_czyx.zarr/tables/.zattrs +0 -0
  198. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_czyx.zarr/tables/.zgroup +0 -0
  199. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_czyx.zarr/tables/well_ROI_table/.zattrs +0 -0
  200. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_czyx.zarr/tables/well_ROI_table/.zgroup +0 -0
  201. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_czyx.zarr/tables/well_ROI_table/table.csv +0 -0
  202. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tcyx.zarr/.zattrs +0 -0
  203. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tcyx.zarr/.zgroup +0 -0
  204. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tcyx.zarr/0/.zarray +0 -0
  205. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tcyx.zarr/0/.zattrs +0 -0
  206. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tcyx.zarr/1/.zarray +0 -0
  207. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tcyx.zarr/1/.zattrs +0 -0
  208. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tcyx.zarr/labels/.zattrs +0 -0
  209. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tcyx.zarr/labels/.zgroup +0 -0
  210. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zattrs +0 -0
  211. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zgroup +0 -0
  212. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/0/.zarray +0 -0
  213. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/0/.zattrs +0 -0
  214. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/1/.zarray +0 -0
  215. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/1/.zattrs +0 -0
  216. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tcyx.zarr/tables/.zattrs +0 -0
  217. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tcyx.zarr/tables/.zgroup +0 -0
  218. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tcyx.zarr/tables/well_ROI_table/.zattrs +0 -0
  219. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tcyx.zarr/tables/well_ROI_table/.zgroup +0 -0
  220. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tcyx.zarr/tables/well_ROI_table/table.csv +0 -0
  221. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tczyx.zarr/.zattrs +0 -0
  222. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tczyx.zarr/.zgroup +0 -0
  223. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tczyx.zarr/0/.zarray +0 -0
  224. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tczyx.zarr/0/.zattrs +0 -0
  225. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tczyx.zarr/1/.zarray +0 -0
  226. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tczyx.zarr/1/.zattrs +0 -0
  227. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tczyx.zarr/labels/.zattrs +0 -0
  228. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tczyx.zarr/labels/.zgroup +0 -0
  229. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zattrs +0 -0
  230. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zgroup +0 -0
  231. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/0/.zarray +0 -0
  232. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/0/.zattrs +0 -0
  233. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/1/.zarray +0 -0
  234. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/1/.zattrs +0 -0
  235. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tczyx.zarr/tables/.zattrs +0 -0
  236. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tczyx.zarr/tables/.zgroup +0 -0
  237. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tczyx.zarr/tables/well_ROI_table/.zattrs +0 -0
  238. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tczyx.zarr/tables/well_ROI_table/.zgroup +0 -0
  239. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tczyx.zarr/tables/well_ROI_table/table.csv +0 -0
  240. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tyx.zarr/.zattrs +0 -0
  241. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tyx.zarr/.zgroup +0 -0
  242. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tyx.zarr/0/.zarray +0 -0
  243. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tyx.zarr/0/.zattrs +0 -0
  244. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tyx.zarr/1/.zarray +0 -0
  245. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tyx.zarr/1/.zattrs +0 -0
  246. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tyx.zarr/labels/.zattrs +0 -0
  247. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tyx.zarr/labels/.zgroup +0 -0
  248. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zattrs +0 -0
  249. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zgroup +0 -0
  250. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tyx.zarr/labels/label/0/.zarray +0 -0
  251. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tyx.zarr/labels/label/0/.zattrs +0 -0
  252. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tyx.zarr/labels/label/1/.zarray +0 -0
  253. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tyx.zarr/labels/label/1/.zattrs +0 -0
  254. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tyx.zarr/tables/.zattrs +0 -0
  255. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tyx.zarr/tables/.zgroup +0 -0
  256. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tyx.zarr/tables/well_ROI_table/.zattrs +0 -0
  257. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tyx.zarr/tables/well_ROI_table/.zgroup +0 -0
  258. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tyx.zarr/tables/well_ROI_table/table.csv +0 -0
  259. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tzyx.zarr/.zattrs +0 -0
  260. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tzyx.zarr/.zgroup +0 -0
  261. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tzyx.zarr/0/.zarray +0 -0
  262. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tzyx.zarr/0/.zattrs +0 -0
  263. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tzyx.zarr/1/.zarray +0 -0
  264. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tzyx.zarr/1/.zattrs +0 -0
  265. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tzyx.zarr/labels/.zattrs +0 -0
  266. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tzyx.zarr/labels/.zgroup +0 -0
  267. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zattrs +0 -0
  268. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zgroup +0 -0
  269. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/0/.zarray +0 -0
  270. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/0/.zattrs +0 -0
  271. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/1/.zarray +0 -0
  272. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/1/.zattrs +0 -0
  273. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tzyx.zarr/tables/.zattrs +0 -0
  274. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tzyx.zarr/tables/.zgroup +0 -0
  275. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tzyx.zarr/tables/well_ROI_table/.zattrs +0 -0
  276. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tzyx.zarr/tables/well_ROI_table/.zgroup +0 -0
  277. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_tzyx.zarr/tables/well_ROI_table/table.csv +0 -0
  278. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_yx.zarr/.zattrs +0 -0
  279. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_yx.zarr/.zgroup +0 -0
  280. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_yx.zarr/0/.zarray +0 -0
  281. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_yx.zarr/0/.zattrs +0 -0
  282. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_yx.zarr/1/.zarray +0 -0
  283. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_yx.zarr/1/.zattrs +0 -0
  284. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_yx.zarr/labels/.zattrs +0 -0
  285. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_yx.zarr/labels/.zgroup +0 -0
  286. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_yx.zarr/labels/label/.zattrs +0 -0
  287. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_yx.zarr/labels/label/.zgroup +0 -0
  288. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_yx.zarr/labels/label/0/.zarray +0 -0
  289. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_yx.zarr/labels/label/0/.zattrs +0 -0
  290. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_yx.zarr/labels/label/1/.zarray +0 -0
  291. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_yx.zarr/labels/label/1/.zattrs +0 -0
  292. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_yx.zarr/tables/.zattrs +0 -0
  293. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_yx.zarr/tables/.zgroup +0 -0
  294. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_yx.zarr/tables/well_ROI_table/.zattrs +0 -0
  295. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_yx.zarr/tables/well_ROI_table/.zgroup +0 -0
  296. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_yx.zarr/tables/well_ROI_table/table.csv +0 -0
  297. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_zyx.zarr/.zattrs +0 -0
  298. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_zyx.zarr/.zgroup +0 -0
  299. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_zyx.zarr/0/.zarray +0 -0
  300. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_zyx.zarr/0/.zattrs +0 -0
  301. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_zyx.zarr/1/.zarray +0 -0
  302. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_zyx.zarr/1/.zattrs +0 -0
  303. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_zyx.zarr/labels/.zattrs +0 -0
  304. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_zyx.zarr/labels/.zgroup +0 -0
  305. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zattrs +0 -0
  306. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zgroup +0 -0
  307. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_zyx.zarr/labels/label/0/.zarray +0 -0
  308. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_zyx.zarr/labels/label/0/.zattrs +0 -0
  309. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_zyx.zarr/labels/label/1/.zarray +0 -0
  310. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_zyx.zarr/labels/label/1/.zattrs +0 -0
  311. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_zyx.zarr/tables/.zattrs +0 -0
  312. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_zyx.zarr/tables/.zgroup +0 -0
  313. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_zyx.zarr/tables/well_ROI_table/.zattrs +0 -0
  314. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_zyx.zarr/tables/well_ROI_table/.zgroup +0 -0
  315. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/images/test_image_zyx.zarr/tables/well_ROI_table/table.csv +0 -0
  316. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/meta/base_ome_zarr_image_meta.json +0 -0
  317. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/meta/base_ome_zarr_image_meta_wrong_axis_order.json +0 -0
  318. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/meta/base_ome_zarr_label_meta.json +0 -0
  319. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/meta/base_ome_zarr_well_meta.json +0 -0
  320. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v04/meta/ome_zarr_well_path_normalization_meta.json +0 -0
  321. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_c1yx.zarr/0/zarr.json +0 -0
  322. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_c1yx.zarr/1/zarr.json +0 -0
  323. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_c1yx.zarr/labels/label/0/zarr.json +0 -0
  324. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_c1yx.zarr/labels/label/1/zarr.json +0 -0
  325. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_c1yx.zarr/labels/label/zarr.json +0 -0
  326. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_c1yx.zarr/labels/zarr.json +0 -0
  327. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_c1yx.zarr/tables/well_ROI_table/table.csv +0 -0
  328. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_c1yx.zarr/tables/well_ROI_table/zarr.json +0 -0
  329. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_c1yx.zarr/tables/zarr.json +0 -0
  330. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_c1yx.zarr/zarr.json +0 -0
  331. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_cyx.zarr/0/zarr.json +0 -0
  332. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_cyx.zarr/1/zarr.json +0 -0
  333. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_cyx.zarr/labels/label/0/zarr.json +0 -0
  334. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_cyx.zarr/labels/label/1/zarr.json +0 -0
  335. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_cyx.zarr/labels/label/zarr.json +0 -0
  336. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_cyx.zarr/labels/zarr.json +0 -0
  337. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_cyx.zarr/tables/well_ROI_table/table.csv +0 -0
  338. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_cyx.zarr/tables/well_ROI_table/zarr.json +0 -0
  339. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_cyx.zarr/tables/zarr.json +0 -0
  340. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_cyx.zarr/zarr.json +0 -0
  341. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_czyx.zarr/0/zarr.json +0 -0
  342. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_czyx.zarr/1/zarr.json +0 -0
  343. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_czyx.zarr/labels/label/0/zarr.json +0 -0
  344. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_czyx.zarr/labels/label/1/zarr.json +0 -0
  345. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_czyx.zarr/labels/label/zarr.json +0 -0
  346. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_czyx.zarr/labels/zarr.json +0 -0
  347. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_czyx.zarr/tables/well_ROI_table/table.csv +0 -0
  348. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_czyx.zarr/tables/well_ROI_table/zarr.json +0 -0
  349. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_czyx.zarr/tables/zarr.json +0 -0
  350. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_czyx.zarr/zarr.json +0 -0
  351. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tcyx.zarr/0/zarr.json +0 -0
  352. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tcyx.zarr/1/zarr.json +0 -0
  353. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tcyx.zarr/labels/label/0/zarr.json +0 -0
  354. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tcyx.zarr/labels/label/1/zarr.json +0 -0
  355. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tcyx.zarr/labels/label/zarr.json +0 -0
  356. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tcyx.zarr/labels/zarr.json +0 -0
  357. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tcyx.zarr/tables/well_ROI_table/table.csv +0 -0
  358. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tcyx.zarr/tables/well_ROI_table/zarr.json +0 -0
  359. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tcyx.zarr/tables/zarr.json +0 -0
  360. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tcyx.zarr/zarr.json +0 -0
  361. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tczyx.zarr/0/zarr.json +0 -0
  362. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tczyx.zarr/1/zarr.json +0 -0
  363. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tczyx.zarr/labels/label/0/zarr.json +0 -0
  364. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tczyx.zarr/labels/label/1/zarr.json +0 -0
  365. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tczyx.zarr/labels/label/zarr.json +0 -0
  366. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tczyx.zarr/labels/zarr.json +0 -0
  367. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tczyx.zarr/tables/well_ROI_table/table.csv +0 -0
  368. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tczyx.zarr/tables/well_ROI_table/zarr.json +0 -0
  369. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tczyx.zarr/tables/zarr.json +0 -0
  370. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tczyx.zarr/zarr.json +0 -0
  371. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tyx.zarr/0/zarr.json +0 -0
  372. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tyx.zarr/1/zarr.json +0 -0
  373. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tyx.zarr/labels/label/0/zarr.json +0 -0
  374. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tyx.zarr/labels/label/1/zarr.json +0 -0
  375. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tyx.zarr/labels/label/zarr.json +0 -0
  376. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tyx.zarr/labels/zarr.json +0 -0
  377. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tyx.zarr/tables/well_ROI_table/table.csv +0 -0
  378. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tyx.zarr/tables/well_ROI_table/zarr.json +0 -0
  379. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tyx.zarr/tables/zarr.json +0 -0
  380. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tyx.zarr/zarr.json +0 -0
  381. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tzyx.zarr/0/zarr.json +0 -0
  382. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tzyx.zarr/1/zarr.json +0 -0
  383. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tzyx.zarr/labels/label/0/zarr.json +0 -0
  384. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tzyx.zarr/labels/label/1/zarr.json +0 -0
  385. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tzyx.zarr/labels/label/zarr.json +0 -0
  386. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tzyx.zarr/labels/zarr.json +0 -0
  387. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tzyx.zarr/tables/well_ROI_table/table.csv +0 -0
  388. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tzyx.zarr/tables/well_ROI_table/zarr.json +0 -0
  389. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tzyx.zarr/tables/zarr.json +0 -0
  390. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_tzyx.zarr/zarr.json +0 -0
  391. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_yx.zarr/0/zarr.json +0 -0
  392. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_yx.zarr/1/zarr.json +0 -0
  393. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_yx.zarr/labels/label/0/zarr.json +0 -0
  394. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_yx.zarr/labels/label/1/zarr.json +0 -0
  395. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_yx.zarr/labels/label/zarr.json +0 -0
  396. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_yx.zarr/labels/zarr.json +0 -0
  397. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_yx.zarr/tables/well_ROI_table/table.csv +0 -0
  398. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_yx.zarr/tables/well_ROI_table/zarr.json +0 -0
  399. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_yx.zarr/tables/zarr.json +0 -0
  400. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_yx.zarr/zarr.json +0 -0
  401. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_zyx.zarr/0/zarr.json +0 -0
  402. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_zyx.zarr/1/zarr.json +0 -0
  403. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_zyx.zarr/labels/label/0/zarr.json +0 -0
  404. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_zyx.zarr/labels/label/1/zarr.json +0 -0
  405. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_zyx.zarr/labels/label/zarr.json +0 -0
  406. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_zyx.zarr/labels/zarr.json +0 -0
  407. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_zyx.zarr/tables/well_ROI_table/table.csv +0 -0
  408. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_zyx.zarr/tables/well_ROI_table/zarr.json +0 -0
  409. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_zyx.zarr/tables/zarr.json +0 -0
  410. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/data/v05/images/test_image_zyx.zarr/zarr.json +0 -0
  411. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/stores/conftest.py +0 -0
  412. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/stores/test_http_store.py +0 -0
  413. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/stores/test_local_store.py +0 -0
  414. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/stores/test_memory_store.py +0 -0
  415. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/stores/test_s3_store.py +0 -0
  416. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/stores/utils.py +0 -0
  417. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/common/test_dimensions.py +0 -0
  418. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/common/test_pyramid.py +0 -0
  419. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/common/test_roi.py +0 -0
  420. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/common/test_transforms.py +0 -0
  421. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/hcs/test_plate.py +0 -0
  422. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/hcs/test_well.py +0 -0
  423. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/images/test_masked_images.py +0 -0
  424. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/images/test_omezarr_container.py +0 -0
  425. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/images/test_table_ops.py +0 -0
  426. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/io_pipes/test_axes_ops.py +0 -0
  427. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/io_pipes/test_slicing_ops.py +0 -0
  428. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/iterators/test_iterators.py +0 -0
  429. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/ome_zarr_meta/test_image_handler.py +0 -0
  430. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/ome_zarr_meta/test_unit_ngio_specs.py +0 -0
  431. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/ome_zarr_meta/test_unit_v04_utils.py +0 -0
  432. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/tables/test_backends_utils.py +0 -0
  433. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/tables/test_feature_table.py +0 -0
  434. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/tables/test_generic_table.py +0 -0
  435. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/tables/test_masking_roi_table_v1.py +0 -0
  436. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/tables/test_roi_table_v1.py +0 -0
  437. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/tables/test_table_group.py +0 -0
  438. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/utils/test_download_datasets.py +0 -0
  439. {ngio-0.5.0b2 → ngio-0.5.0b4}/tests/unit/utils/test_zarr_utils.py +0 -0
@@ -6,6 +6,7 @@
6
6
  - Add support for OME-NGFF v0.5
7
7
  - Move to zarr-python v3
8
8
  - API to delete labels and tables from OME-Zarr containers and HCS plates.
9
+ - Allow to explicitly set axes order when building masking roi tables.
9
10
 
10
11
  ### API Breaking Changes
11
12
 
@@ -18,7 +19,10 @@
18
19
  - Internal changes to `ZarrGroupHandler` to support cleanup unused apis.
19
20
  - Remove `ngio_logger` in favor of standard warnings module.
20
21
 
21
- ## [v0.4.6]
22
+ ## [v0.4.7]
23
+
24
+ ### Bug Fixes
25
+ - Fix bug adding time axis to masking roi tables.
22
26
 
23
27
  ### Bug Fixes
24
28
  - Fix channel selection from `wavelength_id`
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ngio
3
- Version: 0.5.0b2
3
+ Version: 0.5.0b4
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
@@ -42,6 +42,7 @@ 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
+ Requires-Dist: zarrs; extra == 'dev'
45
46
  Provides-Extra: docs
46
47
  Requires-Dist: griffe-typingdoc; extra == 'docs'
47
48
  Requires-Dist: markdown-exec[ansi]; extra == 'docs'
@@ -66,6 +66,7 @@ test = [
66
66
  ]
67
67
 
68
68
  dev = [
69
+ "zarrs",
69
70
  "Pympler",
70
71
  "napari",
71
72
  "pyqt5",
@@ -1,6 +1,7 @@
1
1
  """Utilities to build masking regions of interest (ROIs)."""
2
2
 
3
3
  import itertools
4
+ from collections.abc import Sequence
4
5
 
5
6
  import dask.array as da
6
7
  import numpy as np
@@ -115,7 +116,9 @@ def lazy_compute_slices(segmentation: da.Array) -> dict[int, tuple[slice, ...]]:
115
116
 
116
117
 
117
118
  def compute_masking_roi(
118
- segmentation: np.ndarray | da.Array, pixel_size: PixelSize
119
+ segmentation: np.ndarray | da.Array,
120
+ pixel_size: PixelSize,
121
+ axes_order: Sequence[str],
119
122
  ) -> list[Roi]:
120
123
  """Compute a ROIs for each label in a segmentation.
121
124
 
@@ -127,6 +130,12 @@ def compute_masking_roi(
127
130
  if segmentation.ndim not in [2, 3, 4]:
128
131
  raise NgioValueError("Only 2D, 3D, and 4D segmentations are supported.")
129
132
 
133
+ if len(axes_order) != segmentation.ndim:
134
+ raise NgioValueError(
135
+ "The length of axes_order must match the number of dimensions "
136
+ "of the segmentation."
137
+ )
138
+
130
139
  if isinstance(segmentation, da.Array):
131
140
  slices = lazy_compute_slices(segmentation)
132
141
  else:
@@ -134,24 +143,11 @@ def compute_masking_roi(
134
143
 
135
144
  rois = []
136
145
  for label, slice_ in slices.items():
137
- if len(slice_) == 2:
138
- slices = {"y": slice_[0], "x": slice_[1]}
139
- elif len(slice_) == 3:
140
- slices = {"z": slice_[0], "y": slice_[1], "x": slice_[2]}
141
- elif len(slice_) == 4:
142
- slices = {
143
- "t": slice_[0],
144
- "z": slice_[1],
145
- "y": slice_[2],
146
- "x": slice_[3],
147
- }
148
- else:
149
- raise ValueError("Invalid slice length.")
150
-
146
+ assert len(slice_) == len(axes_order)
147
+ slices = dict(zip(axes_order, slice_, strict=True))
151
148
  roi = Roi.from_values(
152
149
  name=str(label), slices=slices, label=label, space="pixel"
153
150
  )
154
-
155
151
  roi = roi.to_world(pixel_size=pixel_size)
156
152
  rois.append(roi)
157
153
  return rois
@@ -273,6 +273,10 @@ class PyramidLevel(BaseModel):
273
273
  "Shards must have the same length as shape "
274
274
  f"({len(self.shape)}), got {len(self.shards)}"
275
275
  )
276
+ normalized_shards = []
277
+ for dim_size, shard_size in zip(self.shape, self.shards, strict=True):
278
+ normalized_shards.append(min(dim_size, shard_size))
279
+ self.shards = tuple(normalized_shards)
276
280
  return self
277
281
 
278
282
 
@@ -4,7 +4,7 @@ These are the interfaces bwteen the ROI tables / masking ROI tables and
4
4
  the ImageLikeHandler.
5
5
  """
6
6
 
7
- from collections.abc import Callable
7
+ from collections.abc import Callable, Mapping
8
8
  from typing import Literal, Self
9
9
 
10
10
  from pydantic import BaseModel, ConfigDict, Field, field_validator
@@ -183,7 +183,7 @@ class Roi(BaseModel):
183
183
  @classmethod
184
184
  def from_values(
185
185
  cls,
186
- slices: dict[str, float | tuple[float | None, float | None] | slice],
186
+ slices: Mapping[str, float | tuple[float | None, float | None] | slice],
187
187
  name: str | None,
188
188
  label: int | None = None,
189
189
  space: Literal["world", "pixel"] = "world",
@@ -615,7 +615,6 @@ def _shapes_from_ref_image(
615
615
  if len(shapes) == len(paths):
616
616
  return shapes
617
617
  missing_levels = len(paths) - len(shapes)
618
- print(ref_image.meta.scaling_factor())
619
618
  extended_shapes = shapes_from_scaling_factors(
620
619
  base_shape=shapes[-1],
621
620
  scaling_factors=ref_image.meta.scaling_factor(),
@@ -800,7 +799,7 @@ def abstract_derive(
800
799
  channels_meta: Sequence[str | Channel] | None = None,
801
800
  ngff_version: NgffVersions | None = None,
802
801
  # Zarr Array parameters
803
- chunks: ChunksLike = "auto",
802
+ chunks: ChunksLike | None = None,
804
803
  shards: ShardsLike | None = None,
805
804
  dtype: str | None = None,
806
805
  dimension_separator: Literal[".", "/"] | None = None,
@@ -835,7 +834,7 @@ def abstract_derive(
835
834
  channels_meta (Sequence[str | Channel] | None): The channels metadata
836
835
  of the new image.
837
836
  ngff_version (NgffVersions | None): The NGFF version to use.
838
- chunks (Sequence[int] | None): The chunk shape of the new image.
837
+ chunks (ChunksLike | None): The chunk shape of the new image.
839
838
  shards (ShardsLike | None): The shard shape of the new image.
840
839
  dtype (str | None): The data type of the new image.
841
840
  dimension_separator (DIMENSION_SEPARATOR | None): The separator to use for
@@ -918,7 +917,6 @@ def abstract_derive(
918
917
 
919
918
  if chunks is None:
920
919
  chunks = ref_image.zarr_array.chunks
921
-
922
920
  if shards is None:
923
921
  shards = ref_image.zarr_array.shards
924
922
 
@@ -613,9 +613,10 @@ class ImagesContainer:
613
613
  time_spacing: float | None = None,
614
614
  name: str | None = None,
615
615
  channels_meta: Sequence[str | Channel] | None = None,
616
+ channels_policy: Literal["same", "squeeze", "singleton"] | int = "same",
616
617
  ngff_version: NgffVersions | None = None,
617
618
  # Zarr Array parameters
618
- chunks: ChunksLike = "auto",
619
+ chunks: ChunksLike | None = None,
619
620
  shards: ShardsLike | None = None,
620
621
  dtype: str = "uint16",
621
622
  dimension_separator: Literal[".", "/"] = "/",
@@ -644,8 +645,15 @@ class ImagesContainer:
644
645
  name (str | None): The name of the new image.
645
646
  channels_meta (Sequence[str | Channel] | None): The channels metadata
646
647
  of the new image.
648
+ channels_policy (Literal["same", "squeeze", "singleton"] | int):
649
+ Possible policies:
650
+ - If "squeeze", the channels axis will be removed (no matter its size).
651
+ - If "same", the channels axis will be kept as is (if it exists).
652
+ - If "singleton", the channels axis will be set to size 1.
653
+ - If an integer is provided, the channels axis will be changed to have
654
+ that size.
647
655
  ngff_version (NgffVersions | None): The NGFF version to use.
648
- chunks (Sequence[int] | None): The chunk shape of the new image.
656
+ chunks (ChunksLike | None): The chunk shape of the new image.
649
657
  shards (ShardsLike | None): The shard shape of the new image.
650
658
  dtype (str | None): The data type of the new image.
651
659
  dimension_separator (DIMENSION_SEPARATOR | None): The separator to use for
@@ -674,6 +682,7 @@ class ImagesContainer:
674
682
  time_spacing=time_spacing,
675
683
  name=name,
676
684
  channels_meta=channels_meta,
685
+ channels_policy=channels_policy,
677
686
  ngff_version=ngff_version,
678
687
  chunks=chunks,
679
688
  shards=shards,
@@ -769,7 +778,7 @@ def derive_image_container(
769
778
  channels_meta: Sequence[str | Channel] | None = None,
770
779
  ngff_version: NgffVersions | None = None,
771
780
  # Zarr Array parameters
772
- chunks: ChunksLike = "auto",
781
+ chunks: ChunksLike | None = None,
773
782
  shards: ShardsLike | None = None,
774
783
  dtype: str | None = None,
775
784
  dimension_separator: Literal[".", "/"] | None = None,
@@ -804,7 +813,7 @@ def derive_image_container(
804
813
  channels_meta (Sequence[str | Channel] | None): The channels metadata
805
814
  of the new image.
806
815
  ngff_version (NgffVersions | None): The NGFF version to use.
807
- chunks (ChunksLike): The chunk shape of the new image. Defaults to "auto".
816
+ chunks (ChunksLike | None): The chunk shape of the new image.
808
817
  shards (ShardsLike | None): The shard shape of the new image.
809
818
  dtype (str | None): The data type of the new image.
810
819
  dimension_separator (Literal[".", "/"] | None): The separator to use for
@@ -97,9 +97,11 @@ class Label(AbstractImage):
97
97
  meta = meta.to_units(space_unit=space_unit, time_unit=time_unit)
98
98
  self.meta_handler.update_meta(meta)
99
99
 
100
- def build_masking_roi_table(self) -> MaskingRoiTable:
100
+ def build_masking_roi_table(
101
+ self, axes_order: Sequence[str] | None = None
102
+ ) -> MaskingRoiTable:
101
103
  """Compute the masking ROI table."""
102
- return build_masking_roi_table(self)
104
+ return build_masking_roi_table(self, axes_order=axes_order)
103
105
 
104
106
  def consolidate(
105
107
  self,
@@ -219,7 +221,7 @@ class LabelsContainer:
219
221
  channels_policy: Literal["same", "squeeze", "singleton"] | int = "squeeze",
220
222
  ngff_version: NgffVersions | None = None,
221
223
  # Zarr Array parameters
222
- chunks: ChunksLike = "auto",
224
+ chunks: ChunksLike | None = None,
223
225
  shards: ShardsLike | None = None,
224
226
  dtype: str | None = None,
225
227
  dimension_separator: Literal[".", "/"] | None = None,
@@ -256,7 +258,7 @@ class LabelsContainer:
256
258
  - If an integer is provided, the channels axis will be changed to have
257
259
  that size.
258
260
  ngff_version (NgffVersions | None): The NGFF version to use.
259
- chunks (Sequence[int] | None): The chunk shape of the new image.
261
+ chunks (ChunksLike | None): The chunk shape of the new image.
260
262
  shards (ShardsLike | None): The shard shape of the new image.
261
263
  dtype (str | None): The data type of the new image.
262
264
  dimension_separator (DIMENSION_SEPARATOR | None): The separator to use for
@@ -328,7 +330,7 @@ def derive_label(
328
330
  channels_policy: Literal["same", "squeeze", "singleton"] | int = "squeeze",
329
331
  ngff_version: NgffVersions | None = None,
330
332
  # Zarr Array parameters
331
- chunks: ChunksLike = "auto",
333
+ chunks: ChunksLike | None = None,
332
334
  shards: ShardsLike | None = None,
333
335
  dtype: str | None = None,
334
336
  dimension_separator: Literal[".", "/"] | None = None,
@@ -359,7 +361,7 @@ def derive_label(
359
361
  - If an integer is provided, the channels axis will be changed to have that
360
362
  size.
361
363
  ngff_version (NgffVersions | None): The NGFF version to use.
362
- chunks (ChunksLike): The chunk shape of the new label. Defaults to "auto".
364
+ chunks (ChunksLike | None): The chunk shape of the new label.
363
365
  shards (ShardsLike | None): The shard shape of the new label.
364
366
  dtype (str | None): The data type of the new label.
365
367
  dimension_separator (Literal[".", "/"] | None): The separator to use for
@@ -405,8 +407,11 @@ def derive_label(
405
407
  return group_handler
406
408
 
407
409
 
408
- def build_masking_roi_table(label: Label) -> MaskingRoiTable:
410
+ def build_masking_roi_table(
411
+ label: Label, axes_order: Sequence[str] | None = None
412
+ ) -> MaskingRoiTable:
409
413
  """Compute the masking ROI table for a label."""
410
- array = label.get_as_dask(axes_order=["t", "z", "y", "x"])
411
- rois = compute_masking_roi(array, label.pixel_size)
414
+ axes_order = axes_order or label.axes
415
+ array = label.get_as_dask(axes_order=axes_order)
416
+ rois = compute_masking_roi(array, label.pixel_size, axes_order=axes_order)
412
417
  return MaskingRoiTable(rois, reference_label=label.meta.name)
@@ -434,7 +434,7 @@ class OmeZarrContainer:
434
434
  channels_meta: Sequence[str | Channel] | None = None,
435
435
  ngff_version: NgffVersions | None = None,
436
436
  # Zarr Array parameters
437
- chunks: ChunksLike = "auto",
437
+ chunks: ChunksLike | None = None,
438
438
  shards: ShardsLike | None = None,
439
439
  dtype: str = "uint16",
440
440
  dimension_separator: Literal[".", "/"] = "/",
@@ -471,7 +471,7 @@ class OmeZarrContainer:
471
471
  channels_meta (Sequence[str | Channel] | None): The channels metadata
472
472
  of the new image.
473
473
  ngff_version (NgffVersions | None): The NGFF version to use.
474
- chunks (ChunksLike): The chunk shape of the new image. Defaults to "auto".
474
+ chunks (ChunksLike | None): The chunk shape of the new image.
475
475
  shards (ShardsLike | None): The shard shape of the new image.
476
476
  dtype (str): The data type of the new image. Defaults to "uint16".
477
477
  dimension_separator (Literal[".", "/"]): The separator to use for
@@ -503,6 +503,7 @@ class OmeZarrContainer:
503
503
  time_spacing=time_spacing,
504
504
  name=name,
505
505
  channels_meta=channels_meta,
506
+ channels_policy=channels_policy,
506
507
  ngff_version=ngff_version,
507
508
  chunks=chunks,
508
509
  shards=shards,
@@ -789,7 +790,7 @@ class OmeZarrContainer:
789
790
  channels_policy: Literal["same", "squeeze", "singleton"] | int = "squeeze",
790
791
  ngff_version: NgffVersions | None = None,
791
792
  # Zarr Array parameters
792
- chunks: ChunksLike = "auto",
793
+ chunks: ChunksLike | None = None,
793
794
  shards: ShardsLike | None = None,
794
795
  dtype: str | None = None,
795
796
  dimension_separator: Literal[".", "/"] | None = None,
@@ -821,7 +822,7 @@ class OmeZarrContainer:
821
822
  that size.
822
823
  Defaults to "squeeze".
823
824
  ngff_version (NgffVersions | None): The NGFF version to use.
824
- chunks (ChunksLike): The chunk shape of the new label. Defaults to "auto".
825
+ chunks (ChunksLike | None): The chunk shape of the new label.
825
826
  shards (ShardsLike | None): The shard shape of the new label.
826
827
  dtype (str | None): The data type of the new label.
827
828
  dimension_separator (Literal[".", "/"] | None): The separator to use for
@@ -195,6 +195,32 @@ def test_derive_from_non_dishogeneus_shapes():
195
195
  assert lbl.shape == (4, 3, 32, 19)
196
196
 
197
197
 
198
+ def test_create_with_sharding(tmp_path: Path):
199
+ store = tmp_path / "test_image_sharded.zarr"
200
+ ome_zarr = create_empty_ome_zarr(
201
+ store=store,
202
+ shape=(4, 3, 64, 64),
203
+ pixelsize=0.5,
204
+ chunks=(2, 1, 32, 32),
205
+ shards=(4, 3, 64, 64),
206
+ dtype="uint8",
207
+ levels=3,
208
+ overwrite=True,
209
+ ngff_version="0.5",
210
+ )
211
+ ome_zarr.derive_label("label_sharded")
212
+ img = ome_zarr.get_image(path="0")
213
+ assert img.zarr_array.shards is not None
214
+ assert img.zarr_array.chunks == (2, 1, 32, 32)
215
+ assert img.zarr_array.shards == (4, 3, 64, 64)
216
+
217
+ img = ome_zarr.get_image(path="2")
218
+ assert img.zarr_array.shards is not None
219
+ # Check clipping of chunks/shards at the smallest level
220
+ assert img.zarr_array.chunks == (2, 1, 16, 16)
221
+ assert img.zarr_array.shards == (4, 3, 16, 16)
222
+
223
+
198
224
  def test_fail_derive_singleton():
199
225
  store = MemoryStore()
200
226
  ome_zarr = create_empty_ome_zarr(store=store, shape=(1, 1, 64, 4), pixelsize=0.5)
@@ -225,7 +225,6 @@ def test_zoom_virtual_axes(
225
225
  assert img2_data.shape[0] == 1 # Virtual channel axis
226
226
 
227
227
  roi = img1.build_image_roi_table().rois()[0]
228
- print(roi)
229
228
  img2_roi_data = img2.get_roi_as_numpy(roi, transforms=[zoom], axes_order="czyx")
230
229
  # Roi data should match exactly except for virtual axis
231
230
  assert img1_data.shape[1:] == img2_roi_data.shape[1:]
@@ -111,8 +111,6 @@ def test_csv_backend(tmp_path: Path):
111
111
 
112
112
  backend.write(test_table, metadata={"test": "test"})
113
113
  loaded_table = backend.load_as_pandas_df()
114
- print(loaded_table)
115
- print(test_table)
116
114
  assert loaded_table.equals(test_table), loaded_table
117
115
  meta = backend._group_handler.load_attrs()
118
116
  assert meta["test"] == "test"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes