Skip to main content

jHBV

PyPI version License

Dual-backend (JAX + NumPy) implementation of the HBV-96 rainfall–runoff model — usable standalone or as a SYMFLUENCE plugin.

Part of the SYMFLUENCE JAX-native model family — self-contained packages that run standalone (NumPy fallback, no JAX required) and register automatically with SYMFLUENCE when installed alongside it.

Features

  • Differentiable: automatic differentiation through the full simulation (JAX)
  • Fast: JIT compilation via lax.scan; vmap for ensembles; GPU-capable
  • Dependency-light: pure-NumPy fallback when JAX is not installed
  • Plugin architecture: auto-registers with SYMFLUENCE via entry points

Installation

pip install jhbv          # NumPy backend
pip install 'jhbv[jax]'    # with JAX (differentiable, JIT)

Quickstart

import numpy as np
from jhbv import simulate

# daily forcing: precipitation (mm/d), temperature (degC), PET (mm/d)
runoff, state = simulate(precip, temp, pet)           # default parameters

params = {"FC": 250.0, "BETA": 2.0, "K1": 0.1}        # override any subset
runoff, state = simulate(precip, temp, pet, params=params)

# hourly simulation (parameters stay in daily units)
runoff_h, _ = simulate(precip_h, temp_h, pet_h, timestep_hours=1)

Gradient-based calibration

The JAX backend makes the full simulation differentiable end-to-end, so model parameters can be calibrated with gradient descent:

import jax
from jhbv import kge_loss, get_kge_gradient_fn

grad_fn = get_kge_gradient_fn(precip, temp, pet, observed)
value, grads = grad_fn(params)          # dKGE/dparam for every parameter

nse_loss / kge_loss and their gradient factories are JIT-compatible and work with any optax optimizer. Within SYMFLUENCE the same interface powers the ADAM and L-BFGS calibration options.

Use with SYMFLUENCE

jhbv registers with SYMFLUENCE through the symfluence.plugins entry point — installation is the integration:

pip install symfluence jhbv
# config.yaml (excerpt)
model:
  hydrological_model: HBV

SYMFLUENCE then handles forcing preparation, calibration, evaluation, and benchmarking for the model with no further wiring.

Model structure

HBV-96 (Lindström et al., 1997) consists of four routines, all implemented with smooth, differentiable formulations:

  1. Snow — degree-day accumulation and melt with refreezing
  2. Soil moisture — beta-function recharge and evapotranspiration reduction
  3. Response — two-box (upper/lower zone) storage with percolation
  4. Routing — triangular transfer-function convolution

15 calibration parameters (jhbv.PARAM_BOUNDS), with defaults in jhbv.DEFAULT_PARAMS. Daily and sub-daily timesteps are supported; parameters are specified in daily units and scaled internally (timestep_hours argument).

Testing

pip install -e '.[dev]'
pytest

How to cite

If you use jHBV in your research, please cite the SYMFLUENCE companion papers, which describe the design of the JAX-native model family (registry integration, differentiability, and the calibration experiments they enable):

Eythorsson, D., et al. (2026). The registry as social contract: Architectural patterns for community hydrological modeling. Water Resources Research (submitted).

Eythorsson, D., et al. (2026). From configuration to prediction: Multi-model, multi-basin experiments with SYMFLUENCE. Water Resources Research (submitted).

Citation metadata for this package is provided in CITATION.cff; a version-specific DOI is minted via Zenodo for each GitHub release.

References

  • Lindström, G., Johansson, B., Persson, M., Gardelin, M., & Bergström, S. (1997). Development and test of the distributed HBV-96 hydrological model. Journal of Hydrology, 201(1–4), 272–288. https://doi.org/10.1016/S0022-1694(97)00041-3
  • Bergström, S. (1995). The HBV model. In V. P. Singh (Ed.), Computer Models of Watershed Hydrology (pp. 443–476). Water Resources Publications.

License

Apache-2.0. See LICENSE.

Metadata

Release files for jhbv 0.2.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jhbv 0.2.5
File Size Uploaded Provenance Actions
jhbv-0.2.5.tar.gz 107.4 kB Without provenance Details for jhbv-0.2.5.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for jhbv 0.2.5
File Interpreter ABI Platform Actions
jhbv-0.2.5-py3-none-any.whl Python 3 none any Details for jhbv-0.2.5-py3-none-any.whl

Total release size: 220.5 kB

Release files / jhbv-0.2.5.tar.gz

Download URL jhbv-0.2.5.tar.gz
Size 107.4 kB
Tags Source
SHA-256 checksum
How to use checksums
725df783f2fe95f599aa0a78913e61a20c52ee4b1c34b9fa29a527c3334ad98b
BLAKE2b-256 checksum
How to use checksums
f435fb711731a8194dad252a0fa2f5850c06c8c4803ffbac72b1c7fc4a9486ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release files / jhbv-0.2.5-py3-none-any.whl

Download URL jhbv-0.2.5-py3-none-any.whl
Size 113.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
61bb1ea3c001216dd3d9118fdcf8a4cad7391b4d36e9b3b4b5dcd4f7544c5cd2
BLAKE2b-256 checksum
How to use checksums
b69ebb248d785d1176a55cde866b8add2888688978d65b398b11f6c6008ed7b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Security for jhbv 0.2.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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