/ngff-zarr

A lean and kind Open Microscopy Environment (OME) Next Generation File Format (NGFF) Zarr implementation.

Primary LanguagePythonMIT LicenseMIT

ngff-zarr

PyPI - Version PyPI - Python Version Test


A lean and kind Open Microscopy Environment (OME) Next Generation File Format (NGFF) Zarr implementation.

Table of Contents

Installation

To install the command line interface (CLI):

pip install 'ngff-zarr[cli]'

Features

  • Minimal dependencies
  • Work with arbitrary Zarr store types
  • Lazy, parallel, and web ready -- no local filesystem required
  • Process extremely large datasets
  • Multiple downscaling methods
  • Supports Python>=3.7
  • Implements version 0.4 of the OME-Zarr NGFF specification

Usage

Convert an image file

Convert any scientific image file format supported by either itk, tifffile, or imageio.

Example:

ngff-zarr -i ./MR-head.nrrd -o ./MR-head.zarr

ngff-zarr convert

Convert an image volume slice series

Note the quotes:

ngff-zarr -i "series/*.tif" -o ome-ngff.zarr

Print information about generated multiscales

To print information about the input, omit the output argument.

ngff-zarr -i ./MR-head.nrrd

ngff-zarr information

Specify output chunks

ngff-zarr -c 64 -i ./MR-head.nrrd

ngff-zarr output chunks

Specify metadata

ngff-zarr --dims "z" "y" "x" --scale x 1.4 y 1.4 z 2.5 --translation x 6.24 y 360.0 z 332.5 --name LIDC2 -i "series/*.tif"

ngff-zarr metadata

Limit memory consumption

Limit memory consumption by passing a rough memory limit in human-readable units, e.g. 8GB with the --memory-target option.

ngff-zarr --memory-target 50M -i ./LIDCFull.vtk -o ./LIDCFull.zarr

ngff-zarr memory-target

More options

ngff-zarr --help

See also

License

ngff-zarr is distributed under the terms of the MIT license.

Development

Contributions are welcome and appreciated.

To run the unit tests:

pip install -e ".[test,dask-image,itk,cli]"
pytest

Updating test data

  1. Generate new test data tarball
cd test/data
tar cvf ../data.tar baseline input
gzip -9 ../data.tar
  1. Upload the data to web3.storage

  2. Upload the test_data_ipfs_cid (from web3.storage web UI) and test_data_sha256 (sh256sum ../data.tar.gz) variables in test/_data.py.