#zarr #data #codec #zarrs #benchmark #ome-zarr

bin+lib zarrs_tools

Tools for creating and manipulating Zarr V3 data

20 unstable releases (5 breaking)

new 0.6.2 Dec 12, 2024
0.6.0 Nov 23, 2024
0.5.5 Jul 31, 2024
0.3.0 Feb 22, 2024
0.2.0 Dec 26, 2023

#562 in Encoding

Download history 23/week @ 2024-09-12 15/week @ 2024-09-19 25/week @ 2024-09-26 14/week @ 2024-10-03 113/week @ 2024-11-14 166/week @ 2024-11-21 14/week @ 2024-11-28 132/week @ 2024-12-05

425 downloads per month

MIT/Apache

290KB
6.5K SLoC

zarrs_tools

Latest Version msrv build

Various tools for creating and manipulating Zarr v3 data with the zarrs rust crate.

A changelog can be found here.

Tools

All tools support input and output of Zarr V3 data. Some tools additionally support input of a V3 compatible subset of Zarr V2.

  • zarrs_reencode: reencode an array. Manipulate the chunk size, shard size, codecs, fill value, chunk key encoding separator, and attributes.
  • zarrs_filter (feature filter): apply simple image filters (transformations) to an array.
  • zarrs_ome (feature ome): convert an array to an OME-Zarr 0.5 multi-scale image.
  • zarrs_info (feature info): return metadata related info or the range/histogram of an array.
  • zarrs_validate (feature validate): validate that two arrays are equivalent.
  • zarrs_binary2zarr (feature binary2zarr): create an array from piped binary data.
  • zarrs_ncvar2zarr (feature ncvar2zarr): convert a netCDF variable to an array.

See docs/ for tool documentation.

zarrs Benchmarking

  • zarrs_reencode: suitable for round trip benchmarking.
  • zarrs_benchmark_read_sync (feature benchmark): benchmark the zarrs sync API.
  • zarrs_benchmark_read_async (feature benchmark): benchmark the zarrs async API.

See the LDeakin/zarr_benchmarks repository for benchmarks of zarrs against other Zarr V3 implementations.

Install

Prebuilt Binaries

# Requires cargo-binstall https://github.com/cargo-bins/cargo-binstall
cargo binstall zarrs_tools

Prebuilt binaries are not available on all platforms.

From crates.io

cargo install --all-features zarrs_tools

From source

cargo install --all-features --path .
# cargo install --all-features --git https://github.com/LDeakin/zarrs_tools

Enabling SIMD intrinsics

Encoding and decoding performance may be improved with avx2/sse2 enabled (if supported).

This can be enabled by compiling with either of:

  • RUSTFLAGS="-C target-cpu=native"
  • RUSTFLAGS="-C target-feature=+avx2,+sse2"

Enabling non-default zarrs codecs

Non-default zarrs codecs (see zarrs crate features) can be enabled by passing them as feature flags. For example:

cargo install zarrs_tools --all-features --features zarrs/bitround,zarrs/zfp,zarrs/bz2,zarrs/pcodec

Licence

zarrs_tools is licensed under either of

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~31–70MB
~1M SLoC