ngio 0.4.3__tar.gz → 0.4.5__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 (258) hide show
  1. {ngio-0.4.3 → ngio-0.4.5}/CHANGELOG.md +12 -0
  2. {ngio-0.4.3 → ngio-0.4.5}/PKG-INFO +3 -3
  3. {ngio-0.4.3 → ngio-0.4.5}/pyproject.toml +3 -3
  4. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/common/_pyramid.py +15 -8
  5. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/ome_zarr_meta/ngio_specs/_channels.py +16 -18
  6. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/tables/v1/_roi_table.py +3 -3
  7. {ngio-0.4.3 → ngio-0.4.5}/.copier-answers.yml +0 -0
  8. {ngio-0.4.3 → ngio-0.4.5}/.gitattributes +0 -0
  9. {ngio-0.4.3 → ngio-0.4.5}/.github/ISSUE_TEMPLATE.md +0 -0
  10. {ngio-0.4.3 → ngio-0.4.5}/.github/TEST_FAIL_TEMPLATE.md +0 -0
  11. {ngio-0.4.3 → ngio-0.4.5}/.github/dependabot.yml +0 -0
  12. {ngio-0.4.3 → ngio-0.4.5}/.github/pull_request_template.md +0 -0
  13. {ngio-0.4.3 → ngio-0.4.5}/.github/workflows/build_docs.yml +0 -0
  14. {ngio-0.4.3 → ngio-0.4.5}/.github/workflows/ci.yml +0 -0
  15. {ngio-0.4.3 → ngio-0.4.5}/.gitignore +0 -0
  16. {ngio-0.4.3 → ngio-0.4.5}/.pre-commit-config.yaml +0 -0
  17. {ngio-0.4.3 → ngio-0.4.5}/LICENSE +0 -0
  18. {ngio-0.4.3 → ngio-0.4.5}/README.md +0 -0
  19. {ngio-0.4.3 → ngio-0.4.5}/_typos.toml +0 -0
  20. {ngio-0.4.3 → ngio-0.4.5}/docs/api/hcs.md +0 -0
  21. {ngio-0.4.3 → ngio-0.4.5}/docs/api/images.md +0 -0
  22. {ngio-0.4.3 → ngio-0.4.5}/docs/api/iterators.md +0 -0
  23. {ngio-0.4.3 → ngio-0.4.5}/docs/api/ngio/common.md +0 -0
  24. {ngio-0.4.3 → ngio-0.4.5}/docs/api/ngio/hcs.md +0 -0
  25. {ngio-0.4.3 → ngio-0.4.5}/docs/api/ngio/images.md +0 -0
  26. {ngio-0.4.3 → ngio-0.4.5}/docs/api/ngio/io_pipes.md +0 -0
  27. {ngio-0.4.3 → ngio-0.4.5}/docs/api/ngio/iterators.md +0 -0
  28. {ngio-0.4.3 → ngio-0.4.5}/docs/api/ngio/ngio.md +0 -0
  29. {ngio-0.4.3 → ngio-0.4.5}/docs/api/ngio/tables.md +0 -0
  30. {ngio-0.4.3 → ngio-0.4.5}/docs/api/ngio/transforms.md +0 -0
  31. {ngio-0.4.3 → ngio-0.4.5}/docs/api/ngio/utils.md +0 -0
  32. {ngio-0.4.3 → ngio-0.4.5}/docs/api/ome_zarr_container.md +0 -0
  33. {ngio-0.4.3 → ngio-0.4.5}/docs/api/tables.md +0 -0
  34. {ngio-0.4.3 → ngio-0.4.5}/docs/changelog.md +0 -0
  35. {ngio-0.4.3 → ngio-0.4.5}/docs/code_of_conduct.md +0 -0
  36. {ngio-0.4.3 → ngio-0.4.5}/docs/contributing.md +0 -0
  37. {ngio-0.4.3 → ngio-0.4.5}/docs/getting_started/0_quickstart.md +0 -0
  38. {ngio-0.4.3 → ngio-0.4.5}/docs/getting_started/1_ome_zarr_containers.md +0 -0
  39. {ngio-0.4.3 → ngio-0.4.5}/docs/getting_started/2_images.md +0 -0
  40. {ngio-0.4.3 → ngio-0.4.5}/docs/getting_started/3_tables.md +0 -0
  41. {ngio-0.4.3 → ngio-0.4.5}/docs/getting_started/4_masked_images.md +0 -0
  42. {ngio-0.4.3 → ngio-0.4.5}/docs/getting_started/5_hcs.md +0 -0
  43. {ngio-0.4.3 → ngio-0.4.5}/docs/getting_started/6_iterators.md +0 -0
  44. {ngio-0.4.3 → ngio-0.4.5}/docs/index.md +0 -0
  45. {ngio-0.4.3 → ngio-0.4.5}/docs/table_specs/backend.md +0 -0
  46. {ngio-0.4.3 → ngio-0.4.5}/docs/table_specs/overview.md +0 -0
  47. {ngio-0.4.3 → ngio-0.4.5}/docs/table_specs/table_types/condition_table.md +0 -0
  48. {ngio-0.4.3 → ngio-0.4.5}/docs/table_specs/table_types/custom_table.md +0 -0
  49. {ngio-0.4.3 → ngio-0.4.5}/docs/table_specs/table_types/feature_table.md +0 -0
  50. {ngio-0.4.3 → ngio-0.4.5}/docs/table_specs/table_types/generic_table.md +0 -0
  51. {ngio-0.4.3 → ngio-0.4.5}/docs/table_specs/table_types/masking_roi_table.md +0 -0
  52. {ngio-0.4.3 → ngio-0.4.5}/docs/table_specs/table_types/roi_table.md +0 -0
  53. {ngio-0.4.3 → ngio-0.4.5}/docs/tutorials/create_ome_zarr.ipynb +0 -0
  54. {ngio-0.4.3 → ngio-0.4.5}/docs/tutorials/feature_extraction.ipynb +0 -0
  55. {ngio-0.4.3 → ngio-0.4.5}/docs/tutorials/hcs_exploration.ipynb +0 -0
  56. {ngio-0.4.3 → ngio-0.4.5}/docs/tutorials/image_processing.ipynb +0 -0
  57. {ngio-0.4.3 → ngio-0.4.5}/docs/tutorials/image_segmentation.ipynb +0 -0
  58. {ngio-0.4.3 → ngio-0.4.5}/mkdocs.yml +0 -0
  59. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/__init__.py +0 -0
  60. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/common/__init__.py +0 -0
  61. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/common/_dimensions.py +0 -0
  62. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/common/_masking_roi.py +0 -0
  63. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/common/_roi.py +0 -0
  64. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/common/_synt_images_utils.py +0 -0
  65. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/common/_zoom.py +0 -0
  66. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/experimental/__init__.py +0 -0
  67. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/experimental/iterators/__init__.py +0 -0
  68. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/experimental/iterators/_abstract_iterator.py +0 -0
  69. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/experimental/iterators/_feature.py +0 -0
  70. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/experimental/iterators/_image_processing.py +0 -0
  71. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/experimental/iterators/_mappers.py +0 -0
  72. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/experimental/iterators/_rois_utils.py +0 -0
  73. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/experimental/iterators/_segmentation.py +0 -0
  74. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/hcs/__init__.py +0 -0
  75. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/hcs/_plate.py +0 -0
  76. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/images/__init__.py +0 -0
  77. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/images/_abstract_image.py +0 -0
  78. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/images/_create.py +0 -0
  79. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/images/_create_synt_container.py +0 -0
  80. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/images/_image.py +0 -0
  81. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/images/_label.py +0 -0
  82. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/images/_masked_image.py +0 -0
  83. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/images/_ome_zarr_container.py +0 -0
  84. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/images/_table_ops.py +0 -0
  85. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/io_pipes/__init__.py +0 -0
  86. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/io_pipes/_io_pipes.py +0 -0
  87. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/io_pipes/_io_pipes_masked.py +0 -0
  88. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/io_pipes/_io_pipes_roi.py +0 -0
  89. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/io_pipes/_io_pipes_types.py +0 -0
  90. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/io_pipes/_match_shape.py +0 -0
  91. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/io_pipes/_ops_axes.py +0 -0
  92. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/io_pipes/_ops_slices.py +0 -0
  93. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/io_pipes/_ops_slices_utils.py +0 -0
  94. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/io_pipes/_ops_transforms.py +0 -0
  95. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/io_pipes/_zoom_transform.py +0 -0
  96. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/ome_zarr_meta/__init__.py +0 -0
  97. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/ome_zarr_meta/_meta_handlers.py +0 -0
  98. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/ome_zarr_meta/ngio_specs/__init__.py +0 -0
  99. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/ome_zarr_meta/ngio_specs/_axes.py +0 -0
  100. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/ome_zarr_meta/ngio_specs/_dataset.py +0 -0
  101. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/ome_zarr_meta/ngio_specs/_ngio_hcs.py +0 -0
  102. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/ome_zarr_meta/ngio_specs/_ngio_image.py +0 -0
  103. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/ome_zarr_meta/ngio_specs/_pixel_size.py +0 -0
  104. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/ome_zarr_meta/v04/__init__.py +0 -0
  105. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/ome_zarr_meta/v04/_custom_models.py +0 -0
  106. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/ome_zarr_meta/v04/_v04_spec_utils.py +0 -0
  107. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/mask.png +0 -0
  108. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/nuclei.png +0 -0
  109. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/raw.jpg +0 -0
  110. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/resources/__init__.py +0 -0
  111. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/resources/resource_model.py +0 -0
  112. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/tables/__init__.py +0 -0
  113. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/tables/_abstract_table.py +0 -0
  114. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/tables/_tables_container.py +0 -0
  115. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/tables/backends/__init__.py +0 -0
  116. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/tables/backends/_abstract_backend.py +0 -0
  117. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/tables/backends/_anndata.py +0 -0
  118. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/tables/backends/_anndata_utils.py +0 -0
  119. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/tables/backends/_csv.py +0 -0
  120. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/tables/backends/_json.py +0 -0
  121. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/tables/backends/_non_zarr_backends.py +0 -0
  122. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/tables/backends/_parquet.py +0 -0
  123. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/tables/backends/_table_backends.py +0 -0
  124. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/tables/backends/_utils.py +0 -0
  125. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/tables/v1/__init__.py +0 -0
  126. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/tables/v1/_condition_table.py +0 -0
  127. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/tables/v1/_feature_table.py +0 -0
  128. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/tables/v1/_generic_table.py +0 -0
  129. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/transforms/__init__.py +0 -0
  130. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/transforms/_zoom.py +0 -0
  131. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/utils/__init__.py +0 -0
  132. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/utils/_datasets.py +0 -0
  133. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/utils/_errors.py +0 -0
  134. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/utils/_fractal_fsspec_store.py +0 -0
  135. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/utils/_logger.py +0 -0
  136. {ngio-0.4.3 → ngio-0.4.5}/src/ngio/utils/_zarr_utils.py +0 -0
  137. {ngio-0.4.3 → ngio-0.4.5}/tests/conftest.py +0 -0
  138. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_c1yx.zarr/.zattrs +0 -0
  139. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_c1yx.zarr/.zgroup +0 -0
  140. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_c1yx.zarr/0/.zarray +0 -0
  141. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_c1yx.zarr/1/.zarray +0 -0
  142. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_c1yx.zarr/labels/.zattrs +0 -0
  143. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_c1yx.zarr/labels/.zgroup +0 -0
  144. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zattrs +0 -0
  145. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zgroup +0 -0
  146. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/0/.zarray +0 -0
  147. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/1/.zarray +0 -0
  148. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_cyx.zarr/.zattrs +0 -0
  149. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_cyx.zarr/.zgroup +0 -0
  150. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_cyx.zarr/0/.zarray +0 -0
  151. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_cyx.zarr/1/.zarray +0 -0
  152. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_cyx.zarr/labels/.zattrs +0 -0
  153. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_cyx.zarr/labels/.zgroup +0 -0
  154. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zattrs +0 -0
  155. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zgroup +0 -0
  156. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_cyx.zarr/labels/label/0/.zarray +0 -0
  157. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_cyx.zarr/labels/label/1/.zarray +0 -0
  158. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_czyx.zarr/.zattrs +0 -0
  159. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_czyx.zarr/.zgroup +0 -0
  160. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_czyx.zarr/0/.zarray +0 -0
  161. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_czyx.zarr/1/.zarray +0 -0
  162. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_czyx.zarr/labels/.zattrs +0 -0
  163. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_czyx.zarr/labels/.zgroup +0 -0
  164. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zattrs +0 -0
  165. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zgroup +0 -0
  166. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_czyx.zarr/labels/label/0/.zarray +0 -0
  167. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_czyx.zarr/labels/label/1/.zarray +0 -0
  168. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tcyx.zarr/.zattrs +0 -0
  169. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tcyx.zarr/.zgroup +0 -0
  170. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tcyx.zarr/0/.zarray +0 -0
  171. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tcyx.zarr/1/.zarray +0 -0
  172. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tcyx.zarr/labels/.zattrs +0 -0
  173. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tcyx.zarr/labels/.zgroup +0 -0
  174. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zattrs +0 -0
  175. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zgroup +0 -0
  176. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/0/.zarray +0 -0
  177. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/1/.zarray +0 -0
  178. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tczyx.zarr/.zattrs +0 -0
  179. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tczyx.zarr/.zgroup +0 -0
  180. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tczyx.zarr/0/.zarray +0 -0
  181. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tczyx.zarr/1/.zarray +0 -0
  182. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tczyx.zarr/labels/.zattrs +0 -0
  183. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tczyx.zarr/labels/.zgroup +0 -0
  184. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zattrs +0 -0
  185. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zgroup +0 -0
  186. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/0/.zarray +0 -0
  187. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/1/.zarray +0 -0
  188. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tyx.zarr/.zattrs +0 -0
  189. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tyx.zarr/.zgroup +0 -0
  190. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tyx.zarr/0/.zarray +0 -0
  191. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tyx.zarr/1/.zarray +0 -0
  192. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tyx.zarr/labels/.zattrs +0 -0
  193. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tyx.zarr/labels/.zgroup +0 -0
  194. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zattrs +0 -0
  195. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zgroup +0 -0
  196. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tyx.zarr/labels/label/0/.zarray +0 -0
  197. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tyx.zarr/labels/label/1/.zarray +0 -0
  198. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tzyx.zarr/.zattrs +0 -0
  199. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tzyx.zarr/.zgroup +0 -0
  200. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tzyx.zarr/0/.zarray +0 -0
  201. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tzyx.zarr/1/.zarray +0 -0
  202. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tzyx.zarr/labels/.zattrs +0 -0
  203. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tzyx.zarr/labels/.zgroup +0 -0
  204. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zattrs +0 -0
  205. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zgroup +0 -0
  206. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/0/.zarray +0 -0
  207. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/1/.zarray +0 -0
  208. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_yx.zarr/.zattrs +0 -0
  209. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_yx.zarr/.zgroup +0 -0
  210. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_yx.zarr/0/.zarray +0 -0
  211. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_yx.zarr/1/.zarray +0 -0
  212. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_yx.zarr/labels/.zattrs +0 -0
  213. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_yx.zarr/labels/.zgroup +0 -0
  214. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_yx.zarr/labels/label/.zattrs +0 -0
  215. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_yx.zarr/labels/label/.zgroup +0 -0
  216. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_yx.zarr/labels/label/0/.zarray +0 -0
  217. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_yx.zarr/labels/label/1/.zarray +0 -0
  218. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_zyx.zarr/.zattrs +0 -0
  219. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_zyx.zarr/.zgroup +0 -0
  220. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_zyx.zarr/0/.zarray +0 -0
  221. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_zyx.zarr/1/.zarray +0 -0
  222. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_zyx.zarr/labels/.zattrs +0 -0
  223. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_zyx.zarr/labels/.zgroup +0 -0
  224. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zattrs +0 -0
  225. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zgroup +0 -0
  226. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_zyx.zarr/labels/label/0/.zarray +0 -0
  227. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/images/test_image_zyx.zarr/labels/label/1/.zarray +0 -0
  228. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/meta/base_ome_zarr_image_meta.json +0 -0
  229. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/meta/base_ome_zarr_image_meta_wrong_axis_order.json +0 -0
  230. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/meta/base_ome_zarr_label_meta.json +0 -0
  231. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/meta/base_ome_zarr_well_meta.json +0 -0
  232. {ngio-0.4.3 → ngio-0.4.5}/tests/data/v04/meta/ome_zarr_well_path_normalization_meta.json +0 -0
  233. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/common/test_dimensions.py +0 -0
  234. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/common/test_pyramid.py +0 -0
  235. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/common/test_roi.py +0 -0
  236. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/common/test_transforms.py +0 -0
  237. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/hcs/test_plate.py +0 -0
  238. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/hcs/test_well.py +0 -0
  239. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/images/test_create.py +0 -0
  240. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/images/test_images.py +0 -0
  241. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/images/test_masked_images.py +0 -0
  242. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/images/test_omezarr_container.py +0 -0
  243. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/images/test_table_ops.py +0 -0
  244. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/io_pipes/test_axes_ops.py +0 -0
  245. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/io_pipes/test_slicing_ops.py +0 -0
  246. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/iterators/test_iterators.py +0 -0
  247. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/ome_zarr_meta/test_image_handler.py +0 -0
  248. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/ome_zarr_meta/test_unit_ngio_specs.py +0 -0
  249. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/ome_zarr_meta/test_unit_v04_utils.py +0 -0
  250. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/tables/test_backends.py +0 -0
  251. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/tables/test_backends_utils.py +0 -0
  252. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/tables/test_feature_table.py +0 -0
  253. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/tables/test_generic_table.py +0 -0
  254. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/tables/test_masking_roi_table_v1.py +0 -0
  255. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/tables/test_roi_table_v1.py +0 -0
  256. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/tables/test_table_group.py +0 -0
  257. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/utils/test_download_datasets.py +0 -0
  258. {ngio-0.4.3 → ngio-0.4.5}/tests/unit/utils/test_zarr_utils.py +0 -0
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## [v0.4.5]
4
+
5
+ ### Bug Fixes
6
+ - Pin Dask to version <2025.11 to avoid errors when writing zarr pyramids with dask (see https://github.com/dask/dask/issues/12159#issuecomment-3548421833)
7
+
8
+ ## [v0.4.4]
9
+
10
+ ### Bug Fixes
11
+
12
+ - Fix bug in channel visualization when using hex colors with leading '#'.
13
+ - Remove strict range check in channel window.
14
+
3
15
  ## [v0.4.3]
4
16
 
5
17
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ngio
3
- Version: 0.4.3
3
+ Version: 0.4.5
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
@@ -17,8 +17,8 @@ Classifier: Typing :: Typed
17
17
  Requires-Python: <3.14,>=3.11
18
18
  Requires-Dist: aiohttp
19
19
  Requires-Dist: anndata<0.11.4,>=0.8.0
20
- Requires-Dist: dask[array]
21
- Requires-Dist: dask[distributed]
20
+ Requires-Dist: dask[array]<2025.11.0
21
+ Requires-Dist: dask[distributed]<2025.11.0
22
22
  Requires-Dist: filelock
23
23
  Requires-Dist: numpy
24
24
  Requires-Dist: ome-zarr-models
@@ -36,13 +36,13 @@ dependencies = [
36
36
  "numpy",
37
37
  "filelock",
38
38
  "zarr<3",
39
- "anndata>=0.8.0,<0.11.4", # To be removed when we transition to zarr v3
39
+ "anndata>=0.8.0,<0.11.4", # To be removed when we transition to zarr v3
40
40
  "pydantic",
41
41
  "pandas>=1.2.0",
42
42
  "requests",
43
43
  "aiohttp",
44
- "dask[array]",
45
- "dask[distributed]",
44
+ "dask[array]<2025.11.0",
45
+ "dask[distributed]<2025.11.0",
46
46
  # "xarray", still not used
47
47
  "ome-zarr-models",
48
48
  "pooch",
@@ -2,6 +2,7 @@ import math
2
2
  from collections.abc import Callable, Sequence
3
3
  from typing import Literal
4
4
 
5
+ import dask
5
6
  import dask.array as da
6
7
  import numpy as np
7
8
  import zarr
@@ -36,9 +37,17 @@ def _on_disk_dask_zoom(
36
37
  ) -> None:
37
38
  source_array = da.from_zarr(source)
38
39
  target_array = dask_zoom(source_array, target_shape=target.shape, order=order)
39
-
40
+ # This is a potential fix for Dask 2025.11
41
+ # chunk_size_bytes = np.prod(target.chunks) * target_array.dtype.itemsize
42
+ # current_chunk_size = dask.config.get("array.chunk-size", 0)
43
+ #
44
+ #if current_chunk_size < chunk_size_bytes:
45
+ # # Increase the chunk size to avoid dask potentially creating
46
+ # # corrupted chunks when writing chunks that are not multiple of the
47
+ # # target chunk size
48
+ # dask.config.set({"array.chunk-size": f"{chunk_size_bytes}B"})
40
49
  target_array = target_array.rechunk(target.chunks)
41
- target_array.compute_chunk_sizes()
50
+ target_array = target_array.compute_chunk_sizes()
42
51
  target_array.to_zarr(target)
43
52
 
44
53
 
@@ -241,13 +250,11 @@ def init_empty_pyramid(
241
250
  compressor=compressor,
242
251
  )
243
252
 
244
- _shape = [
253
+ ref_shape = [
245
254
  math.floor(s / sc) for s, sc in zip(ref_shape, scaling_factors, strict=True)
246
255
  ]
247
- ref_shape = _shape
256
+ chunks = tuple(
257
+ min(c, s) for c, s in zip(new_arr.chunks, ref_shape, strict=True)
258
+ )
248
259
 
249
- if chunks is None:
250
- chunks = new_arr.chunks
251
- assert chunks is not None
252
- chunks = [min(c, s) for c, s in zip(chunks, ref_shape, strict=True)]
253
260
  return None
@@ -102,6 +102,20 @@ def valid_hex_color(v: str) -> bool:
102
102
  return True
103
103
 
104
104
 
105
+ def into_valid_hex_color(v: str) -> str:
106
+ """Convert a string into a valid hexadecimal color.
107
+
108
+ If the string is already a valid hexadecimal color, return it.
109
+ Otherwise, return a hexadecimal color based on the hash of the string.
110
+ """
111
+ # strip leading '#' if present
112
+ v = v.lstrip("#")
113
+ if valid_hex_color(v):
114
+ return v
115
+
116
+ return NgioColors.semi_random_pick(v.lower()).value
117
+
118
+
105
119
  class ChannelVisualisation(BaseModel):
106
120
  """Channel visualisation model.
107
121
 
@@ -135,13 +149,10 @@ class ChannelVisualisation(BaseModel):
135
149
  """
136
150
  if value is None:
137
151
  return NgioColors.semi_random_pick().value
138
- if isinstance(value, str) and valid_hex_color(value):
139
- return value
152
+ if isinstance(value, str):
153
+ return into_valid_hex_color(value)
140
154
  elif isinstance(value, NgioColors):
141
155
  return value.value
142
- elif isinstance(value, str):
143
- value_lower = value.lower()
144
- return NgioColors.semi_random_pick(value_lower).value
145
156
  else:
146
157
  raise NgioValueError(f"Invalid color {value}.")
147
158
 
@@ -159,19 +170,6 @@ class ChannelVisualisation(BaseModel):
159
170
  data["end"] = start + 1
160
171
  return data
161
172
 
162
- @model_validator(mode="after")
163
- def check_model(self) -> "ChannelVisualisation":
164
- """Check that the start and end values are within the min and max values."""
165
- if self.start < self.min or self.start > self.max:
166
- raise NgioValidationError(
167
- f"Start value {self.start} is out of range [{self.min}, {self.max}]"
168
- )
169
- if self.end < self.min or self.end > self.max:
170
- raise NgioValidationError(
171
- f"End value {self.end} is out of range [{self.min}, {self.max}]"
172
- )
173
- return self
174
-
175
173
  @classmethod
176
174
  def default_init(
177
175
  cls,
@@ -86,10 +86,10 @@ def _dataframe_to_rois(
86
86
  ) -> dict[str, Roi]:
87
87
  """Convert a DataFrame to a WorldCooROI object."""
88
88
  # Validate the columns of the DataFrame
89
- _required_columns = set(dataframe.columns).intersection(set(required_columns))
90
- if len(_required_columns) != len(required_columns):
89
+ _missing_columns = set(required_columns).difference(set(dataframe.columns))
90
+ if len(_missing_columns) != 0:
91
91
  raise NgioTableValidationError(
92
- f"Could not find required columns: {_required_columns} in the table."
92
+ f"Could not find required columns: {_missing_columns} in the table."
93
93
  )
94
94
 
95
95
  extra_columns = set(dataframe.columns).difference(
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
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