Quickstart#
Five lines of Python — every NEXRAD KLOT (Chicago, IL) scan ever published to the public archive, in one xarray.DataTree. No downloads, no decoders, no waiting.
import xarray as xr
import icechunk
storage = icechunk.s3_storage(
bucket="nexrad-arco",
prefix="KLOT",
region="us-east-1",
anonymous=True,
)
session = icechunk.Repository.open(storage).readonly_session("main")
dt = xr.open_datatree(session.store, engine="rustytree", chunks=None)
print(sorted(dt.children)) # → ['VCP-12', 'VCP-212', 'VCP-34', ...]
That’s it. dt is a hierarchical, time-indexed view of the entire KLOT archive on the AWS Open Data Registry, grouped by Volume Coverage Pattern and sweep. Every variable is lazy — only the Zarr v3 chunks you slice into are fetched from S3.
Note
The same archives are also catalogued in Arraylake, Earthmover’s managed data platform — Client().get_repo("atmoscale/KLOT") in place of the icechunk block above, returning an equivalent read-only session. That route needs an Arraylake account and access to the atmoscale organization, so the tutorials all run the anonymous S3 path shown here; each one shows the Arraylake equivalent alongside it.
What’s next#
Notebook 1: NEXRAD KLOT Demo — the full access walkthrough: narrow the tree to one VCP and sweep, select a scan, plot its reflectivity.
Notebook 2: KLOT low sweeps — if you only need the lowest cuts, open the
KLOT-lowsweepsvirtual archive and get the 2×2 polarimetric view (Z, ZDR, RhoHV, PhiDP).Tutorials — paper reproduction and large-scale rainfall accumulation.
Installation — if
import icechunkfailed, start here.
Note
engine="rustytree" is a Rust-backed xarray.DataTree backend (rustytree-xarray on PyPI) recommended for radar-datatree archives. Drop-in replacement for engine="zarr", ~10× faster on icechunk repos served from object storage.