HydroPilot
HydroPilot is a configuration-first framework for hydrological model calibration, evaluation, and optimization workflows.
It focuses on connecting model execution, parameter writing, result extraction, and workflow orchestration into a reusable engineering pipeline.
What HydroPilot is for
HydroPilot is useful when hydrological work is no longer just "run one model once", but starts to require repeatable execution around:
- parameter calibration
- objective and diagnostic evaluation
- workflow reuse across projects
- integration with optimization or uncertainty-analysis tooling
Its role is not to replace optimization algorithms. Its role is to make model-facing execution stable, configurable, and reusable.
If you want a practical starting point you can adapt directly, begin with the example index.
Stabilize the CLI pathValidate the config and run a smoke test before adding more complexity.
Move into scriptingWhen repeated evaluation is needed, shift to `SimModel` and the Python-facing runtime.
Connect optimizationUse `UQPyLAdapter` only after the runtime path is already reliable on its own.
Start here
- Architecture explains the config chain, runtime chain, and core modules.
- CLI summarizes validation, smoke testing, parameter application, and single-run execution.
- Python API introduces
SimModel,BatchRunResult, and the public programmatic entry points. - UQPyL Integration shows how
UQPyLAdapterbridges HydroPilot configs into UQPyL workflows. - Examples maps the available example configurations and starting points.
Typical workflow
For most real projects, HydroPilot fits into a practical sequence like this:
- describe the project and parameters in a compact config
- validate the config structure and template expansion
- smoke test one real model run
- evaluate one or more parameter vectors through CLI or Python
- connect the runtime to UQPyL if optimization or repeated search is needed
This is what gives HydroPilot value as an execution layer: the same config can move from validation to local testing and then into optimization-driven workflows.
Relationship to UQPyL
HydroPilot and UQPyL play different roles:
UQPyLprovides optimization, uncertainty quantification, inference, calibration, and surrogate modelling methods.HydroPilotprovides the model-facing runtime layer for hydrological workflows.- They can be used together when UQPyL algorithms need to drive hydrological model evaluations.
Put more simply:
- if the problem is "how do I run and evaluate this hydrological model repeatedly?", HydroPilot is the core layer
- if the problem is "how do I search, optimize, or analyze over that runtime?", UQPyL becomes the algorithm layer
What HydroPilot provides
- Configuration-driven workflow definition
- Support for hydrological model templates such as SWAT, SWAT+, and XAJ
- Command-line tools for validation, testing, applying parameters, and running evaluations
- A Python API centered on
SimModel,BatchRunResult, andUQPyLAdapter
Supported model paths
HydroPilot is currently organized around three representative model paths:
SWAT 2012
Best when you need a compact template over classic SWAT TxtInOut projects, with parameter writes and output extraction handled through SWAT-aware metadata.
See SWAT 2012.
SWAT+
Best when the runtime needs to stay aligned with SWAT+ project structure and calibration.cal based parameter writing.
See SWAT+.
XAJ
Best when the model project is organized around CSV-based parameters and outputs rather than SWAT-style fixed-width files.
See XAJ.
Choose by model
If you already know which model family your project belongs to, go straight to the matching page:
- SWAT 2012: best for classic
TxtInOutprojects and workflows that grow toward calibration, sensitivity analysis, and objective construction - SWAT+: best for SWAT+ project structure,
calibration.calparameter writing, and SWAT+-specific output extraction - XAJ: best for CSV-centered hydrological projects where parameters and outputs are organized through
RIVID-aware tables
Which page should you read first?
Use this quick rule:
- start with Examples if you want a runnable starting point
- start with CLI if you want to validate and test configs quickly
- start with Python API if you want to script evaluations
- start with UQPyL Integration if HydroPilot is going to be driven by optimization algorithms
- start with Architecture if you need to understand the internal execution model before extending anything
Current status
HydroPilot is currently presented here as a focused companion section inside the UQPyL website. This area can be expanded incrementally without changing the main UQPyL documentation structure.
