Skip to main content

topozarr

Python library to create multiscale Zarr stores for usage with zarr-layer.

Tries to follow the GeoZarr spec, which is composed of these zarr-conventions:

  • multiscales — pyramid structure and resolution levels
  • proj: — coordinate reference system (CRS)
  • spatial: — affine transform, bounding box, and dimension names

Warning: experimental

Usage

Installation

uv add topozarr
# or
pip install topozarr

Multiscales are computed by topozarr-core, a small Rust kernel installed automatically as a wheel. The tutorial extra includes everything needed to run the examples below:

uv add 'topozarr[tutorial]'
# or
pip install 'topozarr[tutorial]'

Example

import xarray as xr
import xproj # for crs assignment
from topozarr import create_pyramid

# Load the air_temperature Xarray tutorial dataset
ds = xr.tutorial.open_dataset('air_temperature').drop_encoding()

# Assign a CRS
ds = ds.proj.assign_crs(spatial_ref="EPSG:4326")
print(ds)
pyramid = create_pyramid(
    ds,
    levels=2,
    x_dim="lon",
    y_dim="lat",
    method="mean",  # "mean" (default) | "max" | "min" | "sum" | "nearest"
)
print(pyramid.encoding)

# write
pyramid.write("pyramid.zarr")

levels is the total number of resolution levels, including the original. Level 0 is the original (highest) resolution; by default each subsequent level is coarsened by a factor of 2 per spatial dimension, so the last level is the coarsest.

create_pyramid returns a write plan; pyramid.write(store) does the work.

Not every dataset needs overviews. For a single-resolution (flat) geozarr group, attach_geozarr_metadata adds the convention attrs and recommend_encoding gives you the same chunk/shard heuristic to hand to to_zarr:

from topozarr import attach_geozarr_metadata, recommend_encoding

ds = attach_geozarr_metadata(ds, x_dim="lon", y_dim="lat")
ds.to_zarr(
    "flat.zarr",
    zarr_format=3,
    consolidated=False,
    encoding=recommend_encoding(ds, x_dim="lon", y_dim="lat"),
)

Documentation

Full docs at carbonplan.github.io/topozarr:

  • Usage — sparse pyramids (factors), visualization hints (layer_hints), chunking and sharding (and why sharding rules), and object-storage / Icechunk backends.
  • Design — the plan/execute split, chunk and shard heuristics, streaming memory model, and Rust kernel semantics.

Contributing

Clone the repo, install with the test dependency group, and run the tests:

git clone https://github.com/carbonplan/topozarr
cd topozarr
uv sync --group test
uv run pytest -n auto

Run conformance tests against the GeoZarr spec (requires the conformance group):

uv sync --group conformance
uv run pytest -n auto -m conformance

Lint and format:

uv run pre-commit run --all-files

To regenerate the demo datasets in S3 (requires AWS credentials), install the tutorial extra and run the build script:

uv sync --group test --extra tutorial
uv run python scripts/build_demo_data.py --help

Building from source requires a Rust toolchain for the topozarr-core kernel. See the contributing docs for conformance tests, linting, and demo-data scripts.

License

MIT — see the LICENSE file for details.

About Us

CarbonPlan is a nonprofit organization that uses data and science for climate action. We aim to improve the transparency and scientific integrity of climate solutions through open data and tools. Find out more at carbonplan.org or get in touch by opening an issue or sending us an email

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

topozarr-0.1.6.tar.gz (22.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

topozarr-0.1.6-py3-none-any.whl (26.0 kB view details)

Uploaded Python 3

File details

Details for the file topozarr-0.1.6.tar.gz.

File metadata

  • Download URL: topozarr-0.1.6.tar.gz
  • Upload date:
  • Size: 22.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for topozarr-0.1.6.tar.gz
Algorithm Hash digest
SHA256 d47f67a5201f73deb42dddd66be28e3e7d6e045f4f0325a563bcd138cc4dda29
MD5 497bf5b98a7276884d755a97f629836c
BLAKE2b-256 1974e1c42edae06d8a9fc9dc77914d48394c881ab3fce0db87548ce1793cb400

See more details on using hashes here.

File details

Details for the file topozarr-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: topozarr-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 26.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for topozarr-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 a027aaf0cf79807f85b000ef3ff1a6b7e96b0573762b594dee9d000d305eae18
MD5 e6cfc942cf2ce2c1ba79898f23e482f6
BLAKE2b-256 7d571024c3227260bc4e748912f8ecf8de6bd5bed06df99b514e0f980865cfcf

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.8

2 files

This release

0.1.6 This release

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.0.93

2 files

0.0.92

2 files

0.0.91

2 files

0.0.9

2 files

0.0.8

2 files

0.0.7

2 files

0.0.6

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

0.0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page