Important
This software is Incubating and subject to ECMWF's guidelines on Software Maturity.
earthkit-hydro is a Python library for common hydrological functions. It is the hydrological component of earthkit.
![]() |
![]() |
- Catchment delineation
- Catchment-based statistics
- Directional flow-based accumulations
- River network distance calculations
- Upstream/downstream field propagation
- Bifurcation handling
- Custom weighting and decay support
- Support for PCRaster, CaMa-Flood, HydroSHEDS, MERIT-Hydro and GRIT river network formats
- Compatible with major array-backends: xarray, numpy, cupy, torch, jax, mlx and tensorflow
- GPU support
- Differentiable operations suitable for machine learning
For a default installation, run
pip install earthkit-hydro
Developer instructions:
For a developer setup (includes linting and test libraries), run
conda create -n hydro python=3.12
conda activate hydro
conda install -c conda-forge rust
git clone https://github.com/ecmwf/earthkit-hydro.git
cd earthkit-hydro
pip install -e .[dev]
pre-commit install
Note: this project is a mixed Rust-Python project with a pure Python fallback. To handle this, the behaviour of the install is based on an environmental variable USE_RUST, with the following behaviour
Not set or any other value (default behaviour): Attempts to build with Rust and if failure, skips and falls back to pure Python implementation.USE_RUST=0: Builds pure Python implementation.USE_RUST=1: Builds with Rust and fails if something goes wrong.
Copyright 2024, European Centre for Medium Range Weather Forecasts.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
In applying this licence, ECMWF does not waive the privileges and immunities
granted to it by virtue of its status as an intergovernmental organisation
nor does it submit to any jurisdiction.

