ngio 0.4.2__tar.gz → 0.4.4__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.2 → ngio-0.4.4}/CHANGELOG.md +15 -0
  2. {ngio-0.4.2 → ngio-0.4.4}/PKG-INFO +2 -1
  3. {ngio-0.4.2 → ngio-0.4.4}/pyproject.toml +2 -1
  4. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/images/_image.py +1 -1
  5. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/images/_label.py +1 -1
  6. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/ome_zarr_meta/ngio_specs/_channels.py +16 -18
  7. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/images/test_images.py +21 -0
  8. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/images/test_omezarr_container.py +15 -0
  9. {ngio-0.4.2 → ngio-0.4.4}/.copier-answers.yml +0 -0
  10. {ngio-0.4.2 → ngio-0.4.4}/.gitattributes +0 -0
  11. {ngio-0.4.2 → ngio-0.4.4}/.github/ISSUE_TEMPLATE.md +0 -0
  12. {ngio-0.4.2 → ngio-0.4.4}/.github/TEST_FAIL_TEMPLATE.md +0 -0
  13. {ngio-0.4.2 → ngio-0.4.4}/.github/dependabot.yml +0 -0
  14. {ngio-0.4.2 → ngio-0.4.4}/.github/pull_request_template.md +0 -0
  15. {ngio-0.4.2 → ngio-0.4.4}/.github/workflows/build_docs.yml +0 -0
  16. {ngio-0.4.2 → ngio-0.4.4}/.github/workflows/ci.yml +0 -0
  17. {ngio-0.4.2 → ngio-0.4.4}/.gitignore +0 -0
  18. {ngio-0.4.2 → ngio-0.4.4}/.pre-commit-config.yaml +0 -0
  19. {ngio-0.4.2 → ngio-0.4.4}/LICENSE +0 -0
  20. {ngio-0.4.2 → ngio-0.4.4}/README.md +0 -0
  21. {ngio-0.4.2 → ngio-0.4.4}/_typos.toml +0 -0
  22. {ngio-0.4.2 → ngio-0.4.4}/docs/api/hcs.md +0 -0
  23. {ngio-0.4.2 → ngio-0.4.4}/docs/api/images.md +0 -0
  24. {ngio-0.4.2 → ngio-0.4.4}/docs/api/iterators.md +0 -0
  25. {ngio-0.4.2 → ngio-0.4.4}/docs/api/ngio/common.md +0 -0
  26. {ngio-0.4.2 → ngio-0.4.4}/docs/api/ngio/hcs.md +0 -0
  27. {ngio-0.4.2 → ngio-0.4.4}/docs/api/ngio/images.md +0 -0
  28. {ngio-0.4.2 → ngio-0.4.4}/docs/api/ngio/io_pipes.md +0 -0
  29. {ngio-0.4.2 → ngio-0.4.4}/docs/api/ngio/iterators.md +0 -0
  30. {ngio-0.4.2 → ngio-0.4.4}/docs/api/ngio/ngio.md +0 -0
  31. {ngio-0.4.2 → ngio-0.4.4}/docs/api/ngio/tables.md +0 -0
  32. {ngio-0.4.2 → ngio-0.4.4}/docs/api/ngio/transforms.md +0 -0
  33. {ngio-0.4.2 → ngio-0.4.4}/docs/api/ngio/utils.md +0 -0
  34. {ngio-0.4.2 → ngio-0.4.4}/docs/api/ome_zarr_container.md +0 -0
  35. {ngio-0.4.2 → ngio-0.4.4}/docs/api/tables.md +0 -0
  36. {ngio-0.4.2 → ngio-0.4.4}/docs/changelog.md +0 -0
  37. {ngio-0.4.2 → ngio-0.4.4}/docs/code_of_conduct.md +0 -0
  38. {ngio-0.4.2 → ngio-0.4.4}/docs/contributing.md +0 -0
  39. {ngio-0.4.2 → ngio-0.4.4}/docs/getting_started/0_quickstart.md +0 -0
  40. {ngio-0.4.2 → ngio-0.4.4}/docs/getting_started/1_ome_zarr_containers.md +0 -0
  41. {ngio-0.4.2 → ngio-0.4.4}/docs/getting_started/2_images.md +0 -0
  42. {ngio-0.4.2 → ngio-0.4.4}/docs/getting_started/3_tables.md +0 -0
  43. {ngio-0.4.2 → ngio-0.4.4}/docs/getting_started/4_masked_images.md +0 -0
  44. {ngio-0.4.2 → ngio-0.4.4}/docs/getting_started/5_hcs.md +0 -0
  45. {ngio-0.4.2 → ngio-0.4.4}/docs/getting_started/6_iterators.md +0 -0
  46. {ngio-0.4.2 → ngio-0.4.4}/docs/index.md +0 -0
  47. {ngio-0.4.2 → ngio-0.4.4}/docs/table_specs/backend.md +0 -0
  48. {ngio-0.4.2 → ngio-0.4.4}/docs/table_specs/overview.md +0 -0
  49. {ngio-0.4.2 → ngio-0.4.4}/docs/table_specs/table_types/condition_table.md +0 -0
  50. {ngio-0.4.2 → ngio-0.4.4}/docs/table_specs/table_types/custom_table.md +0 -0
  51. {ngio-0.4.2 → ngio-0.4.4}/docs/table_specs/table_types/feature_table.md +0 -0
  52. {ngio-0.4.2 → ngio-0.4.4}/docs/table_specs/table_types/generic_table.md +0 -0
  53. {ngio-0.4.2 → ngio-0.4.4}/docs/table_specs/table_types/masking_roi_table.md +0 -0
  54. {ngio-0.4.2 → ngio-0.4.4}/docs/table_specs/table_types/roi_table.md +0 -0
  55. {ngio-0.4.2 → ngio-0.4.4}/docs/tutorials/create_ome_zarr.ipynb +0 -0
  56. {ngio-0.4.2 → ngio-0.4.4}/docs/tutorials/feature_extraction.ipynb +0 -0
  57. {ngio-0.4.2 → ngio-0.4.4}/docs/tutorials/hcs_exploration.ipynb +0 -0
  58. {ngio-0.4.2 → ngio-0.4.4}/docs/tutorials/image_processing.ipynb +0 -0
  59. {ngio-0.4.2 → ngio-0.4.4}/docs/tutorials/image_segmentation.ipynb +0 -0
  60. {ngio-0.4.2 → ngio-0.4.4}/mkdocs.yml +0 -0
  61. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/__init__.py +0 -0
  62. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/common/__init__.py +0 -0
  63. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/common/_dimensions.py +0 -0
  64. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/common/_masking_roi.py +0 -0
  65. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/common/_pyramid.py +0 -0
  66. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/common/_roi.py +0 -0
  67. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/common/_synt_images_utils.py +0 -0
  68. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/common/_zoom.py +0 -0
  69. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/experimental/__init__.py +0 -0
  70. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/experimental/iterators/__init__.py +0 -0
  71. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/experimental/iterators/_abstract_iterator.py +0 -0
  72. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/experimental/iterators/_feature.py +0 -0
  73. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/experimental/iterators/_image_processing.py +0 -0
  74. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/experimental/iterators/_mappers.py +0 -0
  75. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/experimental/iterators/_rois_utils.py +0 -0
  76. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/experimental/iterators/_segmentation.py +0 -0
  77. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/hcs/__init__.py +0 -0
  78. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/hcs/_plate.py +0 -0
  79. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/images/__init__.py +0 -0
  80. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/images/_abstract_image.py +0 -0
  81. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/images/_create.py +0 -0
  82. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/images/_create_synt_container.py +0 -0
  83. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/images/_masked_image.py +0 -0
  84. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/images/_ome_zarr_container.py +0 -0
  85. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/images/_table_ops.py +0 -0
  86. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/io_pipes/__init__.py +0 -0
  87. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/io_pipes/_io_pipes.py +0 -0
  88. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/io_pipes/_io_pipes_masked.py +0 -0
  89. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/io_pipes/_io_pipes_roi.py +0 -0
  90. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/io_pipes/_io_pipes_types.py +0 -0
  91. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/io_pipes/_match_shape.py +0 -0
  92. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/io_pipes/_ops_axes.py +0 -0
  93. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/io_pipes/_ops_slices.py +0 -0
  94. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/io_pipes/_ops_slices_utils.py +0 -0
  95. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/io_pipes/_ops_transforms.py +0 -0
  96. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/io_pipes/_zoom_transform.py +0 -0
  97. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/ome_zarr_meta/__init__.py +0 -0
  98. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/ome_zarr_meta/_meta_handlers.py +0 -0
  99. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/ome_zarr_meta/ngio_specs/__init__.py +0 -0
  100. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/ome_zarr_meta/ngio_specs/_axes.py +0 -0
  101. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/ome_zarr_meta/ngio_specs/_dataset.py +0 -0
  102. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/ome_zarr_meta/ngio_specs/_ngio_hcs.py +0 -0
  103. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/ome_zarr_meta/ngio_specs/_ngio_image.py +0 -0
  104. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/ome_zarr_meta/ngio_specs/_pixel_size.py +0 -0
  105. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/ome_zarr_meta/v04/__init__.py +0 -0
  106. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/ome_zarr_meta/v04/_custom_models.py +0 -0
  107. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/ome_zarr_meta/v04/_v04_spec_utils.py +0 -0
  108. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/mask.png +0 -0
  109. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/nuclei.png +0 -0
  110. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/raw.jpg +0 -0
  111. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/resources/__init__.py +0 -0
  112. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/resources/resource_model.py +0 -0
  113. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/tables/__init__.py +0 -0
  114. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/tables/_abstract_table.py +0 -0
  115. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/tables/_tables_container.py +0 -0
  116. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/tables/backends/__init__.py +0 -0
  117. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/tables/backends/_abstract_backend.py +0 -0
  118. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/tables/backends/_anndata.py +0 -0
  119. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/tables/backends/_anndata_utils.py +0 -0
  120. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/tables/backends/_csv.py +0 -0
  121. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/tables/backends/_json.py +0 -0
  122. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/tables/backends/_non_zarr_backends.py +0 -0
  123. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/tables/backends/_parquet.py +0 -0
  124. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/tables/backends/_table_backends.py +0 -0
  125. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/tables/backends/_utils.py +0 -0
  126. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/tables/v1/__init__.py +0 -0
  127. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/tables/v1/_condition_table.py +0 -0
  128. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/tables/v1/_feature_table.py +0 -0
  129. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/tables/v1/_generic_table.py +0 -0
  130. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/tables/v1/_roi_table.py +0 -0
  131. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/transforms/__init__.py +0 -0
  132. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/transforms/_zoom.py +0 -0
  133. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/utils/__init__.py +0 -0
  134. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/utils/_datasets.py +0 -0
  135. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/utils/_errors.py +0 -0
  136. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/utils/_fractal_fsspec_store.py +0 -0
  137. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/utils/_logger.py +0 -0
  138. {ngio-0.4.2 → ngio-0.4.4}/src/ngio/utils/_zarr_utils.py +0 -0
  139. {ngio-0.4.2 → ngio-0.4.4}/tests/conftest.py +0 -0
  140. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_c1yx.zarr/.zattrs +0 -0
  141. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_c1yx.zarr/.zgroup +0 -0
  142. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_c1yx.zarr/0/.zarray +0 -0
  143. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_c1yx.zarr/1/.zarray +0 -0
  144. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_c1yx.zarr/labels/.zattrs +0 -0
  145. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_c1yx.zarr/labels/.zgroup +0 -0
  146. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zattrs +0 -0
  147. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zgroup +0 -0
  148. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/0/.zarray +0 -0
  149. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/1/.zarray +0 -0
  150. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_cyx.zarr/.zattrs +0 -0
  151. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_cyx.zarr/.zgroup +0 -0
  152. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_cyx.zarr/0/.zarray +0 -0
  153. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_cyx.zarr/1/.zarray +0 -0
  154. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_cyx.zarr/labels/.zattrs +0 -0
  155. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_cyx.zarr/labels/.zgroup +0 -0
  156. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zattrs +0 -0
  157. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zgroup +0 -0
  158. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_cyx.zarr/labels/label/0/.zarray +0 -0
  159. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_cyx.zarr/labels/label/1/.zarray +0 -0
  160. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_czyx.zarr/.zattrs +0 -0
  161. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_czyx.zarr/.zgroup +0 -0
  162. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_czyx.zarr/0/.zarray +0 -0
  163. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_czyx.zarr/1/.zarray +0 -0
  164. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_czyx.zarr/labels/.zattrs +0 -0
  165. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_czyx.zarr/labels/.zgroup +0 -0
  166. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zattrs +0 -0
  167. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zgroup +0 -0
  168. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_czyx.zarr/labels/label/0/.zarray +0 -0
  169. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_czyx.zarr/labels/label/1/.zarray +0 -0
  170. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tcyx.zarr/.zattrs +0 -0
  171. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tcyx.zarr/.zgroup +0 -0
  172. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tcyx.zarr/0/.zarray +0 -0
  173. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tcyx.zarr/1/.zarray +0 -0
  174. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tcyx.zarr/labels/.zattrs +0 -0
  175. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tcyx.zarr/labels/.zgroup +0 -0
  176. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zattrs +0 -0
  177. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zgroup +0 -0
  178. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/0/.zarray +0 -0
  179. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/1/.zarray +0 -0
  180. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tczyx.zarr/.zattrs +0 -0
  181. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tczyx.zarr/.zgroup +0 -0
  182. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tczyx.zarr/0/.zarray +0 -0
  183. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tczyx.zarr/1/.zarray +0 -0
  184. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tczyx.zarr/labels/.zattrs +0 -0
  185. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tczyx.zarr/labels/.zgroup +0 -0
  186. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zattrs +0 -0
  187. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zgroup +0 -0
  188. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/0/.zarray +0 -0
  189. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/1/.zarray +0 -0
  190. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tyx.zarr/.zattrs +0 -0
  191. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tyx.zarr/.zgroup +0 -0
  192. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tyx.zarr/0/.zarray +0 -0
  193. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tyx.zarr/1/.zarray +0 -0
  194. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tyx.zarr/labels/.zattrs +0 -0
  195. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tyx.zarr/labels/.zgroup +0 -0
  196. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zattrs +0 -0
  197. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zgroup +0 -0
  198. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tyx.zarr/labels/label/0/.zarray +0 -0
  199. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tyx.zarr/labels/label/1/.zarray +0 -0
  200. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tzyx.zarr/.zattrs +0 -0
  201. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tzyx.zarr/.zgroup +0 -0
  202. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tzyx.zarr/0/.zarray +0 -0
  203. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tzyx.zarr/1/.zarray +0 -0
  204. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tzyx.zarr/labels/.zattrs +0 -0
  205. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tzyx.zarr/labels/.zgroup +0 -0
  206. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zattrs +0 -0
  207. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zgroup +0 -0
  208. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/0/.zarray +0 -0
  209. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/1/.zarray +0 -0
  210. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_yx.zarr/.zattrs +0 -0
  211. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_yx.zarr/.zgroup +0 -0
  212. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_yx.zarr/0/.zarray +0 -0
  213. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_yx.zarr/1/.zarray +0 -0
  214. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_yx.zarr/labels/.zattrs +0 -0
  215. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_yx.zarr/labels/.zgroup +0 -0
  216. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_yx.zarr/labels/label/.zattrs +0 -0
  217. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_yx.zarr/labels/label/.zgroup +0 -0
  218. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_yx.zarr/labels/label/0/.zarray +0 -0
  219. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_yx.zarr/labels/label/1/.zarray +0 -0
  220. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_zyx.zarr/.zattrs +0 -0
  221. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_zyx.zarr/.zgroup +0 -0
  222. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_zyx.zarr/0/.zarray +0 -0
  223. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_zyx.zarr/1/.zarray +0 -0
  224. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_zyx.zarr/labels/.zattrs +0 -0
  225. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_zyx.zarr/labels/.zgroup +0 -0
  226. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zattrs +0 -0
  227. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zgroup +0 -0
  228. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_zyx.zarr/labels/label/0/.zarray +0 -0
  229. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/images/test_image_zyx.zarr/labels/label/1/.zarray +0 -0
  230. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/meta/base_ome_zarr_image_meta.json +0 -0
  231. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/meta/base_ome_zarr_image_meta_wrong_axis_order.json +0 -0
  232. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/meta/base_ome_zarr_label_meta.json +0 -0
  233. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/meta/base_ome_zarr_well_meta.json +0 -0
  234. {ngio-0.4.2 → ngio-0.4.4}/tests/data/v04/meta/ome_zarr_well_path_normalization_meta.json +0 -0
  235. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/common/test_dimensions.py +0 -0
  236. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/common/test_pyramid.py +0 -0
  237. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/common/test_roi.py +0 -0
  238. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/common/test_transforms.py +0 -0
  239. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/hcs/test_plate.py +0 -0
  240. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/hcs/test_well.py +0 -0
  241. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/images/test_create.py +0 -0
  242. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/images/test_masked_images.py +0 -0
  243. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/images/test_table_ops.py +0 -0
  244. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/io_pipes/test_axes_ops.py +0 -0
  245. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/io_pipes/test_slicing_ops.py +0 -0
  246. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/iterators/test_iterators.py +0 -0
  247. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/ome_zarr_meta/test_image_handler.py +0 -0
  248. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/ome_zarr_meta/test_unit_ngio_specs.py +0 -0
  249. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/ome_zarr_meta/test_unit_v04_utils.py +0 -0
  250. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/tables/test_backends.py +0 -0
  251. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/tables/test_backends_utils.py +0 -0
  252. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/tables/test_feature_table.py +0 -0
  253. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/tables/test_generic_table.py +0 -0
  254. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/tables/test_masking_roi_table_v1.py +0 -0
  255. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/tables/test_roi_table_v1.py +0 -0
  256. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/tables/test_table_group.py +0 -0
  257. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/utils/test_download_datasets.py +0 -0
  258. {ngio-0.4.2 → ngio-0.4.4}/tests/unit/utils/test_zarr_utils.py +0 -0
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## [v0.4.4]
4
+
5
+ ### Bug Fixes
6
+
7
+ - Fix bug in channel visualization when using hex colors with leading '#'.
8
+ - Remove strict range check in channel window.
9
+
10
+ ## [v0.4.3]
11
+
12
+ ### Bug Fixes
13
+
14
+ - Fix bug in deriving labels and image from OME-Zarr with non standard path names.
15
+ - Add missing pillow dependency.
16
+ - Update pixi workspace config.
17
+
3
18
  ## [v0.4.2]
