Create virtual Zarr stores from archival data using xarray API
Project description
VirtualiZarr
Cloud-Optimize your Scientific Data as a Virtual Zarr Datacube, using Xarray syntax.
The best way to distribute large scientific datasets is via the Cloud, in Cloud-Optimized formats [^1]. But often this data is stuck in archival pre-Cloud file formats such as netCDF.
VirtualiZarr[^2] makes it easy to create "Virtual" Zarr datacubes, allowing performant access to archival data as if it were in the Cloud-Optimized Zarr format, without duplicating any data.
Please see the documentation.
Features
- Create virtual references pointing to bytes inside an archival file with
open_virtual_dataset. - Supports a range of archival file formats, including netCDF4 and HDF5, and has a pluggable system for supporting new formats.
- Access data via the zarr-python API by reading from the zarr-compatible
ManifestStore. - Combine data from multiple files into one larger datacube using xarray's combining functions, such as
xarray.concat. - Commit the virtual references to storage either using the Kerchunk references specification or the Icechunk transactional storage engine.
- Users access the virtual datacube simply as a single zarr-compatible store using
xarray.open_zarr.
Inspired by Kerchunk
VirtualiZarr grew out of discussions on the Kerchunk repository, and is an attempt to provide the game-changing power of kerchunk but in a zarr-native way, and with a familiar array-like API.
You now have a choice between using VirtualiZarr and Kerchunk: VirtualiZarr provides almost all the same features as Kerchunk.
Development Status and Roadmap
VirtualiZarr version 1 (mostly) achieved feature parity with kerchunk's logic for combining datasets, providing an easier way to manipulate kerchunk references in memory and generate kerchunk reference files on disk.
VirtualiZarr version 2 brings:
- Zarr v3 support
- A pluggable system of "parsers" for virtualizing custom file formats
- The
ManifestStoreabstraction, which allows for loading data without serializing to Kerchunk/Icechunk first - Integration with
obstore - Reference parsing that doesn't rely on kerchunk under the hood
- The ability to use "parsers" to load data directly from archival file formats into Zarr and/or Xarray
Future VirtualiZarr development will focus on generalizing and upstreaming useful concepts into the Zarr specification, the Zarr-Python library, Xarray, and possibly some new packages.
We have a lot of ideas, including:
- Zarr-native on-disk chunk manifest format
- "Virtual concatenation" of separate Zarr arrays
- ManifestArrays as an intermediate layer in-memory in Zarr-Python
- Separating CF-related Codecs from xarray
If you see other opportunities then we would love to hear your ideas!
Talks and Presentations
- 2025/04/30 - Cloud-Native Geospatial Forum - Tom Nicholas - Slides / Recording
- 2024/11/21 - MET Office Architecture Guild - Tom Nicholas - Slides
- 2024/11/13 - Cloud-Native Geospatial conference - Raphael Hagen - Slides
- 2024/07/24 - ESIP Meeting - Sean Harkins - Event / Recording
- 2024/05/15 - Pangeo showcase - Tom Nicholas - Event / Recording / Slides
- 2025/07/22 - ESIP Meeting - Max Jones - Event / Recording / Slides
Credits
This package was originally developed by Tom Nicholas whilst working at [C]Worthy, who deserve credit for allowing him to prioritise a generalizable open-source solution to the dataset virtualization problem. VirtualiZarr is now a community-owned multi-stakeholder project.
Licence
Apache 2.0
References
[^2]: (Pronounced "Virtual-Eye-Zarr" - like "virtualizer" but more piratey 🦜)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file virtualizarr-2.4.0.tar.gz.
File metadata
- Download URL: virtualizarr-2.4.0.tar.gz
- Upload date:
- Size: 231.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b852f35bea62892dbe20cc963ebea8cf09e357729004a4eecbca331b8d91e046
|
|
| MD5 |
43cf27c875b230e4f8db96c2bc94c4bb
|
|
| BLAKE2b-256 |
b0449b2292b9baa36ee0872ae0d3f5d35ecb9c9ec0f95ba5113318c393ca4510
|
Provenance
The following attestation bundles were made for virtualizarr-2.4.0.tar.gz:
Publisher:
release.yml on zarr-developers/VirtualiZarr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
virtualizarr-2.4.0.tar.gz -
Subject digest:
b852f35bea62892dbe20cc963ebea8cf09e357729004a4eecbca331b8d91e046 - Sigstore transparency entry: 850189789
- Sigstore integration time:
-
Permalink:
zarr-developers/VirtualiZarr@6254afc364b0b505493a01cb7f6a2a7d2ec9c57a -
Branch / Tag:
refs/tags/v2.4.0 - Owner: https://github.com/zarr-developers
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@6254afc364b0b505493a01cb7f6a2a7d2ec9c57a -
Trigger Event:
release
-
Statement type:
File details
Details for the file virtualizarr-2.4.0-py3-none-any.whl.
File metadata
- Download URL: virtualizarr-2.4.0-py3-none-any.whl
- Upload date:
- Size: 202.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6ed1a3f6958f34fa2f00c022dc1b1f39a33c4496df5597949f7e8ef4154edd6
|
|
| MD5 |
eb7e29b7bb7a97d3e337141fca54ac02
|
|
| BLAKE2b-256 |
e1964abc97fbdfcbfe19a01868404e79c865052e9d08debf06b23496c3cd5c58
|
Provenance
The following attestation bundles were made for virtualizarr-2.4.0-py3-none-any.whl:
Publisher:
release.yml on zarr-developers/VirtualiZarr
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
virtualizarr-2.4.0-py3-none-any.whl -
Subject digest:
d6ed1a3f6958f34fa2f00c022dc1b1f39a33c4496df5597949f7e8ef4154edd6 - Sigstore transparency entry: 850189793
- Sigstore integration time:
-
Permalink:
zarr-developers/VirtualiZarr@6254afc364b0b505493a01cb7f6a2a7d2ec9c57a -
Branch / Tag:
refs/tags/v2.4.0 - Owner: https://github.com/zarr-developers
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@6254afc364b0b505493a01cb7f6a2a7d2ec9c57a -
Trigger Event:
release
-
Statement type: