Next generation file format IO — a Python library for OME-Zarr bioimage analysis.
ngio is built for OME-Zarr, a cloud-optimised format that stores large, multi-dimensional microscopy images and their metadata in an efficient, scalable way. It provides an object-based API for opening, exploring and manipulating OME-Zarr images and high-content screening (HCS) plates, along with labels, tables and regions of interest (ROIs) for extracting and analysing specific regions of your data.
To install ngio, use whichever package manager you already work with — it is published on both PyPI and conda-forge.
pip install ngio # pip
uv add ngio # uv project (or: uv pip install ngio)
pixi add ngio # pixi, from conda-forge (--pypi for PyPI)
mamba install -c conda-forge ngio # mamba/condaThen work through the quickstart.
- Object-based API — open, explore and manipulate OME-Zarr images and HCS plates; derive new images and labels with minimal boilerplate.
- Tables and ROIs — tight integration with tabular data, extensible table schemas, and measurements stored alongside the image.
- Scalable processing — iterators for building pipelines that generalise from a single ROI to a full plate, with a pluggable mapping mechanism for parallelisation.
- Remote stores — stream from S3 and other fsspec-backed sources, with a configurable IO retry policy.
- Supported OME-Zarr versions — ngio supports OME-Zarr v0.4 and v0.5, backed by either Zarr v2 or v3 storage. Support for v0.6 and later is planned.
ngio follows semantic versioning: from 1.0 onwards the public API is stable, and breaking changes are reserved for major releases.
Full documentation, including guides, tutorials and the API reference, is at biovisioncenter.github.io/ngio. The worked examples are executed when the site is built, so the code and the output you read are what actually ran.
If ngio contributes to work you publish, please cite it. See
CITATION.cff for the
current citation metadata.
ngio is developed at the BioVisionCenter, University of Zurich, by @lorenzocerrone and @jluethi. It is released under the BSD-3-Clause licence, and developed in the open on GitHub — issues and contributions welcome.