Skip to main content

English | 简体中文 | 中文文档

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 mode
  • version: swat — template for SWAT 2012
  • version: 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 configuration
  • hydropilot-test — run one configuration test
  • hydropilot-apply — apply parameters to a project copy
  • hydropilot-run — single-run YAML entry point

Public Python API:

  • SimModel — main runtime entry point
  • BatchRunResult — batch evaluation result
  • UQPyLAdapter — 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

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)

Source distribution for hydropilot 0.1.3
File Size Uploaded
hydropilot-0.1.3.tar.gz 124.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hydropilot 0.1.3
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

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