ngio 0.2.3__tar.gz → 0.2.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ngio-0.2.3 → ngio-0.2.5}/PKG-INFO +1 -1
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/hcs/plate.py +16 -4
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/images/ome_zarr_container.py +16 -4
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/ome_zarr_meta/ngio_specs/_ngio_hcs.py +5 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/tables/backends/_utils.py +4 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/tables/tables_container.py +11 -2
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/tables/v1/_roi_table.py +8 -3
- {ngio-0.2.3 → ngio-0.2.5}/tests/unit/hcs/test_plate.py +3 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/unit/tables/test_backends_utils.py +12 -1
- {ngio-0.2.3 → ngio-0.2.5}/tests/unit/tables/test_roi_table_v1.py +49 -2
- ngio-0.2.3/index.md +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/.copier-answers.yml +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/.gitattributes +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/.github/ISSUE_TEMPLATE.md +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/.github/TEST_FAIL_TEMPLATE.md +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/.github/dependabot.yml +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/.github/scripts/download_data.sh +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/.github/workflows/build_docs.yml +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/.github/workflows/ci.yml +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/.gitignore +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/.pre-commit-config.yaml +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/LICENSE +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/README.md +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/_typos.toml +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/docs/api/common.md +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/docs/api/hcs.md +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/docs/api/images.md +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/docs/api/ngio.md +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/docs/api/tables.md +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/docs/api/utils.md +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/docs/code_of_conduct.md +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/docs/contributing.md +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/docs/getting_started/0_quickstart.md +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/docs/getting_started/1_ome_zarr_containers.md +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/docs/getting_started/2_images.md +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/docs/getting_started/3_tables.md +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/docs/getting_started/4_masked_images.md +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/docs/getting_started/5_hcs.md +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/docs/index.md +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/docs/tutorials/feature_extraction.ipynb +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/docs/tutorials/hcs_processing.ipynb +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/docs/tutorials/image_processing.ipynb +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/docs/tutorials/image_segmentation.ipynb +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/mkdocs.yml +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/pyproject.toml +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/__init__.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/common/__init__.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/common/_array_pipe.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/common/_axes_transforms.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/common/_common_types.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/common/_dimensions.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/common/_masking_roi.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/common/_pyramid.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/common/_roi.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/common/_slicer.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/common/_zoom.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/hcs/__init__.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/images/__init__.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/images/abstract_image.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/images/create.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/images/image.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/images/label.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/images/masked_image.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/ome_zarr_meta/__init__.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/ome_zarr_meta/_meta_handlers.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/ome_zarr_meta/ngio_specs/__init__.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/ome_zarr_meta/ngio_specs/_axes.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/ome_zarr_meta/ngio_specs/_channels.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/ome_zarr_meta/ngio_specs/_dataset.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/ome_zarr_meta/ngio_specs/_ngio_image.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/ome_zarr_meta/ngio_specs/_pixel_size.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/ome_zarr_meta/v04/__init__.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/ome_zarr_meta/v04/_custom_models.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/ome_zarr_meta/v04/_v04_spec_utils.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/tables/__init__.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/tables/_validators.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/tables/backends/__init__.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/tables/backends/_abstract_backend.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/tables/backends/_anndata_utils.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/tables/backends/_anndata_v1.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/tables/backends/_csv_v1.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/tables/backends/_json_v1.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/tables/backends/_table_backends.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/tables/v1/__init__.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/tables/v1/_feature_table.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/tables/v1/_generic_table.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/utils/__init__.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/utils/_datasets.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/utils/_errors.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/utils/_fractal_fsspec_store.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/utils/_logger.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/src/ngio/utils/_zarr_utils.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/conftest.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_c1yx.zarr/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_c1yx.zarr/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_c1yx.zarr/0/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_c1yx.zarr/1/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_c1yx.zarr/labels/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_c1yx.zarr/labels/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_cyx.zarr/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_cyx.zarr/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_cyx.zarr/0/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_cyx.zarr/1/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_cyx.zarr/labels/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_cyx.zarr/labels/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_cyx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_cyx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_czyx.zarr/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_czyx.zarr/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_czyx.zarr/0/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_czyx.zarr/1/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_czyx.zarr/labels/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_czyx.zarr/labels/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_czyx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_czyx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tcyx.zarr/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tcyx.zarr/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tcyx.zarr/0/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tcyx.zarr/1/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tcyx.zarr/labels/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tcyx.zarr/labels/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tczyx.zarr/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tczyx.zarr/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tczyx.zarr/0/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tczyx.zarr/1/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tczyx.zarr/labels/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tczyx.zarr/labels/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tyx.zarr/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tyx.zarr/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tyx.zarr/0/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tyx.zarr/1/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tyx.zarr/labels/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tyx.zarr/labels/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tyx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tyx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tzyx.zarr/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tzyx.zarr/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tzyx.zarr/0/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tzyx.zarr/1/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tzyx.zarr/labels/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tzyx.zarr/labels/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_yx.zarr/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_yx.zarr/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_yx.zarr/0/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_yx.zarr/1/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_yx.zarr/labels/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_yx.zarr/labels/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_yx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_yx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_yx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_yx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_zyx.zarr/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_zyx.zarr/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_zyx.zarr/0/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_zyx.zarr/1/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_zyx.zarr/labels/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_zyx.zarr/labels/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_zyx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_zyx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/meta/base_ome_zarr_image_meta.json +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/meta/base_ome_zarr_image_meta_wrong_axis_order.json +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/meta/base_ome_zarr_label_meta.json +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/meta/base_ome_zarr_well_meta.json +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/meta/ome_zarr_well_path_normalization_meta.json +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/unit/common/test_dimensions.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/unit/common/test_pyramid.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/unit/common/test_roi.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/unit/hcs/test_well.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/unit/images/test_create.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/unit/images/test_images.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/unit/images/test_masked_images.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/unit/images/test_omezarr_container.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/unit/ome_zarr_meta/test_image_handler.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/unit/ome_zarr_meta/test_unit_ngio_specs.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/unit/ome_zarr_meta/test_unit_v04_utils.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/unit/tables/test_backends.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/unit/tables/test_feature_table.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/unit/tables/test_generic_table.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/unit/tables/test_masking_roi_table_v1.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/unit/tables/test_table_group.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/unit/tables/test_validators.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/unit/utils/test_download_datasets.py +0 -0
- {ngio-0.2.3 → ngio-0.2.5}/tests/unit/utils/test_zarr_utils.py +0 -0
|
@@ -686,6 +686,9 @@ class OmeZarrPlate:
|
|
|
686
686
|
"""List all ROI tables in the image."""
|
|
687
687
|
return self.tables_container.list_roi_tables()
|
|
688
688
|
|
|
689
|
+
@overload
|
|
690
|
+
def get_table(self, name: str) -> Table: ...
|
|
691
|
+
|
|
689
692
|
@overload
|
|
690
693
|
def get_table(self, name: str, check_type: None) -> Table: ...
|
|
691
694
|
|
|
@@ -708,8 +711,19 @@ class OmeZarrPlate:
|
|
|
708
711
|
) -> GenericRoiTable: ...
|
|
709
712
|
|
|
710
713
|
def get_table(self, name: str, check_type: TypedTable | None = None) -> Table:
|
|
711
|
-
"""Get a table from the image.
|
|
712
|
-
|
|
714
|
+
"""Get a table from the image.
|
|
715
|
+
|
|
716
|
+
Args:
|
|
717
|
+
name (str): The name of the table.
|
|
718
|
+
check_type (TypedTable | None): The type of the table. If None, the
|
|
719
|
+
type is not checked. If a type is provided, the table must be of that
|
|
720
|
+
type.
|
|
721
|
+
"""
|
|
722
|
+
if check_type is None:
|
|
723
|
+
table = self.tables_container.get(name, strict=False)
|
|
724
|
+
return table
|
|
725
|
+
|
|
726
|
+
table = self.tables_container.get(name, strict=True)
|
|
713
727
|
match check_type:
|
|
714
728
|
case "roi_table":
|
|
715
729
|
if not isinstance(table, RoiTable):
|
|
@@ -740,8 +754,6 @@ class OmeZarrPlate:
|
|
|
740
754
|
f"Found type: {table.type()}"
|
|
741
755
|
)
|
|
742
756
|
return table
|
|
743
|
-
case None:
|
|
744
|
-
return table
|
|
745
757
|
case _:
|
|
746
758
|
raise NgioValueError(f"Unknown check_type: {check_type}")
|
|
747
759
|
|
|
@@ -353,6 +353,9 @@ class OmeZarrContainer:
|
|
|
353
353
|
"""List all ROI tables in the image."""
|
|
354
354
|
return self.tables_container.list_roi_tables()
|
|
355
355
|
|
|
356
|
+
@overload
|
|
357
|
+
def get_table(self, name: str) -> Table: ...
|
|
358
|
+
|
|
356
359
|
@overload
|
|
357
360
|
def get_table(self, name: str, check_type: None) -> Table: ...
|
|
358
361
|
|
|
@@ -375,8 +378,19 @@ class OmeZarrContainer:
|
|
|
375
378
|
) -> GenericRoiTable: ...
|
|
376
379
|
|
|
377
380
|
def get_table(self, name: str, check_type: TypedTable | None = None) -> Table:
|
|
378
|
-
"""Get a table from the image.
|
|
379
|
-
|
|
381
|
+
"""Get a table from the image.
|
|
382
|
+
|
|
383
|
+
Args:
|
|
384
|
+
name (str): The name of the table.
|
|
385
|
+
check_type (TypedTable | None): The type of the table. If None, the
|
|
386
|
+
type is not checked. If a type is provided, the table must be of that
|
|
387
|
+
type.
|
|
388
|
+
"""
|
|
389
|
+
if check_type is None:
|
|
390
|
+
table = self.tables_container.get(name, strict=False)
|
|
391
|
+
return table
|
|
392
|
+
|
|
393
|
+
table = self.tables_container.get(name, strict=True)
|
|
380
394
|
match check_type:
|
|
381
395
|
case "roi_table":
|
|
382
396
|
if not isinstance(table, RoiTable):
|
|
@@ -407,8 +421,6 @@ class OmeZarrContainer:
|
|
|
407
421
|
f"Found type: {table.type()}"
|
|
408
422
|
)
|
|
409
423
|
return table
|
|
410
|
-
case None:
|
|
411
|
-
return table
|
|
412
424
|
case _:
|
|
413
425
|
raise NgioValueError(f"Unknown check_type: {check_type}")
|
|
414
426
|
|
|
@@ -361,6 +361,7 @@ class NgioPlateMeta(HCSAttrs):
|
|
|
361
361
|
acquisitions=self.plate.acquisitions,
|
|
362
362
|
wells=wells,
|
|
363
363
|
field_count=self.plate.field_count,
|
|
364
|
+
name=self.plate.name,
|
|
364
365
|
version=self.plate.version,
|
|
365
366
|
)
|
|
366
367
|
return NgioPlateMeta(plate=new_plate), row_idx
|
|
@@ -398,6 +399,7 @@ class NgioPlateMeta(HCSAttrs):
|
|
|
398
399
|
acquisitions=self.plate.acquisitions,
|
|
399
400
|
wells=wells,
|
|
400
401
|
field_count=self.plate.field_count,
|
|
402
|
+
name=self.plate.name,
|
|
401
403
|
version=self.plate.version,
|
|
402
404
|
)
|
|
403
405
|
return NgioPlateMeta(plate=new_plate), column_idx
|
|
@@ -435,6 +437,7 @@ class NgioPlateMeta(HCSAttrs):
|
|
|
435
437
|
acquisitions=plate.plate.acquisitions,
|
|
436
438
|
wells=wells,
|
|
437
439
|
field_count=plate.plate.field_count,
|
|
440
|
+
name=plate.plate.name,
|
|
438
441
|
version=plate.plate.version,
|
|
439
442
|
)
|
|
440
443
|
return NgioPlateMeta(plate=new_plate)
|
|
@@ -473,6 +476,7 @@ class NgioPlateMeta(HCSAttrs):
|
|
|
473
476
|
acquisitions=acquisitions,
|
|
474
477
|
wells=self.plate.wells,
|
|
475
478
|
field_count=self.plate.field_count,
|
|
479
|
+
name=self.plate.name,
|
|
476
480
|
version=self.plate.version,
|
|
477
481
|
)
|
|
478
482
|
return NgioPlateMeta(plate=new_plate)
|
|
@@ -508,6 +512,7 @@ class NgioPlateMeta(HCSAttrs):
|
|
|
508
512
|
acquisitions=self.plate.acquisitions,
|
|
509
513
|
wells=wells,
|
|
510
514
|
field_count=self.plate.field_count,
|
|
515
|
+
name=self.plate.name,
|
|
511
516
|
version=self.plate.version,
|
|
512
517
|
)
|
|
513
518
|
return NgioPlateMeta(plate=new_plate)
|
|
@@ -53,6 +53,10 @@ def _validate_index_key_df(pandas_df: DataFrame, index_key: str | None) -> DataF
|
|
|
53
53
|
pandas_df.index.name = index_key
|
|
54
54
|
return pandas_df
|
|
55
55
|
|
|
56
|
+
if pandas_df.index.name is None:
|
|
57
|
+
pandas_df.index.name = index_key
|
|
58
|
+
return pandas_df
|
|
59
|
+
|
|
56
60
|
raise NgioTableValidationError(f"Index key '{index_key}' is not found in DataFrame")
|
|
57
61
|
|
|
58
62
|
|
|
@@ -90,6 +90,7 @@ class ImplementedTables:
|
|
|
90
90
|
version: str,
|
|
91
91
|
handler: ZarrGroupHandler,
|
|
92
92
|
backend_name: str | None = None,
|
|
93
|
+
strict: bool = True,
|
|
93
94
|
) -> Table:
|
|
94
95
|
"""Try to get a handler for the given store based on the metadata version."""
|
|
95
96
|
_errors = {}
|
|
@@ -102,7 +103,12 @@ class ImplementedTables:
|
|
|
102
103
|
)
|
|
103
104
|
return table
|
|
104
105
|
except Exception as e:
|
|
105
|
-
|
|
106
|
+
if strict:
|
|
107
|
+
raise NgioValidationError(
|
|
108
|
+
f"Could not load table {name} from handler. Error: {e}"
|
|
109
|
+
) from e
|
|
110
|
+
else:
|
|
111
|
+
_errors[name] = e
|
|
106
112
|
# If no table was found, we can try to load the table from a generic table
|
|
107
113
|
try:
|
|
108
114
|
table = GenericTable._from_handler(
|
|
@@ -207,7 +213,9 @@ class TablesContainer:
|
|
|
207
213
|
filtered_tables.append(table_name)
|
|
208
214
|
return filtered_tables
|
|
209
215
|
|
|
210
|
-
def get(
|
|
216
|
+
def get(
|
|
217
|
+
self, name: str, backend_name: str | None = None, strict: bool = True
|
|
218
|
+
) -> Table:
|
|
211
219
|
"""Get a label from the group."""
|
|
212
220
|
if name not in self.list():
|
|
213
221
|
raise KeyError(f"Table '{name}' not found in the group.")
|
|
@@ -220,6 +228,7 @@ class TablesContainer:
|
|
|
220
228
|
version=table_version,
|
|
221
229
|
handler=table_handler,
|
|
222
230
|
backend_name=backend_name,
|
|
231
|
+
strict=strict,
|
|
223
232
|
)
|
|
224
233
|
|
|
225
234
|
def add(
|
|
@@ -227,13 +227,18 @@ class _GenericRoiTableV1(Generic[_roi_meta]):
|
|
|
227
227
|
"""List all ROIs in the table."""
|
|
228
228
|
return list(self._rois.values())
|
|
229
229
|
|
|
230
|
-
def add(self, roi: Roi | Iterable[Roi]) -> None:
|
|
231
|
-
"""Append ROIs to the current table.
|
|
230
|
+
def add(self, roi: Roi | Iterable[Roi], overwrite: bool = False) -> None:
|
|
231
|
+
"""Append ROIs to the current table.
|
|
232
|
+
|
|
233
|
+
Args:
|
|
234
|
+
roi: A single ROI or a list of ROIs to add to the table.
|
|
235
|
+
overwrite: If True, overwrite existing ROIs with the same name.
|
|
236
|
+
"""
|
|
232
237
|
if isinstance(roi, Roi):
|
|
233
238
|
roi = [roi]
|
|
234
239
|
|
|
235
240
|
for _roi in roi:
|
|
236
|
-
if _roi.name in self._rois:
|
|
241
|
+
if not overwrite and _roi.name in self._rois:
|
|
237
242
|
raise NgioValueError(f"ROI {_roi.name} already exists in the table.")
|
|
238
243
|
self._rois[_roi.name] = _roi
|
|
239
244
|
|
|
@@ -61,6 +61,8 @@ def test_create_and_edit_plate(tmp_path: Path):
|
|
|
61
61
|
test_plate.add_image(row="B", column="03", image_path="0", acquisition_id=0)
|
|
62
62
|
test_plate.add_image(row="B", column="03", image_path="1", acquisition_id=0)
|
|
63
63
|
|
|
64
|
+
assert test_plate.meta.plate.name == "test_plate"
|
|
65
|
+
|
|
64
66
|
with pytest.raises(NgioValueError):
|
|
65
67
|
test_plate.add_image(row="B", column="03", image_path="1", acquisition_id=1)
|
|
66
68
|
|
|
@@ -106,6 +108,7 @@ def test_add_well(tmp_path: Path):
|
|
|
106
108
|
assert test_plate.rows == ["B"]
|
|
107
109
|
assert test_plate.acquisition_ids == []
|
|
108
110
|
assert test_plate.wells_paths() == ["B/03"]
|
|
111
|
+
assert test_plate.meta.plate.name == "test_plate"
|
|
109
112
|
|
|
110
113
|
test_plate.add_column("04")
|
|
111
114
|
test_plate.add_row("C")
|
|
@@ -118,6 +118,17 @@ def test_normalize_pandas_df(in_df, out_df, index_key, index_type, reset_index):
|
|
|
118
118
|
)
|
|
119
119
|
|
|
120
120
|
|
|
121
|
+
def test_normalize_pandas_df_index_none():
|
|
122
|
+
"""Test the normalization of a pandas DataFrame."""
|
|
123
|
+
df = normalize_pandas_df(
|
|
124
|
+
sample_pandas_df_no_index(),
|
|
125
|
+
index_key="new_index_name",
|
|
126
|
+
index_type="str",
|
|
127
|
+
reset_index=False,
|
|
128
|
+
)
|
|
129
|
+
assert df.index.name == "new_index_name"
|
|
130
|
+
|
|
131
|
+
|
|
121
132
|
def test_fail_normalize_pandas_df():
|
|
122
133
|
"""Test the normalization of a pandas DataFrame."""
|
|
123
134
|
with pytest.raises(NgioTableValidationError):
|
|
@@ -130,7 +141,7 @@ def test_fail_normalize_pandas_df():
|
|
|
130
141
|
|
|
131
142
|
with pytest.raises(NgioTableValidationError):
|
|
132
143
|
normalize_pandas_df(
|
|
133
|
-
|
|
144
|
+
sample_pandas_df_str_index(),
|
|
134
145
|
index_key="not_exist",
|
|
135
146
|
index_type="str",
|
|
136
147
|
reset_index=False,
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
from pathlib import Path
|
|
2
2
|
|
|
3
|
+
import pandas as pd
|
|
3
4
|
import pytest
|
|
4
5
|
|
|
6
|
+
from ngio.tables import RoiTable
|
|
7
|
+
from ngio.tables.backends._anndata_v1 import AnnDataBackend
|
|
5
8
|
from ngio.tables.tables_container import open_table, write_table
|
|
6
|
-
from ngio.tables.v1._roi_table import Roi, RoiTableV1
|
|
7
|
-
from ngio.utils import NgioValueError
|
|
9
|
+
from ngio.tables.v1._roi_table import Roi, RoiTableV1, RoiTableV1Meta
|
|
10
|
+
from ngio.utils import NgioValueError, ZarrGroupHandler
|
|
8
11
|
|
|
9
12
|
|
|
10
13
|
def test_roi_table_v1(tmp_path: Path):
|
|
@@ -38,6 +41,7 @@ def test_roi_table_v1(tmp_path: Path):
|
|
|
38
41
|
)
|
|
39
42
|
|
|
40
43
|
with pytest.raises(NgioValueError):
|
|
44
|
+
# ROI name already exists
|
|
41
45
|
table.add(
|
|
42
46
|
roi=Roi(
|
|
43
47
|
name="roi2",
|
|
@@ -51,6 +55,20 @@ def test_roi_table_v1(tmp_path: Path):
|
|
|
51
55
|
)
|
|
52
56
|
)
|
|
53
57
|
|
|
58
|
+
table.add(
|
|
59
|
+
roi=Roi(
|
|
60
|
+
name="roi2",
|
|
61
|
+
x=0.0,
|
|
62
|
+
y=0.0,
|
|
63
|
+
z=0.0,
|
|
64
|
+
x_length=1.0,
|
|
65
|
+
y_length=1.0,
|
|
66
|
+
z_length=1.0,
|
|
67
|
+
unit="micrometer", # type: ignore
|
|
68
|
+
),
|
|
69
|
+
overwrite=True,
|
|
70
|
+
)
|
|
71
|
+
|
|
54
72
|
write_table(store=tmp_path / "roi_table.zarr", table=table, backend="anndata_v1")
|
|
55
73
|
|
|
56
74
|
loaded_table = open_table(store=tmp_path / "roi_table.zarr")
|
|
@@ -66,3 +84,32 @@ def test_roi_table_v1(tmp_path: Path):
|
|
|
66
84
|
assert loaded_table._meta.backend == "anndata_v1"
|
|
67
85
|
assert loaded_table._meta.fractal_table_version == loaded_table.version()
|
|
68
86
|
assert loaded_table._meta.type == loaded_table.type()
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def test_roi_no_index(tmp_path: Path):
|
|
90
|
+
"""ngio needs to support reading a table without an index. for legacy reasons"""
|
|
91
|
+
handler = ZarrGroupHandler(tmp_path / "roi_table.zarr")
|
|
92
|
+
backend = AnnDataBackend(
|
|
93
|
+
group_handler=handler,
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
roi_table = pd.DataFrame(
|
|
97
|
+
{
|
|
98
|
+
"x_micrometer": [0.0, 1.0],
|
|
99
|
+
"y_micrometer": [0.0, 1.0],
|
|
100
|
+
"z_micrometer": [0.0, 1.0],
|
|
101
|
+
"len_x_micrometer": [1.0, 1.0],
|
|
102
|
+
"len_y_micrometer": [1.0, 1.0],
|
|
103
|
+
"len_z_micrometer": [1.0, 1.0],
|
|
104
|
+
}
|
|
105
|
+
)
|
|
106
|
+
roi_table.index = pd.Index(["roi_1", "roi_2"])
|
|
107
|
+
|
|
108
|
+
backend.write(
|
|
109
|
+
roi_table,
|
|
110
|
+
metadata=RoiTableV1Meta().model_dump(exclude_none=True),
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
roi_table = RoiTable._from_handler(handler=handler)
|
|
114
|
+
assert isinstance(roi_table, RoiTable)
|
|
115
|
+
assert len(roi_table.rois()) == 2
|
ngio-0.2.3/index.md
DELETED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/0/.zarray
RENAMED
|
File without changes
|
{ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/1/.zarray
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ngio-0.2.3 → ngio-0.2.5}/tests/data/v04/meta/base_ome_zarr_image_meta_wrong_axis_order.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|