ngio 0.2.0b1__tar.gz → 0.2.0b3__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 (187) hide show
  1. ngio-0.2.0b3/.github/scripts/download_data.sh +97 -0
  2. ngio-0.2.0b3/.github/workflows/build_docs.yml +61 -0
  3. {ngio-0.2.0b1 → ngio-0.2.0b3}/.github/workflows/ci.yml +25 -0
  4. {ngio-0.2.0b1 → ngio-0.2.0b3}/PKG-INFO +4 -2
  5. {ngio-0.2.0b1 → ngio-0.2.0b3}/README.md +2 -1
  6. {ngio-0.2.0b1 → ngio-0.2.0b3}/docs/notebooks/basic_usage.ipynb +7 -1
  7. {ngio-0.2.0b1 → ngio-0.2.0b3}/docs/notebooks/image.ipynb +7 -1
  8. {ngio-0.2.0b1 → ngio-0.2.0b3}/docs/notebooks/processing.ipynb +7 -1
  9. {ngio-0.2.0b1 → ngio-0.2.0b3}/mkdocs.yml +2 -0
  10. {ngio-0.2.0b1 → ngio-0.2.0b3}/pyproject.toml +1 -0
  11. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/common/_array_pipe.py +0 -7
  12. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/images/abstract_image.py +30 -0
  13. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/images/omezarr_container.py +30 -0
  14. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/ome_zarr_meta/ngio_specs/_ngio_image.py +0 -6
  15. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/tables/backends/_anndata_utils.py +3 -0
  16. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/conftest.py +1 -1
  17. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/unit/images/test_omezarr_container.py +6 -1
  18. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/unit/test_ome_zarr_meta/test_unit_ngio_specs.py +2 -7
  19. ngio-0.2.0b1/.github/workflows/build_docs.yml +0 -39
  20. {ngio-0.2.0b1 → ngio-0.2.0b3}/.copier-answers.yml +0 -0
  21. {ngio-0.2.0b1 → ngio-0.2.0b3}/.gitattributes +0 -0
  22. {ngio-0.2.0b1 → ngio-0.2.0b3}/.github/ISSUE_TEMPLATE.md +0 -0
  23. {ngio-0.2.0b1 → ngio-0.2.0b3}/.github/TEST_FAIL_TEMPLATE.md +0 -0
  24. {ngio-0.2.0b1 → ngio-0.2.0b3}/.github/dependabot.yml +0 -0
  25. {ngio-0.2.0b1 → ngio-0.2.0b3}/.gitignore +0 -0
  26. {ngio-0.2.0b1 → ngio-0.2.0b3}/.pre-commit-config.yaml +0 -0
  27. {ngio-0.2.0b1 → ngio-0.2.0b3}/LICENSE +0 -0
  28. {ngio-0.2.0b1 → ngio-0.2.0b3}/_typos.toml +0 -0
  29. {ngio-0.2.0b1 → ngio-0.2.0b3}/docs/api/core.md +0 -0
  30. {ngio-0.2.0b1 → ngio-0.2.0b3}/docs/getting-started.md +0 -0
  31. {ngio-0.2.0b1 → ngio-0.2.0b3}/docs/index.md +0 -0
  32. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/__init__.py +0 -0
  33. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/common/__init__.py +0 -0
  34. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/common/_axes_transforms.py +0 -0
  35. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/common/_common_types.py +0 -0
  36. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/common/_dimensions.py +0 -0
  37. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/common/_masking_roi.py +0 -0
  38. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/common/_pyramid.py +0 -0
  39. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/common/_roi.py +0 -0
  40. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/common/_slicer.py +0 -0
  41. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/common/_zoom.py +0 -0
  42. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/hcs/__init__.py +0 -0
  43. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/hcs/plate.py +0 -0
  44. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/images/__init__.py +0 -0
  45. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/images/create.py +0 -0
  46. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/images/image.py +0 -0
  47. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/images/label.py +0 -0
  48. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/images/masked_image.py +0 -0
  49. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/ome_zarr_meta/__init__.py +0 -0
  50. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/ome_zarr_meta/_meta_handlers.py +0 -0
  51. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/ome_zarr_meta/ngio_specs/__init__.py +0 -0
  52. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/ome_zarr_meta/ngio_specs/_axes.py +0 -0
  53. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/ome_zarr_meta/ngio_specs/_channels.py +0 -0
  54. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/ome_zarr_meta/ngio_specs/_dataset.py +0 -0
  55. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/ome_zarr_meta/ngio_specs/_ngio_hcs.py +0 -0
  56. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/ome_zarr_meta/ngio_specs/_pixel_size.py +0 -0
  57. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/ome_zarr_meta/v04/__init__.py +0 -0
  58. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/ome_zarr_meta/v04/_v04_spec_utils.py +0 -0
  59. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/tables/__init__.py +0 -0
  60. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/tables/_validators.py +0 -0
  61. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/tables/backends/__init__.py +0 -0
  62. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/tables/backends/_abstract_backend.py +0 -0
  63. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/tables/backends/_anndata_v1.py +0 -0
  64. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/tables/backends/_json_v1.py +0 -0
  65. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/tables/backends/_table_backends.py +0 -0
  66. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/tables/tables_container.py +0 -0
  67. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/tables/v1/__init__.py +0 -0
  68. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/tables/v1/_feature_table.py +0 -0
  69. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/tables/v1/_generic_table.py +0 -0
  70. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/tables/v1/_roi_table.py +0 -0
  71. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/utils/__init__.py +0 -0
  72. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/utils/_datasets.py +0 -0
  73. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/utils/_errors.py +0 -0
  74. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/utils/_fractal_fsspec_store.py +0 -0
  75. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/utils/_logger.py +0 -0
  76. {ngio-0.2.0b1 → ngio-0.2.0b3}/src/ngio/utils/_zarr_utils.py +0 -0
  77. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_c1yx.zarr/.zattrs +0 -0
  78. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_c1yx.zarr/.zgroup +0 -0
  79. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_c1yx.zarr/0/.zarray +0 -0
  80. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_c1yx.zarr/1/.zarray +0 -0
  81. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_c1yx.zarr/labels/.zattrs +0 -0
  82. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_c1yx.zarr/labels/.zgroup +0 -0
  83. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zattrs +0 -0
  84. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zgroup +0 -0
  85. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/0/.zarray +0 -0
  86. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/1/.zarray +0 -0
  87. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_cyx.zarr/.zattrs +0 -0
  88. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_cyx.zarr/.zgroup +0 -0
  89. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_cyx.zarr/0/.zarray +0 -0
  90. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_cyx.zarr/1/.zarray +0 -0
  91. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_cyx.zarr/labels/.zattrs +0 -0
  92. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_cyx.zarr/labels/.zgroup +0 -0
  93. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zattrs +0 -0
  94. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zgroup +0 -0
  95. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_cyx.zarr/labels/label/0/.zarray +0 -0
  96. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_cyx.zarr/labels/label/1/.zarray +0 -0
  97. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_czyx.zarr/.zattrs +0 -0
  98. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_czyx.zarr/.zgroup +0 -0
  99. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_czyx.zarr/0/.zarray +0 -0
  100. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_czyx.zarr/1/.zarray +0 -0
  101. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_czyx.zarr/labels/.zattrs +0 -0
  102. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_czyx.zarr/labels/.zgroup +0 -0
  103. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zattrs +0 -0
  104. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zgroup +0 -0
  105. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_czyx.zarr/labels/label/0/.zarray +0 -0
  106. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_czyx.zarr/labels/label/1/.zarray +0 -0
  107. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tcyx.zarr/.zattrs +0 -0
  108. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tcyx.zarr/.zgroup +0 -0
  109. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tcyx.zarr/0/.zarray +0 -0
  110. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tcyx.zarr/1/.zarray +0 -0
  111. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tcyx.zarr/labels/.zattrs +0 -0
  112. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tcyx.zarr/labels/.zgroup +0 -0
  113. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zattrs +0 -0
  114. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zgroup +0 -0
  115. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/0/.zarray +0 -0
  116. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/1/.zarray +0 -0
  117. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tczyx.zarr/.zattrs +0 -0
  118. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tczyx.zarr/.zgroup +0 -0
  119. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tczyx.zarr/0/.zarray +0 -0
  120. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tczyx.zarr/1/.zarray +0 -0
  121. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tczyx.zarr/labels/.zattrs +0 -0
  122. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tczyx.zarr/labels/.zgroup +0 -0
  123. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zattrs +0 -0
  124. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zgroup +0 -0
  125. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/0/.zarray +0 -0
  126. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/1/.zarray +0 -0
  127. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tyx.zarr/.zattrs +0 -0
  128. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tyx.zarr/.zgroup +0 -0
  129. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tyx.zarr/0/.zarray +0 -0
  130. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tyx.zarr/1/.zarray +0 -0
  131. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tyx.zarr/labels/.zattrs +0 -0
  132. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tyx.zarr/labels/.zgroup +0 -0
  133. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zattrs +0 -0
  134. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zgroup +0 -0
  135. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tyx.zarr/labels/label/0/.zarray +0 -0
  136. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tyx.zarr/labels/label/1/.zarray +0 -0
  137. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tzyx.zarr/.zattrs +0 -0
  138. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tzyx.zarr/.zgroup +0 -0
  139. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tzyx.zarr/0/.zarray +0 -0
  140. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tzyx.zarr/1/.zarray +0 -0
  141. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tzyx.zarr/labels/.zattrs +0 -0
  142. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tzyx.zarr/labels/.zgroup +0 -0
  143. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zattrs +0 -0
  144. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zgroup +0 -0
  145. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/0/.zarray +0 -0
  146. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/1/.zarray +0 -0
  147. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_yx.zarr/.zattrs +0 -0
  148. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_yx.zarr/.zgroup +0 -0
  149. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_yx.zarr/0/.zarray +0 -0
  150. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_yx.zarr/1/.zarray +0 -0
  151. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_yx.zarr/labels/.zattrs +0 -0
  152. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_yx.zarr/labels/.zgroup +0 -0
  153. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_yx.zarr/labels/label/.zattrs +0 -0
  154. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_yx.zarr/labels/label/.zgroup +0 -0
  155. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_yx.zarr/labels/label/0/.zarray +0 -0
  156. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_yx.zarr/labels/label/1/.zarray +0 -0
  157. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_zyx.zarr/.zattrs +0 -0
  158. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_zyx.zarr/.zgroup +0 -0
  159. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_zyx.zarr/0/.zarray +0 -0
  160. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_zyx.zarr/1/.zarray +0 -0
  161. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_zyx.zarr/labels/.zattrs +0 -0
  162. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_zyx.zarr/labels/.zgroup +0 -0
  163. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zattrs +0 -0
  164. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zgroup +0 -0
  165. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_zyx.zarr/labels/label/0/.zarray +0 -0
  166. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/images/test_image_zyx.zarr/labels/label/1/.zarray +0 -0
  167. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/meta/base_ome_zarr_image_meta.json +0 -0
  168. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/meta/base_ome_zarr_image_meta_wrong_axis_order.json +0 -0
  169. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/data/v04/meta/base_ome_zarr_label_meta.json +0 -0
  170. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/unit/common/test_dimensions.py +0 -0
  171. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/unit/common/test_pyramid.py +0 -0
  172. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/unit/common/test_roi.py +0 -0
  173. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/unit/hcs/test_plate.py +0 -0
  174. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/unit/images/test_create.py +0 -0
  175. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/unit/images/test_images.py +0 -0
  176. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/unit/images/test_masked_images.py +0 -0
  177. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/unit/tables/test_backends.py +0 -0
  178. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/unit/tables/test_feature_table.py +0 -0
  179. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/unit/tables/test_generic_table.py +0 -0
  180. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/unit/tables/test_masking_roi_table_v1.py +0 -0
  181. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/unit/tables/test_roi_table_v1.py +0 -0
  182. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/unit/tables/test_table_group.py +0 -0
  183. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/unit/tables/test_validators.py +0 -0
  184. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/unit/test_ome_zarr_meta/test_image_handler.py +0 -0
  185. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/unit/test_ome_zarr_meta/test_unit_v04_utils.py +0 -0
  186. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/unit/utils/test_download_datasets.py +0 -0
  187. {ngio-0.2.0b1 → ngio-0.2.0b3}/tests/unit/utils/test_zarr_utils.py +0 -0
