ngio 0.4.7__tar.gz → 0.5.0__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 (546) hide show
  1. {ngio-0.4.7 → ngio-0.5.0}/.github/workflows/build_docs.yml +3 -4
  2. {ngio-0.4.7 → ngio-0.5.0}/.github/workflows/ci.yml +4 -3
  3. {ngio-0.4.7 → ngio-0.5.0}/.gitignore +5 -1
  4. ngio-0.5.0/CHANGELOG.md +190 -0
  5. {ngio-0.4.7 → ngio-0.5.0}/PKG-INFO +13 -6
  6. ngio-0.5.0/docs/api/ngio/ngio.md +17 -0
  7. ngio-0.5.0/docs/changelog.md +3 -0
  8. {ngio-0.4.7 → ngio-0.5.0}/docs/getting_started/0_quickstart.md +1 -1
  9. {ngio-0.4.7 → ngio-0.5.0}/docs/getting_started/1_ome_zarr_containers.md +65 -6
  10. {ngio-0.4.7 → ngio-0.5.0}/docs/getting_started/2_images.md +1 -1
  11. {ngio-0.4.7 → ngio-0.5.0}/docs/getting_started/3_tables.md +13 -11
  12. {ngio-0.4.7 → ngio-0.5.0}/docs/getting_started/4_masked_images.md +7 -7
  13. {ngio-0.4.7 → ngio-0.5.0}/docs/index.md +2 -3
  14. {ngio-0.4.7 → ngio-0.5.0}/docs/tutorials/create_ome_zarr.ipynb +2 -2
  15. {ngio-0.4.7 → ngio-0.5.0}/docs/tutorials/feature_extraction.ipynb +8 -1
  16. {ngio-0.4.7 → ngio-0.5.0}/docs/tutorials/hcs_exploration.ipynb +8 -1
  17. {ngio-0.4.7 → ngio-0.5.0}/docs/tutorials/image_processing.ipynb +8 -1
  18. {ngio-0.4.7 → ngio-0.5.0}/docs/tutorials/image_segmentation.ipynb +1 -8
  19. {ngio-0.4.7 → ngio-0.5.0}/pyproject.toml +21 -7
  20. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/__init__.py +5 -2
  21. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/common/__init__.py +11 -6
  22. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/common/_masking_roi.py +34 -54
  23. ngio-0.5.0/src/ngio/common/_pyramid.py +507 -0
  24. ngio-0.5.0/src/ngio/common/_roi.py +315 -0
  25. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/experimental/iterators/_feature.py +3 -3
  26. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/experimental/iterators/_rois_utils.py +10 -11
  27. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/hcs/_plate.py +192 -136
  28. ngio-0.5.0/src/ngio/images/_abstract_image.py +1091 -0
  29. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/images/_create_synt_container.py +45 -47
  30. ngio-0.5.0/src/ngio/images/_create_utils.py +406 -0
  31. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/images/_image.py +524 -248
  32. ngio-0.5.0/src/ngio/images/_label.py +419 -0
  33. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/images/_masked_image.py +2 -2
  34. ngio-0.5.0/src/ngio/images/_ome_zarr_container.py +1424 -0
  35. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/io_pipes/_io_pipes.py +9 -9
  36. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/io_pipes/_io_pipes_masked.py +7 -7
  37. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/io_pipes/_io_pipes_roi.py +6 -6
  38. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/io_pipes/_io_pipes_types.py +3 -3
  39. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/io_pipes/_match_shape.py +6 -8
  40. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/io_pipes/_ops_slices_utils.py +8 -5
  41. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/ome_zarr_meta/__init__.py +29 -18
  42. ngio-0.5.0/src/ngio/ome_zarr_meta/_meta_handlers.py +512 -0
  43. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/ome_zarr_meta/ngio_specs/__init__.py +4 -0
  44. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/ome_zarr_meta/ngio_specs/_axes.py +152 -51
  45. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/ome_zarr_meta/ngio_specs/_dataset.py +13 -22
  46. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/ome_zarr_meta/ngio_specs/_ngio_hcs.py +129 -91
  47. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/ome_zarr_meta/ngio_specs/_ngio_image.py +69 -69
  48. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/ome_zarr_meta/v04/__init__.py +5 -1
  49. ngio-0.4.7/src/ngio/ome_zarr_meta/v04/_v04_spec_utils.py → ngio-0.5.0/src/ngio/ome_zarr_meta/v04/_v04_spec.py +55 -86
  50. ngio-0.5.0/src/ngio/ome_zarr_meta/v05/__init__.py +27 -0
  51. ngio-0.5.0/src/ngio/ome_zarr_meta/v05/_custom_models.py +18 -0
  52. ngio-0.5.0/src/ngio/ome_zarr_meta/v05/_v05_spec.py +495 -0
  53. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/resources/__init__.py +1 -1
  54. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/resources/resource_model.py +1 -1
  55. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/tables/_tables_container.py +82 -24
  56. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/tables/backends/_abstract_backend.py +7 -0
  57. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/tables/backends/_anndata.py +60 -7
  58. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/tables/backends/_anndata_utils.py +2 -4
  59. ngio-0.5.0/src/ngio/tables/backends/_csv.py +19 -0
  60. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/tables/backends/_json.py +10 -13
  61. ngio-0.5.0/src/ngio/tables/backends/_parquet.py +19 -0
  62. ngio-0.5.0/src/ngio/tables/backends/_py_arrow_backends.py +222 -0
  63. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/tables/backends/_utils.py +1 -1
  64. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/tables/v1/_roi_table.py +41 -24
  65. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/utils/__init__.py +8 -12
  66. ngio-0.5.0/src/ngio/utils/_cache.py +48 -0
  67. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/utils/_datasets.py +6 -0
  68. ngio-0.5.0/src/ngio/utils/_zarr_utils.py +533 -0
  69. {ngio-0.4.7 → ngio-0.5.0}/tests/conftest.py +12 -6
  70. ngio-0.5.0/tests/create_test_data.py +78 -0
  71. ngio-0.5.0/tests/data/v04/images/test_image_c1yx.zarr/.zattrs +86 -0
  72. ngio-0.5.0/tests/data/v04/images/test_image_c1yx.zarr/.zgroup +3 -0
  73. ngio-0.5.0/tests/data/v04/images/test_image_c1yx.zarr/0/.zarray +27 -0
  74. ngio-0.5.0/tests/data/v04/images/test_image_c1yx.zarr/0/.zattrs +1 -0
  75. ngio-0.5.0/tests/data/v04/images/test_image_c1yx.zarr/1/.zarray +27 -0
  76. ngio-0.5.0/tests/data/v04/images/test_image_c1yx.zarr/1/.zattrs +1 -0
  77. ngio-0.5.0/tests/data/v04/images/test_image_c1yx.zarr/labels/.zattrs +5 -0
  78. ngio-0.5.0/tests/data/v04/images/test_image_c1yx.zarr/labels/.zgroup +3 -0
  79. ngio-0.5.0/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zattrs +59 -0
  80. ngio-0.5.0/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zgroup +3 -0
  81. ngio-0.5.0/tests/data/v04/images/test_image_c1yx.zarr/labels/label/0/.zarray +25 -0
  82. ngio-0.5.0/tests/data/v04/images/test_image_c1yx.zarr/labels/label/0/.zattrs +1 -0
  83. ngio-0.5.0/tests/data/v04/images/test_image_c1yx.zarr/labels/label/1/.zarray +25 -0
  84. ngio-0.5.0/tests/data/v04/images/test_image_c1yx.zarr/labels/label/1/.zattrs +1 -0
  85. ngio-0.5.0/tests/data/v04/images/test_image_c1yx.zarr/tables/.zattrs +5 -0
  86. ngio-0.5.0/tests/data/v04/images/test_image_c1yx.zarr/tables/.zgroup +3 -0
  87. ngio-0.5.0/tests/data/v04/images/test_image_c1yx.zarr/tables/well_ROI_table/.zattrs +7 -0
  88. ngio-0.5.0/tests/data/v04/images/test_image_c1yx.zarr/tables/well_ROI_table/.zgroup +3 -0
  89. ngio-0.5.0/tests/data/v04/images/test_image_c1yx.zarr/tables/well_ROI_table/table.csv +2 -0
  90. ngio-0.5.0/tests/data/v04/images/test_image_cyx.zarr/.zattrs +79 -0
  91. ngio-0.5.0/tests/data/v04/images/test_image_cyx.zarr/.zgroup +3 -0
  92. ngio-0.5.0/tests/data/v04/images/test_image_cyx.zarr/0/.zarray +25 -0
  93. ngio-0.5.0/tests/data/v04/images/test_image_cyx.zarr/0/.zattrs +1 -0
  94. ngio-0.5.0/tests/data/v04/images/test_image_cyx.zarr/1/.zarray +25 -0
  95. ngio-0.5.0/tests/data/v04/images/test_image_cyx.zarr/1/.zattrs +1 -0
  96. ngio-0.5.0/tests/data/v04/images/test_image_cyx.zarr/labels/.zattrs +5 -0
  97. ngio-0.5.0/tests/data/v04/images/test_image_cyx.zarr/labels/.zgroup +3 -0
  98. ngio-0.5.0/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zattrs +52 -0
  99. ngio-0.5.0/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zgroup +3 -0
  100. ngio-0.5.0/tests/data/v04/images/test_image_cyx.zarr/labels/label/0/.zarray +23 -0
  101. ngio-0.5.0/tests/data/v04/images/test_image_cyx.zarr/labels/label/0/.zattrs +1 -0
  102. ngio-0.5.0/tests/data/v04/images/test_image_cyx.zarr/labels/label/1/.zarray +23 -0
  103. ngio-0.5.0/tests/data/v04/images/test_image_cyx.zarr/labels/label/1/.zattrs +1 -0
  104. ngio-0.5.0/tests/data/v04/images/test_image_cyx.zarr/tables/.zattrs +5 -0
  105. ngio-0.5.0/tests/data/v04/images/test_image_cyx.zarr/tables/.zgroup +3 -0
  106. ngio-0.5.0/tests/data/v04/images/test_image_cyx.zarr/tables/well_ROI_table/.zattrs +7 -0
  107. ngio-0.5.0/tests/data/v04/images/test_image_cyx.zarr/tables/well_ROI_table/.zgroup +3 -0
  108. ngio-0.5.0/tests/data/v04/images/test_image_cyx.zarr/tables/well_ROI_table/table.csv +2 -0
  109. ngio-0.5.0/tests/data/v04/images/test_image_czyx.zarr/.zattrs +86 -0
  110. ngio-0.5.0/tests/data/v04/images/test_image_czyx.zarr/.zgroup +3 -0
  111. ngio-0.5.0/tests/data/v04/images/test_image_czyx.zarr/0/.zarray +27 -0
  112. ngio-0.5.0/tests/data/v04/images/test_image_czyx.zarr/0/.zattrs +1 -0
  113. ngio-0.5.0/tests/data/v04/images/test_image_czyx.zarr/1/.zarray +27 -0
  114. ngio-0.5.0/tests/data/v04/images/test_image_czyx.zarr/1/.zattrs +1 -0
  115. ngio-0.5.0/tests/data/v04/images/test_image_czyx.zarr/labels/.zattrs +5 -0
  116. ngio-0.5.0/tests/data/v04/images/test_image_czyx.zarr/labels/.zgroup +3 -0
  117. ngio-0.5.0/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zattrs +59 -0
  118. ngio-0.5.0/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zgroup +3 -0
  119. ngio-0.5.0/tests/data/v04/images/test_image_czyx.zarr/labels/label/0/.zarray +25 -0
  120. ngio-0.5.0/tests/data/v04/images/test_image_czyx.zarr/labels/label/0/.zattrs +1 -0
  121. ngio-0.5.0/tests/data/v04/images/test_image_czyx.zarr/labels/label/1/.zarray +25 -0
  122. ngio-0.5.0/tests/data/v04/images/test_image_czyx.zarr/labels/label/1/.zattrs +1 -0
  123. ngio-0.5.0/tests/data/v04/images/test_image_czyx.zarr/tables/.zattrs +5 -0
  124. ngio-0.5.0/tests/data/v04/images/test_image_czyx.zarr/tables/.zgroup +3 -0
  125. ngio-0.5.0/tests/data/v04/images/test_image_czyx.zarr/tables/well_ROI_table/.zattrs +7 -0
  126. ngio-0.5.0/tests/data/v04/images/test_image_czyx.zarr/tables/well_ROI_table/.zgroup +3 -0
  127. ngio-0.5.0/tests/data/v04/images/test_image_czyx.zarr/tables/well_ROI_table/table.csv +2 -0
  128. ngio-0.5.0/tests/data/v04/images/test_image_tcyx.zarr/.zattrs +98 -0
  129. ngio-0.5.0/tests/data/v04/images/test_image_tcyx.zarr/.zgroup +3 -0
  130. ngio-0.5.0/tests/data/v04/images/test_image_tcyx.zarr/0/.zarray +27 -0
  131. ngio-0.5.0/tests/data/v04/images/test_image_tcyx.zarr/0/.zattrs +1 -0
  132. ngio-0.5.0/tests/data/v04/images/test_image_tcyx.zarr/1/.zarray +27 -0
  133. ngio-0.5.0/tests/data/v04/images/test_image_tcyx.zarr/1/.zattrs +1 -0
  134. ngio-0.5.0/tests/data/v04/images/test_image_tcyx.zarr/labels/.zattrs +5 -0
  135. ngio-0.5.0/tests/data/v04/images/test_image_tcyx.zarr/labels/.zgroup +3 -0
  136. ngio-0.5.0/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zattrs +59 -0
  137. ngio-0.5.0/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zgroup +3 -0
  138. ngio-0.5.0/tests/data/v04/images/test_image_tcyx.zarr/labels/label/0/.zarray +25 -0
  139. ngio-0.5.0/tests/data/v04/images/test_image_tcyx.zarr/labels/label/0/.zattrs +1 -0
  140. ngio-0.5.0/tests/data/v04/images/test_image_tcyx.zarr/labels/label/1/.zarray +25 -0
  141. ngio-0.5.0/tests/data/v04/images/test_image_tcyx.zarr/labels/label/1/.zattrs +1 -0
  142. ngio-0.5.0/tests/data/v04/images/test_image_tcyx.zarr/tables/.zattrs +5 -0
  143. ngio-0.5.0/tests/data/v04/images/test_image_tcyx.zarr/tables/.zgroup +3 -0
  144. ngio-0.5.0/tests/data/v04/images/test_image_tcyx.zarr/tables/well_ROI_table/.zattrs +7 -0
  145. ngio-0.5.0/tests/data/v04/images/test_image_tcyx.zarr/tables/well_ROI_table/.zgroup +3 -0
  146. ngio-0.5.0/tests/data/v04/images/test_image_tcyx.zarr/tables/well_ROI_table/table.csv +2 -0
  147. ngio-0.5.0/tests/data/v04/images/test_image_tczyx.zarr/.zattrs +93 -0
  148. ngio-0.5.0/tests/data/v04/images/test_image_tczyx.zarr/.zgroup +3 -0
  149. ngio-0.5.0/tests/data/v04/images/test_image_tczyx.zarr/0/.zarray +29 -0
  150. ngio-0.5.0/tests/data/v04/images/test_image_tczyx.zarr/0/.zattrs +1 -0
  151. ngio-0.5.0/tests/data/v04/images/test_image_tczyx.zarr/1/.zarray +29 -0
  152. ngio-0.5.0/tests/data/v04/images/test_image_tczyx.zarr/1/.zattrs +1 -0
  153. ngio-0.5.0/tests/data/v04/images/test_image_tczyx.zarr/labels/.zattrs +5 -0
  154. ngio-0.5.0/tests/data/v04/images/test_image_tczyx.zarr/labels/.zgroup +3 -0
  155. ngio-0.5.0/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zattrs +66 -0
  156. ngio-0.5.0/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zgroup +3 -0
  157. ngio-0.5.0/tests/data/v04/images/test_image_tczyx.zarr/labels/label/0/.zarray +27 -0
  158. ngio-0.5.0/tests/data/v04/images/test_image_tczyx.zarr/labels/label/0/.zattrs +1 -0
  159. ngio-0.5.0/tests/data/v04/images/test_image_tczyx.zarr/labels/label/1/.zarray +27 -0
  160. ngio-0.5.0/tests/data/v04/images/test_image_tczyx.zarr/labels/label/1/.zattrs +1 -0
  161. ngio-0.5.0/tests/data/v04/images/test_image_tczyx.zarr/tables/.zattrs +5 -0
  162. ngio-0.5.0/tests/data/v04/images/test_image_tczyx.zarr/tables/.zgroup +3 -0
  163. ngio-0.5.0/tests/data/v04/images/test_image_tczyx.zarr/tables/well_ROI_table/.zattrs +7 -0
  164. ngio-0.5.0/tests/data/v04/images/test_image_tczyx.zarr/tables/well_ROI_table/.zgroup +3 -0
  165. ngio-0.5.0/tests/data/v04/images/test_image_tczyx.zarr/tables/well_ROI_table/table.csv +2 -0
  166. ngio-0.5.0/tests/data/v04/images/test_image_tyx.zarr/.zattrs +68 -0
  167. ngio-0.5.0/tests/data/v04/images/test_image_tyx.zarr/.zgroup +3 -0
  168. ngio-0.5.0/tests/data/v04/images/test_image_tyx.zarr/0/.zarray +25 -0
  169. ngio-0.5.0/tests/data/v04/images/test_image_tyx.zarr/0/.zattrs +1 -0
  170. ngio-0.5.0/tests/data/v04/images/test_image_tyx.zarr/1/.zarray +25 -0
  171. ngio-0.5.0/tests/data/v04/images/test_image_tyx.zarr/1/.zattrs +1 -0
  172. ngio-0.5.0/tests/data/v04/images/test_image_tyx.zarr/labels/.zattrs +5 -0
  173. ngio-0.5.0/tests/data/v04/images/test_image_tyx.zarr/labels/.zgroup +3 -0
  174. ngio-0.5.0/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zattrs +59 -0
  175. ngio-0.5.0/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zgroup +3 -0
  176. ngio-0.5.0/tests/data/v04/images/test_image_tyx.zarr/labels/label/0/.zarray +25 -0
  177. ngio-0.5.0/tests/data/v04/images/test_image_tyx.zarr/labels/label/0/.zattrs +1 -0
  178. ngio-0.5.0/tests/data/v04/images/test_image_tyx.zarr/labels/label/1/.zarray +25 -0
  179. ngio-0.5.0/tests/data/v04/images/test_image_tyx.zarr/labels/label/1/.zattrs +1 -0
  180. ngio-0.5.0/tests/data/v04/images/test_image_tyx.zarr/tables/.zattrs +5 -0
  181. ngio-0.5.0/tests/data/v04/images/test_image_tyx.zarr/tables/.zgroup +3 -0
  182. ngio-0.5.0/tests/data/v04/images/test_image_tyx.zarr/tables/well_ROI_table/.zattrs +7 -0
  183. ngio-0.5.0/tests/data/v04/images/test_image_tyx.zarr/tables/well_ROI_table/.zgroup +3 -0
  184. ngio-0.5.0/tests/data/v04/images/test_image_tyx.zarr/tables/well_ROI_table/table.csv +2 -0
  185. ngio-0.5.0/tests/data/v04/images/test_image_tzyx.zarr/.zattrs +75 -0
  186. ngio-0.5.0/tests/data/v04/images/test_image_tzyx.zarr/.zgroup +3 -0
  187. ngio-0.5.0/tests/data/v04/images/test_image_tzyx.zarr/0/.zarray +27 -0
  188. ngio-0.5.0/tests/data/v04/images/test_image_tzyx.zarr/0/.zattrs +1 -0
  189. ngio-0.5.0/tests/data/v04/images/test_image_tzyx.zarr/1/.zarray +27 -0
  190. ngio-0.5.0/tests/data/v04/images/test_image_tzyx.zarr/1/.zattrs +1 -0
  191. ngio-0.5.0/tests/data/v04/images/test_image_tzyx.zarr/labels/.zattrs +5 -0
  192. ngio-0.5.0/tests/data/v04/images/test_image_tzyx.zarr/labels/.zgroup +3 -0
  193. ngio-0.5.0/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zattrs +66 -0
  194. ngio-0.5.0/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zgroup +3 -0
  195. ngio-0.5.0/tests/data/v04/images/test_image_tzyx.zarr/labels/label/0/.zarray +27 -0
  196. ngio-0.5.0/tests/data/v04/images/test_image_tzyx.zarr/labels/label/0/.zattrs +1 -0
  197. ngio-0.5.0/tests/data/v04/images/test_image_tzyx.zarr/labels/label/1/.zarray +27 -0
  198. ngio-0.5.0/tests/data/v04/images/test_image_tzyx.zarr/labels/label/1/.zattrs +1 -0
  199. ngio-0.5.0/tests/data/v04/images/test_image_tzyx.zarr/tables/.zattrs +5 -0
  200. ngio-0.5.0/tests/data/v04/images/test_image_tzyx.zarr/tables/.zgroup +3 -0
  201. ngio-0.5.0/tests/data/v04/images/test_image_tzyx.zarr/tables/well_ROI_table/.zattrs +7 -0
  202. ngio-0.5.0/tests/data/v04/images/test_image_tzyx.zarr/tables/well_ROI_table/.zgroup +3 -0
  203. ngio-0.5.0/tests/data/v04/images/test_image_tzyx.zarr/tables/well_ROI_table/table.csv +2 -0
  204. ngio-0.5.0/tests/data/v04/images/test_image_yx.zarr/.zattrs +61 -0
  205. ngio-0.5.0/tests/data/v04/images/test_image_yx.zarr/.zgroup +3 -0
  206. ngio-0.5.0/tests/data/v04/images/test_image_yx.zarr/0/.zarray +23 -0
  207. ngio-0.5.0/tests/data/v04/images/test_image_yx.zarr/0/.zattrs +1 -0
  208. ngio-0.5.0/tests/data/v04/images/test_image_yx.zarr/1/.zarray +23 -0
  209. ngio-0.5.0/tests/data/v04/images/test_image_yx.zarr/1/.zattrs +1 -0
  210. ngio-0.5.0/tests/data/v04/images/test_image_yx.zarr/labels/.zattrs +5 -0
  211. ngio-0.5.0/tests/data/v04/images/test_image_yx.zarr/labels/.zgroup +3 -0
  212. ngio-0.5.0/tests/data/v04/images/test_image_yx.zarr/labels/label/.zattrs +52 -0
  213. ngio-0.5.0/tests/data/v04/images/test_image_yx.zarr/labels/label/.zgroup +3 -0
  214. ngio-0.5.0/tests/data/v04/images/test_image_yx.zarr/labels/label/0/.zarray +23 -0
  215. ngio-0.5.0/tests/data/v04/images/test_image_yx.zarr/labels/label/0/.zattrs +1 -0
  216. ngio-0.5.0/tests/data/v04/images/test_image_yx.zarr/labels/label/1/.zarray +23 -0
  217. ngio-0.5.0/tests/data/v04/images/test_image_yx.zarr/labels/label/1/.zattrs +1 -0
  218. ngio-0.5.0/tests/data/v04/images/test_image_yx.zarr/tables/.zattrs +5 -0
  219. ngio-0.5.0/tests/data/v04/images/test_image_yx.zarr/tables/.zgroup +3 -0
  220. ngio-0.5.0/tests/data/v04/images/test_image_yx.zarr/tables/well_ROI_table/.zattrs +7 -0
  221. ngio-0.5.0/tests/data/v04/images/test_image_yx.zarr/tables/well_ROI_table/.zgroup +3 -0
  222. ngio-0.5.0/tests/data/v04/images/test_image_yx.zarr/tables/well_ROI_table/table.csv +2 -0
  223. ngio-0.5.0/tests/data/v04/images/test_image_zyx.zarr/.zattrs +68 -0
  224. ngio-0.5.0/tests/data/v04/images/test_image_zyx.zarr/.zgroup +3 -0
  225. ngio-0.5.0/tests/data/v04/images/test_image_zyx.zarr/0/.zarray +25 -0
  226. ngio-0.5.0/tests/data/v04/images/test_image_zyx.zarr/0/.zattrs +1 -0
  227. ngio-0.5.0/tests/data/v04/images/test_image_zyx.zarr/1/.zarray +25 -0
  228. ngio-0.5.0/tests/data/v04/images/test_image_zyx.zarr/1/.zattrs +1 -0
  229. ngio-0.5.0/tests/data/v04/images/test_image_zyx.zarr/labels/.zattrs +5 -0
  230. ngio-0.5.0/tests/data/v04/images/test_image_zyx.zarr/labels/.zgroup +3 -0
  231. ngio-0.5.0/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zattrs +59 -0
  232. ngio-0.5.0/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zgroup +3 -0
  233. ngio-0.5.0/tests/data/v04/images/test_image_zyx.zarr/labels/label/0/.zarray +25 -0
  234. ngio-0.5.0/tests/data/v04/images/test_image_zyx.zarr/labels/label/0/.zattrs +1 -0
  235. ngio-0.5.0/tests/data/v04/images/test_image_zyx.zarr/labels/label/1/.zarray +25 -0
  236. ngio-0.5.0/tests/data/v04/images/test_image_zyx.zarr/labels/label/1/.zattrs +1 -0
  237. ngio-0.5.0/tests/data/v04/images/test_image_zyx.zarr/tables/.zattrs +5 -0
  238. ngio-0.5.0/tests/data/v04/images/test_image_zyx.zarr/tables/.zgroup +3 -0
  239. ngio-0.5.0/tests/data/v04/images/test_image_zyx.zarr/tables/well_ROI_table/.zattrs +7 -0
  240. ngio-0.5.0/tests/data/v04/images/test_image_zyx.zarr/tables/well_ROI_table/.zgroup +3 -0
  241. ngio-0.5.0/tests/data/v04/images/test_image_zyx.zarr/tables/well_ROI_table/table.csv +2 -0
  242. ngio-0.5.0/tests/data/v05/images/test_image_c1yx.zarr/0/zarr.json +52 -0
  243. ngio-0.5.0/tests/data/v05/images/test_image_c1yx.zarr/1/zarr.json +52 -0
  244. ngio-0.5.0/tests/data/v05/images/test_image_c1yx.zarr/labels/label/0/zarr.json +44 -0
  245. ngio-0.5.0/tests/data/v05/images/test_image_c1yx.zarr/labels/label/1/zarr.json +44 -0
  246. ngio-0.5.0/tests/data/v05/images/test_image_c1yx.zarr/labels/label/zarr.json +65 -0
  247. ngio-0.5.0/tests/data/v05/images/test_image_c1yx.zarr/labels/zarr.json +9 -0
  248. ngio-0.5.0/tests/data/v05/images/test_image_c1yx.zarr/tables/well_ROI_table/table.csv +2 -0
  249. ngio-0.5.0/tests/data/v05/images/test_image_c1yx.zarr/tables/well_ROI_table/zarr.json +11 -0
  250. ngio-0.5.0/tests/data/v05/images/test_image_c1yx.zarr/tables/zarr.json +9 -0
  251. ngio-0.5.0/tests/data/v05/images/test_image_c1yx.zarr/zarr.json +92 -0
  252. ngio-0.5.0/tests/data/v05/images/test_image_cyx.zarr/0/zarr.json +49 -0
  253. ngio-0.5.0/tests/data/v05/images/test_image_cyx.zarr/1/zarr.json +49 -0
  254. ngio-0.5.0/tests/data/v05/images/test_image_cyx.zarr/labels/label/0/zarr.json +42 -0
  255. ngio-0.5.0/tests/data/v05/images/test_image_cyx.zarr/labels/label/1/zarr.json +42 -0
  256. ngio-0.5.0/tests/data/v05/images/test_image_cyx.zarr/labels/label/zarr.json +58 -0
  257. ngio-0.5.0/tests/data/v05/images/test_image_cyx.zarr/labels/zarr.json +9 -0
  258. ngio-0.5.0/tests/data/v05/images/test_image_cyx.zarr/tables/well_ROI_table/table.csv +2 -0
  259. ngio-0.5.0/tests/data/v05/images/test_image_cyx.zarr/tables/well_ROI_table/zarr.json +11 -0
  260. ngio-0.5.0/tests/data/v05/images/test_image_cyx.zarr/tables/zarr.json +9 -0
  261. ngio-0.5.0/tests/data/v05/images/test_image_cyx.zarr/zarr.json +85 -0
  262. ngio-0.5.0/tests/data/v05/images/test_image_czyx.zarr/0/zarr.json +52 -0
  263. ngio-0.5.0/tests/data/v05/images/test_image_czyx.zarr/1/zarr.json +52 -0
  264. ngio-0.5.0/tests/data/v05/images/test_image_czyx.zarr/labels/label/0/zarr.json +44 -0
  265. ngio-0.5.0/tests/data/v05/images/test_image_czyx.zarr/labels/label/1/zarr.json +44 -0
  266. ngio-0.5.0/tests/data/v05/images/test_image_czyx.zarr/labels/label/zarr.json +65 -0
  267. ngio-0.5.0/tests/data/v05/images/test_image_czyx.zarr/labels/zarr.json +9 -0
  268. ngio-0.5.0/tests/data/v05/images/test_image_czyx.zarr/tables/well_ROI_table/table.csv +2 -0
  269. ngio-0.5.0/tests/data/v05/images/test_image_czyx.zarr/tables/well_ROI_table/zarr.json +11 -0
  270. ngio-0.5.0/tests/data/v05/images/test_image_czyx.zarr/tables/zarr.json +9 -0
  271. ngio-0.5.0/tests/data/v05/images/test_image_czyx.zarr/zarr.json +92 -0
  272. ngio-0.5.0/tests/data/v05/images/test_image_tcyx.zarr/0/zarr.json +52 -0
  273. ngio-0.5.0/tests/data/v05/images/test_image_tcyx.zarr/1/zarr.json +52 -0
  274. ngio-0.5.0/tests/data/v05/images/test_image_tcyx.zarr/labels/label/0/zarr.json +44 -0
  275. ngio-0.5.0/tests/data/v05/images/test_image_tcyx.zarr/labels/label/1/zarr.json +44 -0
  276. ngio-0.5.0/tests/data/v05/images/test_image_tcyx.zarr/labels/label/zarr.json +65 -0
  277. ngio-0.5.0/tests/data/v05/images/test_image_tcyx.zarr/labels/zarr.json +9 -0
  278. ngio-0.5.0/tests/data/v05/images/test_image_tcyx.zarr/tables/well_ROI_table/table.csv +2 -0
  279. ngio-0.5.0/tests/data/v05/images/test_image_tcyx.zarr/tables/well_ROI_table/zarr.json +11 -0
  280. ngio-0.5.0/tests/data/v05/images/test_image_tcyx.zarr/tables/zarr.json +9 -0
  281. ngio-0.5.0/tests/data/v05/images/test_image_tcyx.zarr/zarr.json +104 -0
  282. ngio-0.5.0/tests/data/v05/images/test_image_tczyx.zarr/0/zarr.json +55 -0
  283. ngio-0.5.0/tests/data/v05/images/test_image_tczyx.zarr/1/zarr.json +55 -0
  284. ngio-0.5.0/tests/data/v05/images/test_image_tczyx.zarr/labels/label/0/zarr.json +46 -0
  285. ngio-0.5.0/tests/data/v05/images/test_image_tczyx.zarr/labels/label/1/zarr.json +46 -0
  286. ngio-0.5.0/tests/data/v05/images/test_image_tczyx.zarr/labels/label/zarr.json +72 -0
  287. ngio-0.5.0/tests/data/v05/images/test_image_tczyx.zarr/labels/zarr.json +9 -0
  288. ngio-0.5.0/tests/data/v05/images/test_image_tczyx.zarr/tables/well_ROI_table/table.csv +2 -0
  289. ngio-0.5.0/tests/data/v05/images/test_image_tczyx.zarr/tables/well_ROI_table/zarr.json +11 -0
  290. ngio-0.5.0/tests/data/v05/images/test_image_tczyx.zarr/tables/zarr.json +9 -0
  291. ngio-0.5.0/tests/data/v05/images/test_image_tczyx.zarr/zarr.json +99 -0
  292. ngio-0.5.0/tests/data/v05/images/test_image_tyx.zarr/0/zarr.json +49 -0
  293. ngio-0.5.0/tests/data/v05/images/test_image_tyx.zarr/1/zarr.json +49 -0
  294. ngio-0.5.0/tests/data/v05/images/test_image_tyx.zarr/labels/label/0/zarr.json +44 -0
  295. ngio-0.5.0/tests/data/v05/images/test_image_tyx.zarr/labels/label/1/zarr.json +44 -0
  296. ngio-0.5.0/tests/data/v05/images/test_image_tyx.zarr/labels/label/zarr.json +65 -0
  297. ngio-0.5.0/tests/data/v05/images/test_image_tyx.zarr/labels/zarr.json +9 -0
  298. ngio-0.5.0/tests/data/v05/images/test_image_tyx.zarr/tables/well_ROI_table/table.csv +2 -0
  299. ngio-0.5.0/tests/data/v05/images/test_image_tyx.zarr/tables/well_ROI_table/zarr.json +11 -0
  300. ngio-0.5.0/tests/data/v05/images/test_image_tyx.zarr/tables/zarr.json +9 -0
  301. ngio-0.5.0/tests/data/v05/images/test_image_tyx.zarr/zarr.json +74 -0
  302. ngio-0.5.0/tests/data/v05/images/test_image_tzyx.zarr/0/zarr.json +52 -0
  303. ngio-0.5.0/tests/data/v05/images/test_image_tzyx.zarr/1/zarr.json +52 -0
  304. ngio-0.5.0/tests/data/v05/images/test_image_tzyx.zarr/labels/label/0/zarr.json +46 -0
  305. ngio-0.5.0/tests/data/v05/images/test_image_tzyx.zarr/labels/label/1/zarr.json +46 -0
  306. ngio-0.5.0/tests/data/v05/images/test_image_tzyx.zarr/labels/label/zarr.json +72 -0
  307. ngio-0.5.0/tests/data/v05/images/test_image_tzyx.zarr/labels/zarr.json +9 -0
  308. ngio-0.5.0/tests/data/v05/images/test_image_tzyx.zarr/tables/well_ROI_table/table.csv +2 -0
  309. ngio-0.5.0/tests/data/v05/images/test_image_tzyx.zarr/tables/well_ROI_table/zarr.json +11 -0
  310. ngio-0.5.0/tests/data/v05/images/test_image_tzyx.zarr/tables/zarr.json +9 -0
  311. ngio-0.5.0/tests/data/v05/images/test_image_tzyx.zarr/zarr.json +81 -0
  312. ngio-0.5.0/tests/data/v05/images/test_image_yx.zarr/0/zarr.json +46 -0
  313. ngio-0.5.0/tests/data/v05/images/test_image_yx.zarr/1/zarr.json +46 -0
  314. ngio-0.5.0/tests/data/v05/images/test_image_yx.zarr/labels/label/0/zarr.json +42 -0
  315. ngio-0.5.0/tests/data/v05/images/test_image_yx.zarr/labels/label/1/zarr.json +42 -0
  316. ngio-0.5.0/tests/data/v05/images/test_image_yx.zarr/labels/label/zarr.json +58 -0
  317. ngio-0.5.0/tests/data/v05/images/test_image_yx.zarr/labels/zarr.json +9 -0
  318. ngio-0.5.0/tests/data/v05/images/test_image_yx.zarr/tables/well_ROI_table/table.csv +2 -0
  319. ngio-0.5.0/tests/data/v05/images/test_image_yx.zarr/tables/well_ROI_table/zarr.json +11 -0
  320. ngio-0.5.0/tests/data/v05/images/test_image_yx.zarr/tables/zarr.json +9 -0
  321. ngio-0.5.0/tests/data/v05/images/test_image_yx.zarr/zarr.json +67 -0
  322. ngio-0.5.0/tests/data/v05/images/test_image_zyx.zarr/0/zarr.json +49 -0
  323. ngio-0.5.0/tests/data/v05/images/test_image_zyx.zarr/1/zarr.json +49 -0
  324. ngio-0.5.0/tests/data/v05/images/test_image_zyx.zarr/labels/label/0/zarr.json +44 -0
  325. ngio-0.5.0/tests/data/v05/images/test_image_zyx.zarr/labels/label/1/zarr.json +44 -0
  326. ngio-0.5.0/tests/data/v05/images/test_image_zyx.zarr/labels/label/zarr.json +65 -0
  327. ngio-0.5.0/tests/data/v05/images/test_image_zyx.zarr/labels/zarr.json +9 -0
  328. ngio-0.5.0/tests/data/v05/images/test_image_zyx.zarr/tables/well_ROI_table/table.csv +2 -0
  329. ngio-0.5.0/tests/data/v05/images/test_image_zyx.zarr/tables/well_ROI_table/zarr.json +11 -0
  330. ngio-0.5.0/tests/data/v05/images/test_image_zyx.zarr/tables/zarr.json +9 -0
  331. ngio-0.5.0/tests/data/v05/images/test_image_zyx.zarr/zarr.json +74 -0
  332. ngio-0.5.0/tests/stores/conftest.py +160 -0
  333. ngio-0.5.0/tests/stores/test_http_store.py +80 -0
  334. ngio-0.5.0/tests/stores/test_local_store.py +54 -0
  335. ngio-0.5.0/tests/stores/test_memory_store.py +54 -0
  336. ngio-0.5.0/tests/stores/test_s3_store.py +88 -0
  337. ngio-0.5.0/tests/stores/utils.py +168 -0
  338. {ngio-0.4.7 → ngio-0.5.0}/tests/unit/common/test_pyramid.py +2 -2
  339. ngio-0.5.0/tests/unit/common/test_roi.py +279 -0
  340. {ngio-0.4.7 → ngio-0.5.0}/tests/unit/common/test_transforms.py +2 -2
  341. {ngio-0.4.7 → ngio-0.5.0}/tests/unit/hcs/test_plate.py +60 -3
  342. ngio-0.5.0/tests/unit/images/test_create.py +296 -0
  343. {ngio-0.4.7 → ngio-0.5.0}/tests/unit/images/test_images.py +55 -11
  344. {ngio-0.4.7 → ngio-0.5.0}/tests/unit/images/test_omezarr_container.py +125 -16
  345. {ngio-0.4.7 → ngio-0.5.0}/tests/unit/iterators/test_iterators.py +82 -44
  346. {ngio-0.4.7 → ngio-0.5.0}/tests/unit/ome_zarr_meta/test_image_handler.py +4 -4
  347. {ngio-0.4.7 → ngio-0.5.0}/tests/unit/ome_zarr_meta/test_unit_ngio_specs.py +54 -54
  348. {ngio-0.4.7 → ngio-0.5.0}/tests/unit/ome_zarr_meta/test_unit_v04_utils.py +6 -14
  349. {ngio-0.4.7 → ngio-0.5.0}/tests/unit/tables/test_backends.py +2 -2
  350. {ngio-0.4.7 → ngio-0.5.0}/tests/unit/tables/test_masking_roi_table_v1.py +6 -24
  351. {ngio-0.4.7 → ngio-0.5.0}/tests/unit/tables/test_roi_table_v1.py +8 -32
  352. {ngio-0.4.7 → ngio-0.5.0}/tests/unit/utils/test_zarr_utils.py +80 -22
  353. ngio-0.4.7/CHANGELOG.md +0 -98
  354. ngio-0.4.7/docs/api/ngio/ngio.md +0 -3
  355. ngio-0.4.7/docs/changelog.md +0 -5
  356. ngio-0.4.7/src/ngio/common/_pyramid.py +0 -260
  357. ngio-0.4.7/src/ngio/common/_roi.py +0 -387
  358. ngio-0.4.7/src/ngio/images/_abstract_image.py +0 -587
  359. ngio-0.4.7/src/ngio/images/_create.py +0 -276
  360. ngio-0.4.7/src/ngio/images/_label.py +0 -342
  361. ngio-0.4.7/src/ngio/images/_ome_zarr_container.py +0 -1021
  362. ngio-0.4.7/src/ngio/ome_zarr_meta/_meta_handlers.py +0 -799
  363. ngio-0.4.7/src/ngio/tables/backends/_csv.py +0 -35
  364. ngio-0.4.7/src/ngio/tables/backends/_non_zarr_backends.py +0 -196
  365. ngio-0.4.7/src/ngio/tables/backends/_parquet.py +0 -47
  366. ngio-0.4.7/src/ngio/utils/_logger.py +0 -50
  367. ngio-0.4.7/src/ngio/utils/_zarr_utils.py +0 -415
  368. ngio-0.4.7/tests/data/v04/images/test_image_c1yx.zarr/.zattrs +0 -86
  369. ngio-0.4.7/tests/data/v04/images/test_image_c1yx.zarr/.zgroup +0 -3
  370. ngio-0.4.7/tests/data/v04/images/test_image_c1yx.zarr/0/.zarray +0 -27
  371. ngio-0.4.7/tests/data/v04/images/test_image_c1yx.zarr/1/.zarray +0 -27
  372. ngio-0.4.7/tests/data/v04/images/test_image_c1yx.zarr/labels/.zattrs +0 -5
  373. ngio-0.4.7/tests/data/v04/images/test_image_c1yx.zarr/labels/.zgroup +0 -3
  374. ngio-0.4.7/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zattrs +0 -59
  375. ngio-0.4.7/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zgroup +0 -3
  376. ngio-0.4.7/tests/data/v04/images/test_image_c1yx.zarr/labels/label/0/.zarray +0 -25
  377. ngio-0.4.7/tests/data/v04/images/test_image_c1yx.zarr/labels/label/1/.zarray +0 -25
  378. ngio-0.4.7/tests/data/v04/images/test_image_cyx.zarr/.zattrs +0 -79
  379. ngio-0.4.7/tests/data/v04/images/test_image_cyx.zarr/.zgroup +0 -3
  380. ngio-0.4.7/tests/data/v04/images/test_image_cyx.zarr/0/.zarray +0 -25
  381. ngio-0.4.7/tests/data/v04/images/test_image_cyx.zarr/1/.zarray +0 -25
  382. ngio-0.4.7/tests/data/v04/images/test_image_cyx.zarr/labels/.zattrs +0 -5
  383. ngio-0.4.7/tests/data/v04/images/test_image_cyx.zarr/labels/.zgroup +0 -3
  384. ngio-0.4.7/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zattrs +0 -52
  385. ngio-0.4.7/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zgroup +0 -3
  386. ngio-0.4.7/tests/data/v04/images/test_image_cyx.zarr/labels/label/0/.zarray +0 -23
  387. ngio-0.4.7/tests/data/v04/images/test_image_cyx.zarr/labels/label/1/.zarray +0 -23
  388. ngio-0.4.7/tests/data/v04/images/test_image_czyx.zarr/.zattrs +0 -86
  389. ngio-0.4.7/tests/data/v04/images/test_image_czyx.zarr/.zgroup +0 -3
  390. ngio-0.4.7/tests/data/v04/images/test_image_czyx.zarr/0/.zarray +0 -27
  391. ngio-0.4.7/tests/data/v04/images/test_image_czyx.zarr/1/.zarray +0 -27
  392. ngio-0.4.7/tests/data/v04/images/test_image_czyx.zarr/labels/.zattrs +0 -5
  393. ngio-0.4.7/tests/data/v04/images/test_image_czyx.zarr/labels/.zgroup +0 -3
  394. ngio-0.4.7/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zattrs +0 -59
  395. ngio-0.4.7/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zgroup +0 -3
  396. ngio-0.4.7/tests/data/v04/images/test_image_czyx.zarr/labels/label/0/.zarray +0 -25
  397. ngio-0.4.7/tests/data/v04/images/test_image_czyx.zarr/labels/label/1/.zarray +0 -25
  398. ngio-0.4.7/tests/data/v04/images/test_image_tcyx.zarr/.zattrs +0 -86
  399. ngio-0.4.7/tests/data/v04/images/test_image_tcyx.zarr/.zgroup +0 -3
  400. ngio-0.4.7/tests/data/v04/images/test_image_tcyx.zarr/0/.zarray +0 -27
  401. ngio-0.4.7/tests/data/v04/images/test_image_tcyx.zarr/1/.zarray +0 -27
  402. ngio-0.4.7/tests/data/v04/images/test_image_tcyx.zarr/labels/.zattrs +0 -5
  403. ngio-0.4.7/tests/data/v04/images/test_image_tcyx.zarr/labels/.zgroup +0 -3
  404. ngio-0.4.7/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zattrs +0 -59
  405. ngio-0.4.7/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zgroup +0 -3
  406. ngio-0.4.7/tests/data/v04/images/test_image_tcyx.zarr/labels/label/0/.zarray +0 -25
  407. ngio-0.4.7/tests/data/v04/images/test_image_tcyx.zarr/labels/label/1/.zarray +0 -25
  408. ngio-0.4.7/tests/data/v04/images/test_image_tczyx.zarr/.zattrs +0 -93
  409. ngio-0.4.7/tests/data/v04/images/test_image_tczyx.zarr/.zgroup +0 -3
  410. ngio-0.4.7/tests/data/v04/images/test_image_tczyx.zarr/0/.zarray +0 -29
  411. ngio-0.4.7/tests/data/v04/images/test_image_tczyx.zarr/1/.zarray +0 -29
  412. ngio-0.4.7/tests/data/v04/images/test_image_tczyx.zarr/labels/.zattrs +0 -5
  413. ngio-0.4.7/tests/data/v04/images/test_image_tczyx.zarr/labels/.zgroup +0 -3
  414. ngio-0.4.7/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zattrs +0 -66
  415. ngio-0.4.7/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zgroup +0 -3
  416. ngio-0.4.7/tests/data/v04/images/test_image_tczyx.zarr/labels/label/0/.zarray +0 -27
  417. ngio-0.4.7/tests/data/v04/images/test_image_tczyx.zarr/labels/label/1/.zarray +0 -27
  418. ngio-0.4.7/tests/data/v04/images/test_image_tyx.zarr/.zattrs +0 -68
  419. ngio-0.4.7/tests/data/v04/images/test_image_tyx.zarr/.zgroup +0 -3
  420. ngio-0.4.7/tests/data/v04/images/test_image_tyx.zarr/0/.zarray +0 -25
  421. ngio-0.4.7/tests/data/v04/images/test_image_tyx.zarr/1/.zarray +0 -25
  422. ngio-0.4.7/tests/data/v04/images/test_image_tyx.zarr/labels/.zattrs +0 -5
  423. ngio-0.4.7/tests/data/v04/images/test_image_tyx.zarr/labels/.zgroup +0 -3
  424. ngio-0.4.7/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zattrs +0 -59
  425. ngio-0.4.7/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zgroup +0 -3
  426. ngio-0.4.7/tests/data/v04/images/test_image_tyx.zarr/labels/label/0/.zarray +0 -25
  427. ngio-0.4.7/tests/data/v04/images/test_image_tyx.zarr/labels/label/1/.zarray +0 -25
  428. ngio-0.4.7/tests/data/v04/images/test_image_tzyx.zarr/.zattrs +0 -75
  429. ngio-0.4.7/tests/data/v04/images/test_image_tzyx.zarr/.zgroup +0 -3
  430. ngio-0.4.7/tests/data/v04/images/test_image_tzyx.zarr/0/.zarray +0 -27
  431. ngio-0.4.7/tests/data/v04/images/test_image_tzyx.zarr/1/.zarray +0 -27
  432. ngio-0.4.7/tests/data/v04/images/test_image_tzyx.zarr/labels/.zattrs +0 -5
  433. ngio-0.4.7/tests/data/v04/images/test_image_tzyx.zarr/labels/.zgroup +0 -3
  434. ngio-0.4.7/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zattrs +0 -66
  435. ngio-0.4.7/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zgroup +0 -3
  436. ngio-0.4.7/tests/data/v04/images/test_image_tzyx.zarr/labels/label/0/.zarray +0 -27
  437. ngio-0.4.7/tests/data/v04/images/test_image_tzyx.zarr/labels/label/1/.zarray +0 -27
  438. ngio-0.4.7/tests/data/v04/images/test_image_yx.zarr/.zattrs +0 -61
  439. ngio-0.4.7/tests/data/v04/images/test_image_yx.zarr/.zgroup +0 -3
  440. ngio-0.4.7/tests/data/v04/images/test_image_yx.zarr/0/.zarray +0 -23
  441. ngio-0.4.7/tests/data/v04/images/test_image_yx.zarr/1/.zarray +0 -23
  442. ngio-0.4.7/tests/data/v04/images/test_image_yx.zarr/labels/.zattrs +0 -5
  443. ngio-0.4.7/tests/data/v04/images/test_image_yx.zarr/labels/.zgroup +0 -3
  444. ngio-0.4.7/tests/data/v04/images/test_image_yx.zarr/labels/label/.zattrs +0 -52
  445. ngio-0.4.7/tests/data/v04/images/test_image_yx.zarr/labels/label/.zgroup +0 -3
  446. ngio-0.4.7/tests/data/v04/images/test_image_yx.zarr/labels/label/0/.zarray +0 -23
  447. ngio-0.4.7/tests/data/v04/images/test_image_yx.zarr/labels/label/1/.zarray +0 -23
  448. ngio-0.4.7/tests/data/v04/images/test_image_zyx.zarr/.zattrs +0 -68
  449. ngio-0.4.7/tests/data/v04/images/test_image_zyx.zarr/.zgroup +0 -3
  450. ngio-0.4.7/tests/data/v04/images/test_image_zyx.zarr/0/.zarray +0 -25
  451. ngio-0.4.7/tests/data/v04/images/test_image_zyx.zarr/1/.zarray +0 -25
  452. ngio-0.4.7/tests/data/v04/images/test_image_zyx.zarr/labels/.zattrs +0 -5
  453. ngio-0.4.7/tests/data/v04/images/test_image_zyx.zarr/labels/.zgroup +0 -3
  454. ngio-0.4.7/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zattrs +0 -59
  455. ngio-0.4.7/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zgroup +0 -3
  456. ngio-0.4.7/tests/data/v04/images/test_image_zyx.zarr/labels/label/0/.zarray +0 -25
  457. ngio-0.4.7/tests/data/v04/images/test_image_zyx.zarr/labels/label/1/.zarray +0 -25
  458. ngio-0.4.7/tests/unit/common/test_roi.py +0 -201
  459. ngio-0.4.7/tests/unit/images/test_create.py +0 -140
  460. {ngio-0.4.7 → ngio-0.5.0}/.copier-answers.yml +0 -0
  461. {ngio-0.4.7 → ngio-0.5.0}/.gitattributes +0 -0
  462. {ngio-0.4.7 → ngio-0.5.0}/.github/ISSUE_TEMPLATE.md +0 -0
  463. {ngio-0.4.7 → ngio-0.5.0}/.github/TEST_FAIL_TEMPLATE.md +0 -0
  464. {ngio-0.4.7 → ngio-0.5.0}/.github/dependabot.yml +0 -0
  465. {ngio-0.4.7 → ngio-0.5.0}/.github/pull_request_template.md +0 -0
  466. {ngio-0.4.7 → ngio-0.5.0}/.pre-commit-config.yaml +0 -0
  467. {ngio-0.4.7 → ngio-0.5.0}/LICENSE +0 -0
  468. {ngio-0.4.7 → ngio-0.5.0}/README.md +0 -0
  469. {ngio-0.4.7 → ngio-0.5.0}/_typos.toml +0 -0
  470. {ngio-0.4.7 → ngio-0.5.0}/docs/api/hcs.md +0 -0
  471. {ngio-0.4.7 → ngio-0.5.0}/docs/api/images.md +0 -0
  472. {ngio-0.4.7 → ngio-0.5.0}/docs/api/iterators.md +0 -0
  473. {ngio-0.4.7 → ngio-0.5.0}/docs/api/ngio/common.md +0 -0
  474. {ngio-0.4.7 → ngio-0.5.0}/docs/api/ngio/hcs.md +0 -0
  475. {ngio-0.4.7 → ngio-0.5.0}/docs/api/ngio/images.md +0 -0
  476. {ngio-0.4.7 → ngio-0.5.0}/docs/api/ngio/io_pipes.md +0 -0
  477. {ngio-0.4.7 → ngio-0.5.0}/docs/api/ngio/iterators.md +0 -0
  478. {ngio-0.4.7 → ngio-0.5.0}/docs/api/ngio/tables.md +0 -0
  479. {ngio-0.4.7 → ngio-0.5.0}/docs/api/ngio/transforms.md +0 -0
  480. {ngio-0.4.7 → ngio-0.5.0}/docs/api/ngio/utils.md +0 -0
  481. {ngio-0.4.7 → ngio-0.5.0}/docs/api/ome_zarr_container.md +0 -0
  482. {ngio-0.4.7 → ngio-0.5.0}/docs/api/tables.md +0 -0
  483. {ngio-0.4.7 → ngio-0.5.0}/docs/code_of_conduct.md +0 -0
  484. {ngio-0.4.7 → ngio-0.5.0}/docs/contributing.md +0 -0
  485. {ngio-0.4.7 → ngio-0.5.0}/docs/getting_started/5_hcs.md +0 -0
  486. {ngio-0.4.7 → ngio-0.5.0}/docs/getting_started/6_iterators.md +0 -0
  487. {ngio-0.4.7 → ngio-0.5.0}/docs/table_specs/backend.md +0 -0
  488. {ngio-0.4.7 → ngio-0.5.0}/docs/table_specs/overview.md +0 -0
  489. {ngio-0.4.7 → ngio-0.5.0}/docs/table_specs/table_types/condition_table.md +0 -0
  490. {ngio-0.4.7 → ngio-0.5.0}/docs/table_specs/table_types/custom_table.md +0 -0
  491. {ngio-0.4.7 → ngio-0.5.0}/docs/table_specs/table_types/feature_table.md +0 -0
  492. {ngio-0.4.7 → ngio-0.5.0}/docs/table_specs/table_types/generic_table.md +0 -0
  493. {ngio-0.4.7 → ngio-0.5.0}/docs/table_specs/table_types/masking_roi_table.md +0 -0
  494. {ngio-0.4.7 → ngio-0.5.0}/docs/table_specs/table_types/roi_table.md +0 -0
  495. {ngio-0.4.7 → ngio-0.5.0}/mkdocs.yml +0 -0
  496. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/common/_dimensions.py +0 -0
  497. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/common/_synt_images_utils.py +0 -0
  498. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/common/_zoom.py +0 -0
  499. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/experimental/__init__.py +0 -0
  500. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/experimental/iterators/__init__.py +0 -0
  501. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/experimental/iterators/_abstract_iterator.py +0 -0
  502. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/experimental/iterators/_image_processing.py +0 -0
  503. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/experimental/iterators/_mappers.py +0 -0
  504. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/experimental/iterators/_segmentation.py +0 -0
  505. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/hcs/__init__.py +0 -0
  506. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/images/__init__.py +0 -0
  507. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/images/_table_ops.py +0 -0
  508. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/io_pipes/__init__.py +0 -0
  509. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/io_pipes/_ops_axes.py +0 -0
  510. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/io_pipes/_ops_slices.py +0 -0
  511. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/io_pipes/_ops_transforms.py +0 -0
  512. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/io_pipes/_zoom_transform.py +0 -0
  513. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/ome_zarr_meta/ngio_specs/_channels.py +0 -0
  514. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/ome_zarr_meta/ngio_specs/_pixel_size.py +0 -0
  515. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/ome_zarr_meta/v04/_custom_models.py +0 -0
  516. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/mask.png +0 -0
  517. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/nuclei.png +0 -0
  518. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/raw.jpg +0 -0
  519. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/tables/__init__.py +0 -0
  520. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/tables/_abstract_table.py +0 -0
  521. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/tables/backends/__init__.py +0 -0
  522. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/tables/backends/_table_backends.py +0 -0
  523. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/tables/v1/__init__.py +0 -0
  524. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/tables/v1/_condition_table.py +0 -0
  525. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/tables/v1/_feature_table.py +0 -0
  526. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/tables/v1/_generic_table.py +0 -0
  527. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/transforms/__init__.py +0 -0
  528. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/transforms/_zoom.py +0 -0
  529. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/utils/_errors.py +0 -0
  530. {ngio-0.4.7 → ngio-0.5.0}/src/ngio/utils/_fractal_fsspec_store.py +0 -0
  531. {ngio-0.4.7 → ngio-0.5.0}/tests/data/v04/meta/base_ome_zarr_image_meta.json +0 -0
  532. {ngio-0.4.7 → ngio-0.5.0}/tests/data/v04/meta/base_ome_zarr_image_meta_wrong_axis_order.json +0 -0
  533. {ngio-0.4.7 → ngio-0.5.0}/tests/data/v04/meta/base_ome_zarr_label_meta.json +0 -0
  534. {ngio-0.4.7 → ngio-0.5.0}/tests/data/v04/meta/base_ome_zarr_well_meta.json +0 -0
  535. {ngio-0.4.7 → ngio-0.5.0}/tests/data/v04/meta/ome_zarr_well_path_normalization_meta.json +0 -0
  536. {ngio-0.4.7 → ngio-0.5.0}/tests/unit/common/test_dimensions.py +0 -0
  537. {ngio-0.4.7 → ngio-0.5.0}/tests/unit/hcs/test_well.py +0 -0
  538. {ngio-0.4.7 → ngio-0.5.0}/tests/unit/images/test_masked_images.py +0 -0
  539. {ngio-0.4.7 → ngio-0.5.0}/tests/unit/images/test_table_ops.py +0 -0
  540. {ngio-0.4.7 → ngio-0.5.0}/tests/unit/io_pipes/test_axes_ops.py +0 -0
  541. {ngio-0.4.7 → ngio-0.5.0}/tests/unit/io_pipes/test_slicing_ops.py +0 -0
  542. {ngio-0.4.7 → ngio-0.5.0}/tests/unit/tables/test_backends_utils.py +0 -0
  543. {ngio-0.4.7 → ngio-0.5.0}/tests/unit/tables/test_feature_table.py +0 -0
  544. {ngio-0.4.7 → ngio-0.5.0}/tests/unit/tables/test_generic_table.py +0 -0
  545. {ngio-0.4.7 → ngio-0.5.0}/tests/unit/tables/test_table_group.py +0 -0
  546. {ngio-0.4.7 → ngio-0.5.0}/tests/unit/utils/test_download_datasets.py +0 -0
