HydroPilot
A configuration-first orchestration framework for hydrological model calibration, evaluation, and optimization.
HydroPilot turns the repetitive glue code around hydrological modeling into a reusable workflow: parameter mapping, input writing, model execution, result extraction, objective evaluation, and run reporting. The core is model-agnostic. Built-in templates give you shorter, model-specific configuration for supported models.
Current status
What is available today:
version: general— model-agnostic workflow modeversion: swat— template for SWAT 2012version: xaj— template for XAJ (Xinanjiang)- readers:
text,csv - writers:
fixed_width,csv - subprocess-based model execution
- built-in and external evaluation functions
- SQLite and CSV run reporting
- UQPyL integration
CLI entry points:
hydropilot-validate— validate a configurationhydropilot-test— run one configuration testhydropilot-apply— apply parameters to a project copyhydropilot-run— single-run YAML entry point
Public Python API:
SimModel— main runtime entry pointBatchRunResult— batch evaluation resultUQPyLAdapter— bridge to UQPyL optimization
Planned, not yet available:
- APEX
- HBV
- VIC
- HEC-HMS
Installation
Requires Python 3.10+.
pip install hydropilot
For local development:
pip install -e .
pip install -e .[dev]
With UQPyL integration:
pip install -e .[uqpyl]
Quick start
Validate a configuration
hydropilot-validate path/to/config.yaml
Test a configuration
hydropilot-test path/to/config.yaml
Runs one deterministic parameter vector through the full runtime, forces parallel = 1, keeps the runtime project copy, and writes test-report.md under the run archive.
Apply parameters to a project
hydropilot-apply path/to/apply.yaml
Run from a YAML definition
hydropilot-run path/to/run.yaml
Executes one parameter vector described by a run YAML file. It's a single-run entry point — it doesn't manage full experiments.
Evaluate parameter vectors with SimModel
import numpy as np
from hydropilot import SimModel
X = np.array([
[50.0, 0.5, 100.0],
])
with SimModel("examples/test_monthly.yaml") as model:
result = model.run(X)
print(result.objs)
Use with UQPyL
from hydropilot.integrations import UQPyLAdapter
with UQPyLAdapter("examples/test_daily.yaml") as adapter:
result = adapter.evaluate(X)
print(result.objs)
print(result.cons)
Support matrix
| Capability | Status |
|---|---|
General configuration mode (version: general) |
Available |
SWAT 2012 template (version: swat) |
Available |
XAJ template (version: xaj) |
Available |
| Fixed-width parameter writing | Available |
| CSV parameter writing | Available |
| Text-based series extraction | Available |
| CSV series extraction | Available |
| Subprocess runner | Available |
| SQLite + CSV reporting | Available |
| UQPyL adapter | Available |
hydropilot-validate |
Available |
hydropilot-test |
Available |
hydropilot-apply |
Available |
hydropilot-run |
Available |
| APEX template | Planned |
| HBV template | Planned |
| VIC template | Planned |
| HEC-HMS template | Planned |
Documentation
- Documentation hub — index of all documentation
- Architecture — config chain, runtime chain, and module layout
License
MIT
Release files for hydropilot 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| hydropilot-0.1.3.tar.gz | 124.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hydropilot-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 252.8 kB
Release files / hydropilot-0.1.3.tar.gz
| Download URL | hydropilot-0.1.3.tar.gz |
|---|---|
| Size | 124.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6992440c3480c49659646efb96773e11d3bf4167f8272ab17682da7398c92649
|
|
BLAKE2b-256 checksum How to use checksums |
c19842c538801c30e771fcef0f5d6e1e74e1d9f995d05138b87fa87fcb4ad9ac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 23, 2026.
Transparency logRelease files / hydropilot-0.1.3-py3-none-any.whl
| Download URL | hydropilot-0.1.3-py3-none-any.whl |
|---|---|
| Size | 128.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3be230c733768d484b0eda480b988f749705e2b8b486c02b85de7b383dce6374
|
|
BLAKE2b-256 checksum How to use checksums |
04f58788c98caa82851eac2609607cfe6c1a4c160bce03043c345745a082afe3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 23, 2026.
Transparency log