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.
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
Requires Python 3.10+.
pip install hydropilotFor local development:
pip install -e .
pip install -e .[dev]With UQPyL integration:
pip install -e .[uqpyl]hydropilot-validate path/to/config.yamlhydropilot-test path/to/config.yamlRuns 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.
hydropilot-apply path/to/apply.yamlhydropilot-run path/to/run.yamlExecutes one parameter vector described by a run YAML file. It's a single-run entry point — it doesn't manage full experiments.
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)from hydropilot.integrations import UQPyLAdapter
with UQPyLAdapter("examples/test_daily.yaml") as adapter:
result = adapter.evaluate(X)
print(result.objs)
print(result.cons)| 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 hub — index of all documentation
- Architecture — config chain, runtime chain, and module layout
MIT