Ecosystem

HydroPilot

A configuration-first runtime framework for hydrological calibration, evaluation, and optimization workflows, designed to work alongside UQPyL.

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.

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 UQPyLAdapter bridges 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:

  1. describe the project and parameters in a compact config
  2. validate the config structure and template expansion
  3. smoke test one real model run
  4. evaluate one or more parameter vectors through CLI or Python
  5. 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:

  • UQPyL provides optimization, uncertainty quantification, inference, calibration, and surrogate modelling methods.
  • HydroPilot provides 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, and UQPyLAdapter

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 TxtInOut projects and workflows that grow toward calibration, sensitivity analysis, and objective construction
  • SWAT+: best for SWAT+ project structure, calibration.cal parameter 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.