@@ -0,0 +1,97 @@
1
+ #!/bin/bash
2
+ # filepath: download_zarr_datasets.sh
3
+
4
+ # Default download directory
5
+ DOWNLOAD_DIR="data"
6
+
7
+ # Create download directory if it doesn't exist
8
+ mkdir -p "$DOWNLOAD_DIR"
9
+
10
+ # Function to check MD5 hash
11
+ check_md5() {
12
+ local file="$1"
13
+ local expected="$2"
14
+
15
+ if [[ "$(uname)" == "Darwin" ]]; then
16
+ # macOS
17
+ actual=$(md5 -q "$file")
18
+ else
19
+ # Linux/Ubuntu
20
+ actual=$(md5sum "$file" | awk '{print $1}')
21
+ fi
22
+
23
+ echo "Expected: $expected"
24
+ echo "Actual: $actual"
25
+
26
+ if [[ "$actual" == "$expected" ]]; then
27
+ return 0 # Success
28
+ else
29
+ return 1 # Failure
30
+ fi
31
+ }
32
+
33
+ # Function to download a file
34
+ download_file() {
35
+ local url="$1"
36
+ local output="$2"
37
+
38
+ echo "Downloading $url to $output..."
39
+
40
+ if command -v curl &> /dev/null; then
41
+ curl -L -o "$output" "$url"
42
+ elif command -v wget &> /dev/null; then
43
+ wget -O "$output" "$url"
44
+ else
45
+ echo "Error: Neither curl nor wget is available. Please install one of them."
46
+ exit 1
47
+ fi
48
+ }
49
+
50
+ # Function to process a dataset
51
+ process_dataset() {
52
+ local filename="$1"
53
+ local url="$2"
54
+ local expected_hash="$3"
55
+
56
+ local file_path="$DOWNLOAD_DIR/$filename"
57
+
58
+ echo "Processing $filename..."
59
+
60
+ # Check if file exists and has the correct hash
61
+ if [[ -f "$file_path" ]] && check_md5 "$file_path" "$expected_hash"; then
62
+ echo "File exists and has the correct hash."
63
+ else
64
+ # File doesn't exist or has incorrect hash
65
+ if [[ -f "$file_path" ]]; then
66
+ echo "File exists but has incorrect hash. Redownloading..."
67
+ else
68
+ echo "File doesn't exist. Downloading..."
69
+ fi
70
+
71
+ download_file "$url" "$file_path"
72
+
73
+ # Verify the downloaded file
74
+ if check_md5 "$file_path" "$expected_hash"; then
75
+ echo "Download successful and hash verified."
76
+ else
77
+ echo "Error: Downloaded file has incorrect hash."
78
+ return 1
79
+ fi
80
+ fi
81
+
82
+ echo "File is ready at $file_path"
83
+ return 0
84
+ }
85
+
86
+ # Process the CardioMyocyte dataset
87
+ process_dataset "20200812-CardiomyocyteDifferentiation14-Cycle1.zarr.zip" \
88
+ "https://zenodo.org/records/13305156/files/20200812-CardiomyocyteDifferentiation14-Cycle1.zarr.zip" \
89
+ "efc21fe8d4ea3abab76226d8c166452c"
90
+
91
+ process_dataset "20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr.zip" \
92
+ "https://zenodo.org/records/13305316/files/20200812-CardiomyocyteDifferentiation14-Cycle1_mip.zarr.zip" \
93
+ "3ed3ea898e0ed42d397da2e1dbe40750"
94
+ # To add more datasets, add more calls to process_dataset like this:
95
+ # process_dataset "filename.zip" "download_url" "expected_md5_hash"
96
+
97
+ echo "All datasets processed."
@@ -0,0 +1,61 @@
1
+ name: Build Docs
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ tags:
8
+ - "v*"
9
+
10
+ jobs:
11
+ download-test-ome-zarr:
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+ - name: Check and Download Artifacts
16
+ run: |
17
+ bash .github/scripts/download_data.sh
18
+
19
+ deploy:
20
+ name: Deploy Docs
21
+ needs: download-test-ome-zarr
22
+ runs-on: ubuntu-latest
23
+
24
+ steps:
25
+ - uses: actions/checkout@v4
26
+ with:
27
+ fetch-depth: 0
28
+
29
+ - name: 🐍 Set up Python
30
+ uses: actions/setup-python@v5
31
+ with:
32
+ python-version: "3.13"
33
+ cache-dependency-path: "pyproject.toml"
34
+ cache: "pip"
35
+
36
+ - name: Install Dependencies
37
+ run: |
38
+ python -m pip install -U pip
39
+ python -m pip install .[dev]
40
+ python -m pip install .[docs]
41
+
42
+ - name: Configure Git user
43
+ run: |
44
+ git config --local user.email "github-actions[bot]@users.noreply.github.com"
45
+ git config --local user.name "github-actions[bot]"
46
+
47
+ - name: Deploy docs
48
+ run: |
49
+ VERSION=$(echo $GITHUB_REF | sed 's/refs\/tags\///' | sed 's/refs\/heads\///')
50
+ echo "Deploying version $VERSION"
51
+ # Check if the version is a stable release
52
+ # Meaning that starts with "v" and contains only numbers and dots
53
+ if [[ $GITHUB_REF == refs/tags/* ]] && [[ $VERSION =~ ^v[0-9.]+$ ]]; then
54
+ mike deploy --push --update-aliases $VERSION stable
55
+ mike set-default --push stable
56
+ echo "Deployed stable version"
57
+ else
58
+ mike deploy --push dev
59
+ mike set-default --push dev
60
+ echo "Deployed development version"
61
+ fi
@@ -26,8 +26,24 @@ jobs:
26
26
  - uses: actions/checkout@v4
27
27
  - run: pipx run check-manifest
28
28
 
29
+
30
+ download-test-ome-zarr:
31
+ runs-on: ubuntu-latest
32
+ steps:
33
+ - uses: actions/checkout@v4
34
+ - name: Check and Download Artifacts
35
+ run: |
36
+ bash .github/scripts/download_data.sh
37
+ - name: Upload Artifacts
38
+ uses: actions/upload-artifact@v4
39
+ with:
40
+ name: data
41
+ path: data
42
+
43
+
29
44
  test:
30
45
  name: ${{ matrix.platform }} (${{ matrix.python-version }})
46
+ needs: download-test-ome-zarr
31
47
  runs-on: ${{ matrix.platform }}
32
48
  strategy:
33
49
  fail-fast: false
@@ -44,6 +60,15 @@ jobs:
44
60
  steps:
45
61
  - uses: actions/checkout@v4
46
62
 
63
+ - uses: actions/download-artifact@v4
64
+ with:
65
+ name: data
66
+ path: data
67
+
68
+ - name: Check Artifacts
69
+ run: |
70
+ ls -l data
71
+
47
72
  - name: 🐍 Set up Python ${{ matrix.python-version }}
48
73
  uses: actions/setup-python@v5
49
74
  with:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ngio
3
- Version: 0.2.0b1
3
+ Version: 0.2.0b3
4
4
  Summary: Next Generation file format IO
5
5
  Project-URL: homepage, https://github.com/lorenzocerrone/ngio
6
6
  Project-URL: repository, https://github.com/lorenzocerrone/ngio
@@ -41,6 +41,7 @@ Requires-Dist: rich; extra == 'dev'
41
41
  Requires-Dist: ruff; extra == 'dev'
42
42
  Requires-Dist: scikit-image; extra == 'dev'
43
43
  Provides-Extra: docs
44
+ Requires-Dist: mike; extra == 'docs'
44
45
  Requires-Dist: mkdocs; extra == 'docs'
45
46
  Requires-Dist: mkdocs-autorefs; extra == 'docs'
46
47
  Requires-Dist: mkdocs-git-committers-plugin-2; extra == 'docs'
@@ -60,7 +61,7 @@ Description-Content-Type: text/markdown
60
61
  [![License](https://img.shields.io/pypi/l/ngio.svg?color=green)](https://github.com/lorenzocerrone/ngio/raw/main/LICENSE)
61
62
  [![PyPI](https://img.shields.io/pypi/v/ngio.svg?color=green)](https://pypi.org/project/ngio)
62
63
  [![Python Version](https://img.shields.io/pypi/pyversions/ngio.svg?color=green)](https://python.org)
63
- [![CI](https://github.com/lorenzocerrone/ngio/actions/workflows/ci.yml/badge.svg)](https://github.com/lorenzocerrone/ngio/actions/workflows/ci.yml)
64
+ [![CI](https://github.com/fractal-analytics-platform/ngio/actions/workflows/ci.yml/badge.svg)](https://github.com/fractal-analytics-platform/ngio/actions/workflows/ci.yml)
64
65
  [![codecov](https://codecov.io/gh/fractal-analytics-platform/ngio/graph/badge.svg?token=FkmF26FZki)](https://codecov.io/gh/fractal-analytics-platform/ngio)
65
66
 
66
67
  NGIO is a Python library to streamline OME-Zarr image analysis workflows.
@@ -96,3 +97,4 @@ To get started, check out the [Getting Started](https://fractal-analytics-platfo
96
97
  | Parallel Iterators | Not started | mid-2025 | Concurrent Iterators for parallel read and write |
97
98
  | Full Documentation | Not started | 2025 | Complete Documentation |
98
99
  | Release 1.0 (Commitment to API) | Not started | 2025 | API is stable; breaking changes will be avoided |
100
+
@@ -3,7 +3,7 @@
3
3
  [![License](https://img.shields.io/pypi/l/ngio.svg?color=green)](https://github.com/lorenzocerrone/ngio/raw/main/LICENSE)
4
4
  [![PyPI](https://img.shields.io/pypi/v/ngio.svg?color=green)](https://pypi.org/project/ngio)
5
5
  [![Python Version](https://img.shields.io/pypi/pyversions/ngio.svg?color=green)](https://python.org)
6
- [![CI](https://github.com/lorenzocerrone/ngio/actions/workflows/ci.yml/badge.svg)](https://github.com/lorenzocerrone/ngio/actions/workflows/ci.yml)
6
+ [![CI](https://github.com/fractal-analytics-platform/ngio/actions/workflows/ci.yml/badge.svg)](https://github.com/fractal-analytics-platform/ngio/actions/workflows/ci.yml)
7
7
  [![codecov](https://codecov.io/gh/fractal-analytics-platform/ngio/graph/badge.svg?token=FkmF26FZki)](https://codecov.io/gh/fractal-analytics-platform/ngio)
8
8
 
9
9
  NGIO is a Python library to streamline OME-Zarr image analysis workflows.
@@ -39,3 +39,4 @@ To get started, check out the [Getting Started](https://fractal-analytics-platfo
39
39
  | Parallel Iterators | Not started | mid-2025 | Concurrent Iterators for parallel read and write |
40
40
  | Full Documentation | Not started | 2025 | Complete Documentation |
41
41
  | Release 1.0 (Commitment to API) | Not started | 2025 | API is stable; breaking changes will be avoided |
42
+
@@ -22,11 +22,17 @@
22
22
  "metadata": {},
23
23
  "outputs": [],
24
24
  "source": [
25
+ "from pathlib import Path\n",
26
+ "\n",
25
27
  "from ngio import open_omezarr_container\n",
26
28
  "from ngio.utils import download_ome_zarr_dataset\n",
27
29
  "\n",
28
- "hcs_path = download_ome_zarr_dataset(\"CardiomyocyteSmallMip\")\n",
30
+ "# Download the dataset\n",
31
+ "download_dir = Path(\".\").absolute().parent.parent / \"data\"\n",
32
+ "hcs_path = download_ome_zarr_dataset(\"CardiomyocyteSmallMip\", download_dir=download_dir)\n",
29
33
  "image_path = hcs_path / \"B\" / \"03\" / \"0\"\n",
34
+ "\n",
35
+ "# Open the ome-zarr container\n",
30
36
  "omezarr_container = open_omezarr_container(image_path)"
31
37
  ]
32
38
  },
@@ -15,13 +15,19 @@
15
15
  "metadata": {},
16
16
  "outputs": [],
17
17
  "source": [
18
+ "from pathlib import Path\n",
19
+ "\n",
18
20
  "import matplotlib.pyplot as plt\n",
19
21
  "\n",
20
22
  "from ngio import open_omezarr_container\n",
21
23
  "from ngio.utils import download_ome_zarr_dataset\n",
22
24
  "\n",
23
- "hcs_path = download_ome_zarr_dataset(\"CardiomyocyteSmallMip\")\n",
25
+ "# Download the dataset\n",
26
+ "download_dir = Path(\".\").absolute().parent.parent / \"data\"\n",
27
+ "hcs_path = download_ome_zarr_dataset(\"CardiomyocyteSmallMip\", download_dir=download_dir)\n",
24
28
  "image_path = hcs_path / \"B\" / \"03\" / \"0\"\n",
29
+ "\n",
30
+ "# Open the ome-zarr container\n",
25
31
  "omezarr = open_omezarr_container(image_path)"
26
32
  ]
27
33
  },
@@ -33,13 +33,19 @@
33
33
  "metadata": {},
34
34
  "outputs": [],
35
35
  "source": [
36
+ "from pathlib import Path\n",
37
+ "\n",
36
38
  "import matplotlib.pyplot as plt\n",
37
39
  "\n",
38
40
  "from ngio import open_omezarr_container\n",
39
41
  "from ngio.utils import download_ome_zarr_dataset\n",
40
42
  "\n",
41
- "hcs_path = download_ome_zarr_dataset(\"CardiomyocyteTiny\")\n",
43
+ "# Download the dataset\n",
44
+ "download_dir = Path(\".\").absolute().parent.parent / \"data\"\n",
45
+ "hcs_path = download_ome_zarr_dataset(\"CardiomyocyteTiny\", download_dir=download_dir)\n",
42
46
  "image_path = hcs_path / \"B\" / \"03\" / \"0\"\n",
47
+ "\n",
48
+ "# Open the ome-zarr container\n",
43
49
  "omezarr = open_omezarr_container(image_path)"
44
50
  ]
45
51
  },
@@ -40,6 +40,8 @@ theme:
40
40
  - search.share
41
41
 
42
42
  extra:
43
+ version:
44
+ provider: mike
43
45
  social:
44
46
  - icon: fontawesome/brands/github
45
47
  link: "https://github.com/fractal-analytics-platform/ngio"
@@ -76,6 +76,7 @@ docs = [
76
76
  "mkdocs-git-revision-date-localized-plugin",
77
77
  "mkdocs-git-committers-plugin-2",
78
78
  "scikit-image",
79
+ "mike",
79
80
  ]
80
81
 
81
82
 
@@ -179,13 +179,6 @@ def _mask_pipe_common(
179
179
  **slice_kwargs,
180
180
  )
181
181
 
182
- if "c" in slice_kwargs.keys():
183
- # This makes the strong assumption that the
184
- # user is passing the channel axis as "c"
185
- # This will fail if the channel axis is queried
186
- # with a different on-disk name
187
- slice_kwargs.pop("c")
188
-
189
182
  label_patch = get_pipe(
190
183
  label_array,
191
184
  dimensions=dimensions_label,
@@ -99,6 +99,36 @@ class AbstractImage(Generic[_image_handler]):
99
99
  """Return the dimensions of the image."""
100
100
  return self._dimensions
101
101
 
102
+ @property
103
+ def is_3d(self) -> bool:
104
+ """Return True if the image is 3D."""
105
+ return self.dimensions.is_3d
106
+
107
+ @property
108
+ def is_2d(self) -> bool:
109
+ """Return True if the image is 2D."""
110
+ return self.dimensions.is_2d
111
+
112
+ @property
113
+ def is_time_series(self) -> bool:
114
+ """Return True if the image is a time series."""
115
+ return self.dimensions.is_time_series
116
+
117
+ @property
118
+ def is_2d_time_series(self) -> bool:
119
+ """Return True if the image is a 2D time series."""
120
+ return self.dimensions.is_2d_time_series
121
+
122
+ @property
123
+ def is_3d_time_series(self) -> bool:
124
+ """Return True if the image is a 3D time series."""
125
+ return self.dimensions.is_3d_time_series
126
+
127
+ @property
128
+ def is_multi_channels(self) -> bool:
129
+ """Return True if the image is multichannel."""
130
+ return self.dimensions.is_multi_channels
131
+
102
132
  @property
103
133
  def pixel_size(self) -> PixelSize:
104
134
  """Return the pixel size of the image."""
@@ -125,6 +125,36 @@ class OmeZarrContainer:
125
125
  """Return the paths of the levels in the image."""
126
126
  return self._images_container.levels_paths
127
127
 
128
+ @property
129
+ def is_3d(self) -> bool:
130
+ """Return True if the image is 3D."""
131
+ return self.get_image().is_3d
132
+
133
+ @property
134
+ def is_2d(self) -> bool:
135
+ """Return True if the image is 2D."""
136
+ return self.get_image().is_2d
137
+
138
+ @property
139
+ def is_time_series(self) -> bool:
140
+ """Return True if the image is a time series."""
141
+ return self.get_image().is_time_series
142
+
143
+ @property
144
+ def is_2d_time_series(self) -> bool:
145
+ """Return True if the image is a 2D time series."""
146
+ return self.get_image().is_2d_time_series
147
+
148
+ @property
149
+ def is_3d_time_series(self) -> bool:
150
+ """Return True if the image is a 3D time series."""
151
+ return self.get_image().is_3d_time_series
152
+
153
+ @property
154
+ def is_multi_channels(self) -> bool:
155
+ """Return True if the image is multichannel."""
156
+ return self.get_image().is_multi_channels
157
+
128
158
  def initialize_channel_meta(
129
159
  self,
130
160
  labels: Collection[str] | int | None = None,
@@ -342,12 +342,6 @@ class NgioLabelMeta(AbstractNgioImageMeta):
342
342
  ) -> None:
343
343
  """Initialize the ImageMeta object."""
344
344
  super().__init__(version, name, datasets)
345
-
346
- # Make sure that there are no channel axes
347
- channel_axis = self.axes_mapper.get_axis("c")
348
- if channel_axis is not None:
349
- raise NgioValidationError("Label metadata must not have channel axes.")
350
-
351
345
  image_label = (
352
346
  ImageLabelSource.default_init(self.version)
353
347
  if image_label is None
@@ -41,6 +41,9 @@ def custom_read_zarr(
41
41
  """
42
42
  group, _ = open_group_wrapper(store=store, mode="r")
43
43
 
44
+ if not isinstance(group.store, zarr.DirectoryStore):
45
+ elem_to_read = ["X", "obs", "var"]
46
+
44
47
  if elem_to_read is None:
45
48
  elem_to_read = [
46
49
  "X",
@@ -6,7 +6,7 @@ import pytest
6
6
 
7
7
  from ngio.utils import download_ome_zarr_dataset
8
8
 
9
- zenodo_download_dir = Path("tests/data/v04/zenodo_images/")
9
+ zenodo_download_dir = Path(__file__).parent.parent / "data"
10
10
  os.makedirs(zenodo_download_dir, exist_ok=True)
11
11
  cardiomyocyte_tiny_source_path = download_ome_zarr_dataset(
12
12
  "CardiomyocyteTiny", download_dir=zenodo_download_dir
@@ -79,6 +79,11 @@ def test_create_omezarr_container(tmp_path: Path, array_mode: str):
79
79
  assert isinstance(omezarr.__repr__(), str)
80
80
  assert omezarr.levels == 3
81
81
  assert omezarr.levels_paths == ["0", "1", "2"]
82
+ assert omezarr.is_3d
83
+ assert not omezarr.is_time_series
84
+ assert not omezarr.is_multi_channels
85
+ assert not omezarr.is_2d_time_series
86
+ assert not omezarr.is_3d_time_series
82
87
 
83
88
  image = omezarr.get_image()
84
89
 
@@ -152,4 +157,4 @@ def test_remote_omezarr_container():
152
157
  # ]
153
158
 
154
159
  _ = omezarr.get_label("nuclei", path="0")
155
- # _ = omezarr.get_table("well_ROI_table")
160
+ _ = omezarr.get_table("well_ROI_table", check_type="roi_table")
@@ -438,7 +438,7 @@ def test_label_meta():
438
438
  assert label_meta.get_dataset(pixel_size=datasets[-1].pixel_size).path == "3"
439
439
 
440
440
 
441
- def test_fail_label_meta():
441
+ def test_channels_label_meta():
442
442
  on_disk_axes = [
443
443
  Axis(on_disk_name="t", axis_type=AxisType.time, unit=TimeUnits.s),
444
444
  Axis(on_disk_name="c"),
@@ -465,9 +465,4 @@ def test_fail_label_meta():
465
465
  s * f for s, f in zip(on_disk_scale, [1, 1, 1, 2, 2], strict=True)
466
466
  ]
467
467
 
468
- with pytest.raises(ValueError):
469
- NgioLabelMeta(
470
- version="0.4",
471
- name="test",
472
- datasets=datasets,
473
- )
468
+ _ = NgioLabelMeta(version="0.4", name="test", datasets=datasets)
@@ -1,39 +0,0 @@
1
- name: Build Docs
2
-
3
- on:
4
- push:
5
- branches:
6
- - main
7
- tags:
8
- - "v*"
9
-
10
- jobs:
11
- deploy:
12
- name: Deploy Docs
13
- runs-on: ubuntu-latest
14
-
15
- steps:
16
- - uses: actions/checkout@v4
17
-
18
- - name: 🐍 Set up Python
19
- uses: actions/setup-python@v5
20
- with:
21
- python-version: "3.13"
22
- cache-dependency-path: "pyproject.toml"
23
- cache: "pip"
24
-
25
- - name: Install Dependencies
26
- run: |
27
- python -m pip install -U pip
28
- python -m pip install .[dev]
29
- python -m pip install .[docs]
30
-
31
- - name: 📚 Build Docs
32
- run: mkdocs build --clean
33
-
34
- # If something goes wrong with --pre tests, we can open an issue in the repo
35
- - name: Deploy Docs
36
- uses: peaceiris/actions-gh-pages@v4
37
- with:
38
- personal_token: ${{ secrets.GITHUB_TOKEN }}
39
- publish_dir: ./site
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