A hydrological model driver framework for coupling models with UQPyL
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hydropilot-0.1.3.tar.gz.
File metadata
- Download URL: hydropilot-0.1.3.tar.gz
- Upload date:
- Size: 124.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6992440c3480c49659646efb96773e11d3bf4167f8272ab17682da7398c92649
|
|
| MD5 |
a87bde96e2ec65d816e4e39765076cab
|
|
| BLAKE2b-256 |
c19842c538801c30e771fcef0f5d6e1e74e1d9f995d05138b87fa87fcb4ad9ac
|
Provenance
The following attestation bundles were made for hydropilot-0.1.3.tar.gz:
Publisher:
release.yml on smasky/hydroPilot
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hydropilot-0.1.3.tar.gz -
Subject digest:
6992440c3480c49659646efb96773e11d3bf4167f8272ab17682da7398c92649 - Sigstore transparency entry: 1615111755
- Sigstore integration time:
-
Permalink:
smasky/hydroPilot@8d7f6f1afb032ba71e1200ada6b87eb5b765adfa -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/smasky
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8d7f6f1afb032ba71e1200ada6b87eb5b765adfa -
Trigger Event:
push
-
Statement type:
File details
Details for the file hydropilot-0.1.3-py3-none-any.whl.
File metadata
- Download URL: hydropilot-0.1.3-py3-none-any.whl
- Upload date:
- Size: 128.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3be230c733768d484b0eda480b988f749705e2b8b486c02b85de7b383dce6374
|
|
| MD5 |
8c2cb9bbbc4f99459a14ce026fd71406
|
|
| BLAKE2b-256 |
04f58788c98caa82851eac2609607cfe6c1a4c160bce03043c345745a082afe3
|
Provenance
The following attestation bundles were made for hydropilot-0.1.3-py3-none-any.whl:
Publisher:
release.yml on smasky/hydroPilot
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hydropilot-0.1.3-py3-none-any.whl -
Subject digest:
3be230c733768d484b0eda480b988f749705e2b8b486c02b85de7b383dce6374 - Sigstore transparency entry: 1615111764
- Sigstore integration time:
-
Permalink:
smasky/hydroPilot@8d7f6f1afb032ba71e1200ada6b87eb5b765adfa -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/smasky
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8d7f6f1afb032ba71e1200ada6b87eb5b765adfa -
Trigger Event:
push
-
Statement type: