Migrate from data.dynamical.org
data.dynamical.orgis going away — plan on August 31, 2026. In practice we will turn URLs off dataset by dataset over the following months rather than all at once, so nothing breaks the morning of September 1.- The replacement datasets are stored as Icechunk Zarr repositories. Both access patterns below read the Icechunk 2.0 version of a dataset, which makes Icechunk 2 a required dependency.
- Only how they are opened needs to change. The Icechunk versions are identical in structure, naming, attributes, chunking/sharding, and content — drop-in replacements for the deprecated Zarrs.
Replace each hard-coded https://data.dynamical.org/.../latest.zarr
URL with one of the two supported ways to open a dataset. Both need Python 3.12
or newer, and both resolve the current repository from our
STAC catalog, so your code
does not need to track storage locations or version changes.
dynamical-catalog
A thin STAC and Icechunk wrapper that ensures minimum dependency versions.
Install dynamical-catalog>=0.7.0 and pass the dataset ID from
its catalog page.
import dynamical_catalog
ds = dynamical_catalog.open("noaa-gfs-forecast", chunks=None)
STAC and Icechunk
Resolve the icechunk-https asset from the dataset's STAC Collection
each time your application opens a repository. Do not copy and permanently
hard-code the asset URL. Any HTTP client can read the Collection — the example
below uses httpx, and pystac works too, but neither
is required.
import httpx
import icechunk
import xarray as xr
url = "https://stac.dynamical.org/noaa-gfs-forecast/collection.json"
href = httpx.get(url).json()["assets"]["icechunk-https"]["href"]
repo = icechunk.Repository.open(icechunk.http_storage(href))
session = repo.readonly_session("main")
ds = xr.open_zarr(session.store, chunks=None)
Python is not a requirement either. Icechunk publishes a
JavaScript/TypeScript client
(@earthmover/icechunk, paired with zarrita) and a
Rust crate
(icechunk), both of which open the same icechunk-https
asset over plain HTTP.
Have an agent do it
Paste this into a coding agent running in your repository.
What changes
- Opening requires Icechunk 2 and Python 3.12 or newer.
- The public STAC Collection is the source of truth for the current repository.
- Dataset IDs replace
data.dynamical.orgpaths. - The optional
?email=query argument is no longer used. - Nothing about the data itself. Variables, attributes, chunking, and values are unchanged.
Help
If the replacement does not cover your access pattern, email
[email protected] with the
data.dynamical.org URL, variables, spatial subset, and time range you use.