ngio 0.4.0a2__tar.gz → 0.4.0a3__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 (242) hide show
  1. {ngio-0.4.0a2 → ngio-0.4.0a3}/PKG-INFO +1 -1
  2. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/common/_roi.py +47 -7
  3. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/experimental/iterators/_feature.py +1 -1
  4. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/experimental/iterators/_image_processing.py +1 -1
  5. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/experimental/iterators/_rois_utils.py +2 -2
  6. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/experimental/iterators/_segmentation.py +1 -1
  7. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/images/_abstract_image.py +2 -2
  8. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/images/_ome_zarr_container.py +1 -1
  9. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/tables/v1/_roi_table.py +11 -3
  10. {ngio-0.4.0a2 → ngio-0.4.0a3}/.copier-answers.yml +0 -0
  11. {ngio-0.4.0a2 → ngio-0.4.0a3}/.gitattributes +0 -0
  12. {ngio-0.4.0a2 → ngio-0.4.0a3}/.github/ISSUE_TEMPLATE.md +0 -0
  13. {ngio-0.4.0a2 → ngio-0.4.0a3}/.github/TEST_FAIL_TEMPLATE.md +0 -0
  14. {ngio-0.4.0a2 → ngio-0.4.0a3}/.github/dependabot.yml +0 -0
  15. {ngio-0.4.0a2 → ngio-0.4.0a3}/.github/pull_request_template.md +0 -0
  16. {ngio-0.4.0a2 → ngio-0.4.0a3}/.github/workflows/build_docs.yml +0 -0
  17. {ngio-0.4.0a2 → ngio-0.4.0a3}/.github/workflows/ci.yml +0 -0
  18. {ngio-0.4.0a2 → ngio-0.4.0a3}/.gitignore +0 -0
  19. {ngio-0.4.0a2 → ngio-0.4.0a3}/.pre-commit-config.yaml +0 -0
  20. {ngio-0.4.0a2 → ngio-0.4.0a3}/CHANGELOG.md +0 -0
  21. {ngio-0.4.0a2 → ngio-0.4.0a3}/LICENSE +0 -0
  22. {ngio-0.4.0a2 → ngio-0.4.0a3}/README.md +0 -0
  23. {ngio-0.4.0a2 → ngio-0.4.0a3}/_typos.toml +0 -0
  24. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/api/hcs.md +0 -0
  25. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/api/images.md +0 -0
  26. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/api/ngio/common.md +0 -0
  27. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/api/ngio/hcs.md +0 -0
  28. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/api/ngio/images.md +0 -0
  29. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/api/ngio/ngio.md +0 -0
  30. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/api/ngio/tables.md +0 -0
  31. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/api/ngio/utils.md +0 -0
  32. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/api/ome_zarr_container.md +0 -0
  33. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/api/tables.md +0 -0
  34. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/changelog.md +0 -0
  35. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/code_of_conduct.md +0 -0
  36. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/contributing.md +0 -0
  37. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/getting_started/0_quickstart.md +0 -0
  38. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/getting_started/1_ome_zarr_containers.md +0 -0
  39. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/getting_started/2_images.md +0 -0
  40. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/getting_started/3_tables.md +0 -0
  41. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/getting_started/4_masked_images.md +0 -0
  42. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/getting_started/5_hcs.md +0 -0
  43. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/index.md +0 -0
  44. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/table_specs/backend.md +0 -0
  45. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/table_specs/overview.md +0 -0
  46. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/table_specs/table_types/condition_table.md +0 -0
  47. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/table_specs/table_types/custom_table.md +0 -0
  48. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/table_specs/table_types/feature_table.md +0 -0
  49. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/table_specs/table_types/generic_table.md +0 -0
  50. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/table_specs/table_types/masking_roi_table.md +0 -0
  51. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/table_specs/table_types/roi_table.md +0 -0
  52. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/tutorials/create_ome_zarr.ipynb +0 -0
  53. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/tutorials/feature_extraction.ipynb +0 -0
  54. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/tutorials/hcs_exploration.ipynb +0 -0
  55. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/tutorials/image_processing.ipynb +0 -0
  56. {ngio-0.4.0a2 → ngio-0.4.0a3}/docs/tutorials/image_segmentation.ipynb +0 -0
  57. {ngio-0.4.0a2 → ngio-0.4.0a3}/mkdocs.yml +0 -0
  58. {ngio-0.4.0a2 → ngio-0.4.0a3}/pyproject.toml +0 -0
  59. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/__init__.py +0 -0
  60. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/common/__init__.py +0 -0
  61. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/common/_array_io_pipes.py +0 -0
  62. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/common/_array_io_utils.py +0 -0
  63. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/common/_dimensions.py +0 -0
  64. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/common/_masking_roi.py +0 -0
  65. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/common/_pyramid.py +0 -0
  66. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/common/_synt_images_utils.py +0 -0
  67. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/common/_zoom.py +0 -0
  68. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/common/transforms/__init__.py +0 -0
  69. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/common/transforms/_label.py +0 -0
  70. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/common/transforms/_zoom.py +0 -0
  71. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/experimental/__init__.py +0 -0
  72. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/experimental/iterators/__init__.py +0 -0
  73. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/experimental/iterators/_abstract_iterator.py +0 -0
  74. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/hcs/__init__.py +0 -0
  75. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/hcs/_plate.py +0 -0
  76. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/images/__init__.py +0 -0
  77. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/images/_create.py +0 -0
  78. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/images/_create_synt_container.py +0 -0
  79. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/images/_image.py +0 -0
  80. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/images/_label.py +0 -0
  81. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/images/_masked_image.py +0 -0
  82. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/images/_table_ops.py +0 -0
  83. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/ome_zarr_meta/__init__.py +0 -0
  84. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/ome_zarr_meta/_meta_handlers.py +0 -0
  85. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/ome_zarr_meta/ngio_specs/__init__.py +0 -0
  86. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/ome_zarr_meta/ngio_specs/_axes.py +0 -0
  87. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/ome_zarr_meta/ngio_specs/_channels.py +0 -0
  88. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/ome_zarr_meta/ngio_specs/_dataset.py +0 -0
  89. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/ome_zarr_meta/ngio_specs/_ngio_hcs.py +0 -0
  90. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/ome_zarr_meta/ngio_specs/_ngio_image.py +0 -0
  91. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/ome_zarr_meta/ngio_specs/_pixel_size.py +0 -0
  92. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/ome_zarr_meta/v04/__init__.py +0 -0
  93. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/ome_zarr_meta/v04/_custom_models.py +0 -0
  94. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/ome_zarr_meta/v04/_v04_spec_utils.py +0 -0
  95. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/mask.png +0 -0
  96. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/nuclei.png +0 -0
  97. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/raw.jpg +0 -0
  98. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/resources/__init__.py +0 -0
  99. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/resources/resource_model.py +0 -0
  100. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/tables/__init__.py +0 -0
  101. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/tables/_abstract_table.py +0 -0
  102. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/tables/_tables_container.py +0 -0
  103. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/tables/backends/__init__.py +0 -0
  104. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/tables/backends/_abstract_backend.py +0 -0
  105. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/tables/backends/_anndata.py +0 -0
  106. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/tables/backends/_anndata_utils.py +0 -0
  107. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/tables/backends/_csv.py +0 -0
  108. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/tables/backends/_json.py +0 -0
  109. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/tables/backends/_non_zarr_backends.py +0 -0
  110. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/tables/backends/_parquet.py +0 -0
  111. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/tables/backends/_table_backends.py +0 -0
  112. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/tables/backends/_utils.py +0 -0
  113. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/tables/v1/__init__.py +0 -0
  114. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/tables/v1/_condition_table.py +0 -0
  115. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/tables/v1/_feature_table.py +0 -0
  116. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/tables/v1/_generic_table.py +0 -0
  117. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/utils/__init__.py +0 -0
  118. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/utils/_datasets.py +0 -0
  119. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/utils/_errors.py +0 -0
  120. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/utils/_fractal_fsspec_store.py +0 -0
  121. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/utils/_logger.py +0 -0
  122. {ngio-0.4.0a2 → ngio-0.4.0a3}/src/ngio/utils/_zarr_utils.py +0 -0
  123. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/conftest.py +0 -0
  124. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_c1yx.zarr/.zattrs +0 -0
  125. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_c1yx.zarr/.zgroup +0 -0
  126. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_c1yx.zarr/0/.zarray +0 -0
  127. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_c1yx.zarr/1/.zarray +0 -0
  128. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_c1yx.zarr/labels/.zattrs +0 -0
  129. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_c1yx.zarr/labels/.zgroup +0 -0
  130. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zattrs +0 -0
  131. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zgroup +0 -0
  132. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/0/.zarray +0 -0
  133. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/1/.zarray +0 -0
  134. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_cyx.zarr/.zattrs +0 -0
  135. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_cyx.zarr/.zgroup +0 -0
  136. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_cyx.zarr/0/.zarray +0 -0
  137. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_cyx.zarr/1/.zarray +0 -0
  138. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_cyx.zarr/labels/.zattrs +0 -0
  139. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_cyx.zarr/labels/.zgroup +0 -0
  140. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zattrs +0 -0
  141. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zgroup +0 -0
  142. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_cyx.zarr/labels/label/0/.zarray +0 -0
  143. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_cyx.zarr/labels/label/1/.zarray +0 -0
  144. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_czyx.zarr/.zattrs +0 -0
  145. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_czyx.zarr/.zgroup +0 -0
  146. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_czyx.zarr/0/.zarray +0 -0
  147. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_czyx.zarr/1/.zarray +0 -0
  148. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_czyx.zarr/labels/.zattrs +0 -0
  149. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_czyx.zarr/labels/.zgroup +0 -0
  150. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zattrs +0 -0
  151. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zgroup +0 -0
  152. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_czyx.zarr/labels/label/0/.zarray +0 -0
  153. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_czyx.zarr/labels/label/1/.zarray +0 -0
  154. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tcyx.zarr/.zattrs +0 -0
  155. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tcyx.zarr/.zgroup +0 -0
  156. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tcyx.zarr/0/.zarray +0 -0
  157. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tcyx.zarr/1/.zarray +0 -0
  158. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tcyx.zarr/labels/.zattrs +0 -0
  159. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tcyx.zarr/labels/.zgroup +0 -0
  160. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zattrs +0 -0
  161. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zgroup +0 -0
  162. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/0/.zarray +0 -0
  163. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/1/.zarray +0 -0
  164. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tczyx.zarr/.zattrs +0 -0
  165. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tczyx.zarr/.zgroup +0 -0
  166. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tczyx.zarr/0/.zarray +0 -0
  167. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tczyx.zarr/1/.zarray +0 -0
  168. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tczyx.zarr/labels/.zattrs +0 -0
  169. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tczyx.zarr/labels/.zgroup +0 -0
  170. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zattrs +0 -0
  171. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zgroup +0 -0
  172. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/0/.zarray +0 -0
  173. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/1/.zarray +0 -0
  174. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tyx.zarr/.zattrs +0 -0
  175. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tyx.zarr/.zgroup +0 -0
  176. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tyx.zarr/0/.zarray +0 -0
  177. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tyx.zarr/1/.zarray +0 -0
  178. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tyx.zarr/labels/.zattrs +0 -0
  179. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tyx.zarr/labels/.zgroup +0 -0
  180. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zattrs +0 -0
  181. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zgroup +0 -0
  182. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tyx.zarr/labels/label/0/.zarray +0 -0
  183. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tyx.zarr/labels/label/1/.zarray +0 -0
  184. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tzyx.zarr/.zattrs +0 -0
  185. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tzyx.zarr/.zgroup +0 -0
  186. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tzyx.zarr/0/.zarray +0 -0
  187. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tzyx.zarr/1/.zarray +0 -0
  188. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tzyx.zarr/labels/.zattrs +0 -0
  189. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tzyx.zarr/labels/.zgroup +0 -0
  190. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zattrs +0 -0
  191. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zgroup +0 -0
  192. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/0/.zarray +0 -0
  193. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/1/.zarray +0 -0
  194. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_yx.zarr/.zattrs +0 -0
  195. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_yx.zarr/.zgroup +0 -0
  196. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_yx.zarr/0/.zarray +0 -0
  197. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_yx.zarr/1/.zarray +0 -0
  198. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_yx.zarr/labels/.zattrs +0 -0
  199. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_yx.zarr/labels/.zgroup +0 -0
  200. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_yx.zarr/labels/label/.zattrs +0 -0
  201. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_yx.zarr/labels/label/.zgroup +0 -0
  202. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_yx.zarr/labels/label/0/.zarray +0 -0
  203. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_yx.zarr/labels/label/1/.zarray +0 -0
  204. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_zyx.zarr/.zattrs +0 -0
  205. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_zyx.zarr/.zgroup +0 -0
  206. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_zyx.zarr/0/.zarray +0 -0
  207. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_zyx.zarr/1/.zarray +0 -0
  208. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_zyx.zarr/labels/.zattrs +0 -0
  209. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_zyx.zarr/labels/.zgroup +0 -0
  210. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zattrs +0 -0
  211. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zgroup +0 -0
  212. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_zyx.zarr/labels/label/0/.zarray +0 -0
  213. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/images/test_image_zyx.zarr/labels/label/1/.zarray +0 -0
  214. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/meta/base_ome_zarr_image_meta.json +0 -0
  215. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/meta/base_ome_zarr_image_meta_wrong_axis_order.json +0 -0
  216. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/meta/base_ome_zarr_label_meta.json +0 -0
  217. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/meta/base_ome_zarr_well_meta.json +0 -0
  218. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/data/v04/meta/ome_zarr_well_path_normalization_meta.json +0 -0
  219. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/unit/common/test_dimensions.py +0 -0
  220. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/unit/common/test_pyramid.py +0 -0
  221. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/unit/common/test_roi.py +0 -0
  222. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/unit/common/test_transforms.py +0 -0
  223. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/unit/hcs/test_plate.py +0 -0
  224. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/unit/hcs/test_well.py +0 -0
  225. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/unit/images/test_create.py +0 -0
  226. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/unit/images/test_images.py +0 -0
  227. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/unit/images/test_masked_images.py +0 -0
  228. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/unit/images/test_omezarr_container.py +0 -0
  229. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/unit/images/test_table_ops.py +0 -0
  230. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/unit/iterators/test_iterators.py +0 -0
  231. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/unit/ome_zarr_meta/test_image_handler.py +0 -0
  232. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/unit/ome_zarr_meta/test_unit_ngio_specs.py +0 -0
  233. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/unit/ome_zarr_meta/test_unit_v04_utils.py +0 -0
  234. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/unit/tables/test_backends.py +0 -0
  235. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/unit/tables/test_backends_utils.py +0 -0
  236. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/unit/tables/test_feature_table.py +0 -0
  237. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/unit/tables/test_generic_table.py +0 -0
  238. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/unit/tables/test_masking_roi_table_v1.py +0 -0
  239. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/unit/tables/test_roi_table_v1.py +0 -0
  240. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/unit/tables/test_table_group.py +0 -0
  241. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/unit/utils/test_download_datasets.py +0 -0
  242. {ngio-0.4.0a2 → ngio-0.4.0a3}/tests/unit/utils/test_zarr_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ngio
