Open-source Python for geospatial analysis, hydrological modelling and Earth observation.
Fourteen packages, all on PyPI and conda-forge, built to compose rather than to stand alone: a GDAL/OGR core, a plotting layer over it, and domain libraries built on both. Use one on its own, or the whole stack together.
| Package | Distribution | What it does |
|---|---|---|
| pyramids | pyramids-gis |
Raster, vector and datacube handling over GDAL/OGR — GeoTIFF, NetCDF, shapefiles, GeoJSON. The engine the rest of the stack builds on. |
| pyramids-eo | pyramids-eo |
Remote-sensing and Earth-observation tier on top of pyramids. |
| digital-rivers | digital-rivers |
DEM and raster processing — the source of truth for terrain work across the stack. |
| earthlens | earthlens |
Earth-observation data acquisition: ECMWF, STAC, Copernicus, GEE and more, behind one interface. |
| Package | Distribution | What it does |
|---|---|---|
| Hapi | hapi-nile |
Conceptual distributed hydrological model — HBV96 lumped model with Muskingum routing. |
| Serapis | serapis |
Flood simulation and hydrodynamic modelling. |
| Package | Distribution | What it does |
|---|---|---|
| cleopatra | cleopatra |
A matplotlib convenience layer over in-memory NumPy data. Every other package plots through it. |
| Digital-Earth | digitalearth |
Geospatial visualization for rasters and vectors — static, interactive, 3D and web. |
| Package | Distribution | What it does |
|---|---|---|
| statista | statista |
Statistics, with a focus on extreme-value analysis and distribution fitting. |
| geostatista | geostatista |
Variograms, kriging and spatial autocorrelation. |
| Package | Distribution | What it does |
|---|---|---|
| hpc | hpc-utils |
NumPy helpers shared across the stack. |
| unicloud | unicloud |
One interface over cloud object storage. |
| Oasis | Oasis-Optimization |
Harmony-search optimization. |
| serapeum_utils | serapeum_utils |
Small shared utilities. |
| Repository | What it is |
|---|---|
| serapeum | A provider-agnostic LLM framework — core plus pluggable providers. |
| llama-utils | LlamaIndex utilities. |
| github-actions | Reusable composite actions every repository's CI is built from — Python setup for pip, uv and pixi, versioned MkDocs deploys, and releases. |
| docs | The documentation site that aggregates every package. |
Derived from what each package declares in its pyproject.toml. The
full graph in the documentation carries
the same links with more explanation.
graph TD
Digital_Earth["Digital-Earth"]
Hapi["Hapi"]
Oasis["Oasis"]
Serapis["Serapis"]
cleopatra["cleopatra"]
digital_rivers["digital-rivers"]
earthlens["earthlens"]
earthstudio["earthstudio"]
geostatista["geostatista"]
hpc["hpc"]
hydrological_models["hydrological-models"]
pyramids["pyramids"]
pyramids_eo["pyramids-eo"]
serapeum["serapeum"]
serapeum_utils["serapeum_utils"]
statista["statista"]
%% required
Digital_Earth --> pyramids
Digital_Earth -->|tiles| cleopatra
Hapi --> Oasis
Hapi --> cleopatra
Hapi --> pyramids
Hapi --> statista
Serapis --> cleopatra
Serapis --> pyramids
Serapis --> serapeum_utils
Serapis --> statista
cleopatra --> hpc
digital_rivers --> pyramids
earthlens --> pyramids
geostatista --> pyramids
hydrological_models --> Hapi
hydrological_models --> pyramids
pyramids --> hpc
pyramids_eo --> pyramids
%% optional — reached only through an extra
Hapi -.->|inputs → ecmwf| earthlens
digital_rivers -.->|viz → tiles| cleopatra
earthlens -.->|eedai| pyramids_eo
earthstudio -.->|agent| serapeum
earthstudio -.->|gis| Digital_Earth
earthstudio -.->|gis| geostatista
earthstudio -.->|gis| pyramids
earthstudio -.->|gis| pyramids_eo
geostatista -.->|viz| cleopatra
hydrological_models -.->|inputs → ecmwf| earthlens
pyramids -.->|viz → tiles| cleopatra
%% extras that upgrade an already-required dependency
digital_rivers -.->|distributed → lazy · viz → viz| pyramids
earthlens -.->|nwm → parquet · stac → stac| pyramids
geostatista -.->|distributed → lazy · viz → viz| pyramids
pyramids_eo -.->|viz → viz| pyramids
Solid arrows are required dependencies; a label on one is the extra the dependency is installed with.
Dashed arrows are optional — the label reads <extra on this package> → <extra on the dependency>.
A dashed arrow beside a solid one is an extra that upgrades a dependency the package already requires.
Only runtime dependencies and installable extras are shown; contributor-only dependency groups are omitted.
12 further repositories neither depend on these packages nor are depended on by them, so they are not drawn here.
Every package is published to both PyPI and conda-forge:
pip install pyramids-gis
conda install -c conda-forge pyramidsOptional features ship as extras rather than as required dependencies, so a bare install stays small. Plotting is the common case:
pip install "pyramids-gis[viz]" # adds cleopatra and the plotting stack
pip install "hapi-nile[inputs]" # adds earthlens with the ECMWF readerBranches follow <type>/<short-description> in kebab-case, and commits follow
Conventional Commits. Releases are cut with Commitizen and flow on to PyPI
and conda-forge automatically.