ngio 0.3.5__tar.gz → 0.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ngio-0.3.5 → ngio-0.4.0}/.github/workflows/build_docs.yml +2 -2
- {ngio-0.3.5 → ngio-0.4.0}/.github/workflows/ci.yml +5 -5
- {ngio-0.3.5 → ngio-0.4.0}/.pre-commit-config.yaml +4 -4
- ngio-0.4.0/CHANGELOG.md +56 -0
- {ngio-0.3.5 → ngio-0.4.0}/PKG-INFO +16 -14
- {ngio-0.3.5 → ngio-0.4.0}/README.md +13 -12
- ngio-0.4.0/docs/api/hcs.md +17 -0
- ngio-0.4.0/docs/api/images.md +17 -0
- ngio-0.4.0/docs/api/iterators.md +17 -0
- ngio-0.4.0/docs/api/ngio/common.md +3 -0
- ngio-0.4.0/docs/api/ngio/hcs.md +3 -0
- ngio-0.4.0/docs/api/ngio/images.md +3 -0
- ngio-0.4.0/docs/api/ngio/io_pipes.md +3 -0
- ngio-0.4.0/docs/api/ngio/iterators.md +3 -0
- ngio-0.4.0/docs/api/ngio/ngio.md +3 -0
- ngio-0.4.0/docs/api/ngio/tables.md +3 -0
- ngio-0.4.0/docs/api/ngio/transforms.md +3 -0
- ngio-0.4.0/docs/api/ngio/utils.md +3 -0
- ngio-0.4.0/docs/api/ome_zarr_container.md +14 -0
- ngio-0.4.0/docs/api/tables.md +1 -0
- {ngio-0.3.5 → ngio-0.4.0}/docs/getting_started/1_ome_zarr_containers.md +2 -2
- {ngio-0.3.5 → ngio-0.4.0}/docs/getting_started/2_images.md +23 -10
- {ngio-0.3.5 → ngio-0.4.0}/docs/getting_started/3_tables.md +5 -5
- ngio-0.4.0/docs/getting_started/6_iterators.md +14 -0
- {ngio-0.3.5 → ngio-0.4.0}/docs/index.md +11 -9
- {ngio-0.3.5 → ngio-0.4.0}/docs/table_specs/backend.md +1 -1
- {ngio-0.3.5 → ngio-0.4.0}/docs/table_specs/table_types/masking_roi_table.md +2 -0
- {ngio-0.3.5 → ngio-0.4.0}/docs/table_specs/table_types/roi_table.md +1 -0
- ngio-0.4.0/docs/tutorials/create_ome_zarr.ipynb +101 -0
- ngio-0.4.0/docs/tutorials/feature_extraction.ipynb +168 -0
- ngio-0.4.0/docs/tutorials/hcs_exploration.ipynb +128 -0
- ngio-0.4.0/docs/tutorials/image_processing.ipynb +267 -0
- ngio-0.4.0/docs/tutorials/image_segmentation.ipynb +273 -0
- {ngio-0.3.5 → ngio-0.4.0}/mkdocs.yml +37 -7
- {ngio-0.3.5 → ngio-0.4.0}/pyproject.toml +3 -1
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/__init__.py +7 -2
- ngio-0.4.0/src/ngio/common/__init__.py +23 -0
- ngio-0.4.0/src/ngio/common/_dimensions.py +335 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/common/_masking_roi.py +38 -10
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/common/_pyramid.py +51 -30
- ngio-0.4.0/src/ngio/common/_roi.py +354 -0
- ngio-0.4.0/src/ngio/common/_synt_images_utils.py +101 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/common/_zoom.py +49 -19
- ngio-0.4.0/src/ngio/experimental/__init__.py +5 -0
- ngio-0.4.0/src/ngio/experimental/iterators/__init__.py +15 -0
- ngio-0.4.0/src/ngio/experimental/iterators/_abstract_iterator.py +390 -0
- ngio-0.4.0/src/ngio/experimental/iterators/_feature.py +189 -0
- ngio-0.4.0/src/ngio/experimental/iterators/_image_processing.py +130 -0
- ngio-0.4.0/src/ngio/experimental/iterators/_mappers.py +48 -0
- ngio-0.4.0/src/ngio/experimental/iterators/_rois_utils.py +127 -0
- ngio-0.4.0/src/ngio/experimental/iterators/_segmentation.py +235 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/hcs/_plate.py +41 -36
- ngio-0.4.0/src/ngio/images/__init__.py +44 -0
- ngio-0.4.0/src/ngio/images/_abstract_image.py +587 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/images/_create.py +31 -15
- ngio-0.4.0/src/ngio/images/_create_synt_container.py +138 -0
- ngio-0.4.0/src/ngio/images/_image.py +921 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/images/_label.py +56 -30
- ngio-0.4.0/src/ngio/images/_masked_image.py +531 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/images/_ome_zarr_container.py +237 -67
- {ngio-0.3.5/src/ngio/common → ngio-0.4.0/src/ngio/images}/_table_ops.py +41 -41
- ngio-0.4.0/src/ngio/io_pipes/__init__.py +75 -0
- ngio-0.4.0/src/ngio/io_pipes/_io_pipes.py +361 -0
- ngio-0.4.0/src/ngio/io_pipes/_io_pipes_masked.py +488 -0
- ngio-0.4.0/src/ngio/io_pipes/_io_pipes_roi.py +152 -0
- ngio-0.4.0/src/ngio/io_pipes/_io_pipes_types.py +56 -0
- ngio-0.4.0/src/ngio/io_pipes/_match_shape.py +376 -0
- ngio-0.4.0/src/ngio/io_pipes/_ops_axes.py +344 -0
- ngio-0.4.0/src/ngio/io_pipes/_ops_slices.py +446 -0
- ngio-0.4.0/src/ngio/io_pipes/_ops_slices_utils.py +196 -0
- ngio-0.4.0/src/ngio/io_pipes/_ops_transforms.py +104 -0
- ngio-0.4.0/src/ngio/io_pipes/_zoom_transform.py +175 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/ome_zarr_meta/__init__.py +4 -2
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/ome_zarr_meta/ngio_specs/__init__.py +4 -10
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/ome_zarr_meta/ngio_specs/_axes.py +186 -175
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/ome_zarr_meta/ngio_specs/_channels.py +55 -18
- ngio-0.4.0/src/ngio/ome_zarr_meta/ngio_specs/_dataset.py +98 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/ome_zarr_meta/ngio_specs/_ngio_hcs.py +3 -3
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/ome_zarr_meta/ngio_specs/_ngio_image.py +38 -87
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/ome_zarr_meta/ngio_specs/_pixel_size.py +17 -1
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/ome_zarr_meta/v04/_v04_spec_utils.py +34 -31
- ngio-0.4.0/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/mask.png +0 -0
- ngio-0.4.0/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/nuclei.png +0 -0
- ngio-0.4.0/src/ngio/resources/20200812-CardiomyocyteDifferentiation14-Cycle1_B03/raw.jpg +0 -0
- ngio-0.4.0/src/ngio/resources/__init__.py +55 -0
- ngio-0.4.0/src/ngio/resources/resource_model.py +36 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/backends/_abstract_backend.py +5 -6
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/backends/_anndata.py +1 -1
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/backends/_anndata_utils.py +3 -3
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/backends/_non_zarr_backends.py +1 -1
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/backends/_table_backends.py +0 -1
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/backends/_utils.py +3 -3
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/v1/_roi_table.py +165 -70
- ngio-0.4.0/src/ngio/transforms/__init__.py +5 -0
- ngio-0.4.0/src/ngio/transforms/_zoom.py +19 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/utils/__init__.py +2 -3
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/utils/_datasets.py +5 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/utils/_logger.py +19 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/utils/_zarr_utils.py +6 -6
- ngio-0.4.0/tests/unit/common/test_dimensions.py +161 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/unit/common/test_pyramid.py +11 -8
- ngio-0.4.0/tests/unit/common/test_roi.py +201 -0
- ngio-0.4.0/tests/unit/common/test_transforms.py +45 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/unit/hcs/test_plate.py +2 -2
- {ngio-0.3.5 → ngio-0.4.0}/tests/unit/images/test_create.py +13 -1
- ngio-0.4.0/tests/unit/images/test_images.py +189 -0
- ngio-0.4.0/tests/unit/images/test_masked_images.py +157 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/unit/images/test_omezarr_container.py +137 -9
- {ngio-0.3.5/tests/unit/common → ngio-0.4.0/tests/unit/images}/test_table_ops.py +7 -7
- ngio-0.4.0/tests/unit/io_pipes/test_axes_ops.py +48 -0
- ngio-0.4.0/tests/unit/io_pipes/test_slicing_ops.py +112 -0
- ngio-0.4.0/tests/unit/iterators/test_iterators.py +193 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/unit/ome_zarr_meta/test_unit_ngio_specs.py +117 -159
- 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/docs/tutorials/image_segmentation.ipynb +0 -176
- 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/_dimensions.py +0 -120
- 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/src/ngio/ome_zarr_meta/ngio_specs/_dataset.py +0 -172
- ngio-0.3.5/tests/unit/common/test_dimensions.py +0 -78
- ngio-0.3.5/tests/unit/common/test_roi.py +0 -44
- ngio-0.3.5/tests/unit/images/test_images.py +0 -25
- ngio-0.3.5/tests/unit/images/test_masked_images.py +0 -78
- {ngio-0.3.5 → ngio-0.4.0}/.copier-answers.yml +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/.gitattributes +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/.github/ISSUE_TEMPLATE.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/.github/TEST_FAIL_TEMPLATE.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/.github/dependabot.yml +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/.github/pull_request_template.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/.gitignore +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/LICENSE +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/_typos.toml +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/docs/changelog.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/docs/code_of_conduct.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/docs/contributing.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/docs/getting_started/0_quickstart.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/docs/getting_started/4_masked_images.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/docs/getting_started/5_hcs.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/docs/table_specs/overview.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/docs/table_specs/table_types/condition_table.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/docs/table_specs/table_types/custom_table.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/docs/table_specs/table_types/feature_table.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/docs/table_specs/table_types/generic_table.md +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/hcs/__init__.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/ome_zarr_meta/_meta_handlers.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/ome_zarr_meta/v04/__init__.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/ome_zarr_meta/v04/_custom_models.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/__init__.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/_abstract_table.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/_tables_container.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/backends/__init__.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/backends/_csv.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/backends/_json.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/backends/_parquet.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/v1/__init__.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/v1/_condition_table.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/v1/_feature_table.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/tables/v1/_generic_table.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/utils/_errors.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/src/ngio/utils/_fractal_fsspec_store.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/conftest.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_c1yx.zarr/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_c1yx.zarr/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_c1yx.zarr/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_c1yx.zarr/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_c1yx.zarr/labels/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_c1yx.zarr/labels/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_c1yx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_cyx.zarr/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_cyx.zarr/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_cyx.zarr/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_cyx.zarr/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_cyx.zarr/labels/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_cyx.zarr/labels/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_cyx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_cyx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_cyx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_czyx.zarr/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_czyx.zarr/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_czyx.zarr/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_czyx.zarr/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_czyx.zarr/labels/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_czyx.zarr/labels/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_czyx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_czyx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_czyx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tcyx.zarr/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tcyx.zarr/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tcyx.zarr/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tcyx.zarr/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tcyx.zarr/labels/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tcyx.zarr/labels/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tcyx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tczyx.zarr/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tczyx.zarr/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tczyx.zarr/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tczyx.zarr/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tczyx.zarr/labels/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tczyx.zarr/labels/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tczyx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tyx.zarr/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tyx.zarr/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tyx.zarr/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tyx.zarr/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tyx.zarr/labels/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tyx.zarr/labels/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tyx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tyx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tyx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tzyx.zarr/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tzyx.zarr/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tzyx.zarr/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tzyx.zarr/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tzyx.zarr/labels/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tzyx.zarr/labels/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_tzyx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_yx.zarr/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_yx.zarr/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_yx.zarr/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_yx.zarr/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_yx.zarr/labels/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_yx.zarr/labels/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_yx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_yx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_yx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_yx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_zyx.zarr/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_zyx.zarr/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_zyx.zarr/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_zyx.zarr/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_zyx.zarr/labels/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_zyx.zarr/labels/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zattrs +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_zyx.zarr/labels/label/.zgroup +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_zyx.zarr/labels/label/0/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/images/test_image_zyx.zarr/labels/label/1/.zarray +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/meta/base_ome_zarr_image_meta.json +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/meta/base_ome_zarr_image_meta_wrong_axis_order.json +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/meta/base_ome_zarr_label_meta.json +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/meta/base_ome_zarr_well_meta.json +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/data/v04/meta/ome_zarr_well_path_normalization_meta.json +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/unit/hcs/test_well.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/unit/ome_zarr_meta/test_image_handler.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/unit/ome_zarr_meta/test_unit_v04_utils.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/unit/tables/test_backends.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/unit/tables/test_backends_utils.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/unit/tables/test_feature_table.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/unit/tables/test_generic_table.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/unit/tables/test_masking_roi_table_v1.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/unit/tables/test_roi_table_v1.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/unit/tables/test_table_group.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/unit/utils/test_download_datasets.py +0 -0
- {ngio-0.3.5 → ngio-0.4.0}/tests/unit/utils/test_zarr_utils.py +0 -0
|
@@ -18,11 +18,11 @@ jobs:
|
|
|
18
18
|
runs-on: ubuntu-latest
|
|
19
19
|
|
|
20
20
|
steps:
|
|
21
|
-
- uses: actions/checkout@
|
|
21
|
+
- uses: actions/checkout@v5
|
|
22
22
|
with:
|
|
23
23
|
fetch-depth: 0
|
|
24
24
|
- name: 🐍 Set up Python
|
|
25
|
-
uses: actions/setup-python@
|
|
25
|
+
uses: actions/setup-python@v6
|
|
26
26
|
with:
|
|
27
27
|
python-version: "3.13"
|
|
28
28
|
cache-dependency-path: "pyproject.toml"
|
|
@@ -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,10 +37,10 @@ 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
|
-
uses: actions/setup-python@
|
|
43
|
+
uses: actions/setup-python@v6
|
|
44
44
|
with:
|
|
45
45
|
python-version: ${{ matrix.python-version }}
|
|
46
46
|
cache-dependency-path: "pyproject.toml"
|
|
@@ -98,12 +98,12 @@ 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
|
|
|
105
105
|
- name: 🐍 Set up Python
|
|
106
|
-
uses: actions/setup-python@
|
|
106
|
+
uses: actions/setup-python@v6
|
|
107
107
|
with:
|
|
108
108
|
python-version: "3.x"
|
|
109
109
|
|
|
@@ -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
|
|
ngio-0.4.0/CHANGELOG.md
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [v0.4.0]
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- Add Iterators for image processing pipelines
|
|
8
|
+
- Add support for time in rois and roi-tables
|
|
9
|
+
- Building masking roi tables expanded to time series data
|
|
10
|
+
- Add zoom transformation
|
|
11
|
+
- Add support for rescaling on-the-fly masks for masked images
|
|
12
|
+
- Big refactor of the io pipeline to support iterators and lazy loading
|
|
13
|
+
- Add support for customize dimension separators and compression codecs
|
|
14
|
+
- Simplify AxesHandler and Dataset Classes
|
|
15
|
+
|
|
16
|
+
### API Changes
|
|
17
|
+
|
|
18
|
+
- 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.
|
|
19
|
+
- 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.
|
|
20
|
+
- A new model for channel selection is available. Now channels can be selected by name, index or with `ChannelSelectionModel` object.
|
|
21
|
+
- Change `table_name` keyword argument to `name` for consistency in all table concatenation functions, e.g. `concatenate_image_tables`, `concatenate_image_tables_as`, etc.
|
|
22
|
+
- Change to `Dimension` class. `get_shape` and `get_canonical_shape` have been removed, `get` uses new keyword arguments `default` instead of `strict`.
|
|
23
|
+
- 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.
|
|
24
|
+
- Also for `get_roi` now specific methods are available. For ROI objects, the `get_roi_as_numpy`, and `get_roi_as_dask` methods.
|
|
25
|
+
- Table ops moved to `ngio.images`
|
|
26
|
+
- int `label` as an explicit attribute in `Roi` objects (previously only in stored in name and relying on convention)
|
|
27
|
+
- Slight changes to `Image` and `Label` objects. Some minor attributes have been renamed for consistency.
|
|
28
|
+
|
|
29
|
+
### Table specs
|
|
30
|
+
|
|
31
|
+
- Add `t_second` and `len_t_second` to ROI tables and masking ROI tables
|
|
32
|
+
|
|
33
|
+
## [v0.3.5]
|
|
34
|
+
|
|
35
|
+
- 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.
|
|
36
|
+
|
|
37
|
+
## [v0.3.4]
|
|
38
|
+
|
|
39
|
+
- allow to write as `anndata_v1` for backward compatibility with older ngio versions.
|
|
40
|
+
|
|
41
|
+
## [v0.3.3]
|
|
42
|
+
|
|
43
|
+
### Chores
|
|
44
|
+
|
|
45
|
+
- improve dataset download process and streamline the CI workflows
|
|
46
|
+
|
|
47
|
+
## [v0.3.2]
|
|
48
|
+
|
|
49
|
+
### API Changes
|
|
50
|
+
|
|
51
|
+
- change table backend default to `anndata_v1` for backward compatibility. This will be chaanged again when ngio `v0.2.x` is no longer supported.
|
|
52
|
+
|
|
53
|
+
### Bug Fixes
|
|
54
|
+
|
|
55
|
+
- fix [#13](https://github.com/BioVisionCenter/fractal-converters-tools/issues/13) (converters tools)
|
|
56
|
+
- 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.0
|
|
4
4
|
Summary: Next Generation file format IO
|
|
5
5
|
Project-URL: homepage, https://github.com/BioVisionCenter/ngio
|
|
6
6
|
Project-URL: repository, https://github.com/BioVisionCenter/ngio
|
|
@@ -28,7 +28,6 @@ Requires-Dist: pooch
|
|
|
28
28
|
Requires-Dist: pyarrow
|
|
29
29
|
Requires-Dist: pydantic
|
|
30
30
|
Requires-Dist: requests
|
|
31
|
-
Requires-Dist: xarray
|
|
32
31
|
Requires-Dist: zarr<3
|
|
33
32
|
Provides-Extra: dev
|
|
34
33
|
Requires-Dist: devtools; extra == 'dev'
|
|
@@ -38,11 +37,13 @@ Requires-Dist: napari; extra == 'dev'
|
|
|
38
37
|
Requires-Dist: notebook; extra == 'dev'
|
|
39
38
|
Requires-Dist: pdbpp; extra == 'dev'
|
|
40
39
|
Requires-Dist: pre-commit; extra == 'dev'
|
|
40
|
+
Requires-Dist: pympler; extra == 'dev'
|
|
41
41
|
Requires-Dist: pyqt5; extra == 'dev'
|
|
42
42
|
Requires-Dist: rich; extra == 'dev'
|
|
43
43
|
Requires-Dist: ruff; extra == 'dev'
|
|
44
44
|
Requires-Dist: scikit-image; extra == 'dev'
|
|
45
45
|
Provides-Extra: docs
|
|
46
|
+
Requires-Dist: griffe-typingdoc; extra == 'docs'
|
|
46
47
|
Requires-Dist: markdown-exec[ansi]; extra == 'docs'
|
|
47
48
|
Requires-Dist: matplotlib; extra == 'docs'
|
|
48
49
|
Requires-Dist: mike; extra == 'docs'
|
|
@@ -81,20 +82,22 @@ Ngio's mission is to streamline working with OME-Zarr files by providing a simpl
|
|
|
81
82
|
|
|
82
83
|
## Key Features
|
|
83
84
|
|
|
84
|
-
###
|
|
85
|
+
### 🔍 Simple Object-Based API
|
|
85
86
|
|
|
86
87
|
- Easily open, explore, and manipulate OME-Zarr images and HCS plates
|
|
87
88
|
- Create and derive new images and labels with minimal boilerplate code
|
|
88
89
|
|
|
89
|
-
###
|
|
90
|
+
### 📊 Rich Tables and Regions of Interest (ROI) Support
|
|
90
91
|
|
|
92
|
+
- Tight integration with [tabular data](https://biovisioncenter.github.io/ngio/stable/table_specs/overview/)
|
|
91
93
|
- Extract and analyze specific regions of interest
|
|
92
|
-
-
|
|
94
|
+
- Store measurements and other metadata in the OME-Zarr container
|
|
95
|
+
- Extensible & modular allowing users to define custom table schemas and on disk serialization
|
|
93
96
|
|
|
94
|
-
### 🔄 Scalable Data Processing
|
|
97
|
+
### 🔄 Scalable Data Processing
|
|
95
98
|
|
|
96
|
-
- Powerful iterators for
|
|
97
|
-
-
|
|
99
|
+
- Powerful iterators for building scalable and generalizable image processing pipelines
|
|
100
|
+
- Extensible mapping mechanism for custom parallelization strategies
|
|
98
101
|
|
|
99
102
|
## Installation
|
|
100
103
|
|
|
@@ -112,23 +115,22 @@ Currently, ngio only supports OME-Zarr v0.4. Support for version 0.5 and higher
|
|
|
112
115
|
|
|
113
116
|
## Development Status
|
|
114
117
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
We follow [Semantic Versioning](https://semver.org/). Which means for 0.x releases potentially breaking changes can be introduced in minor releases.
|
|
118
|
+
Ngio is under active development and is not yet stable. The API is subject to change, and bugs and breaking changes are expected.
|
|
119
|
+
We follow [Semantic Versioning](https://semver.org/). Which means for 0.x releases potentially breaking changes can be introduced in minor releases.
|
|
118
120
|
|
|
119
121
|
### Available Features
|
|
120
122
|
|
|
121
123
|
- ✅ OME-Zarr metadata handling and validation
|
|
122
124
|
- ✅ Image and label access across pyramid levels
|
|
123
125
|
- ✅ ROI and table support
|
|
126
|
+
- ✅ Image processing iterators
|
|
124
127
|
- ✅ Streaming from remote sources
|
|
125
128
|
- ✅ Documentation and examples
|
|
126
129
|
|
|
127
130
|
### Upcoming Features
|
|
128
131
|
|
|
129
|
-
-
|
|
130
|
-
-
|
|
131
|
-
- Support for OME-Zarr v0.5 and Zarr v3
|
|
132
|
+
- Support for OME-Zarr v0.5 and Zarr v3 (via `zarr-python` v3)
|
|
133
|
+
- Enhanced performance optimizations (parallel iterators, optimized io strategies)
|
|
132
134
|
|
|
133
135
|
## Contributors
|
|
134
136
|
|
|
@@ -16,20 +16,22 @@ Ngio's mission is to streamline working with OME-Zarr files by providing a simpl
|
|
|
16
16
|
|
|
17
17
|
## Key Features
|
|
18
18
|
|
|
19
|
-
###
|
|
19
|
+
### 🔍 Simple Object-Based API
|
|
20
20
|
|
|
21
21
|
- Easily open, explore, and manipulate OME-Zarr images and HCS plates
|
|
22
22
|
- Create and derive new images and labels with minimal boilerplate code
|
|
23
23
|
|
|
24
|
-
###
|
|
24
|
+
### 📊 Rich Tables and Regions of Interest (ROI) Support
|
|
25
25
|
|
|
26
|
+
- Tight integration with [tabular data](https://biovisioncenter.github.io/ngio/stable/table_specs/overview/)
|
|
26
27
|
- Extract and analyze specific regions of interest
|
|
27
|
-
-
|
|
28
|
+
- Store measurements and other metadata in the OME-Zarr container
|
|
29
|
+
- Extensible & modular allowing users to define custom table schemas and on disk serialization
|
|
28
30
|
|
|
29
|
-
### 🔄 Scalable Data Processing
|
|
31
|
+
### 🔄 Scalable Data Processing
|
|
30
32
|
|
|
31
|
-
- Powerful iterators for
|
|
32
|
-
-
|
|
33
|
+
- Powerful iterators for building scalable and generalizable image processing pipelines
|
|
34
|
+
- Extensible mapping mechanism for custom parallelization strategies
|
|
33
35
|
|
|
34
36
|
## Installation
|
|
35
37
|
|
|
@@ -47,23 +49,22 @@ Currently, ngio only supports OME-Zarr v0.4. Support for version 0.5 and higher
|
|
|
47
49
|
|
|
48
50
|
## Development Status
|
|
49
51
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
We follow [Semantic Versioning](https://semver.org/). Which means for 0.x releases potentially breaking changes can be introduced in minor releases.
|
|
52
|
+
Ngio is under active development and is not yet stable. The API is subject to change, and bugs and breaking changes are expected.
|
|
53
|
+
We follow [Semantic Versioning](https://semver.org/). Which means for 0.x releases potentially breaking changes can be introduced in minor releases.
|
|
53
54
|
|
|
54
55
|
### Available Features
|
|
55
56
|
|
|
56
57
|
- ✅ OME-Zarr metadata handling and validation
|
|
57
58
|
- ✅ Image and label access across pyramid levels
|
|
58
59
|
- ✅ ROI and table support
|
|
60
|
+
- ✅ Image processing iterators
|
|
59
61
|
- ✅ Streaming from remote sources
|
|
60
62
|
- ✅ Documentation and examples
|
|
61
63
|
|
|
62
64
|
### Upcoming Features
|
|
63
65
|
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
- Support for OME-Zarr v0.5 and Zarr v3
|
|
66
|
+
- Support for OME-Zarr v0.5 and Zarr v3 (via `zarr-python` v3)
|
|
67
|
+
- Enhanced performance optimizations (parallel iterators, optimized io strategies)
|
|
67
68
|
|
|
68
69
|
## Contributors
|
|
69
70
|
|
|
@@ -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,17 @@
|
|
|
1
|
+
# Iterators API Reference
|
|
2
|
+
|
|
3
|
+
## ImageProcessingIterator
|
|
4
|
+
|
|
5
|
+
::: ngio.experimental.iterators.ImageProcessingIterator
|
|
6
|
+
|
|
7
|
+
## SegmentationIterator
|
|
8
|
+
|
|
9
|
+
::: ngio.experimental.iterators.SegmentationIterator
|
|
10
|
+
|
|
11
|
+
## MaskedSegmentationIterator
|
|
12
|
+
|
|
13
|
+
::: ngio.experimental.iterators.MaskedSegmentationIterator
|
|
14
|
+
|
|
15
|
+
## FeatureExtractorIterator
|
|
16
|
+
|
|
17
|
+
::: ngio.experimental.iterators.FeatureExtractorIterator
|
|
@@ -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(channel_selection="DAPI", 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,14 +113,14 @@ 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(channel_selection="DAPI", 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
|
|
118
120
|
data = some_function(data)
|
|
119
121
|
|
|
120
122
|
# Set the modified image data
|
|
121
|
-
image.set_array(data,
|
|
123
|
+
image.set_array(data, channel_selection="DAPI", x=slice(0, 128), y=slice(0, 128), axes_order=["z", "y", "x", "c"])
|
|
122
124
|
image.consolidate() # Consolidate the changes to all resolution levels, see below for more details
|
|
123
125
|
```
|
|
124
126
|
|
|
@@ -129,6 +131,17 @@ image.consolidate() # Consolidate the changes to all resolution levels, see belo
|
|
|
129
131
|
```
|
|
130
132
|
This will write the changes to the OME-Zarr file at all resolution levels.
|
|
131
133
|
|
|
134
|
+
### World coordinates slicing
|
|
135
|
+
|
|
136
|
+
To read or write a specific region of the image defined in world coordinates, you can use the `Roi` object.
|
|
137
|
+
|
|
138
|
+
```pycon exec="true" source="console" session="get_started"
|
|
139
|
+
>>> from ngio import Roi
|
|
140
|
+
>>> roi = Roi(x=34.1, y=10, x_length=321.6, y_length=330) # Define a ROI in world coordinates
|
|
141
|
+
>>> image.get_roi_as_numpy(roi) # Get the image data in the ROI as a numpy array
|
|
142
|
+
>>> print(image.get_roi_as_numpy(roi).shape) # markdown-exec: hide
|
|
143
|
+
```
|
|
144
|
+
|
|
132
145
|
## Labels
|
|
133
146
|
|
|
134
147
|
`Labels` represent segmentation masks that identify objects in the image. In ngio `Labels` are similar to `Images` and can
|
|
@@ -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)
|
|
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)
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# 6. Iterators
|
|
2
|
+
|
|
3
|
+
When building image processing pipelines it is often useful to iterate over specific regions of the image, for example to process the image in smaller tiles or to process only specific regions of interest (ROIs).
|
|
4
|
+
|
|
5
|
+
Moreover, when working with OME-Zarr Images it is often useful to set specific broadcasting rules for the iteration, for example to iterate over all z-planes or iterate over all timepoints.
|
|
6
|
+
|
|
7
|
+
Ngio provides a set of `Iterator` classes that can be used for this purpose. We provide iterators four basic iterators:
|
|
8
|
+
|
|
9
|
+
* The `SegmentationIterator` is designed to build segmentation pipelines, where an input image is processed to produce a segmentation mask. An example use case on how to use the `SegmentationIterator` can be found in the [Image Segmentation Tutorial](../tutorials/image_segmentation.ipynb).
|
|
10
|
+
* The `MaskedSegmentationIterator` is similar to the `SegmentationIterator`, but it uses a masking roi table to restrict the segmentation to masks. This is useful when you want to segment only specific regions of the image, for example, segmenting cells only within a specific tissue region. An example use case on how to use the `MaskedSegmentationIterator` can be found in the [Image Segmentation Tutorial](../tutorials/image_segmentation.ipynb).
|
|
11
|
+
* The `ImageProcessingIterator` is designed to build image processing pipelines, where an input image is processed to produce a new image. An example use case on how to use the `ImageProcessingIterator` can be found in the [Image Processing Tutorial](../tutorials/image_processing.ipynb).
|
|
12
|
+
* The `FeatureExtractionIterator` is read-only iterator designed to iterate over pairs of images and labels to extract features from the image based on the labels. An example use case on how to use the `FeatureExtractionIterator` can be found in the [Feature Extraction Tutorial](../tutorials/feature_extraction.ipynb).
|
|
13
|
+
|
|
14
|
+
A set of more complete example can be found in the [Fractal Tasks Template](https://github.com/fractal-analytics-platform/fractal-tasks-template).
|
|
@@ -8,20 +8,22 @@ Ngio's mission is to streamline working with OME-Zarr files by providing a simpl
|
|
|
8
8
|
|
|
9
9
|
## Key Features
|
|
10
10
|
|
|
11
|
-
###
|
|
11
|
+
### 🔍 Simple Object-Based API
|
|
12
12
|
|
|
13
13
|
- Easily open, explore, and manipulate OME-Zarr images and HCS plates
|
|
14
14
|
- Create and derive new images and labels with minimal boilerplate code
|
|
15
15
|
|
|
16
|
-
###
|
|
16
|
+
### 📊 Rich Tables and Regions of Interest (ROI) Support
|
|
17
17
|
|
|
18
|
+
- Tight integration with [tabular data](https://biovisioncenter.github.io/ngio/stable/table_specs/overview/)
|
|
18
19
|
- Extract and analyze specific regions of interest
|
|
19
|
-
-
|
|
20
|
+
- Store measurements and other metadata in the OME-Zarr container
|
|
21
|
+
- Extensible & modular allowing users to define custom table schemas and on disk serialization
|
|
20
22
|
|
|
21
|
-
### 🔄 Scalable Data Processing
|
|
23
|
+
### 🔄 Scalable Data Processing
|
|
22
24
|
|
|
23
|
-
- Powerful iterators for
|
|
24
|
-
-
|
|
25
|
+
- Powerful iterators for building scalable and generalizable image processing pipelines
|
|
26
|
+
- Extensible mapping mechanism for custom parallelization strategies
|
|
25
27
|
|
|
26
28
|
## Getting Started
|
|
27
29
|
|
|
@@ -43,14 +45,14 @@ Currently, ngio only supports OME-Zarr v0.4. Support for version 0.5 and higher
|
|
|
43
45
|
- ✅ OME-Zarr metadata handling and validation
|
|
44
46
|
- ✅ Image and label access across pyramid levels
|
|
45
47
|
- ✅ ROI and table support
|
|
48
|
+
- ✅ Image processing iterators
|
|
46
49
|
- ✅ Streaming from remote sources
|
|
47
50
|
- ✅ Documentation and examples
|
|
48
51
|
|
|
49
52
|
### Upcoming Features
|
|
50
53
|
|
|
51
|
-
-
|
|
52
|
-
-
|
|
53
|
-
- Support for OME-Zarr v0.5 and Zarr v3
|
|
54
|
+
- Support for OME-Zarr v0.5 and Zarr v3 (via `zarr-python` v3)
|
|
55
|
+
- Enhanced performance optimizations (parallel iterators, optimized io strategies)
|
|
54
56
|
|
|
55
57
|
## Contributors
|
|
56
58
|
|
|
@@ -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
|
|