ngio 0.5.0a3__tar.gz → 0.5.0b2__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.0a3 → ngio-0.5.0b2}/CHANGELOG.md +1 -0
  2. {ngio-0.5.0a3 → ngio-0.5.0b2}/PKG-INFO +1 -1
  3. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/__init__.py +3 -0
  4. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/hcs/_plate.py +67 -14
  5. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/images/_abstract_image.py +9 -8
  6. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/images/_image.py +9 -1
  7. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/images/_label.py +67 -22
  8. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/images/_ome_zarr_container.py +53 -5
  9. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/ome_zarr_meta/__init__.py +8 -0
  10. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/ome_zarr_meta/_meta_handlers.py +88 -1
  11. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/ome_zarr_meta/ngio_specs/__init__.py +2 -0
  12. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/ome_zarr_meta/ngio_specs/_ngio_hcs.py +11 -11
  13. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/ome_zarr_meta/ngio_specs/_ngio_image.py +7 -0
  14. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/ome_zarr_meta/v04/__init__.py +4 -0
  15. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/ome_zarr_meta/v04/_v04_spec.py +34 -3
  16. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/ome_zarr_meta/v05/__init__.py +4 -0
  17. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/ome_zarr_meta/v05/_v05_spec.py +39 -3
  18. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/tables/_tables_container.py +21 -0
  19. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/tables/backends/_anndata.py +1 -0
  20. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/utils/__init__.py +2 -0
  21. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/utils/_zarr_utils.py +22 -19
  22. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/hcs/test_plate.py +18 -2
  23. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/images/test_create.py +91 -0
  24. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/images/test_omezarr_container.py +37 -1
  25. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/utils/test_zarr_utils.py +23 -0
  26. {ngio-0.5.0a3 → ngio-0.5.0b2}/.copier-answers.yml +0 -0
  27. {ngio-0.5.0a3 → ngio-0.5.0b2}/.gitattributes +0 -0
  28. {ngio-0.5.0a3 → ngio-0.5.0b2}/.github/ISSUE_TEMPLATE.md +0 -0
  29. {ngio-0.5.0a3 → ngio-0.5.0b2}/.github/TEST_FAIL_TEMPLATE.md +0 -0
  30. {ngio-0.5.0a3 → ngio-0.5.0b2}/.github/dependabot.yml +0 -0
  31. {ngio-0.5.0a3 → ngio-0.5.0b2}/.github/pull_request_template.md +0 -0
  32. {ngio-0.5.0a3 → ngio-0.5.0b2}/.github/workflows/build_docs.yml +0 -0
  33. {ngio-0.5.0a3 → ngio-0.5.0b2}/.github/workflows/ci.yml +0 -0
  34. {ngio-0.5.0a3 → ngio-0.5.0b2}/.gitignore +0 -0
  35. {ngio-0.5.0a3 → ngio-0.5.0b2}/.pre-commit-config.yaml +0 -0
  36. {ngio-0.5.0a3 → ngio-0.5.0b2}/LICENSE +0 -0
  37. {ngio-0.5.0a3 → ngio-0.5.0b2}/README.md +0 -0
  38. {ngio-0.5.0a3 → ngio-0.5.0b2}/_typos.toml +0 -0
  39. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/api/hcs.md +0 -0
  40. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/api/images.md +0 -0
  41. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/api/iterators.md +0 -0
  42. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/api/ngio/common.md +0 -0
  43. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/api/ngio/hcs.md +0 -0
  44. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/api/ngio/images.md +0 -0
  45. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/api/ngio/io_pipes.md +0 -0
  46. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/api/ngio/iterators.md +0 -0
  47. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/api/ngio/ngio.md +0 -0
  48. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/api/ngio/tables.md +0 -0
  49. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/api/ngio/transforms.md +0 -0
  50. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/api/ngio/utils.md +0 -0
  51. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/api/ome_zarr_container.md +0 -0
  52. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/api/tables.md +0 -0
  53. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/changelog.md +0 -0
  54. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/code_of_conduct.md +0 -0
  55. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/contributing.md +0 -0
  56. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/getting_started/0_quickstart.md +0 -0
  57. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/getting_started/1_ome_zarr_containers.md +0 -0
  58. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/getting_started/2_images.md +0 -0
  59. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/getting_started/3_tables.md +0 -0
  60. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/getting_started/4_masked_images.md +0 -0
  61. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/getting_started/5_hcs.md +0 -0
  62. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/getting_started/6_iterators.md +0 -0
  63. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/index.md +0 -0
  64. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/table_specs/backend.md +0 -0
  65. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/table_specs/overview.md +0 -0
  66. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/table_specs/table_types/condition_table.md +0 -0
  67. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/table_specs/table_types/custom_table.md +0 -0
  68. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/table_specs/table_types/feature_table.md +0 -0
  69. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/table_specs/table_types/generic_table.md +0 -0
  70. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/table_specs/table_types/masking_roi_table.md +0 -0
  71. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/table_specs/table_types/roi_table.md +0 -0
  72. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/tutorials/create_ome_zarr.ipynb +0 -0
  73. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/tutorials/feature_extraction.ipynb +0 -0
  74. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/tutorials/hcs_exploration.ipynb +0 -0
  75. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/tutorials/image_processing.ipynb +0 -0
  76. {ngio-0.5.0a3 → ngio-0.5.0b2}/docs/tutorials/image_segmentation.ipynb +0 -0
  77. {ngio-0.5.0a3 → ngio-0.5.0b2}/mkdocs.yml +0 -0
  78. {ngio-0.5.0a3 → ngio-0.5.0b2}/pyproject.toml +0 -0
  79. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/common/__init__.py +0 -0
  80. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/common/_dimensions.py +0 -0
  81. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/common/_masking_roi.py +0 -0
  82. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/common/_pyramid.py +0 -0
  83. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/common/_roi.py +0 -0
  84. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/common/_synt_images_utils.py +0 -0
  85. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/common/_zoom.py +0 -0
  86. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/experimental/__init__.py +0 -0
  87. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/experimental/iterators/__init__.py +0 -0
  88. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/experimental/iterators/_abstract_iterator.py +0 -0
  89. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/experimental/iterators/_feature.py +0 -0
  90. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/experimental/iterators/_image_processing.py +0 -0
  91. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/experimental/iterators/_mappers.py +0 -0
  92. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/experimental/iterators/_rois_utils.py +0 -0
  93. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/experimental/iterators/_segmentation.py +0 -0
  94. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/hcs/__init__.py +0 -0
  95. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/images/__init__.py +0 -0
  96. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/images/_create_synt_container.py +0 -0
  97. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/images/_create_utils.py +0 -0
  98. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/images/_masked_image.py +0 -0
  99. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/images/_table_ops.py +0 -0
  100. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/io_pipes/__init__.py +0 -0
  101. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/io_pipes/_io_pipes.py +0 -0
  102. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/io_pipes/_io_pipes_masked.py +0 -0
  103. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/io_pipes/_io_pipes_roi.py +0 -0
  104. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/io_pipes/_io_pipes_types.py +0 -0
  105. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/io_pipes/_match_shape.py +0 -0
  106. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/io_pipes/_ops_axes.py +0 -0
  107. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/io_pipes/_ops_slices.py +0 -0
  108. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/io_pipes/_ops_slices_utils.py +0 -0
  109. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/io_pipes/_ops_transforms.py +0 -0
  110. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/io_pipes/_zoom_transform.py +0 -0
  111. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/ome_zarr_meta/ngio_specs/_axes.py +0 -0
  112. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/ome_zarr_meta/ngio_specs/_channels.py +0 -0
  113. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/ome_zarr_meta/ngio_specs/_dataset.py +0 -0
  114. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/ome_zarr_meta/ngio_specs/_pixel_size.py +0 -0
  115. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/ome_zarr_meta/v04/_custom_models.py +0 -0
  116. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/ome_zarr_meta/v05/_custom_models.py +0 -0
  117. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/mask.png +0 -0
  118. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/nuclei.png +0 -0
  119. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/raw.jpg +0 -0
  120. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/resources/__init__.py +0 -0
  121. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/resources/resource_model.py +0 -0
  122. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/tables/__init__.py +0 -0
  123. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/tables/_abstract_table.py +0 -0
  124. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/tables/backends/__init__.py +0 -0
  125. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/tables/backends/_abstract_backend.py +0 -0
  126. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/tables/backends/_anndata_utils.py +0 -0
  127. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/tables/backends/_csv.py +0 -0
  128. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/tables/backends/_json.py +0 -0
  129. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/tables/backends/_parquet.py +0 -0
  130. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/tables/backends/_py_arrow_backends.py +0 -0
  131. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/tables/backends/_table_backends.py +0 -0
  132. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/tables/backends/_utils.py +0 -0
  133. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/tables/v1/__init__.py +0 -0
  134. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/tables/v1/_condition_table.py +0 -0
  135. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/tables/v1/_feature_table.py +0 -0
  136. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/tables/v1/_generic_table.py +0 -0
  137. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/tables/v1/_roi_table.py +0 -0
  138. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/transforms/__init__.py +0 -0
  139. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/transforms/_zoom.py +0 -0
  140. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/utils/_cache.py +0 -0
  141. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/utils/_datasets.py +0 -0
  142. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/utils/_errors.py +0 -0
  143. {ngio-0.5.0a3 → ngio-0.5.0b2}/src/ngio/utils/_fractal_fsspec_store.py +0 -0
  144. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/conftest.py +0 -0
  145. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/create_test_data.py +0 -0
  146. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_c1yx.zarr/.zattrs +0 -0
  147. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_c1yx.zarr/.zgroup +0 -0
  148. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_c1yx.zarr/0/.zarray +0 -0
  149. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_c1yx.zarr/0/.zattrs +0 -0
  150. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_c1yx.zarr/1/.zarray +0 -0
  151. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_c1yx.zarr/1/.zattrs +0 -0
  152. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_c1yx.zarr/labels/.zattrs +0 -0
  153. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_c1yx.zarr/labels/.zgroup +0 -0
  154. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zattrs +0 -0
  155. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zgroup +0 -0
  156. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/0/.zarray +0 -0
  157. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/0/.zattrs +0 -0
  158. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/1/.zarray +0 -0
  159. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/1/.zattrs +0 -0
  160. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_c1yx.zarr/tables/.zattrs +0 -0
  161. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_c1yx.zarr/tables/.zgroup +0 -0
  162. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_c1yx.zarr/tables/well_ROI_table/.zattrs +0 -0
  163. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_c1yx.zarr/tables/well_ROI_table/.zgroup +0 -0
  164. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_c1yx.zarr/tables/well_ROI_table/table.csv +0 -0
  165. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_cyx.zarr/.zattrs +0 -0
  166. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_cyx.zarr/.zgroup +0 -0
  167. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_cyx.zarr/0/.zarray +0 -0
  168. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_cyx.zarr/0/.zattrs +0 -0
  169. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_cyx.zarr/1/.zarray +0 -0
  170. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_cyx.zarr/1/.zattrs +0 -0
  171. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_cyx.zarr/labels/.zattrs +0 -0
  172. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_cyx.zarr/labels/.zgroup +0 -0
  173. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zattrs +0 -0
  174. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zgroup +0 -0
  175. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_cyx.zarr/labels/label/0/.zarray +0 -0
  176. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_cyx.zarr/labels/label/0/.zattrs +0 -0
  177. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_cyx.zarr/labels/label/1/.zarray +0 -0
  178. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_cyx.zarr/labels/label/1/.zattrs +0 -0
  179. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_cyx.zarr/tables/.zattrs +0 -0
  180. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_cyx.zarr/tables/.zgroup +0 -0
  181. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_cyx.zarr/tables/well_ROI_table/.zattrs +0 -0
  182. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_cyx.zarr/tables/well_ROI_table/.zgroup +0 -0
  183. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_cyx.zarr/tables/well_ROI_table/table.csv +0 -0
  184. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_czyx.zarr/.zattrs +0 -0
  185. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_czyx.zarr/.zgroup +0 -0
  186. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_czyx.zarr/0/.zarray +0 -0
  187. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_czyx.zarr/0/.zattrs +0 -0
  188. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_czyx.zarr/1/.zarray +0 -0
  189. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_czyx.zarr/1/.zattrs +0 -0
  190. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_czyx.zarr/labels/.zattrs +0 -0
  191. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_czyx.zarr/labels/.zgroup +0 -0
  192. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zattrs +0 -0
  193. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zgroup +0 -0
  194. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_czyx.zarr/labels/label/0/.zarray +0 -0
  195. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_czyx.zarr/labels/label/0/.zattrs +0 -0
  196. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_czyx.zarr/labels/label/1/.zarray +0 -0
  197. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_czyx.zarr/labels/label/1/.zattrs +0 -0
  198. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_czyx.zarr/tables/.zattrs +0 -0
  199. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_czyx.zarr/tables/.zgroup +0 -0
  200. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_czyx.zarr/tables/well_ROI_table/.zattrs +0 -0
  201. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_czyx.zarr/tables/well_ROI_table/.zgroup +0 -0
  202. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_czyx.zarr/tables/well_ROI_table/table.csv +0 -0
  203. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tcyx.zarr/.zattrs +0 -0
  204. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tcyx.zarr/.zgroup +0 -0
  205. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tcyx.zarr/0/.zarray +0 -0
  206. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tcyx.zarr/0/.zattrs +0 -0
  207. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tcyx.zarr/1/.zarray +0 -0
  208. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tcyx.zarr/1/.zattrs +0 -0
  209. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tcyx.zarr/labels/.zattrs +0 -0
  210. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tcyx.zarr/labels/.zgroup +0 -0
  211. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zattrs +0 -0
  212. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zgroup +0 -0
  213. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/0/.zarray +0 -0
  214. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/0/.zattrs +0 -0
  215. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/1/.zarray +0 -0
  216. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/1/.zattrs +0 -0
  217. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tcyx.zarr/tables/.zattrs +0 -0
  218. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tcyx.zarr/tables/.zgroup +0 -0
  219. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tcyx.zarr/tables/well_ROI_table/.zattrs +0 -0
  220. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tcyx.zarr/tables/well_ROI_table/.zgroup +0 -0
  221. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tcyx.zarr/tables/well_ROI_table/table.csv +0 -0
  222. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tczyx.zarr/.zattrs +0 -0
  223. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tczyx.zarr/.zgroup +0 -0
  224. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tczyx.zarr/0/.zarray +0 -0
  225. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tczyx.zarr/0/.zattrs +0 -0
  226. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tczyx.zarr/1/.zarray +0 -0
  227. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tczyx.zarr/1/.zattrs +0 -0
  228. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tczyx.zarr/labels/.zattrs +0 -0
  229. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tczyx.zarr/labels/.zgroup +0 -0
  230. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zattrs +0 -0
  231. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zgroup +0 -0
  232. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/0/.zarray +0 -0
  233. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/0/.zattrs +0 -0
  234. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/1/.zarray +0 -0
  235. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/1/.zattrs +0 -0
  236. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tczyx.zarr/tables/.zattrs +0 -0
  237. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tczyx.zarr/tables/.zgroup +0 -0
  238. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tczyx.zarr/tables/well_ROI_table/.zattrs +0 -0
  239. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tczyx.zarr/tables/well_ROI_table/.zgroup +0 -0
  240. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tczyx.zarr/tables/well_ROI_table/table.csv +0 -0
  241. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tyx.zarr/.zattrs +0 -0
  242. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tyx.zarr/.zgroup +0 -0
  243. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tyx.zarr/0/.zarray +0 -0
  244. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tyx.zarr/0/.zattrs +0 -0
  245. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tyx.zarr/1/.zarray +0 -0
  246. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tyx.zarr/1/.zattrs +0 -0
  247. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tyx.zarr/labels/.zattrs +0 -0
  248. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tyx.zarr/labels/.zgroup +0 -0
  249. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zattrs +0 -0
  250. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zgroup +0 -0
  251. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tyx.zarr/labels/label/0/.zarray +0 -0
  252. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tyx.zarr/labels/label/0/.zattrs +0 -0
  253. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tyx.zarr/labels/label/1/.zarray +0 -0
  254. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tyx.zarr/labels/label/1/.zattrs +0 -0
  255. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tyx.zarr/tables/.zattrs +0 -0
  256. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tyx.zarr/tables/.zgroup +0 -0
  257. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tyx.zarr/tables/well_ROI_table/.zattrs +0 -0
  258. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tyx.zarr/tables/well_ROI_table/.zgroup +0 -0
  259. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tyx.zarr/tables/well_ROI_table/table.csv +0 -0
  260. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tzyx.zarr/.zattrs +0 -0
  261. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tzyx.zarr/.zgroup +0 -0
  262. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tzyx.zarr/0/.zarray +0 -0
  263. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tzyx.zarr/0/.zattrs +0 -0
  264. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tzyx.zarr/1/.zarray +0 -0
  265. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tzyx.zarr/1/.zattrs +0 -0
  266. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tzyx.zarr/labels/.zattrs +0 -0
  267. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tzyx.zarr/labels/.zgroup +0 -0
  268. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zattrs +0 -0
  269. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zgroup +0 -0
  270. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/0/.zarray +0 -0
  271. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/0/.zattrs +0 -0
  272. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/1/.zarray +0 -0
  273. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/1/.zattrs +0 -0
  274. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tzyx.zarr/tables/.zattrs +0 -0
  275. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tzyx.zarr/tables/.zgroup +0 -0
  276. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tzyx.zarr/tables/well_ROI_table/.zattrs +0 -0
  277. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tzyx.zarr/tables/well_ROI_table/.zgroup +0 -0
  278. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_tzyx.zarr/tables/well_ROI_table/table.csv +0 -0
  279. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_yx.zarr/.zattrs +0 -0
  280. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_yx.zarr/.zgroup +0 -0
  281. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_yx.zarr/0/.zarray +0 -0
  282. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_yx.zarr/0/.zattrs +0 -0
  283. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_yx.zarr/1/.zarray +0 -0
  284. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_yx.zarr/1/.zattrs +0 -0
  285. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_yx.zarr/labels/.zattrs +0 -0
  286. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_yx.zarr/labels/.zgroup +0 -0
  287. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_yx.zarr/labels/label/.zattrs +0 -0
  288. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_yx.zarr/labels/label/.zgroup +0 -0
  289. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_yx.zarr/labels/label/0/.zarray +0 -0
  290. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_yx.zarr/labels/label/0/.zattrs +0 -0
  291. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_yx.zarr/labels/label/1/.zarray +0 -0
  292. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_yx.zarr/labels/label/1/.zattrs +0 -0
  293. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_yx.zarr/tables/.zattrs +0 -0
  294. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_yx.zarr/tables/.zgroup +0 -0
  295. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_yx.zarr/tables/well_ROI_table/.zattrs +0 -0
  296. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_yx.zarr/tables/well_ROI_table/.zgroup +0 -0
  297. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_yx.zarr/tables/well_ROI_table/table.csv +0 -0
  298. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_zyx.zarr/.zattrs +0 -0
  299. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_zyx.zarr/.zgroup +0 -0
  300. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_zyx.zarr/0/.zarray +0 -0
  301. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_zyx.zarr/0/.zattrs +0 -0
  302. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_zyx.zarr/1/.zarray +0 -0
  303. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_zyx.zarr/1/.zattrs +0 -0
  304. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_zyx.zarr/labels/.zattrs +0 -0
  305. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_zyx.zarr/labels/.zgroup +0 -0
  306. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zattrs +0 -0
  307. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zgroup +0 -0
  308. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_zyx.zarr/labels/label/0/.zarray +0 -0
  309. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_zyx.zarr/labels/label/0/.zattrs +0 -0
  310. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_zyx.zarr/labels/label/1/.zarray +0 -0
  311. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_zyx.zarr/labels/label/1/.zattrs +0 -0
  312. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_zyx.zarr/tables/.zattrs +0 -0
  313. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_zyx.zarr/tables/.zgroup +0 -0
  314. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_zyx.zarr/tables/well_ROI_table/.zattrs +0 -0
  315. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_zyx.zarr/tables/well_ROI_table/.zgroup +0 -0
  316. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/images/test_image_zyx.zarr/tables/well_ROI_table/table.csv +0 -0
  317. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/meta/base_ome_zarr_image_meta.json +0 -0
  318. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/meta/base_ome_zarr_image_meta_wrong_axis_order.json +0 -0
  319. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/meta/base_ome_zarr_label_meta.json +0 -0
  320. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/meta/base_ome_zarr_well_meta.json +0 -0
  321. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v04/meta/ome_zarr_well_path_normalization_meta.json +0 -0
  322. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_c1yx.zarr/0/zarr.json +0 -0
  323. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_c1yx.zarr/1/zarr.json +0 -0
  324. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_c1yx.zarr/labels/label/0/zarr.json +0 -0
  325. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_c1yx.zarr/labels/label/1/zarr.json +0 -0
  326. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_c1yx.zarr/labels/label/zarr.json +0 -0
  327. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_c1yx.zarr/labels/zarr.json +0 -0
  328. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_c1yx.zarr/tables/well_ROI_table/table.csv +0 -0
  329. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_c1yx.zarr/tables/well_ROI_table/zarr.json +0 -0
  330. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_c1yx.zarr/tables/zarr.json +0 -0
  331. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_c1yx.zarr/zarr.json +0 -0
  332. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_cyx.zarr/0/zarr.json +0 -0
  333. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_cyx.zarr/1/zarr.json +0 -0
  334. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_cyx.zarr/labels/label/0/zarr.json +0 -0
  335. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_cyx.zarr/labels/label/1/zarr.json +0 -0
  336. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_cyx.zarr/labels/label/zarr.json +0 -0
  337. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_cyx.zarr/labels/zarr.json +0 -0
  338. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_cyx.zarr/tables/well_ROI_table/table.csv +0 -0
  339. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_cyx.zarr/tables/well_ROI_table/zarr.json +0 -0
  340. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_cyx.zarr/tables/zarr.json +0 -0
  341. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_cyx.zarr/zarr.json +0 -0
  342. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_czyx.zarr/0/zarr.json +0 -0
  343. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_czyx.zarr/1/zarr.json +0 -0
  344. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_czyx.zarr/labels/label/0/zarr.json +0 -0
  345. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_czyx.zarr/labels/label/1/zarr.json +0 -0
  346. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_czyx.zarr/labels/label/zarr.json +0 -0
  347. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_czyx.zarr/labels/zarr.json +0 -0
  348. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_czyx.zarr/tables/well_ROI_table/table.csv +0 -0
  349. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_czyx.zarr/tables/well_ROI_table/zarr.json +0 -0
  350. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_czyx.zarr/tables/zarr.json +0 -0
  351. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_czyx.zarr/zarr.json +0 -0
  352. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tcyx.zarr/0/zarr.json +0 -0
  353. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tcyx.zarr/1/zarr.json +0 -0
  354. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tcyx.zarr/labels/label/0/zarr.json +0 -0
  355. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tcyx.zarr/labels/label/1/zarr.json +0 -0
  356. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tcyx.zarr/labels/label/zarr.json +0 -0
  357. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tcyx.zarr/labels/zarr.json +0 -0
  358. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tcyx.zarr/tables/well_ROI_table/table.csv +0 -0
  359. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tcyx.zarr/tables/well_ROI_table/zarr.json +0 -0
  360. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tcyx.zarr/tables/zarr.json +0 -0
  361. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tcyx.zarr/zarr.json +0 -0
  362. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tczyx.zarr/0/zarr.json +0 -0
  363. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tczyx.zarr/1/zarr.json +0 -0
  364. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tczyx.zarr/labels/label/0/zarr.json +0 -0
  365. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tczyx.zarr/labels/label/1/zarr.json +0 -0
  366. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tczyx.zarr/labels/label/zarr.json +0 -0
  367. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tczyx.zarr/labels/zarr.json +0 -0
  368. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tczyx.zarr/tables/well_ROI_table/table.csv +0 -0
  369. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tczyx.zarr/tables/well_ROI_table/zarr.json +0 -0
  370. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tczyx.zarr/tables/zarr.json +0 -0
  371. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tczyx.zarr/zarr.json +0 -0
  372. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tyx.zarr/0/zarr.json +0 -0
  373. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tyx.zarr/1/zarr.json +0 -0
  374. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tyx.zarr/labels/label/0/zarr.json +0 -0
  375. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tyx.zarr/labels/label/1/zarr.json +0 -0
  376. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tyx.zarr/labels/label/zarr.json +0 -0
  377. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tyx.zarr/labels/zarr.json +0 -0
  378. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tyx.zarr/tables/well_ROI_table/table.csv +0 -0
  379. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tyx.zarr/tables/well_ROI_table/zarr.json +0 -0
  380. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tyx.zarr/tables/zarr.json +0 -0
  381. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tyx.zarr/zarr.json +0 -0
  382. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tzyx.zarr/0/zarr.json +0 -0
  383. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tzyx.zarr/1/zarr.json +0 -0
  384. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tzyx.zarr/labels/label/0/zarr.json +0 -0
  385. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tzyx.zarr/labels/label/1/zarr.json +0 -0
  386. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tzyx.zarr/labels/label/zarr.json +0 -0
  387. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tzyx.zarr/labels/zarr.json +0 -0
  388. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tzyx.zarr/tables/well_ROI_table/table.csv +0 -0
  389. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tzyx.zarr/tables/well_ROI_table/zarr.json +0 -0
  390. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tzyx.zarr/tables/zarr.json +0 -0
  391. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_tzyx.zarr/zarr.json +0 -0
  392. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_yx.zarr/0/zarr.json +0 -0
  393. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_yx.zarr/1/zarr.json +0 -0
  394. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_yx.zarr/labels/label/0/zarr.json +0 -0
  395. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_yx.zarr/labels/label/1/zarr.json +0 -0
  396. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_yx.zarr/labels/label/zarr.json +0 -0
  397. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_yx.zarr/labels/zarr.json +0 -0
  398. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_yx.zarr/tables/well_ROI_table/table.csv +0 -0
  399. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_yx.zarr/tables/well_ROI_table/zarr.json +0 -0
  400. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_yx.zarr/tables/zarr.json +0 -0
  401. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_yx.zarr/zarr.json +0 -0
  402. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_zyx.zarr/0/zarr.json +0 -0
  403. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_zyx.zarr/1/zarr.json +0 -0
  404. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_zyx.zarr/labels/label/0/zarr.json +0 -0
  405. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_zyx.zarr/labels/label/1/zarr.json +0 -0
  406. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_zyx.zarr/labels/label/zarr.json +0 -0
  407. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_zyx.zarr/labels/zarr.json +0 -0
  408. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_zyx.zarr/tables/well_ROI_table/table.csv +0 -0
  409. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_zyx.zarr/tables/well_ROI_table/zarr.json +0 -0
  410. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_zyx.zarr/tables/zarr.json +0 -0
  411. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/data/v05/images/test_image_zyx.zarr/zarr.json +0 -0
  412. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/stores/conftest.py +0 -0
  413. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/stores/test_http_store.py +0 -0
  414. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/stores/test_local_store.py +0 -0
  415. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/stores/test_memory_store.py +0 -0
  416. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/stores/test_s3_store.py +0 -0
  417. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/stores/utils.py +0 -0
  418. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/common/test_dimensions.py +0 -0
  419. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/common/test_pyramid.py +0 -0
  420. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/common/test_roi.py +0 -0
  421. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/common/test_transforms.py +0 -0
  422. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/hcs/test_well.py +0 -0
  423. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/images/test_images.py +0 -0
  424. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/images/test_masked_images.py +0 -0
  425. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/images/test_table_ops.py +0 -0
  426. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/io_pipes/test_axes_ops.py +0 -0
  427. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/io_pipes/test_slicing_ops.py +0 -0
  428. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/iterators/test_iterators.py +0 -0
  429. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/ome_zarr_meta/test_image_handler.py +0 -0
  430. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/ome_zarr_meta/test_unit_ngio_specs.py +0 -0
  431. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/ome_zarr_meta/test_unit_v04_utils.py +0 -0
  432. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/tables/test_backends.py +0 -0
  433. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/tables/test_backends_utils.py +0 -0
  434. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/tables/test_feature_table.py +0 -0
  435. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/tables/test_generic_table.py +0 -0
  436. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/tables/test_masking_roi_table_v1.py +0 -0
  437. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/tables/test_roi_table_v1.py +0 -0
  438. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/tables/test_table_group.py +0 -0
  439. {ngio-0.5.0a3 → ngio-0.5.0b2}/tests/unit/utils/test_download_datasets.py +0 -0
