A rust library for the Zarr V3 storage format for multidimensional arrays and metadata.
Developed at the Department of Materials Physics, Australian National University, Canberra, Australia.
zarrs is experimental and in limited production use. Use at your own risk! Correctness issues with past versions are detailed here.
A changelog can be found here.
- View the examples.
- Read the documentation.
array::Array
andstorage
are good places to start. - Check out zarrs_tools for real-world usage and performance benchmarks of
zarrs
.
let store_path: PathBuf = "/path/to/store".into();
let store: zarrs::storage::ReadableWritableListableStorage =
Arc::new(zarrs::storage::store::FilesystemStore::new(&store_path)?);
let array_path: &str = "/group/array"; // /path/to/store/group/array
let array = zarrs::array::Array::new(store, array_path)?;
let chunk: ndarray::ArrayD<f32> = array.retrieve_chunk_ndarray(&[1, 0])?;
println!("Chunk [1,0] is:\n{chunk}");
- zarrs_tools: Various tools for creating and manipulating Zarr v3 data. Includes
zarrs
benchmarks. - zarrs_ffi: A subset of zarrs exposed as a C API.
zarrs
is licensed under either of
- the Apache License, Version 2.0 LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0 or
- the MIT license LICENSE-MIT or http://opensource.org/licenses/MIT, at your option.
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.