@@ -3,7 +3,6 @@ name: Build Docs
3
3
  on:
4
4
  push:
5
5
  branches:
6
- - hotfix/*
7
6
  - main
8
7
  tags:
9
8
  - "v*"
@@ -41,7 +40,7 @@ jobs:
41
40
 
42
41
  - name: Restore shared data cache
43
42
  id: cache-data
44
- uses: actions/cache@v4
43
+ uses: actions/cache@v5
45
44
  with:
46
45
  path: data/
47
46
  key: "${{ runner.os }}-data-${{ hashFiles('tests/conftest.py') }}"
@@ -59,8 +58,8 @@ jobs:
59
58
  mike set-default --push stable
60
59
  echo "Deployed stable version $VERSION (stable)"
61
60
 
62
- elif [[ $GITHUB_REF == refs/heads/dev ]]; then
61
+ elif [[ $GITHUB_REF == refs/heads/main ]]; then
63
62
  mike deploy --push dev
64
63
  mike set-default --push dev
65
- echo "Deployed development version (dev)"
64
+ echo "Deployed development version (dev) from main"
66
65
  fi
@@ -4,7 +4,7 @@ on:
4
4
  push:
5
5
  branches:
6
6
  - main
7
- - hotfix/*
7
+ - dev
8
8
  tags:
9
9
  - "v*"
10
10
  pull_request:
@@ -33,7 +33,7 @@ jobs:
33
33
  strategy:
34
34
  fail-fast: false
35
35
  matrix:
36
- python-version: ["3.11", "3.12", "3.13"]
36
+ python-version: ["3.11", "3.12", "3.13", "3.14"]
37
37
  platform: [ubuntu-latest, macos-latest, windows-latest]
38
38
 
39
39
  steps:
@@ -54,7 +54,7 @@ jobs:
54
54
 
55
55
  - name: Restore shared data cache
56
56
  id: cache-data
57
- uses: actions/cache@v4
57
+ uses: actions/cache@v5
58
58
  with:
59
59
  path: data/
60
60
  key: "${{ runner.os }}-data-${{ hashFiles('tests/conftest.py') }}"
@@ -79,6 +79,7 @@ jobs:
79
79
  update_existing: true
80
80
 
81
81
  - name: Coverage
82
+ if: success() && matrix.platform == 'ubuntu-latest'
82
83
  uses: codecov/codecov-action@v5
83
84
  with:
84
85
  token: ${{ secrets.CODECOV_TOKEN }}
@@ -131,4 +131,8 @@ tests/_v01
131
131
  # Ignore locks
132
132
  *.lock
133
133
 
134
- benchmark/*
134
+ benchmark/*
135
+
136
+ # Agents files (for now let's not track them)
137
+ AGENTS.md
138
+ CLAUDE.md
@@ -0,0 +1,190 @@
1
+ # Changelog
2
+
3
+ ## [v0.5.0]
4
+
5
+ ### Features
6
+ - Add support for OME-NGFF v0.5
7
+ - Move to zarr-python v3
8
+ - API to delete labels and tables from OME-Zarr containers and HCS plates.
9
+ - Allow to explicitly set axes order when building masking roi tables.
10
+ - New metadata modification APIs for `Image`, `Label`, and `OmeZarrContainer`:
11
+ - `set_channel_labels` - Update channel labels
12
+ - `set_channel_colors` - Update channel colors
13
+ - `set_channel_windows` - Update channel display windows (start/end values)
14
+ - `set_channel_windows_with_percentiles` - Update display windows based on data percentiles
15
+ - `set_axes_names` - Rename axes in the metadata
16
+ - `set_axes_unit` - Set space and time units for axes
17
+ - `set_name` - Set the image/label name in metadata
18
+ - Add translation support in all image/label creation and derivation APIs.
19
+
20
+ ### API Breaking Changes
21
+
22
+ - New `Roi` models, now supporting arbitrary axes.
23
+ - The `compressor` argument has been renamed to `compressors` in all relevant functions and methods to reflect the support for multiple compressors in zarr v3.
24
+ - The `version` argument has been renamed to `ngff_version` in all relevant functions and methods to specify the OME-NGFF version.
25
+ - Remove the `parallel_safe` argument from all zarr related functions and methods. The locking mechanism is now handled internally and only depends on the
26
+ `cache`.
27
+ - Remove the unused `parent` argument from `ZarrGroupHandler`.
28
+ - Internal changes to `ZarrGroupHandler` to support cleanup unused apis.
29
+ - Remove `ngio_logger` in favor of standard warnings module.
30
+
31
+ ### Migration Guide (v0.4 → v0.5)
32
+
33
+ #### Roi API Changes
34
+
35
+ The `Roi` class now uses a flexible slice-based model supporting arbitrary axes:
36
+
37
+ ```python
38
+ # Old (v0.4)
39
+ roi = Roi(x=34.1, y=10, x_length=321.6, y_length=330)
40
+
41
+ # New (v0.5)
42
+ roi = Roi.from_values(slices={"x": (34.1, 321.6), "y": (10, 330)}, name=None)
43
+
44
+ # Accessing coordinates
45
+ # Old: roi.x, roi.y, roi.x_length, roi.y_length
46
+ # New: roi.get("x").start, roi.get("y").start, roi.get("x").length, roi.get("y").length
47
+ ```
48
+
49
+ #### Argument Renames
50
+
51
+ ```python
52
+ # compressor → compressors
53
+ # Old (v0.4)
54
+ create_empty_ome_zarr(..., compressor=Blosc())
55
+
56
+ # New (v0.5)
57
+ create_empty_ome_zarr(..., compressors=Blosc())
58
+
59
+ # version → ngff_version
60
+ # Old (v0.4)
61
+ create_empty_ome_zarr(..., version="0.4")
62
+
63
+ # New (v0.5)
64
+ create_empty_ome_zarr(..., ngff_version="0.4")
65
+ ```
66
+
67
+ #### Removed Arguments
68
+
69
+ - `parallel_safe`: No longer needed, locking is handled internally
70
+ - `ngio_logger`: Use Python's standard `warnings` module instead
71
+
72
+ ### Deprecations
73
+ - Standardized all deprecation warnings to indicate removal in `ngio=0.6`.
74
+ - Deprecated `set_channel_percentiles` method, use `set_channel_windows_with_percentiles` instead.
75
+
76
+ ### Bug Fixes
77
+ - Fix bug in `consolidate` function when using coarsening mode with non power-of-two shapes.
78
+ - Fix HCS plate column name formatting to use standardized zero-padding (e.g., column `3` is now stored as `"03"`).
79
+ - Fix `_stringify_column` not passing `num_digits` parameter to `_format_int_column`.
80
+
81
+ ### Documentation
82
+ - Fix incorrect and incomplete docstrings across the codebase:
83
+ - `compute_masking_roi`: Added Args/Returns, fixed description (supports 2D, 3D, 4D).
84
+ - `lazy_compute_slices`: Added Args/Returns sections.
85
+ - `LabelsContainer.list`: Fixed description (was "Create the /labels group").
86
+ - `build_masking_roi_table`: Added Args/Returns sections.
87
+ - `TablesContainer`: Fixed class and method descriptions (were referencing labels instead of tables).
88
+ - `NgioPlateMeta.add_well`: Fixed description (was "Add an image to the well").
89
+ - `NgioPlateMeta.derive`: Fixed type annotation in docstring (`NgffVersion` → `NgffVersions`).
90
+ - Added missing docstrings to several HCS helper functions.
91
+
92
+ ## [v0.4.7]
93
+
94
+ ### Bug Fixes
95
+ - Fix bug adding time axis to masking roi tables.
96
+
97
+ ### Bug Fixes
98
+ - Fix channel selection from `wavelength_id`
99
+ - Fix table opening mode to stop wrtiting groups when opening in append mode.
100
+
101
+ ## [v0.4.5]
102
+
103
+ ### Bug Fixes
104
+ - 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)
105
+
106
+ ## [v0.4.4]
107
+
108
+ ### Bug Fixes
109
+
110
+ - Fix bug in channel visualization when using hex colors with leading '#'.
111
+ - Remove strict range check in channel window.
112
+
113
+ ## [v0.4.3]
114
+
115
+ ### Bug Fixes
116
+
117
+ - Fix bug in deriving labels and image from OME-Zarr with non standard path names.
118
+ - Add missing pillow dependency.
119
+ - Update pixi workspace config.
120
+
121
+ ## [v0.4.2]
122
+
123
+ ### API Changes
124
+
125
+ - Make roi.to_slicing_dict(pixel_size) always require pixel_size argument for consistency with other roi methods.
126
+ - Make PixelSize object a Pydantic model to allow for serialization.
127
+
128
+ ### Bug Fixes
129
+
130
+ - Improve robustness when rounding Rois to pixel coordinates.
131
+
132
+ ## [v0.4.1]
133
+
134
+ ### Bug Fixes
135
+ - Fix bug in zoom transform when input axes contain unknown axes (e.g. virtual axes). Now unknown axes are treated as virtual axes and set to 1 in the target shape.
136
+
137
+ ## [v0.4.0]
138
+
139
+ ### Features
140
+
141
+ - Add Iterators for image processing pipelines
142
+ - Add support for time in rois and roi-tables
143
+ - Building masking roi tables expanded to time series data
144
+ - Add zoom transformation
145
+ - Add support for rescaling on-the-fly masks for masked images
146
+ - Big refactor of the io pipeline to support iterators and lazy loading
147
+ - Add support for customize dimension separators and compression codecs
148
+ - Simplify AxesHandler and Dataset Classes
149
+
150
+ ### API Changes
151
+
152
+ - The image-like `get_*` api have been slightly changed. Now if a single int is passed as slice_kwargs, it is interpreted as a single index. So the dimension is automatically squeezed.
153
+ - Remove the `get_*_delayed` methods, now data cam only be loaded as numpy or dask array.Use the `get_as_dask` method instead, which returns a dask array that can be used with dask delayed.
154
+ - A new model for channel selection is available. Now channels can be selected by name, index or with `ChannelSelectionModel` object.
155
+ - Change `table_name` keyword argument to `name` for consistency in all table concatenation functions, e.g. `concatenate_image_tables`, `concatenate_image_tables_as`, etc.
156
+ - Change to `Dimension` class. `get_shape` and `get_canonical_shape` have been removed, `get` uses new keyword arguments `default` instead of `strict`.
157
+ - Image like objects now have a more clean API to load data. Instead of `get_array` and `set_array`, they now use `get_as_numpy`, and `get_as_dask` for delayed arrays.
158
+ - Also for `get_roi` now specific methods are available. For ROI objects, the `get_roi_as_numpy`, and `get_roi_as_dask` methods.
159
+ - Table ops moved to `ngio.images`
160
+ - int `label` as an explicit attribute in `Roi` objects (previously only in stored in name and relying on convention)
161
+ - Slight changes to `Image` and `Label` objects. Some minor attributes have been renamed for consistency.
162
+
163
+ ### Table specs
164
+
165
+ - Add `t_second` and `len_t_second` to ROI tables and masking ROI tables
166
+
167
+ ## [v0.3.5]
168
+
169
+ - Remove path normalization for images in wells. While the spec requires paths to be alphanumeric, this patch removes the normalization to allow for arbitrary image paths.
170
+
171
+ ## [v0.3.4]
172
+
173
+ - allow to write as `anndata_v1` for backward compatibility with older ngio versions.
174
+
175
+ ## [v0.3.3]
176
+
177
+ ### Chores
178
+
179
+ - improve dataset download process and streamline the CI workflows
180
+
181
+ ## [v0.3.2]
182
+
183
+ ### API Changes
184
+
185
+ - change table backend default to `anndata_v1` for backward compatibility. This will be chaanged again when ngio `v0.2.x` is no longer supported.
186
+
187
+ ### Bug Fixes
188
+
189
+ - fix [#13](https://github.com/BioVisionCenter/fractal-converters-tools/issues/13) (converters tools)
190
+ - fix [#88](https://github.com/BioVisionCenter/ngio/issues/88)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ngio
3
- Version: 0.4.7
3
+ Version: 0.5.0
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
@@ -13,25 +13,25 @@ Classifier: Programming Language :: Python :: 3
13
13
  Classifier: Programming Language :: Python :: 3.11
14
14
  Classifier: Programming Language :: Python :: 3.12
15
15
  Classifier: Programming Language :: Python :: 3.13
16
+ Classifier: Programming Language :: Python :: 3.14
16
17
  Classifier: Typing :: Typed
17
- Requires-Python: <3.14,>=3.11
18
+ Requires-Python: <3.15,>=3.11
18
19
  Requires-Dist: aiohttp
19
- Requires-Dist: anndata<0.11.4,>=0.8.0
20
+ Requires-Dist: anndata
20
21
  Requires-Dist: dask[array]<2025.11.0
21
22
  Requires-Dist: dask[distributed]<2025.11.0
22
23
  Requires-Dist: filelock
23
24
  Requires-Dist: numpy
24
25
  Requires-Dist: ome-zarr-models
25
- Requires-Dist: pandas>=1.2.0
26
+ Requires-Dist: pandas<3.0.0,>=1.2.0
26
27
  Requires-Dist: pillow
27
28
  Requires-Dist: polars
28
29
  Requires-Dist: pooch
29
30
  Requires-Dist: pyarrow
30
31
  Requires-Dist: pydantic
31
32
  Requires-Dist: requests
32
- Requires-Dist: zarr<3
33
+ Requires-Dist: zarr>3
33
34
  Provides-Extra: dev
34
- Requires-Dist: devtools; extra == 'dev'
35
35
  Requires-Dist: matplotlib; extra == 'dev'
36
36
  Requires-Dist: mypy; extra == 'dev'
37
37
  Requires-Dist: napari; extra == 'dev'
@@ -43,6 +43,7 @@ Requires-Dist: pyqt5; extra == 'dev'
43
43
  Requires-Dist: rich; extra == 'dev'
44
44
  Requires-Dist: ruff; extra == 'dev'
45
45
  Requires-Dist: scikit-image; extra == 'dev'
46
+ Requires-Dist: zarrs; extra == 'dev'
46
47
  Provides-Extra: docs
47
48
  Requires-Dist: griffe-typingdoc; extra == 'docs'
48
49
  Requires-Dist: markdown-exec[ansi]; extra == 'docs'
@@ -57,11 +58,17 @@ Requires-Dist: mkdocs-jupyter; extra == 'docs'
57
58
  Requires-Dist: mkdocs-material; extra == 'docs'
58
59
  Requires-Dist: mkdocstrings[python]; extra == 'docs'
59
60
  Requires-Dist: rich; extra == 'docs'
61
+ Requires-Dist: ruff; extra == 'docs'
60
62
  Requires-Dist: scikit-image; extra == 'docs'
61
63
  Requires-Dist: tabulate; extra == 'docs'
62
64
  Provides-Extra: test
65
+ Requires-Dist: boto; extra == 'test'
66
+ Requires-Dist: devtools; extra == 'test'
67
+ Requires-Dist: moto[server]; extra == 'test'
63
68
  Requires-Dist: pytest; extra == 'test'
64
69
  Requires-Dist: pytest-cov; extra == 'test'
70
+ Requires-Dist: pytest-httpserver; extra == 'test'
71
+ Requires-Dist: s3fs; extra == 'test'
65
72
  Requires-Dist: scikit-image; extra == 'test'
66
73
  Description-Content-Type: text/markdown
67
74
 
@@ -0,0 +1,17 @@
1
+ # ngio API documentation
2
+
3
+ ::: ngio
4
+ options:
5
+ members:
6
+ - AxesSetup
7
+ - ChannelSelectionModel
8
+ - DefaultNgffVersion
9
+ - Dimensions
10
+ - ImageInWellPath
11
+ - NgffVersions
12
+ - NgioSupportedStore
13
+ - PixelSize
14
+ - Roi
15
+ - RoiSlice
16
+ - StoreOrGroup
17
+ - create_synthetic_ome_zarr
@@ -0,0 +1,3 @@
1
+ {%
2
+ include-markdown "../CHANGELOG.md"
3
+ %}
@@ -96,4 +96,4 @@ Also, checkout our jupyer notebook tutorials for more examples:
96
96
  - [Image Processing](../tutorials/image_processing.ipynb): Learn how to perform simple image processing operations.
97
97
  - [Image Segmentation](../tutorials/image_segmentation.ipynb): Learn how to create new labels from images.
98
98
  - [Feature Extraction](../tutorials/feature_extraction.ipynb): Learn how to extract features from images.
99
- - [HCS Processing](../tutorials/hcs_processing.ipynb): Learn how to process high-content screening data using ngio.
99
+ - [HCS Exploration](../tutorials/hcs_exploration.ipynb): Learn how to explore high-content screening data using ngio.
@@ -58,8 +58,8 @@ Examples of the OME-Zarr metadata access:
58
58
  === "Available Paths"
59
59
  Show the paths to all available resolution levels:
60
60
  ```pycon exec="true" source="console" session="get_started"
61
- >>> ome_zarr_container.levels_paths # Show the paths to all available images
62
- >>> print(ome_zarr_container.levels_paths) # markdown-exec: hide
61
+ >>> ome_zarr_container.level_paths # Show the paths to all available images
62
+ >>> print(ome_zarr_container.level_paths) # markdown-exec: hide
63
63
  ```
64
64
 
65
65
  === "Dimensionality"
@@ -76,7 +76,7 @@ Examples of the OME-Zarr metadata access:
76
76
 
77
77
  === "Full Metadata Object"
78
78
  ```pycon exec="true" source="console" session="get_started"
79
- >>> metadata = ome_zarr_container.image_meta
79
+ >>> metadata = ome_zarr_container.meta
80
80
  >>> print(metadata) # markdown-exec: hide
81
81
  ```
82
82
  The metadata object contains all the information about the image, for example, the channel labels:
@@ -85,6 +85,65 @@ Examples of the OME-Zarr metadata access:
85
85
  >>> print(metadata.channels_meta.channel_labels) # markdown-exec: hide
86
86
  ```
87
87
 
88
+ ## Modifying metadata
89
+
90
+ ngio provides methods to modify the image metadata, such as channel labels, colors, display windows, axes names, and units.
91
+
92
+ ### Channel metadata
93
+
94
+ You can update channel labels, colors, and display windows:
95
+
96
+ === "Channel Labels"
97
+ Update the labels (names) of the channels:
98
+ ```python
99
+ >>> ome_zarr_container.set_channel_labels(["DAPI", "GFP", "RFP"])
100
+ ```
101
+
102
+ === "Channel Colors"
103
+ Update the display colors of the channels (hex format):
104
+ ```python
105
+ >>> ome_zarr_container.set_channel_colors(["0000FF", "00FF00", "FF0000"])
106
+ ```
107
+
108
+ === "Channel Windows"
109
+ Update the display windows (start/end values) for each channel:
110
+ ```python
111
+ >>> ome_zarr_container.set_channel_windows([(0, 255), (0, 1000), (0, 500)])
112
+ ```
113
+
114
+ === "Channel Windows from Percentiles"
115
+ Automatically compute display windows based on data percentiles:
116
+ ```python
117
+ >>> ome_zarr_container.set_channel_windows_with_percentiles(percentiles=(0.1, 99.9))
118
+ ```
119
+
120
+ ### Axes metadata
121
+
122
+ You can update the axes names and units:
123
+
124
+ === "Axes Names"
125
+ Rename the axes in the metadata:
126
+ ```python
127
+ >>> ome_zarr_container.set_axes_names(["t", "c", "z", "y", "x"])
128
+ ```
129
+
130
+ === "Axes Units"
131
+ Set the space and time units:
132
+ ```python
133
+ >>> ome_zarr_container.set_axes_units(space_unit="micrometer", time_unit="second")
134
+ ```
135
+
136
+ ### Image name
137
+
138
+ You can set the name of the image in the metadata:
139
+
140
+ ```python
141
+ >>> ome_zarr_container.set_name("My Processed Image")
142
+ ```
143
+
144
+ !!! note
145
+ The `set_name` method only updates the metadata. It does not change the group name or file paths.
146
+
88
147
  ## Accessing images / labels / tables
89
148
 
90
149
  To access images, labels, and tables, you can use the `get_image`, `get_label`, and `get_table` methods of the `OME-Zarr Container` object.
@@ -109,7 +168,7 @@ new_image = ome_zarr_container.derive_image(
109
168
  "data/new_ome.zarr",
110
169
  overwrite=True,
111
170
  shape=(16, 128, 128),
112
- xy_pixelsize=0.65,
171
+ pixelsize=0.65,
113
172
  z_spacing=1.0
114
173
  )
115
174
  ```
@@ -129,7 +188,7 @@ x = np.random.randint(0, 255, (16, 128, 128), dtype=np.uint8)
129
188
  new_ome_zarr_image = create_ome_zarr_from_array(
130
189
  store="random_ome.zarr",
131
190
  array=x,
132
- xy_pixelsize=0.65,
191
+ pixelsize=0.65,
133
192
  z_spacing=1.0
134
193
  )
135
194
  ```
@@ -142,7 +201,7 @@ from ngio import create_empty_ome_zarr
142
201
  new_ome_zarr_image = create_empty_ome_zarr(
143
202
  store="empty_ome.zarr",
144
203
  shape=(16, 128, 128),
145
- xy_pixelsize=0.65,
204
+ pixelsize=0.65,
146
205
  z_spacing=1.0
147
206
  )
148
207
  ```
@@ -137,7 +137,7 @@ To read or write a specific region of the image defined in world coordinates, yo
137
137
 
138
138
  ```pycon exec="true" source="console" session="get_started"
139
139
  >>> from ngio import Roi
140
- >>> roi = Roi(x=34.1, y=10, x_length=321.6, y_length=330) # Define a ROI in world coordinates
140
+ >>> roi = Roi.from_values(slices={"x": (34.1, 321.6), "y": (10, 330)}, name=None) # Define a ROI in world coordinates
141
141
  >>> image.get_roi_as_numpy(roi) # Get the image data in the ROI as a numpy array
142
142
  >>> print(image.get_roi_as_numpy(roi).shape) # markdown-exec: hide
143
143
  ```
@@ -35,17 +35,19 @@ Ngio supports three types of tables: `roi_table`, `feature_table`, and `masking_
35
35
  cmap_array[0] = 0
36
36
  cmap = ListedColormap(cmap_array)
37
37
  image_3 = ome_zarr_container.get_image(path="3")
38
- image_data = image_3.get_array(c=0)
38
+ image_data = image_3.get_as_numpy(c=0)
39
39
  image_data = np.squeeze(image_data)
40
40
  roi = roi_table.get("FOV_1")
41
- roi = roi.to_roi_pixels(pixel_size=image_3.pixel_size)
41
+ roi = roi.to_pixel(pixel_size=image_3.pixel_size)
42
+ x_slice = roi.get("x")
43
+ y_slice = roi.get("y")
42
44
  #label_3 = ome_zarr_container.get_label("nuclei", pixel_size=image_3.pixel_size)
43
- #label_data = label_3.get_array()
45
+ #label_data = label_3.get_as_numpy()
44
46
  #label_data = np.squeeze(label_data)
45
47
  fig, ax = plt.subplots(figsize=(8, 4))
46
48
  ax.set_title("FOV_1 ROI")
47
49
  ax.imshow(image_data, cmap='gray')
48
- ax.add_patch(Rectangle((roi.x, roi.y), roi.x_length, roi.y_length, edgecolor='red', facecolor='none', lw=2))
50
+ ax.add_patch(Rectangle((x_slice.start, y_slice.start), x_slice.length, y_slice.length, edgecolor='red', facecolor='none', lw=2))
49
51
  #ax.imshow(label_data, cmap=cmap, alpha=0.6)
50
52
  # make sure the roi is centered
51
53
  ax.axis('off')
@@ -58,7 +60,7 @@ Ngio supports three types of tables: `roi_table`, `feature_table`, and `masking_
58
60
  ROIs can be used to slice the image data:
59
61
  ```pycon exec="true" source="console" session="get_started"
60
62
  >>> roi = roi_table.get("FOV_1")
61
- >>> roi_data = image.get_roi(roi)
63
+ >>> roi_data = image.get_roi_as_numpy(roi)
62
64
  >>> roi_data.shape
63
65
  >>> print(roi_data.shape) # markdown-exec: hide
64
66
  ```
@@ -76,10 +78,10 @@ Ngio supports three types of tables: `roi_table`, `feature_table`, and `masking_
76
78
  cmap = ListedColormap(cmap_array)
77
79
  roi = roi_table.get("FOV_1")
78
80
  image_3 = ome_zarr_container.get_image(path="3")
79
- image_data = image_3.get_roi(roi, c=0)
81
+ image_data = image_3.get_roi_as_numpy(roi, c=0)
80
82
  image_data = np.squeeze(image_data)
81
83
  #label_3 = ome_zarr_container.get_label("nuclei", pixel_size=image_3.pixel_size)
82
- #label_data = label_3.get_array()
84
+ #label_data = label_3.get_as_numpy()
83
85
  #label_data = np.squeeze(label_data)
84
86
  fig, ax = plt.subplots(figsize=(8, 4))
85
87
  ax.set_title("FOV_1 ROI")
@@ -104,7 +106,7 @@ Ngio supports three types of tables: `roi_table`, `feature_table`, and `masking_
104
106
  ROIs can be used to slice the image data:
105
107
  ```pycon exec="true" source="console" session="get_started"
106
108
  >>> roi = masking_table.get_label(100)
107
- >>> roi_data = image.get_roi(roi)
109
+ >>> roi_data = image.get_roi_as_numpy(roi)
108
110
  >>> roi_data.shape
109
111
  >>> print(roi_data.shape) # markdown-exec: hide
110
112
  ```
@@ -122,10 +124,10 @@ Ngio supports three types of tables: `roi_table`, `feature_table`, and `masking_
122
124
  cmap = ListedColormap(cmap_array)
123
125
  roi = masking_table.get_label(100)
124
126
  image_3 = ome_zarr_container.get_image(path="2")
125
- image_data = image_3.get_roi(roi, c=0)
127
+ image_data = image_3.get_roi_as_numpy(roi, c=0)
126
128
  image_data = np.squeeze(image_data)
127
129
  label_3 = ome_zarr_container.get_label("nuclei", pixel_size=image_3.pixel_size)
128
- label_data = label_3.get_roi(roi)
130
+ label_data = label_3.get_roi_as_numpy(roi)
129
131
  label_data = np.squeeze(label_data)
130
132
  fig, ax = plt.subplots(figsize=(8, 4))
131
133
  ax.set_title("Label 1 ROI")
@@ -156,7 +158,7 @@ Tables (differently from Images and Labels) can be purely in memory objects, and
156
158
  ```pycon exec="true" source="console" session="get_started"
157
159
  >>> from ngio.tables import RoiTable
158
160
  >>> from ngio import Roi
159
- >>> roi = Roi(x=0, y=0, x_length=128, y_length=128, name="FOV_1")
161
+ >>> roi = Roi.from_values(slices={"x": (0, 128), "y": (0, 128)}, name="FOV_1")
160
162
  >>> roi_table = RoiTable(rois=[roi])
161
163
  >>> print(roi_table) # markdown-exec: hide
162
164
  ```
@@ -30,10 +30,10 @@ Let's create a masked image from the `nuclei` label:
30
30
 
31
31
  Since the `MaskedImage` is a subclass of `Image`, we can use all the methods available for `Image` objects.
32
32
 
33
- The two most notable exceptions are the `get_roi` and `set_roi` which now instead of requiring a `roi` object, require an integer `label`.
33
+ The two most notable exceptions are the `get_roi_as_numpy` (or `get_roi_as_dask`) and `set_roi` which now instead of requiring a `roi` object, require an integer `label`.
34
34
 
35
35
  ```pycon exec="true" source="console" session="masked_images"
36
- >>> roi_data = masked_image.get_roi(label=1009, c=0)
36
+ >>> roi_data = masked_image.get_roi_as_numpy(label=1009, c=0)
37
37
  >>> roi_data.shape
38
38
  >>> print(roi_data.shape) # markdown-exec: hide
39
39
  ```
@@ -50,7 +50,7 @@ cmap_array = np.random.rand(1000, 3)
50
50
  cmap_array[0] = 0
51
51
  cmap = ListedColormap(cmap_array)
52
52
 
53
- image_data = masked_image.get_roi(label=1009, c=0)
53
+ image_data = masked_image.get_roi_as_numpy(label=1009, c=0)
54
54
  image_data = np.squeeze(image_data)
55
55
 
56
56
  fig, ax = plt.subplots(figsize=(8, 4))
@@ -68,13 +68,13 @@ Additionally we can used the `zoom_factor` argument to get more context around t
68
68
  For example we can zoom out the ROI by a factor of `2`:
69
69
 
70
70
  ```pycon exec="true" source="console" session="masked_images"
71
- >>> roi_data = masked_image.get_roi(label=1009, c=0, zoom_factor=2)
71
+ >>> roi_data = masked_image.get_roi_as_numpy(label=1009, c=0, zoom_factor=2)
72
72
  >>> roi_data.shape
73
73
  >>> print(roi_data.shape) # markdown-exec: hide
74
74
  ```
75
75
 
76
76
  ```python exec="1" html="1" session="masked_images"
77
- image_data = masked_image.get_roi(label=1009, c=0, zoom_factor=2)
77
+ image_data = masked_image.get_roi_as_numpy(label=1009, c=0, zoom_factor=2)
78
78
  image_data = np.squeeze(image_data)
79
79
 
80
80
  fig, ax = plt.subplots(figsize=(8, 4))
@@ -90,7 +90,7 @@ print(buffer.getvalue())
90
90
 
91
91
  ## Masked operations
92
92
 
93
- In addition to the `get_roi` method, the `MaskedImage` class also provides a masked operation method that allows you to perform reading and writing only on the masked pixels.
93
+ In addition to the `get_roi_as_numpy` method, the `MaskedImage` class also provides a masked operation method that allows you to perform reading and writing only on the masked pixels.
94
94
 
95
95
  For these operations we can use the `get_roi_masked` and `set_roi_masked` methods.
96
96
  For example, we can use the `get_roi_masked` method to get the masked data for a specific label:
@@ -123,7 +123,7 @@ We can also use the `set_roi_masked` method to set the masked data for a specifi
123
123
  ```
124
124
 
125
125
  ```python exec="1" html="1" session="masked_images"
126
- masked_data = masked_image.get_roi(label=1009, c=0, zoom_factor=2)
126
+ masked_data = masked_image.get_roi_as_numpy(label=1009, c=0, zoom_factor=2)
127
127
  masked_data = np.squeeze(masked_data)
128
128
  fig, ax = plt.subplots(figsize=(8, 4))
129
129
  ax.set_title("Masked Label 1009 ROI - After setting")
@@ -28,11 +28,11 @@ Ngio's mission is to streamline working with OME-Zarr files by providing a simpl
28
28
  ## Getting Started
29
29
 
30
30
  Refer to the [Getting Started](getting_started/0_quickstart.md) guide to integrate ngio into your workflows. We also provide a collection of [Tutorials](tutorials/image_processing.ipynb) to help you get up and running quickly.
31
- For more advanced usage and API documentation, see our [API Reference](api/ngio.md).
31
+ For more advanced usage and API documentation, see our [API Reference](api/ome_zarr_container.md).
32
32
 
33
33
  ## Supported OME-Zarr versions
34
34
 
35
- Currently, ngio only supports OME-Zarr v0.4. Support for version 0.5 and higher is planned for future releases.
35
+ Ngio supports OME-Zarr v0.4 and v0.5, with Zarr v2 and v3 storage formats.
36
36
 
37
37
  ## Development Status
38
38
 
@@ -51,7 +51,6 @@ Currently, ngio only supports OME-Zarr v0.4. Support for version 0.5 and higher
51
51
 
52
52
  ### Upcoming Features
53
53
 
54
- - Support for OME-Zarr v0.5 and Zarr v3 (via `zarr-python` v3)
55
54
  - Enhanced performance optimizations (parallel iterators, optimized io strategies)
56
55
 
57
56
  ## Contributors
@@ -42,7 +42,7 @@
42
42
  "ome_zarr = create_ome_zarr_from_array(\n",
43
43
  " store=\"./data/human_mitosis.zarr\",\n",
44
44
  " array=skimage.data.human_mitosis(),\n",
45
- " xy_pixelsize=0.1, # Just a guess\n",
45
+ " pixelsize=0.1, # Just a guess\n",
46
46
  ")\n",
47
47
  "ome_zarr"
48
48
  ]
@@ -93,7 +93,7 @@
93
93
  "name": "python",
94
94
  "nbconvert_exporter": "python",
95
95
  "pygments_lexer": "ipython3",
96
- "version": "3.11.13"
96
+ "version": "3.11.14"
97
97
  }
98
98
  },
99
99
  "nbformat": 4,