Crate zarrs_icechunk

Crate zarrs_icechunk 

Source
Expand description

icechunk store support for the zarrs crate.

Icechunk is a transactional store that enables git-like version control of Zarr hierarchies.

zarrs_icechunk can read data in a range of archival formats (e.g., netCDF4, HDF5, etc.) that are converted to icechunk-backed “virtual Zarr datacubes” via VirtualiZarr (example below).

§Version Compatibility Matrix

zarrs_icechunkicechunkzarrs (zarrs_storage)
0.4.x0.3.x0.22+ (0.4.x)
0.3.x0.3.x0.18+ (0.3.x)
0.2.x0.2.x0.18+ (0.3.x)
0.1.10.1.2+0.18+ (0.3.x)
0.1.00.1.0-0.1.10.18+ (0.3.x)
0.1.0-alpha.30.1.0-alpha.13-0.18+ (0.3.x)
0.1.0-alpha.20.1.0-alpha.8-120.18+ (0.3.x)
0.1.0-alpha.10.1.0-alpha.5-70.18+ (0.3.x)
0.1.0-alpha.00.1.0-alpha.30.17 (0.2.2)

§Examples

§Basic Usage and Version Control

use icechunk::{Repository, RepositoryConfig, repository::VersionInfo};
use zarrs_icechunk::AsyncIcechunkStore;
// Create an icechunk repository
let storage = icechunk::new_in_memory_storage().await?;
let config = RepositoryConfig::default();
let repo = Repository::create(Some(config), storage, HashMap::new()).await?;

// Do some array/metadata manipulation with zarrs, then commit a snapshot
let session = repo.writable_session("main").await?;
let store = Arc::new(AsyncIcechunkStore::new(session));
let snapshot0 = store.session().write().await.commit("Initial commit", None).await?;

// Do some more array/metadata manipulation, then commit another snapshot
let session = repo.writable_session("main").await?;
let store = Arc::new(AsyncIcechunkStore::new(session));
let snapshot1 = store.session().write().await.commit("Update data", None).await?;

// Checkout the first snapshot
let session = repo.readonly_session(&VersionInfo::SnapshotId(snapshot0)).await?;
let store = Arc::new(AsyncIcechunkStore::new(session));

§Virtualise NetCDF as Zarr (via VirtualiZarr)

Decode a virtual Zarr array /examples/data/test.icechunk.zarr:

cargo run --example virtualizarr_netcdf

This references /examples/data/test[0,1].nc hosted in this repository over HTTP. /examples/data/test.icechunk.zarr was created with /examples/virtualizarr_netcdf.py.

§Licence

zarrs_icechunk is licensed under either of

Re-exports§

pub use icechunk;

Structs§

AsyncIcechunkStore
An asynchronous store backed by an icechunk::session::Session.