4
19
 
5
20
  ### API Changes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ngio
3
- Version: 0.4.2
3
+ Version: 0.4.4
4
4
  Summary: Next Generation file format IO
5
5
  Project-URL: homepage, https://github.com/BioVisionCenter/ngio
6
6
  Project-URL: repository, https://github.com/BioVisionCenter/ngio
@@ -23,6 +23,7 @@ Requires-Dist: filelock
23
23
  Requires-Dist: numpy
24
24
  Requires-Dist: ome-zarr-models
25
25
  Requires-Dist: pandas>=1.2.0
26
+ Requires-Dist: pillow
26
27
  Requires-Dist: polars
27
28
  Requires-Dist: pooch
28
29
  Requires-Dist: pyarrow
@@ -48,6 +48,7 @@ dependencies = [
48
48
  "pooch",
49
49
  "polars",
50
50
  "pyarrow",
51
+ "pillow",
51
52
  ]
52
53
 
53
54
  # https://peps.python.org/pep-0621/#dependencies-optional-dependencies
@@ -186,7 +187,7 @@ source = ["ngio"]
186
187
  [tool.check-manifest]
187
188
  ignore = [".pre-commit-config.yaml", ".ruff_cache/**/*", "tests/**/*"]
188
189
 
189
- [tool.pixi.project]
190
+ [tool.pixi.workspace]
190
191
  channels = ["conda-forge"]