3
- Version: 0.4.0a2
3
+ Version: 0.4.0a3
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
@@ -49,7 +49,7 @@ T = TypeVar("T", int, float)
49
49
  class GenericRoi(BaseModel, Generic[T]):
50
50
  """A generic Region of Interest (ROI) model."""
51
51
 
52
- name: str
52
+ name: str | None
53
53
  x: T
54
54
  y: T
55
55
  z: T | None = None
@@ -67,6 +67,38 @@ class GenericRoi(BaseModel, Generic[T]):
67
67
  """Calculate the intersection of this ROI with another ROI."""
68
68
  return roi_intersection(self, other)
69
69
 
70
+ def _nice_str(self) -> str:
71
+ if self.t is not None:
72
+ t_str = f"t={self.t}->{self.t_length}"
73
+ else:
74
+ t_str = "t=None"
75
+ if self.z is not None:
76
+ z_str = f"z={self.z}->{self.z_length}"
77
+ else:
78
+ z_str = "z=None"
79
+
80
+ y_str = f"y={self.y}->{self.y_length}"
81
+ x_str = f"x={self.x}->{self.x_length}"
82
+
83
+ if self.label is not None:
84
+ label_str = f", label={self.label}"
85
+ else:
86
+ label_str = ""
87
+ cls_name = self.__class__.__name__
88
+ return f"{cls_name}({t_str}, {z_str}, {y_str}, {x_str}{label_str})"
89
+
90
+ def get_name(self) -> str:
91
+ """Get the name of the ROI, or a default if not set."""
92
+ if self.name is not None:
93
+ return self.name
94
+ return self._nice_str()
95
+
96
+ def __repr__(self) -> str:
97
+ return self._nice_str()
98
+
99
+ def __str__(self) -> str:
100
+ return self._nice_str()
101
+
70
102
 
