ngio 0.3.5__tar.gz → 0.4.0a1__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.3.5 → ngio-0.4.0a1}/.github/workflows/build_docs.yml +1 -1
- {ngio-0.3.5 → ngio-0.4.0a1}/.github/workflows/ci.yml +3 -3
- {ngio-0.3.5 → ngio-0.4.0a1}/.pre-commit-config.yaml +4 -4
- ngio-0.4.0a1/CHANGELOG.md +55 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/PKG-INFO +3 -1
- ngio-0.4.0a1/docs/api/hcs.md +17 -0
- ngio-0.4.0a1/docs/api/images.md +17 -0
- ngio-0.4.0a1/docs/api/ngio/common.md +3 -0
- ngio-0.4.0a1/docs/api/ngio/hcs.md +3 -0
- ngio-0.4.0a1/docs/api/ngio/images.md +3 -0
- ngio-0.4.0a1/docs/api/ngio/ngio.md +3 -0
- ngio-0.4.0a1/docs/api/ngio/tables.md +3 -0
- ngio-0.4.0a1/docs/api/ngio/utils.md +3 -0
- ngio-0.4.0a1/docs/api/ome_zarr_container.md +14 -0
- ngio-0.4.0a1/docs/api/tables.md +1 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/docs/getting_started/1_ome_zarr_containers.md +2 -2
- {ngio-0.3.5 → ngio-0.4.0a1}/docs/getting_started/2_images.md +11 -9
- {ngio-0.3.5 → ngio-0.4.0a1}/docs/getting_started/3_tables.md +5 -5
- {ngio-0.3.5 → ngio-0.4.0a1}/docs/table_specs/backend.md +1 -1
- {ngio-0.3.5 → ngio-0.4.0a1}/docs/table_specs/table_types/masking_roi_table.md +2 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/docs/table_specs/table_types/roi_table.md +1 -0
- ngio-0.4.0a1/docs/tutorials/create_ome_zarr.ipynb +101 -0
- ngio-0.4.0a1/docs/tutorials/feature_extraction.ipynb +118 -0
- ngio-0.4.0a1/docs/tutorials/hcs_exploration.ipynb +138 -0
- ngio-0.4.0a1/docs/tutorials/image_processing.ipynb +218 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/docs/tutorials/image_segmentation.ipynb +15 -8
- {ngio-0.3.5 → ngio-0.4.0a1}/mkdocs.yml +32 -7
- {ngio-0.3.5 → ngio-0.4.0a1}/pyproject.toml +2 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/__init__.py +6 -0
- ngio-0.4.0a1/src/ngio/common/__init__.py +72 -0
- ngio-0.4.0a1/src/ngio/common/_array_io_pipes.py +549 -0
- ngio-0.4.0a1/src/ngio/common/_array_io_utils.py +508 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/common/_dimensions.py +63 -27
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/common/_masking_roi.py +38 -10
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/common/_pyramid.py +9 -7
- ngio-0.4.0a1/src/ngio/common/_roi.py +666 -0
- ngio-0.4.0a1/src/ngio/common/_synt_images_utils.py +101 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/common/_zoom.py +17 -12
- ngio-0.4.0a1/src/ngio/common/transforms/__init__.py +5 -0
- ngio-0.4.0a1/src/ngio/common/transforms/_label.py +12 -0
- ngio-0.4.0a1/src/ngio/common/transforms/_zoom.py +109 -0
- ngio-0.4.0a1/src/ngio/experimental/__init__.py +5 -0
- ngio-0.4.0a1/src/ngio/experimental/iterators/__init__.py +17 -0
- ngio-0.4.0a1/src/ngio/experimental/iterators/_abstract_iterator.py +170 -0
- ngio-0.4.0a1/src/ngio/experimental/iterators/_feature.py +151 -0
- ngio-0.4.0a1/src/ngio/experimental/iterators/_image_processing.py +169 -0
- ngio-0.4.0a1/src/ngio/experimental/iterators/_rois_utils.py +127 -0
- ngio-0.4.0a1/src/ngio/experimental/iterators/_segmentation.py +278 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/hcs/_plate.py +41 -36
- ngio-0.4.0a1/src/ngio/images/__init__.py +44 -0
- ngio-0.4.0a1/src/ngio/images/_abstract_image.py +490 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/images/_create.py +15 -15
- ngio-0.4.0a1/src/ngio/images/_create_synt_container.py +128 -0
- ngio-0.4.0a1/src/ngio/images/_image.py +895 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/images/_label.py +33 -30
- ngio-0.4.0a1/src/ngio/images/_masked_image.py +547 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/images/_ome_zarr_container.py +203 -66
- {ngio-0.3.5/src/ngio/common → ngio-0.4.0a1/src/ngio/images}/_table_ops.py +41 -41
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/ome_zarr_meta/ngio_specs/__init__.py +2 -8
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/ome_zarr_meta/ngio_specs/_axes.py +151 -128
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/ome_zarr_meta/ngio_specs/_channels.py +55 -18
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/ome_zarr_meta/ngio_specs/_dataset.py +7 -7
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/ome_zarr_meta/ngio_specs/_ngio_hcs.py +3 -3
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/ome_zarr_meta/ngio_specs/_ngio_image.py +11 -68
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/ome_zarr_meta/v04/_v04_spec_utils.py +1 -1
- ngio-0.4.0a1/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/mask.png +0 -0
- ngio-0.4.0a1/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/nuclei.png +0 -0
- ngio-0.4.0a1/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/raw.jpg +0 -0
- ngio-0.4.0a1/src/ngio/resources/__init__.py +54 -0
- ngio-0.4.0a1/src/ngio/resources/resource_model.py +35 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/tables/backends/_abstract_backend.py +5 -6
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/tables/backends/_anndata.py +1 -1
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/tables/backends/_anndata_utils.py +3 -3
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/tables/backends/_non_zarr_backends.py +1 -1
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/tables/backends/_table_backends.py +0 -1
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/tables/backends/_utils.py +3 -3
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/tables/v1/_roi_table.py +156 -69
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/utils/__init__.py +2 -3
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/utils/_logger.py +19 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/utils/_zarr_utils.py +1 -5
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/unit/common/test_dimensions.py +7 -11
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/unit/common/test_roi.py +4 -3
- ngio-0.4.0a1/tests/unit/common/test_transforms.py +59 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/unit/hcs/test_plate.py +2 -2
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/unit/images/test_create.py +13 -1
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/unit/images/test_masked_images.py +42 -2
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/unit/images/test_omezarr_container.py +136 -9
- {ngio-0.3.5/tests/unit/common → ngio-0.4.0a1/tests/unit/images}/test_table_ops.py +7 -7
- ngio-0.4.0a1/tests/unit/iterators/test_iterators.py +168 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/unit/ome_zarr_meta/test_unit_ngio_specs.py +32 -32
- ngio-0.3.5/CHANGELOG.md +0 -26
- ngio-0.3.5/docs/api/common.md +0 -6
- ngio-0.3.5/docs/api/hcs.md +0 -6
- ngio-0.3.5/docs/api/images.md +0 -6
- ngio-0.3.5/docs/api/ngio.md +0 -6
- ngio-0.3.5/docs/api/tables.md +0 -6
- ngio-0.3.5/docs/api/utils.md +0 -6
- ngio-0.3.5/docs/tutorials/feature_extraction.ipynb +0 -35
- ngio-0.3.5/docs/tutorials/hcs_processing.ipynb +0 -21
- ngio-0.3.5/docs/tutorials/image_processing.ipynb +0 -21
- ngio-0.3.5/src/ngio/common/__init__.py +0 -70
- ngio-0.3.5/src/ngio/common/_array_pipe.py +0 -288
- ngio-0.3.5/src/ngio/common/_axes_transforms.py +0 -64
- ngio-0.3.5/src/ngio/common/_common_types.py +0 -5
- ngio-0.3.5/src/ngio/common/_roi.py +0 -167
- ngio-0.3.5/src/ngio/common/_slicer.py +0 -96
- ngio-0.3.5/src/ngio/images/__init__.py +0 -23
- ngio-0.3.5/src/ngio/images/_abstract_image.py +0 -360
- ngio-0.3.5/src/ngio/images/_image.py +0 -532
- ngio-0.3.5/src/ngio/images/_masked_image.py +0 -273
- {ngio-0.3.5 → ngio-0.4.0a1}/.copier-answers.yml +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/.gitattributes +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/.github/ISSUE_TEMPLATE.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/.github/TEST_FAIL_TEMPLATE.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/.github/dependabot.yml +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/.github/pull_request_template.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/.gitignore +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/LICENSE +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/README.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/_typos.toml +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/docs/changelog.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/docs/code_of_conduct.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/docs/contributing.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/docs/getting_started/0_quickstart.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/docs/getting_started/4_masked_images.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/docs/getting_started/5_hcs.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/docs/index.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/docs/table_specs/overview.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/docs/table_specs/table_types/condition_table.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/docs/table_specs/table_types/custom_table.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/docs/table_specs/table_types/feature_table.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/docs/table_specs/table_types/generic_table.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/hcs/__init__.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/ome_zarr_meta/__init__.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/ome_zarr_meta/_meta_handlers.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/ome_zarr_meta/ngio_specs/_pixel_size.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/ome_zarr_meta/v04/__init__.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/ome_zarr_meta/v04/_custom_models.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/tables/__init__.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/tables/_abstract_table.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/tables/_tables_container.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/tables/backends/__init__.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/tables/backends/_csv.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/tables/backends/_json.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/tables/backends/_parquet.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/tables/v1/__init__.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/tables/v1/_condition_table.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/tables/v1/_feature_table.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/tables/v1/_generic_table.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/utils/_datasets.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/utils/_errors.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/src/ngio/utils/_fractal_fsspec_store.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/conftest.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_c1yx.zarr/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_c1yx.zarr/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_c1yx.zarr/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_c1yx.zarr/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_c1yx.zarr/labels/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_c1yx.zarr/labels/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_cyx.zarr/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_cyx.zarr/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_cyx.zarr/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_cyx.zarr/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_cyx.zarr/labels/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_cyx.zarr/labels/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_cyx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_cyx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_czyx.zarr/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_czyx.zarr/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_czyx.zarr/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_czyx.zarr/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_czyx.zarr/labels/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_czyx.zarr/labels/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_czyx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_czyx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tcyx.zarr/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tcyx.zarr/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tcyx.zarr/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tcyx.zarr/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tcyx.zarr/labels/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tcyx.zarr/labels/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tczyx.zarr/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tczyx.zarr/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tczyx.zarr/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tczyx.zarr/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tczyx.zarr/labels/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tczyx.zarr/labels/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tyx.zarr/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tyx.zarr/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tyx.zarr/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tyx.zarr/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tyx.zarr/labels/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tyx.zarr/labels/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tyx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tyx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tzyx.zarr/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tzyx.zarr/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tzyx.zarr/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tzyx.zarr/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tzyx.zarr/labels/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tzyx.zarr/labels/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_yx.zarr/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_yx.zarr/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_yx.zarr/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_yx.zarr/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_yx.zarr/labels/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_yx.zarr/labels/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_yx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_yx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_yx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_yx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_zyx.zarr/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_zyx.zarr/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_zyx.zarr/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_zyx.zarr/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_zyx.zarr/labels/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_zyx.zarr/labels/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_zyx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/images/test_image_zyx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/meta/base_ome_zarr_image_meta.json +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/meta/base_ome_zarr_image_meta_wrong_axis_order.json +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/meta/base_ome_zarr_label_meta.json +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/meta/base_ome_zarr_well_meta.json +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/data/v04/meta/ome_zarr_well_path_normalization_meta.json +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/unit/common/test_pyramid.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/unit/hcs/test_well.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/unit/images/test_images.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/unit/ome_zarr_meta/test_image_handler.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/unit/ome_zarr_meta/test_unit_v04_utils.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/unit/tables/test_backends.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/unit/tables/test_backends_utils.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/unit/tables/test_feature_table.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/unit/tables/test_generic_table.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/unit/tables/test_masking_roi_table_v1.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/unit/tables/test_roi_table_v1.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/unit/tables/test_table_group.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/unit/utils/test_download_datasets.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0a1}/tests/unit/utils/test_zarr_utils.py +0 -0
|
@@ -24,7 +24,7 @@ jobs:
|
|
|
24
24
|
# included in the sdist (unless explicitly excluded)
|
|
25
25
|
runs-on: ubuntu-latest
|
|
26
26
|
steps:
|
|
27
|
-
- uses: actions/checkout@
|
|
27
|
+
- uses: actions/checkout@v5
|
|
28
28
|
- run: pipx run check-manifest
|
|
29
29
|
|
|
30
30
|
test:
|
|
@@ -37,7 +37,7 @@ jobs:
|
|
|
37
37
|
platform: [ubuntu-latest, macos-latest, windows-latest]
|
|
38
38
|
|
|
39
39
|
steps:
|
|
40
|
-
- uses: actions/checkout@
|
|
40
|
+
- uses: actions/checkout@v5
|
|
41
41
|
|
|
42
42
|
- name: 🐍 Set up Python ${{ matrix.python-version }}
|
|
43
43
|
uses: actions/setup-python@v5
|
|
@@ -98,7 +98,7 @@ jobs:
|
|
|
98
98
|
contents: write
|
|
99
99
|
|
|
100
100
|
steps:
|
|
101
|
-
- uses: actions/checkout@
|
|
101
|
+
- uses: actions/checkout@v5
|
|
102
102
|
with:
|
|
103
103
|
fetch-depth: 0
|
|
104
104
|
|
|
@@ -9,19 +9,19 @@ ci:
|
|
|
9
9
|
|
|
10
10
|
repos:
|
|
11
11
|
- repo: https://github.com/abravalheri/validate-pyproject
|
|
12
|
-
rev: v0.
|
|
12
|
+
rev: v0.24.1
|
|
13
13
|
hooks:
|
|
14
14
|
- id: validate-pyproject
|
|
15
15
|
|
|
16
16
|
- repo: https://github.com/crate-ci/typos
|
|
17
|
-
rev: v1
|
|
17
|
+
rev: v1.36.2
|
|
18
18
|
hooks:
|
|
19
19
|
- id: typos
|
|
20
20
|
#args: [--force-exclude] # omitting --write-changes
|
|
21
21
|
args: [--force-exclude, --write-changes]
|
|
22
22
|
|
|
23
23
|
- repo: https://github.com/charliermarsh/ruff-pre-commit
|
|
24
|
-
rev: v0.
|
|
24
|
+
rev: v0.12.12
|
|
25
25
|
hooks:
|
|
26
26
|
- id: ruff
|
|
27
27
|
args: [--fix] # may also add '--unsafe-fixes'
|
|
@@ -37,7 +37,7 @@ repos:
|
|
|
37
37
|
# # - numpy
|
|
38
38
|
|
|
39
39
|
- repo: https://github.com/kynan/nbstripout
|
|
40
|
-
rev: 0.
|
|
40
|
+
rev: 0.8.1
|
|
41
41
|
hooks:
|
|
42
42
|
- id: nbstripout
|
|
43
43
|
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [v0.4.0a1]
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- add support for time in rois and roi-tables
|
|
8
|
+
- Building masking roi tables expanded to time series data
|
|
9
|
+
- add experimental support for Iterators
|
|
10
|
+
- add support for rescaling on-the-fly masks for masked images
|
|
11
|
+
|
|
12
|
+
### API Changes
|
|
13
|
+
|
|
14
|
+
- 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.
|
|
15
|
+
- 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.
|
|
16
|
+
- A new model for channel selection is available. Now channels can be selected by name, index or with `ChannelSelectionModel` object.
|
|
17
|
+
- Change `table_name` keyword argument to `name` for consistency in all table concatenation functions, e.g. `concatenate_image_tables`, `concatenate_image_tables_as`, etc.
|
|
18
|
+
- Change to `Dimension` class. `get_shape` and `get_canonical_shape` have been removed, `get` uses new keyword arguments `default` instead of `strict`.
|
|
19
|
+
- 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.
|
|
20
|
+
- Also for `get_roi` now specific methods are available. For ROI objects, the `get_roi_as_numpy`, and `get_roi_as_dask` methods.
|
|
21
|
+
- Table ops moved to `ngio.images`
|
|
22
|
+
- Make `label` an explicit attribute in `Roi` objects.
|
|
23
|
+
|
|
24
|
+
### Table specs
|
|
25
|
+
|
|
26
|
+
- add `t_second` and `len_t_second` to ROI tables and masking ROI tables
|
|
27
|
+
|
|
28
|
+
### Bug Fixes
|
|
29
|
+
|
|
30
|
+
- improve type consistency and remove non-necessary "type: ignore"
|
|
31
|
+
|
|
32
|
+
## [v0.3.5]
|
|
33
|
+
|
|
34
|
+
- 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.
|
|
35
|
+
|
|
36
|
+
## [v0.3.4]
|
|
37
|
+
|
|
38
|
+
- allow to write as `anndata_v1` for backward compatibility with older ngio versions.
|
|
39
|
+
|
|
40
|
+
## [v0.3.3]
|
|
41
|
+
|
|
42
|
+
### Chores
|
|
43
|
+
|
|
44
|
+
- improve dataset download process and streamline the CI workflows
|
|
45
|
+
|
|
46
|
+
## [v0.3.2]
|
|
47
|
+
|
|
48
|
+
### API Changes
|
|
49
|
+
|
|
50
|
+
- change table backend default to `anndata_v1` for backward compatibility. This will be chaanged again when ngio `v0.2.x` is no longer supported.
|
|
51
|
+
|
|
52
|
+
### Bug Fixes
|
|
53
|
+
|
|
54
|
+
- fix [#13](https://github.com/BioVisionCenter/fractal-converters-tools/issues/13) (converters tools)
|
|
55
|
+
- 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.
|
|
3
|
+
Version: 0.4.0a1
|
|
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
|
|
@@ -38,11 +38,13 @@ Requires-Dist: napari; extra == 'dev'
|
|
|
38
38
|
Requires-Dist: notebook; extra == 'dev'
|
|
39
39
|
Requires-Dist: pdbpp; extra == 'dev'
|
|
40
40
|
Requires-Dist: pre-commit; extra == 'dev'
|
|
41
|
+
Requires-Dist: pympler; extra == 'dev'
|
|
41
42
|
Requires-Dist: pyqt5; extra == 'dev'
|
|
42
43
|
Requires-Dist: rich; extra == 'dev'
|
|
43
44
|
Requires-Dist: ruff; extra == 'dev'
|
|
44
45
|
Requires-Dist: scikit-image; extra == 'dev'
|
|
45
46
|
Provides-Extra: docs
|
|
47
|
+
Requires-Dist: griffe-typingdoc; extra == 'docs'
|
|
46
48
|
Requires-Dist: markdown-exec[ansi]; extra == 'docs'
|
|
47
49
|
Requires-Dist: matplotlib; extra == 'docs'
|
|
48
50
|
Requires-Dist: mike; extra == 'docs'
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# HCS API Documentation
|
|
2
|
+
|
|
3
|
+
## Open a Plate
|
|
4
|
+
|
|
5
|
+
::: ngio.open_ome_zarr_plate
|
|
6
|
+
|
|
7
|
+
## ngio.OmeZarrPlate Class Reference
|
|
8
|
+
|
|
9
|
+
::: ngio.OmeZarrPlate
|
|
10
|
+
|
|
11
|
+
## Open a Well
|
|
12
|
+
|
|
13
|
+
::: ngio.open_ome_zarr_well
|
|
14
|
+
|
|
15
|
+
## ngio.OmeZarrWell Class Reference
|
|
16
|
+
|
|
17
|
+
::: ngio.OmeZarrWell
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# OmeZarrContainer: API Documentation
|
|
2
|
+
|
|
3
|
+
## Open an OME-Zarr Container
|
|
4
|
+
|
|
5
|
+
::: ngio.open_ome_zarr_container
|
|
6
|
+
|
|
7
|
+
## Create an OME-Zarr Container
|
|
8
|
+
|
|
9
|
+
::: ngio.create_empty_ome_zarr
|
|
10
|
+
::: ngio.create_ome_zarr_from_array
|
|
11
|
+
|
|
12
|
+
## OmeZarrContainer Class
|
|
13
|
+
|
|
14
|
+
::: ngio.OmeZarrContainer
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Ngio Tables API Documentation
|
|
@@ -81,8 +81,8 @@ Examples of the OME-Zarr metadata access:
|
|
|
81
81
|
```
|
|
82
82
|
The metadata object contains all the information about the image, for example, the channel labels:
|
|
83
83
|
```pycon exec="true" source="console" session="get_started"
|
|
84
|
-
>>> metadata.channel_labels
|
|
85
|
-
>>> print(metadata.channel_labels) # markdown-exec: hide
|
|
84
|
+
>>> metadata.channels_meta.channel_labels
|
|
85
|
+
>>> print(metadata.channels_meta.channel_labels) # markdown-exec: hide
|
|
86
86
|
```
|
|
87
87
|
|
|
88
88
|
## Accessing images / labels / tables
|
|
@@ -72,29 +72,31 @@ Once you have the `Image` object, you can access the image data as a:
|
|
|
72
72
|
|
|
73
73
|
=== "Numpy Array"
|
|
74
74
|
```pycon exec="true" source="console" session="get_started"
|
|
75
|
-
>>> data = image.
|
|
75
|
+
>>> data = image.get_as_numpy() # Get the image as a numpy array
|
|
76
76
|
>>> data.shape, data.dtype
|
|
77
77
|
>>> print(data.shape, data.dtype) # markdown-exec: hide
|
|
78
78
|
```
|
|
79
79
|
|
|
80
80
|
=== "Dask Array"
|
|
81
81
|
```pycon exec="true" source="console" session="get_started"
|
|
82
|
-
>>> dask_array = image.
|
|
82
|
+
>>> dask_array = image.get_as_dask() # Get the image as a dask array
|
|
83
83
|
>>> dask_array
|
|
84
84
|
>>> print(dask_array) # markdown-exec: hide
|
|
85
85
|
```
|
|
86
86
|
|
|
87
|
-
=== "
|
|
87
|
+
=== "Legacy"
|
|
88
|
+
A generic `get_array` method is still available for backwards compatibility.
|
|
89
|
+
|
|
88
90
|
```pycon exec="true" source="console" session="get_started"
|
|
89
|
-
>>>
|
|
90
|
-
>>>
|
|
91
|
-
>>> print(
|
|
91
|
+
>>> data = image.get_array(mode="numpy") # Get the image as a numpy or dask or delayed object
|
|
92
|
+
>>> data.shape, data.dtype
|
|
93
|
+
>>> print(data.shape, data.dtype) # markdown-exec: hide
|
|
92
94
|
```
|
|
93
95
|
|
|
94
|
-
The `
|
|
96
|
+
The `get_as_*` can also be used to slice the image data, and query specific axes in specific orders:
|
|
95
97
|
|
|
96
98
|
```pycon exec="true" source="console" session="get_started"
|
|
97
|
-
>>> image_slice = image.
|
|
99
|
+
>>> image_slice = image.get_as_numpy(c=0, x=slice(0, 128), axes_order=["t", "z", "y", "x", "c"]) # Get a specific channel and axes order
|
|
98
100
|
>>> image_slice.shape
|
|
99
101
|
>>> print(image_slice.shape) # markdown-exec: hide
|
|
100
102
|
```
|
|
@@ -111,7 +113,7 @@ A minimal example of how to use the `get_array` and `set_array` methods:
|
|
|
111
113
|
|
|
112
114
|
```python exec="true" source="material-block" session="get_started"
|
|
113
115
|
# Get the image data as a numpy array
|
|
114
|
-
data = image.
|
|
116
|
+
data = image.get_as_numpy(c=0, x=slice(0, 128), y=slice(0, 128), axes_order=["z", "y", "x", "c"])
|
|
115
117
|
|
|
116
118
|
# Modify the image data
|
|
117
119
|
some_function = lambda x: x # markdown-exec: hide
|
|
@@ -38,7 +38,7 @@ Ngio supports three types of tables: `roi_table`, `feature_table`, and `masking_
|
|
|
38
38
|
image_data = image_3.get_array(c=0)
|
|
39
39
|
image_data = np.squeeze(image_data)
|
|
40
40
|
roi = roi_table.get("FOV_1")
|
|
41
|
-
roi = roi.
|
|
41
|
+
roi = roi.to_roi_pixels(pixel_size=image_3.pixel_size, dimensions=image_3.dimensions)
|
|
42
42
|
#label_3 = ome_zarr_container.get_label("nuclei", pixel_size=image_3.pixel_size)
|
|
43
43
|
#label_data = label_3.get_array()
|
|
44
44
|
#label_data = np.squeeze(label_data)
|
|
@@ -98,12 +98,12 @@ Ngio supports three types of tables: `roi_table`, `feature_table`, and `masking_
|
|
|
98
98
|
The `nuclei_ROI_table` contains the masks for the `nuclei` label in the image, and is indexed by the label id.
|
|
99
99
|
```pycon exec="true" source="console" session="get_started"
|
|
100
100
|
>>> masking_table = ome_zarr_container.get_table("nuclei_ROI_table") # Get a mask table
|
|
101
|
-
>>> masking_table.
|
|
102
|
-
>>> print(masking_table.
|
|
101
|
+
>>> masking_table.get_label(1)
|
|
102
|
+
>>> print(masking_table.get_label(100)) # markdown-exec: hide
|
|
103
103
|
```
|
|
104
104
|
ROIs can be used to slice the image data:
|
|
105
105
|
```pycon exec="true" source="console" session="get_started"
|
|
106
|
-
>>> roi = masking_table.
|
|
106
|
+
>>> roi = masking_table.get_label(100)
|
|
107
107
|
>>> roi_data = image.get_roi(roi)
|
|
108
108
|
>>> roi_data.shape
|
|
109
109
|
>>> print(roi_data.shape) # markdown-exec: hide
|
|
@@ -120,7 +120,7 @@ Ngio supports three types of tables: `roi_table`, `feature_table`, and `masking_
|
|
|
120
120
|
cmap_array = np.random.rand(1000, 3)
|
|
121
121
|
cmap_array[0] = 0
|
|
122
122
|
cmap = ListedColormap(cmap_array)
|
|
123
|
-
roi = masking_table.
|
|
123
|
+
roi = masking_table.get_label(100)
|
|
124
124
|
image_3 = ome_zarr_container.get_image(path="2")
|
|
125
125
|
image_data = image_3.get_roi(roi, c=0)
|
|
126
126
|
image_data = np.squeeze(image_data)
|
|
@@ -66,7 +66,7 @@ table.zarr # Zarr group for the table
|
|
|
66
66
|
|
|
67
67
|
The CSV backend is a plain text format that is widely used for tabular data. It is easy to read and write, and can be used across many different tools.
|
|
68
68
|
|
|
69
|
-
The CSV
|
|
69
|
+
The CSV backend in ngio follows closely the same specifications as the Parquet backend, with the following metadata:
|
|
70
70
|
|
|
71
71
|
```json
|
|
72
72
|
{
|
|
@@ -31,5 +31,7 @@ Moreover the ROI table must include the following columns:
|
|
|
31
31
|
|
|
32
32
|
- `x_micrometer`, `y_micrometer`, `z_micrometer`: the top-left corner coordinates of the ROI in micrometers.
|
|
33
33
|
- `len_x_micrometer`, `len_y_micrometer`, `len_z_micrometer`: the size of the ROI in micrometers along each axis.
|
|
34
|
+
- `label`: An integer column label associated with the ROI, which corresponds to a specific label in the label image. This can also be the table index key.
|
|
35
|
+
- (Optional) `t_second` and `len_t_second`: the time coordinate of the ROI in seconds, and the length of the time coordinate in seconds. This is useful for multiplexing acquisitions.
|
|
34
36
|
|
|
35
37
|
Additionally, each ROI can include the following optional columns: see [ROI Table](./roi_table.md).
|
|
@@ -33,6 +33,7 @@ Moreover the ROI table must include the following columns:
|
|
|
33
33
|
|
|
34
34
|
Additionally, each ROI can include the following optional columns:
|
|
35
35
|
|
|
36
|
+
- `t_second` and `len_t_second`: the time coordinate of the ROI in seconds, and the length of the time coordinate in seconds. This is useful for multiplexing acquisitions.
|
|
36
37
|
- `x_micrometer_original`, `y_micrometer_original` and `z_micrometer_original` which are the original coordinates of the ROI in micrometers. These are typically used when the data is saved in different coordinates during conversion, e.g. to avoid overwriting data from overlapping ROIs.
|
|
37
38
|
- `translation_x`, `translation_y` and `translation_z`, which are used during registration of multiplexing acquisitions.
|
|
38
39
|
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "markdown",
|
|
5
|
+
"id": "0",
|
|
6
|
+
"metadata": {},
|
|
7
|
+
"source": [
|
|
8
|
+
"# OME-Zarr Creation\n",
|
|
9
|
+
"\n",
|
|
10
|
+
"This is a minimal example of how to create an OME-Zarr image using `ngio`.\n",
|
|
11
|
+
"\n",
|
|
12
|
+
"This example is just a simple demonstration but for more complex conversion tasks please refer \n",
|
|
13
|
+
"to the converter tooling library [ome-zarr-converters-tools](https://github.com/BioVisionCenter/ome-zarr-converters-tools).\n",
|
|
14
|
+
"\n",
|
|
15
|
+
"Let's start by converting a sample image from `skimage` to OME-Zarr format."
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"cell_type": "code",
|
|
20
|
+
"execution_count": null,
|
|
21
|
+
"id": "1",
|
|
22
|
+
"metadata": {},
|
|
23
|
+
"outputs": [],
|
|
24
|
+
"source": [
|
|
25
|
+
"import skimage\n",
|
|
26
|
+
"from matplotlib import pyplot as plt\n",
|
|
27
|
+
"\n",
|
|
28
|
+
"plt.imshow(skimage.data.human_mitosis(), cmap=\"gray\")\n",
|
|
29
|
+
"plt.axis(\"off\")\n",
|
|
30
|
+
"plt.show()"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"cell_type": "code",
|
|
35
|
+
"execution_count": null,
|
|
36
|
+
"id": "2",
|
|
37
|
+
"metadata": {},
|
|
38
|
+
"outputs": [],
|
|
39
|
+
"source": [
|
|
40
|
+
"from ngio import create_ome_zarr_from_array\n",
|
|
41
|
+
"\n",
|
|
42
|
+
"ome_zarr = create_ome_zarr_from_array(\n",
|
|
43
|
+
" store=\"./data/human_mitosis.zarr\",\n",
|
|
44
|
+
" array=skimage.data.human_mitosis(),\n",
|
|
45
|
+
" xy_pixelsize=0.1, # Just a guess\n",
|
|
46
|
+
")\n",
|
|
47
|
+
"ome_zarr"
|
|
48
|
+
]
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"cell_type": "markdown",
|
|
52
|
+
"id": "3",
|
|
53
|
+
"metadata": {},
|
|
54
|
+
"source": [
|
|
55
|
+
"## Adding Rois to OME-Zarr\n",
|
|
56
|
+
"\n",
|
|
57
|
+
"Often, is useful to add ROIs to OME-Zarr images to be able to retrieve them later. \n",
|
|
58
|
+
"This can be done using the `ngio` library as follows."
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"cell_type": "code",
|
|
63
|
+
"execution_count": null,
|
|
64
|
+
"id": "4",
|
|
65
|
+
"metadata": {},
|
|
66
|
+
"outputs": [],
|
|
67
|
+
"source": [
|
|
68
|
+
"# create a roi for the whole image\n",
|
|
69
|
+
"roi_table = ome_zarr.build_image_roi_table(name=\"image_roi\")\n",
|
|
70
|
+
"ome_zarr.add_table(\"image_roi_table\", roi_table)"
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"cell_type": "markdown",
|
|
75
|
+
"id": "5",
|
|
76
|
+
"metadata": {},
|
|
77
|
+
"source": []
|
|
78
|
+
}
|
|
79
|
+
],
|
|
80
|
+
"metadata": {
|
|
81
|
+
"kernelspec": {
|
|
82
|
+
"display_name": "dev",
|
|
83
|
+
"language": "python",
|
|
84
|
+
"name": "python3"
|
|
85
|
+
},
|
|
86
|
+
"language_info": {
|
|
87
|
+
"codemirror_mode": {
|
|
88
|
+
"name": "ipython",
|
|
89
|
+
"version": 3
|
|
90
|
+
},
|
|
91
|
+
"file_extension": ".py",
|
|
92
|
+
"mimetype": "text/x-python",
|
|
93
|
+
"name": "python",
|
|
94
|
+
"nbconvert_exporter": "python",
|
|
95
|
+
"pygments_lexer": "ipython3",
|
|
96
|
+
"version": "3.11.13"
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
"nbformat": 4,
|
|
100
|
+
"nbformat_minor": 5
|
|
101
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cells": [
|
|
3
|
+
{
|
|
4
|
+
"cell_type": "markdown",
|
|
5
|
+
"metadata": {},
|
|
6
|
+
"source": [
|
|
7
|
+
"# Feature Extraction\n",
|
|
8
|
+
"\n",
|
|
9
|
+
"This sections will cover how to extract regionprops features from an image using `ngio`, `skimage`. Moreover we will also write the features to a table in the ome-zarr container.\n",
|
|
10
|
+
"\n",
|
|
11
|
+
"# Step 1: Open the OME-Zarr Container"
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"cell_type": "code",
|
|
16
|
+
"execution_count": null,
|
|
17
|
+
"metadata": {},
|
|
18
|
+
"outputs": [],
|
|
19
|
+
"source": [
|
|
20
|
+
"from pathlib import Path\n",
|
|
21
|
+
"\n",
|
|
22
|
+
"from ngio import open_ome_zarr_container\n",
|
|
23
|
+
"from ngio.utils import download_ome_zarr_dataset\n",
|
|
24
|
+
"\n",
|
|
25
|
+
"# Download the dataset\n",
|
|
26
|
+
"download_dir = Path(\".\").absolute().parent.parent / \"data\"\n",
|
|
27
|
+
"hcs_path = download_ome_zarr_dataset(\"CardiomyocyteTinyMip\", download_dir=download_dir)\n",
|
|
28
|
+
"image_path = hcs_path / \"B\" / \"03\" / \"0\"\n",
|
|
29
|
+
"\n",
|
|
30
|
+
"# Open the ome-zarr container\n",
|
|
31
|
+
"ome_zarr = open_ome_zarr_container(image_path)"
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"cell_type": "markdown",
|
|
36
|
+
"metadata": {},
|
|
37
|
+
"source": [
|
|
38
|
+
"## Step 2: Compute the Regionprops Features"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"cell_type": "code",
|
|
43
|
+
"execution_count": null,
|
|
44
|
+
"metadata": {},
|
|
45
|
+
"outputs": [],
|
|
46
|
+
"source": [
|
|
47
|
+
"import pandas as pd\n",
|
|
48
|
+
"from skimage import measure\n",
|
|
49
|
+
"\n",
|
|
50
|
+
"from ngio.tables import FeatureTable\n",
|
|
51
|
+
"\n",
|
|
52
|
+
"# First we will need the image object and the FOVs table\n",
|
|
53
|
+
"nuclei = ome_zarr.get_label(\"nuclei\")\n",
|
|
54
|
+
"image_data = ome_zarr.get_image(pixel_size=nuclei.pixel_size).get_as_numpy(\n",
|
|
55
|
+
" axes_order=[\"z\", \"y\", \"x\", \"c\"]\n",
|
|
56
|
+
")\n",
|
|
57
|
+
"nuclei_data = nuclei.get_as_numpy(axes_order=[\"z\", \"y\", \"x\"])\n",
|
|
58
|
+
"\n",
|
|
59
|
+
"feat_table = measure.regionprops_table(\n",
|
|
60
|
+
" label_image=nuclei_data,\n",
|
|
61
|
+
" intensity_image=image_data,\n",
|
|
62
|
+
" properties=[\"label\", \"area\", \"mean_intensity\", \"max_intensity\", \"min_intensity\"],\n",
|
|
63
|
+
")\n",
|
|
64
|
+
"\n",
|
|
65
|
+
"feat_table = pd.DataFrame(feat_table)\n",
|
|
66
|
+
"feat_table = feat_table.set_index(\"label\")\n",
|
|
67
|
+
"\n",
|
|
68
|
+
"# Convert to a FeatureTable\n",
|
|
69
|
+
"feature_table = FeatureTable(table_data=feat_table, reference_label=\"nuclei\")\n",
|
|
70
|
+
"\n",
|
|
71
|
+
"# Save the Table in the ome-zarr container\n",
|
|
72
|
+
"ome_zarr.add_table(\"nuclei_regionprops\", feature_table)"
|
|
73
|
+
]
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"cell_type": "markdown",
|
|
77
|
+
"metadata": {},
|
|
78
|
+
"source": [
|
|
79
|
+
"## Sanity Check: Read the Table back"
|
|
80
|
+
]
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"cell_type": "code",
|
|
84
|
+
"execution_count": null,
|
|
85
|
+
"metadata": {},
|
|
86
|
+
"outputs": [],
|
|
87
|
+
"source": [
|
|
88
|
+
"ome_zarr.get_table(\"nuclei_regionprops\").lazy_frame.collect()"
|
|
89
|
+
]
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"cell_type": "markdown",
|
|
93
|
+
"metadata": {},
|
|
94
|
+
"source": []
|
|
95
|
+
}
|
|
96
|
+
],
|
|
97
|
+
"metadata": {
|
|
98
|
+
"kernelspec": {
|
|
99
|
+
"display_name": "dev",
|
|
100
|
+
"language": "python",
|
|
101
|
+
"name": "python3"
|
|
102
|
+
},
|
|
103
|
+
"language_info": {
|
|
104
|
+
"codemirror_mode": {
|
|
105
|
+
"name": "ipython",
|
|
106
|
+
"version": 3
|
|
107
|
+
},
|
|
108
|
+
"file_extension": ".py",
|
|
109
|
+
"mimetype": "text/x-python",
|
|
110
|
+
"name": "python",
|
|
111
|
+
"nbconvert_exporter": "python",
|
|
112
|
+
"pygments_lexer": "ipython3",
|
|
113
|
+
"version": "3.11.13"
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
"nbformat": 4,
|
|
117
|
+
"nbformat_minor": 2
|
|
118
|
+
}
|