191
192
  platforms = ["osx-arm64", "linux-64", "win-64"]
192
193
 
@@ -801,7 +801,7 @@ def derive_image_container(
801
801
  pixelsize=pixel_size.x,
802
802
  z_spacing=pixel_size.z,
803
803
  time_spacing=pixel_size.t,
804
- levels=ref_meta.levels,
804
+ levels=ref_meta.paths,
805
805
  yx_scaling_factor=ref_meta.yx_scaling(),
806
806
  z_scaling_factor=ref_meta.z_scaling(),
807
807
  time_unit=pixel_size.time_unit,
@@ -318,7 +318,7 @@ def derive_label(
318
318
  pixelsize=ref_image.pixel_size.x,
319
319
  z_spacing=ref_image.pixel_size.z,
320
320
  time_spacing=ref_image.pixel_size.t,
321
- levels=ref_meta.levels,
321
+ levels=ref_meta.paths,
322
322
  yx_scaling_factor=ref_meta.yx_scaling(),
323
323
  z_scaling_factor=ref_meta.z_scaling(),
324
324
  time_unit=ref_image.pixel_size.time_unit,
@@ -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,
@@ -220,3 +220,24 @@ def test_zoom_virtual_axes(
220
220
  # Roi data should match exactly except for virtual axis
221
221
  assert img1_data.shape[1:] == img2_roi_data.shape[1:]
222
222
  img2.set_roi(roi=roi, patch=img2_roi_data, transforms=[zoom], axes_order="czyx")
223
+
224
+
225
+ def test_derive_image_consistency(
226
+ tmp_path: Path,
227
+ ):
228
+ path1 = tmp_path / "image1.zarr"
229
+ ome_zarr = create_empty_ome_zarr(
230
+ store=path1,
231
+ shape=(3, 16, 16, 16),
232
+ axes_names="czyx",
233
+ xy_pixelsize=1.0,
234
+ levels=["s0", "s1", "s2"],
235
+ )
236
+ ome_zarr_der = ome_zarr.derive_image(tmp_path / "derived_image.zarr")
237
+ assert ome_zarr.channel_labels == ome_zarr_der.channel_labels
238
+ assert ome_zarr.levels_paths == ome_zarr_der.levels_paths
239
+ assert ome_zarr.space_unit == ome_zarr_der.space_unit
240
+ assert ome_zarr.time_unit == ome_zarr_der.time_unit
241
+
242
+ label = ome_zarr.derive_label("derived_label")
243
+ assert label.path == "s0"
@@ -296,3 +296,18 @@ def test_get_and_squeeze(tmp_path: Path):
296
296
  image.get_as_dask(
297
297
  channel_selection=ChannelSelectionModel(identifier="0", mode="index")
298
298
  )
299
+
300
+
301
+ def test_derive_image_and_labels(tmp_path: Path):
302
+ # Testing for #116
303
+ store = tmp_path / "ome_zarr.zarr"
304
+ ome_zarr = create_empty_ome_zarr(
305
+ store,
306
+ shape=(3, 20, 30),
307
+ xy_pixelsize=0.5,
308
+ levels=1,
309
+ axes_names=["c", "y", "x"],
310
+ dtype="uint8",
311
+ )
312
+ derived_ome_zarr = ome_zarr.derive_image(tmp_path / "derived.zarr")
313
+ _ = derived_ome_zarr.derive_label("derived_label")
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