71
103
  def _1d_intersection(
72
104
  a: T | None, a_length: T | None, b: T | None, b_length: T | None
@@ -113,11 +145,17 @@ def roi_intersection(
113
145
  x, x_length = _1d_intersection(
114
146
  ref_roi.x, ref_roi.x_length, other_roi.x, other_roi.x_length
115
147
  )
148
+ if x is None and x_length is None:
149
+ # No intersection
150
+ return None
116
151
  assert x is not None and x_length is not None
117
152
 
118
153
  y, y_length = _1d_intersection(
119
154
  ref_roi.y, ref_roi.y_length, other_roi.y, other_roi.y_length
120
155
  )
156
+ if y is None and y_length is None:
157
+ # No intersection
158
+ return None
121
159
  assert y is not None and y_length is not None
122
160
 
123
161
  z, z_length = _1d_intersection(
@@ -127,11 +165,8 @@ def roi_intersection(
127
165
  ref_roi.t, ref_roi.t_length, other_roi.t, other_roi.t_length
128
166
  )
129
167
 
130
- if (
131
- x_length <= 0
132
- or y_length <= 0
133
- or (z_length is not None and z_length <= 0)
134
- or (t_length is not None and t_length <= 0)
168
+ if (z_length is not None and z_length <= 0) or (
169
+ t_length is not None and t_length <= 0
135
170
  ):
136
171
  # No intersection
137
172
  return None
@@ -144,9 +179,14 @@ def roi_intersection(
144
179
  )
145
180
  label = ref_roi.label or other_roi.label
146
181
 
182
+ if ref_roi.name is not None and other_roi.name is not None:
183
+ name = f"{ref_roi.name}:{other_roi.name}"
184
+ else:
185
+ name = ref_roi.name or other_roi.name
186
+
147
187
  cls_ref = ref_roi.__class__
148
188
  return cls_ref(
149
- name=f"[{ref_roi.name}_x_{other_roi.name}]",
189
+ name=name,
150
190
  x=x,
151
191
  y=y,
152
192
  z=z,
@@ -47,7 +47,7 @@ class FeatureExtractorIterator(AbstractIteratorBuilder):
47
47
  self._input = input_image
48
48
  self._input_label = input_label
49
49
  self._ref_image = input_image
50
- self._rois = input_image.build_image_roi_table().rois()
50
+ self._rois = input_image.build_image_roi_table(name=None).rois()
51
51
 
52
52
  # Set iteration parameters
53
53
  self._input_slicing_kwargs = add_channel_selection_to_slicing_dict(
@@ -53,7 +53,7 @@ class ImageProcessingIterator(AbstractIteratorBuilder):
53
53
  self._input = input_image
54
54
  self._output = output_image
55
55
  self._ref_image = input_image
56
- self._rois = input_image.build_image_roi_table().rois()
56
+ self._rois = input_image.build_image_roi_table(name=None).rois()
57
57
 
58
58
  # Set iteration parameters
59
59
  self._input_slicing_kwargs = add_channel_selection_to_slicing_dict(
@@ -24,7 +24,7 @@ def grid(
24
24
  stride_y: int | None = None,
25
25
  stride_z: int | None = None,
26
26
  stride_t: int | None = None,
27
- base_name: str = "",
27
+ base_name: str | None = None,
28
28
  ) -> list[Roi]:
29
29
  """This method is a placeholder for creating a regular grid of ROIs."""
30
30
  t_dim = ref_image.dimensions.get("t", default=1)
@@ -49,7 +49,7 @@ def grid(
49
49
  for y in range(0, y_dim, stride_y):
50
50
  for x in range(0, x_dim, stride_x):
51
51
  roi = RoiPixels(
52
- name=f"{base_name}({t}, {z}, {y}, {x})",
52
+ name=base_name,
53
53
  x=x,
54
54
  y=y,
55
55
  z=z,
@@ -55,7 +55,7 @@ class SegmentationIterator(AbstractIteratorBuilder):
55
55
  self._input = input_image
56
56
  self._output = output_label
57
57
  self._ref_image = input_image
58
- self._rois = input_image.build_image_roi_table().rois()
58
+ self._rois = input_image.build_image_roi_table(name=None).rois()
59
59
 
60
60
  # Set iteration parameters
61
61
  self._input_slicing_kwargs = add_channel_selection_to_slicing_dict(
@@ -445,7 +445,7 @@ class AbstractImage(Generic[_image_handler]):
445
445
  """
446
446
  consolidate_image(image=self, order=order, mode=mode)
447
447
 
448
- def build_image_roi_table(self, name: str = "image") -> RoiTable:
448
+ def build_image_roi_table(self, name: str | None = "image") -> RoiTable:
449
449
  """Build the ROI table for an image."""
450
450
  return build_image_roi_table(image=self, name=name)
451
451
 
@@ -467,7 +467,7 @@ def consolidate_image(
467
467
  )
468
468
 
469
469
 
470
- def build_image_roi_table(image: AbstractImage, name: str = "image") -> RoiTable:
470
+ def build_image_roi_table(image: AbstractImage, name: str | None = "image") -> RoiTable:
471
471
  """Build the ROI table for an image."""
472
472
  dim_x = image.dimensions.get("x")
473
473
  dim_y = image.dimensions.get("y")
@@ -589,7 +589,7 @@ class OmeZarrContainer:
589
589
  backend=backend,
590
590
  )
591
591
 
592
- def build_image_roi_table(self, name: str = "image") -> RoiTable:
592
+ def build_image_roi_table(self, name: str | None = "image") -> RoiTable:
593
593
  """Compute the ROI table for an image."""
594
594
  return self.get_image().build_image_roi_table(name=name)
595
595
 
@@ -6,6 +6,7 @@ https://fractal-analytics-platform.github.io/fractal-tasks-core/tables/
6
6
 
7
7
  from collections.abc import Iterable
8
8
  from typing import Literal
9
+ from uuid import uuid4
9
10
 
10
11
  import pandas as pd
11
12
  from pydantic import BaseModel
@@ -146,7 +147,7 @@ def _rois_to_dataframe(rois: dict[str, Roi], index_key: str | None) -> pd.DataFr
146
147
  len_z_micrometer = roi.z_length if roi.z_length is not None else 1.0
147
148
 
148
149
  row = {
149
- index_key: roi.name,
150
+ index_key: roi.get_name(),
150
151
  "x_micrometer": roi.x,
151
152
  "y_micrometer": roi.y,
152
153
  "z_micrometer": z_micrometer,
@@ -179,8 +180,15 @@ class RoiDictWrapper:
179
180
  """A wrapper for a dictionary of ROIs to provide a consistent interface."""
180
181
 
181
182
  def __init__(self, rois: Iterable[Roi]) -> None:
182
- self._rois_by_name = {roi.name: roi for roi in rois}
183
- self._rois_by_label = {roi.label: roi for roi in rois if roi.label is not None}
183
+ self._rois_by_name = {}
184
+ self._rois_by_label = {}
185
+ for roi in rois:
186
+ name = roi.get_name()
187
+ if name in self._rois_by_name:
188
+ name = f"{name}_{uuid4().hex[:8]}"
189
+ self._rois_by_name[name] = roi
190
+ if roi.label is not None:
191
+ self._rois_by_label[roi.label] = roi
184
192
 
185
193
  def get_by_name(self, name: str, default: Roi | None = None) -> Roi | None:
186
194
  """Get an ROI by its name."""
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
File without changes
File without changes
File without changes
File without changes
File without changes