@@ -5,6 +5,7 @@
5
5
  ### Features
6
6
  - Add support for OME-NGFF v0.5
7
7
  - Move to zarr-python v3
8
+ - API to delete labels and tables from OME-Zarr containers and HCS plates.
8
9
 
9
10
  ### API Breaking Changes
10
11
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ngio
3
- Version: 0.5.0a3
3
+ Version: 0.5.0b2
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
@@ -37,6 +37,7 @@ from ngio.ome_zarr_meta.ngio_specs import (
37
37
  NgffVersions,
38
38
  PixelSize,
39
39
  )
40
+ from ngio.utils import NgioSupportedStore, StoreOrGroup
40
41
 
41
42
  __all__ = [
42
43
  "AxesSetup",
@@ -47,12 +48,14 @@ __all__ = [
47
48
  "ImageInWellPath",
48
49
  "Label",
49
50
  "NgffVersions",
51
+ "NgioSupportedStore",
50
52
  "OmeZarrContainer",
51
53
  "OmeZarrPlate",
52
54
  "OmeZarrWell",
53
55
  "PixelSize",
54
56
  "Roi",
55
57
  "RoiSlice",
58
+ "StoreOrGroup",
56
59
  "create_empty_ome_zarr",
57
60
  "create_empty_plate",
58
61
  "create_empty_well",
@@ -15,6 +15,7 @@ from ngio.images import (
15
15
  list_image_tables_async,
16
16
  )
17
17
  from ngio.ome_zarr_meta import (
18
+ DefaultNgffVersion,
18
19
  ImageInWellPath,
19
20
  NgffVersions,
20
21
  NgioPlateMeta,
@@ -778,7 +779,8 @@ class OmeZarrPlate:
778
779
  self,
779
780
  store: StoreOrGroup,
780
781
  plate_name: str | None = None,
781
- version: NgffVersions = "0.4",
782
+ version: NgffVersions | None = None,
783
+ ngff_version: NgffVersions = DefaultNgffVersion,
782
784
  keep_acquisitions: bool = False,
783
785
  cache: bool = False,
784
786
  overwrite: bool = False,
@@ -788,7 +790,8 @@ class OmeZarrPlate:
788
790
  Args:
789
791
  store (StoreOrGroup): The Zarr store or group that stores the plate.
790
792
  plate_name (str | None): The name of the new plate.
791
- version (NgffVersion): The version of the new plate.
793
+ version (NgffVersion | None): Deprecated. Please use 'ngff_version' instead.
794
+ ngff_version (NgffVersion): The NGFF version to use for the new plate.
792
795
  keep_acquisitions (bool): Whether to keep the acquisitions in the new plate.
793
796
  cache (bool): Whether to use a cache for the zarr group metadata.
794
797
  overwrite (bool): Whether to overwrite the existing plate.
@@ -797,6 +800,7 @@ class OmeZarrPlate:
797
800
  ome_zarr_plate=self,
798
801
  store=store,
799
802
  plate_name=plate_name,
803
+ ngff_version=ngff_version,
800
804
  version=version,
801
805
  keep_acquisitions=keep_acquisitions,
802
806
  cache=cache,
@@ -955,6 +959,25 @@ class OmeZarrPlate:
955
959
  name=name, table=table, backend=backend, overwrite=overwrite
956
960
  )
957
961
 
962
+ def delete_table(self, name: str, missing_ok: bool = False) -> None:
963
+ """Delete a table from the group.
964
+
965
+ Args:
966
+ name (str): The name of the table to delete.
967
+ missing_ok (bool): If True, do not raise an error if the table does not
968
+ exist.
969
+
970
+ """
971
+ table_container = self._get_tables_container(create_mode=False)
972
+ if table_container is None and missing_ok:
973
+ return
974
+ if table_container is None:
975
+ raise NgioValueError(
976
+ f"No tables found in the image, cannot delete {name}. "
977
+ "Set missing_ok=True to ignore this error."
978
+ )
979
+ table_container.delete(name=name, missing_ok=missing_ok)
980
+
958
981
  def list_image_tables(
959
982
  self,
960
983
  acquisition: int | None = None,
@@ -1157,7 +1180,6 @@ def open_ome_zarr_plate(
1157
1180
  def _create_empty_plate_from_meta(
1158
1181
  store: StoreOrGroup,
1159
1182
  meta: NgioPlateMeta,
1160
- version: NgffVersions = "0.4",
1161
1183
  overwrite: bool = False,
1162
1184
  ) -> ZarrGroupHandler:
1163
1185
  """Create an empty OME-Zarr plate from metadata."""
@@ -1171,7 +1193,8 @@ def create_empty_plate(
1171
1193
  store: StoreOrGroup,
1172
1194
  name: str,
1173
1195
  images: list[ImageInWellPath] | None = None,
1174
- version: NgffVersions = "0.4",
1196
+ version: NgffVersions | None = None,
1197
+ ngff_version: NgffVersions = DefaultNgffVersion,
1175
1198
  cache: bool = False,
1176
1199
  overwrite: bool = False,
1177
1200
  ) -> OmeZarrPlate:
@@ -1182,18 +1205,26 @@ def create_empty_plate(
1182
1205
  name (str): The name of the plate.
1183
1206
  images (list[ImageInWellPath] | None): A list of images to add to the plate.
1184
1207
  If None, no images are added. Defaults to None.
1185
- version (NgffVersion): The version of the new plate.
1208
+ version (NgffVersion | None): Deprecated. Please use 'ngff_version' instead.
1209
+ ngff_version (NgffVersion): The NGFF version to use for the new plate.
1186
1210
  cache (bool): Whether to use a cache for the zarr group metadata.
1187
1211
  overwrite (bool): Whether to overwrite the existing plate.
1188
1212
  """
1213
+ if version is not None:
1214
+ warnings.warn(
1215
+ "The 'version' argument is deprecated, and will be removed in ngio=0.3. "
1216
+ "Please use 'ngff_version' instead.",
1217
+ DeprecationWarning,
1218
+ stacklevel=2,
1219
+ )
1220
+ ngff_version = version
1189
1221
  plate_meta = NgioPlateMeta.default_init(
1190
1222
  name=name,
1191
- version=version,
1223
+ ngff_version=ngff_version,
1192
1224
  )
1193
1225
  group_handler = _create_empty_plate_from_meta(
1194
1226
  store=store,
1195
1227
  meta=plate_meta,
1196
- version=version,
1197
1228
  overwrite=overwrite,
1198
1229
  )
1199
1230
 
@@ -1218,7 +1249,8 @@ def derive_ome_zarr_plate(
1218
1249
  ome_zarr_plate: OmeZarrPlate,
1219
1250
  store: StoreOrGroup,
1220
1251
  plate_name: str | None = None,
1221
- version: NgffVersions = "0.4",
1252
+ version: NgffVersions | None = None,
1253
+ ngff_version: NgffVersions = DefaultNgffVersion,
1222
1254
  keep_acquisitions: bool = False,
1223
1255
  cache: bool = False,
1224
1256
  overwrite: bool = False,
@@ -1229,24 +1261,33 @@ def derive_ome_zarr_plate(
1229
1261
  ome_zarr_plate (OmeZarrPlate): The existing OME-Zarr plate.
1230
1262
  store (StoreOrGroup): The Zarr store or group that stores the plate.
1231
1263
  plate_name (str | None): The name of the new plate.
1232
- version (NgffVersion): The version of the new plate.
1264
+ version (NgffVersion | None): Deprecated. Please use 'ngff_version' instead.
1265
+ ngff_version (NgffVersion): The NGFF version to use for the new plate.
1233
1266
  keep_acquisitions (bool): Whether to keep the acquisitions in the new plate.
1234
1267
  cache (bool): Whether to use a cache for the zarr group metadata.
1235
1268
  overwrite (bool): Whether to overwrite the existing plate.
1236
1269
  """
1270
+ if version is not None:
1271
+ warnings.warn(
1272
+ "The 'version' argument is deprecated, and will be removed in ngio=0.3. "
1273
+ "Please use 'ngff_version' instead.",
1274
+ DeprecationWarning,
1275
+ stacklevel=2,
1276
+ )
1277
+ ngff_version = version
1278
+
1237
1279
  if plate_name is None:
1238
1280
  plate_name = ome_zarr_plate.meta.plate.name
1239
1281
 
1240
1282
  new_meta = ome_zarr_plate.meta.derive(
1241
1283
  name=plate_name,
1242
- version=version,
1284
+ ngff_version=ngff_version,
1243
1285
  keep_acquisitions=keep_acquisitions,
1244
1286
  )
1245
1287
  _ = _create_empty_plate_from_meta(
1246
1288
  store=store,
1247
1289
  meta=new_meta,
1248
1290
  overwrite=overwrite,
1249
- version=version,
1250
1291
  )
1251
1292
  return open_ome_zarr_plate(
1252
1293
  store=store,
@@ -1277,7 +1318,8 @@ def open_ome_zarr_well(
1277
1318
 
1278
1319
  def create_empty_well(
1279
1320
  store: StoreOrGroup,
1280
- version: NgffVersions = "0.4",
1321
+ version: NgffVersions | None = None,
1322
+ ngff_version: NgffVersions = DefaultNgffVersion,
1281
1323
  cache: bool = False,
1282
1324
  overwrite: bool = False,
1283
1325
  ) -> OmeZarrWell:
@@ -1285,14 +1327,25 @@ def create_empty_well(
1285
1327
 
1286
1328
  Args:
1287
1329
  store (StoreOrGroup): The Zarr store or group that stores the well.
1288
- version (NgffVersion): The version of the new well.
1330
+ version (NgffVersion | None): Deprecated. Please use 'ngff_version' instead.
1331
+ ngff_version (NgffVersion): The version of the new well.
1289
1332
  cache (bool): Whether to use a cache for the zarr group metadata.
1290
1333
  overwrite (bool): Whether to overwrite the existing well.
1291
1334
  """
1335
+ if version is not None:
1336
+ warnings.warn(
1337
+ "The 'version' argument is deprecated, and will be removed in ngio=0.3. "
1338
+ "Please use 'ngff_version' instead.",
1339
+ DeprecationWarning,
1340
+ stacklevel=2,
1341
+ )
1342
+ ngff_version = version
1292
1343
  group_handler = ZarrGroupHandler(
1293
1344
  store=store, cache=True, mode="w" if overwrite else "w-"
1294
1345
  )
1295
- update_ngio_well_meta(group_handler, NgioWellMeta.default_init())
1346
+ update_ngio_well_meta(
1347
+ group_handler, NgioWellMeta.default_init(ngff_version=ngff_version)
1348
+ )
1296
1349
 
1297
1350
  return open_ome_zarr_well(
1298
1351
  store=store,
@@ -681,7 +681,7 @@ def _check_chunks_and_shards_compatibility(
681
681
 
682
682
  def _apply_channel_policy(
683
683
  ref_image: AbstractImage,
684
- channels_policy: Literal["squeeze", "same"] | int,
684
+ channels_policy: Literal["squeeze", "same", "singleton"] | int,
685
685
  shapes: list[tuple[int, ...]],
686
686
  axes: tuple[str, ...],
687
687
  chunks: ChunksLike,
@@ -703,6 +703,10 @@ def _apply_channel_policy(
703
703
  if channels_policy == "same":
704
704
  return shapes, axes, chunks, shards
705
705
 
706
+ if channels_policy == "singleton":
707
+ # Treat 'singleton' as setting channel size to 1
708
+ channels_policy = 1
709
+
706
710
  channel_index = ref_image.axes_handler.get_index("c")
707
711
  if channel_index is None:
708
712
  if channels_policy == "squeeze":
@@ -729,11 +733,6 @@ def _apply_channel_policy(
729
733
  elif isinstance(channels_policy, int):
730
734
  new_shapes = []
731
735
  for shape in shapes:
732
- if shape[channel_index] != channels_policy:
733
- raise NgioValueError(
734
- f"Cannot apply channel policy {channels_policy=} to an image "
735
- f"with {shape[channel_index]} channels."
736
- )
737
736
  new_shape = (
738
737
  *shape[:channel_index],
739
738
  channels_policy,
@@ -797,7 +796,7 @@ def abstract_derive(
797
796
  z_spacing: float | None = None,
798
797
  time_spacing: float | None = None,
799
798
  name: str | None = None,
800
- channels_policy: Literal["squeeze", "same"] | int = "same",
799
+ channels_policy: Literal["squeeze", "same", "singleton"] | int = "same",
801
800
  channels_meta: Sequence[str | Channel] | None = None,
802
801
  ngff_version: NgffVersions | None = None,
803
802
  # Zarr Array parameters
@@ -826,9 +825,11 @@ def abstract_derive(
826
825
  time_spacing (float | None): The time spacing of the new image.
827
826
  axes_names (Sequence[str] | None): The axes names of the new image.
828
827
  name (str | None): The name of the new image.
829
- channels_policy (Literal["squeeze", "same"] | int): Possible policies:
828
+ channels_policy (Literal["squeeze", "same", "singleton"] | int):
829
+ Possible policies:
830
830
  - If "squeeze", the channels axis will be removed (no matter its size).
831
831
  - If "same", the channels axis will be kept as is (if it exists).
832
+ - If "singleton", the channels axis will be set to size 1.
832
833
  - If an integer is provided, the channels axis will be changed to have that
833
834
  size.
834
835
  channels_meta (Sequence[str | Channel] | None): The channels metadata
@@ -765,6 +765,7 @@ def derive_image_container(
765
765
  z_spacing: float | None = None,
766
766
  time_spacing: float | None = None,
767
767
  name: str | None = None,
768
+ channels_policy: Literal["same", "squeeze", "singleton"] | int = "same",
768
769
  channels_meta: Sequence[str | Channel] | None = None,
769
770
  ngff_version: NgffVersions | None = None,
770
771
  # Zarr Array parameters
@@ -793,6 +794,13 @@ def derive_image_container(
793
794
  z_spacing (float | None): The z spacing of the new image.
794
795
  time_spacing (float | None): The time spacing of the new image.
795
796
  name (str | None): The name of the new image.
797
+ channels_policy (Literal["squeeze", "same", "singleton"] | int): Possible
798
+ policies:
799
+ - If "squeeze", the channels axis will be removed (no matter its size).
800
+ - If "same", the channels axis will be kept as is (if it exists).
801
+ - If "singleton", the channels axis will be set to size 1.
802
+ - If an integer is provided, the channels axis will be changed to have
803
+ that size.
796
804
  channels_meta (Sequence[str | Channel] | None): The channels metadata
797
805
  of the new image.
798
806
  ngff_version (NgffVersions | None): The NGFF version to use.
@@ -826,7 +834,7 @@ def derive_image_container(
826
834
  time_spacing=time_spacing,
827
835
  name=name,
828
836
  channels_meta=channels_meta,
829
- channels_policy="same",
837
+ channels_policy=channels_policy,
830
838
  ngff_version=ngff_version,
831
839
  chunks=chunks,
832
840
  shards=shards,
@@ -11,8 +11,11 @@ from ngio.images._abstract_image import AbstractImage, abstract_derive
11
11
  from ngio.images._image import Image
12
12
  from ngio.ome_zarr_meta import (
13
13
  LabelMetaHandler,
14
+ LabelsGroupMetaHandler,
14
15
  NgioLabelMeta,
16
+ NgioLabelsGroupMeta,
15
17
  PixelSize,
18
+ update_ngio_labels_group_meta,
16
19
  )
17
20
  from ngio.ome_zarr_meta.ngio_specs import (
18
21
  DefaultSpaceUnit,
@@ -112,29 +115,39 @@ class Label(AbstractImage):
112
115
  class LabelsContainer:
113
116
  """A class to handle the /labels group in an OME-NGFF file."""
114
117
 
115
- def __init__(self, group_handler: ZarrGroupHandler) -> None:
118
+ def __init__(
119
+ self,
120
+ group_handler: ZarrGroupHandler,
121
+ ngff_version: NgffVersions | None = None,
122
+ ) -> None:
116
123
  """Initialize the LabelGroupHandler."""
117
124
  self._group_handler = group_handler
118
- # Validate the group
119
- # Either contains a labels attribute or is empty
120
- attrs = self._group_handler.load_attrs()
121
- if len(attrs) == 0:
122
- # It's an empty group
123
- pass
124
- elif "labels" in attrs and isinstance(attrs["labels"], list):
125
- # It's a valid group
126
- pass
127
- else:
128
- raise NgioValidationError(
129
- f"Invalid /labels group. "
130
- f"Expected a single labels attribute with a list of label names. "
131
- f"Found: {attrs}"
125
+ # If the group is empty, initialize the metadata
126
+ try:
127
+ self._meta_handler = LabelsGroupMetaHandler(group_handler)
128
+ except NgioValidationError:
129
+ if ngff_version is None:
130
+ raise NgioValueError(
131
+ "The /labels group is missing metadata. "
132
+ "Please provide the ngff_version to initialize it."
133
+ ) from None
134
+ meta = NgioLabelsGroupMeta(labels=[], version=ngff_version)
135
+ update_ngio_labels_group_meta(
136
+ group_handler=group_handler,
137
+ ngio_meta=meta,
132
138
  )
139
+ self._group_handler = self._group_handler.reopen_handler()
140
+ self._meta_handler = LabelsGroupMetaHandler(group_handler)
141
+
142
+ @property
143
+ def meta(self) -> NgioLabelsGroupMeta:
144
+ """Return the metadata."""
145
+ meta = self._meta_handler.get_meta()
146
+ return meta
133
147
 
134
148
  def list(self) -> list[str]:
135
149
  """Create the /labels group if it doesn't exist."""
136
- attrs = self._group_handler.load_attrs()
137
- return attrs.get("labels", [])
150
+ return self.meta.labels
138
151
 
139
152
  def get(
140
153
  self,
@@ -169,6 +182,31 @@ class LabelsContainer:
169
182
  )
170
183
  return Label(group_handler, path, label_meta_handler)
171
184
 
185
+ def delete(self, name: str, missing_ok: bool = False) -> None:
186
+ """Delete a label from the group.
187
+
188
+ Args:
189
+ name (str): The name of the label to delete.
190
+ missing_ok (bool): If True, do not raise an error if the label does not
191
+ exist.
192
+
193
+ """
194
+ existing_labels = self.list()
195
+ if name not in existing_labels:
196
+ if missing_ok:
197
+ return
198
+ raise NgioValueError(
199
+ f"Label '{name}' not found in the Labels group. "
200
+ f"Available labels: {existing_labels}"
201
+ )
202
+
203
+ self._group_handler.delete_group(name)
204
+ existing_labels.remove(name)
205
+ update_meta = NgioLabelsGroupMeta(
206
+ labels=existing_labels, version=self.meta.version
207
+ )
208
+ self._meta_handler.update_meta(update_meta)
209
+
172
210
  def derive(
173
211
  self,
174
212
  name: str,
@@ -178,7 +216,7 @@ class LabelsContainer:
178
216
  pixelsize: float | tuple[float, float] | None = None,
179
217
  z_spacing: float | None = None,
180
218
  time_spacing: float | None = None,
181
- channels_policy: Literal["same", "squeeze"] | int = "squeeze",
219
+ channels_policy: Literal["same", "squeeze", "singleton"] | int = "squeeze",
182
220
  ngff_version: NgffVersions | None = None,
183
221
  # Zarr Array parameters
184
222
  chunks: ChunksLike = "auto",
@@ -210,9 +248,11 @@ class LabelsContainer:
210
248
  name (str | None): The name of the new image.
211
249
  channels_meta (Sequence[str | Channel] | None): The channels metadata
212
250
  of the new image.
213
- channels_policy (Literal["squeeze", "same"] | int): Possible policies:
251
+ channels_policy (Literal["squeeze", "same", "singleton"] | int):
252
+ Possible policies:
214
253
  - If "squeeze", the channels axis will be removed (no matter its size).
215
254
  - If "same", the channels axis will be kept as is (if it exists).
255
+ - If "singleton", the channels axis will be set to size 1.
216
256
  - If an integer is provided, the channels axis will be changed to have
217
257
  that size.
218
258
  ngff_version (NgffVersions | None): The NGFF version to use.
@@ -267,8 +307,11 @@ class LabelsContainer:
267
307
 
268
308
  if name not in existing_labels:
269
309
  existing_labels.append(name)
270
- self._group_handler.write_attrs({"labels": existing_labels})
271
310
 
311
+ update_meta = NgioLabelsGroupMeta(
312
+ labels=existing_labels, version=self.meta.version
313
+ )
314
+ self._meta_handler.update_meta(update_meta)
272
315
  return self.get(name)
273
316
 
274
317
 
@@ -282,7 +325,7 @@ def derive_label(
282
325
  z_spacing: float | None = None,
283
326
  time_spacing: float | None = None,
284
327
  name: str | None = None,
285
- channels_policy: Literal["same", "squeeze"] | int = "squeeze",
328
+ channels_policy: Literal["same", "squeeze", "singleton"] | int = "squeeze",
286
329
  ngff_version: NgffVersions | None = None,
287
330
  # Zarr Array parameters
288
331
  chunks: ChunksLike = "auto",
@@ -308,9 +351,11 @@ def derive_label(
308
351
  z_spacing (float | None): The z spacing of the new label.
309
352
  time_spacing (float | None): The time spacing of the new label.
310
353
  name (str | None): The name of the new label.
311
- channels_policy (Literal["squeeze", "same"] | int): Possible policies:
354
+ channels_policy (Literal["squeeze", "same", "singleton"] | int): Possible
355
+ policies:
312
356
  - If "squeeze", the channels axis will be removed (no matter its size).
313
357
  - If "same", the channels axis will be kept as is (if it exists).
358
+ - If "singleton", the channels axis will be set to size 1.
314
359
  - If an integer is provided, the channels axis will be changed to have that
315
360
  size.
316
361
  ngff_version (NgffVersions | None): The NGFF version to use.
@@ -61,13 +61,13 @@ def _try_get_table_container(
61
61
 
62
62
 
63
63
  def _try_get_label_container(
64
- handler: ZarrGroupHandler, create_mode: bool = True
64
+ handler: ZarrGroupHandler, ngff_version: NgffVersions, create_mode: bool = True
65
65
  ) -> LabelsContainer | None:
66
66
  """Return a default label container."""
67
67
  try:
68
68
  label_handler = handler.get_handler("labels", create_mode=create_mode)
69
- return LabelsContainer(label_handler)
70
- except NgioError:
69
+ return LabelsContainer(label_handler, ngff_version=ngff_version)
70
+ except FileNotFoundError:
71
71
  return None
72
72
 
73
73
 
@@ -149,7 +149,9 @@ class OmeZarrContainer:
149
149
  return self._labels_container
150
150
 
151
151
  _labels_container = _try_get_label_container(
152
- self._group_handler, create_mode=create_mode
152
+ self._group_handler,
153
+ create_mode=create_mode,
154
+ ngff_version=self.image_meta.version,
153
155
  )
154
156
  self._labels_container = _labels_container
155
157
  return self._labels_container
@@ -428,6 +430,7 @@ class OmeZarrContainer:
428
430
  z_spacing: float | None = None,
429
431
  time_spacing: float | None = None,
430
432
  name: str | None = None,
433
+ channels_policy: Literal["squeeze", "same", "singleton"] | int = "same",
431
434
  channels_meta: Sequence[str | Channel] | None = None,
432
435
  ngff_version: NgffVersions | None = None,
433
436
  # Zarr Array parameters
@@ -459,6 +462,12 @@ class OmeZarrContainer:
459
462
  z_spacing (float | None): The z spacing of the new image.
460
463
  time_spacing (float | None): The time spacing of the new image.
461
464
  name (str | None): The name of the new image.
465
+ channels_policy (Literal["squeeze", "same"] | int): Possible policies:
466
+ - If "squeeze", the channels axis will be removed (no matter its size).
467
+ - If "same", the channels axis will be kept as is (if it exists).
468
+ - If "singleton", the channels axis will be set to size 1.
469
+ - If an integer is provided, the channels axis will be changed to have
470
+ that size.
462
471
  channels_meta (Sequence[str | Channel] | None): The channels metadata
463
472
  of the new image.
464
473
  ngff_version (NgffVersions | None): The NGFF version to use.
@@ -665,6 +674,25 @@ class OmeZarrContainer:
665
674
  name=name, table=table, backend=backend, overwrite=overwrite
666
675
  )
667
676
 
677
+ def delete_table(self, name: str, missing_ok: bool = False) -> None:
678
+ """Delete a table from the group.
679
+
680
+ Args:
681
+ name (str): The name of the table to delete.
682
+ missing_ok (bool): If True, do not raise an error if the table does not
683
+ exist.
684
+
685
+ """
686
+ table_container = self._get_tables_container(create_mode=False)
687
+ if table_container is None and missing_ok:
688
+ return
689
+ if table_container is None:
690
+ raise NgioValueError(
691
+ f"No tables found in the image, cannot delete {name}. "
692
+ "Set missing_ok=True to ignore this error."
693
+ )
694
+ table_container.delete(name=name, missing_ok=missing_ok)
695
+
668
696
  def list_labels(self) -> list[str]:
669
697
  """List all labels in the image."""
670
698
  label_container = self._get_labels_container(create_mode=False)
@@ -730,6 +758,25 @@ class OmeZarrContainer:
730
758
  masking_roi_table=masking_table,
731
759
  )
732
760
 
761
+ def delete_label(self, name: str, missing_ok: bool = False) -> None:
762
+ """Delete a label from the group.
763
+
764
+ Args:
765
+ name (str): The name of the label to delete.
766
+ missing_ok (bool): If True, do not raise an error if the label does not
767
+ exist.
768
+
769
+ """
770
+ label_container = self._get_labels_container(create_mode=False)
771
+ if label_container is None and missing_ok:
772
+ return
773
+ if label_container is None:
774
+ raise NgioValueError(
775
+ f"No labels found in the image, cannot delete {name}. "
776
+ "Set missing_ok=True to ignore this error."
777
+ )
778
+ label_container.delete(name=name, missing_ok=missing_ok)
779
+
733
780
  def derive_label(
734
781
  self,
735
782
  name: str,
@@ -739,7 +786,7 @@ class OmeZarrContainer:
739
786
  pixelsize: float | tuple[float, float] | None = None,
740
787
  z_spacing: float | None = None,
741
788
  time_spacing: float | None = None,
742
- channels_policy: Literal["same", "squeeze"] | int = "squeeze",
789
+ channels_policy: Literal["same", "squeeze", "singleton"] | int = "squeeze",
743
790
  ngff_version: NgffVersions | None = None,
744
791
  # Zarr Array parameters
745
792
  chunks: ChunksLike = "auto",
@@ -769,6 +816,7 @@ class OmeZarrContainer:
769
816
  channels_policy (Literal["same", "squeeze"] | int): Possible policies:
770
817
  - If "squeeze", the channels axis will be removed (no matter its size).
771
818
  - If "same", the channels axis will be kept as is (if it exists).
819
+ - If "singleton", the channels axis will be set to size 1.
772
820
  - If an integer is provided, the channels axis will be changed to have
773
821
  that size.
774
822
  Defaults to "squeeze".
@@ -3,10 +3,12 @@
3
3
  from ngio.ome_zarr_meta._meta_handlers import (
4
4
  ImageMetaHandler,
5
5
  LabelMetaHandler,
6
+ LabelsGroupMetaHandler,
6
7
  PlateMetaHandler,
7
8
  WellMetaHandler,
8
9
  update_ngio_image_meta,
9
10
  update_ngio_label_meta,
11
+ update_ngio_labels_group_meta,
10
12
  update_ngio_meta,
11
13
  update_ngio_plate_meta,
12
14
  update_ngio_well_meta,
@@ -14,10 +16,12 @@ from ngio.ome_zarr_meta._meta_handlers import (
14
16
  from ngio.ome_zarr_meta.ngio_specs import (
15
17
  AxesHandler,
16
18
  Dataset,
19
+ DefaultNgffVersion,
17
20
  ImageInWellPath,
18
21
  NgffVersions,
19
22
  NgioImageMeta,
20
23
  NgioLabelMeta,
24
+ NgioLabelsGroupMeta,
21
25
  NgioPlateMeta,
22
26
  NgioWellMeta,
23
27
  PixelSize,
@@ -28,13 +32,16 @@ from ngio.ome_zarr_meta.ngio_specs import (
28
32
  __all__ = [
29
33
  "AxesHandler",
30
34
  "Dataset",
35
+ "DefaultNgffVersion",
31
36
  "ImageInWellPath",
32
37
  "ImageMetaHandler",
33
38
  "LabelMetaHandler",
39
+ "LabelsGroupMetaHandler",
34
40
  "NgffVersions",
35
41
  "NgffVersions",
36
42
  "NgioImageMeta",
37
43
  "NgioLabelMeta",
44
+ "NgioLabelsGroupMeta",
38
45
  "NgioPlateMeta",
39
46
  "NgioWellMeta",
40
47
  "PixelSize",
@@ -45,6 +52,7 @@ __all__ = [
45
52
  "path_in_well_validation",
46
53
  "update_ngio_image_meta",
47
54
  "update_ngio_label_meta",
55
+ "update_ngio_labels_group_meta",
48
56
  "update_ngio_meta",
49
57
  "update_ngio_plate_meta",
50
58
  "update_ngio_well_meta",