HydroPilot

CLI

CLI

HydroPilot exposes four command-line entry points for configuration validation, smoke testing, parameter application, and single-run execution.

Commands

CommandPurpose
hydropilot-validateValidate a configuration and print diagnostics
hydropilot-testRun a full smoke test with one default evaluation
hydropilot-applyApply design or physical parameters to a project copy
hydropilot-runRun one evaluation from a run YAML

Typical workflow

For a new configuration, the usual order is:

  1. Run hydropilot-validate to confirm the config is structurally correct.
  2. Run hydropilot-test to verify that the actual model workflow is wired correctly.
  3. Use hydropilot-run or the Python API for controlled evaluation.
  4. Use hydropilot-apply when you want a materialized project copy with parameters written in.

hydropilot-validate

bash
hydropilot-validate <config.yaml>

Use this command to check a config without running the model. It parses YAML, expands template configs when needed, validates the resulting general config, and prints diagnostics line by line.

Important points:

  • exit code 0 means validation passed, even if warnings are present
  • exit code 1 means at least one error-level diagnostic
  • the command is read-only and does not modify project files

hydropilot-test

bash
hydropilot-test <config.yaml>

This is the full smoke-test path. HydroPilot loads the config, builds a default parameter vector from parameter bounds, creates a temporary project copy, runs the model once, extracts outputs, and evaluates objectives and diagnostics.

Use it when you need to verify that:

  • project paths are correct
  • the model command actually runs
  • output files are readable
  • evaluation metrics are wired correctly

The smoke test forces parallel = 1 and keepInstances = true so the run is easier to inspect.

hydropilot-apply

bash
hydropilot-apply <apply.yaml>

This command creates a fresh project copy and writes parameters into it.

The apply file normally includes:

yaml
config: path/to/config.yaml
mode: design
values:
  CN2: 72.5
  ALPHA_BF: 0.3
  GW_DELAY: 120
outDir: ./applied_project

Use mode: design when values live in design space and must be transformed before writing. Use mode: physical when you already have resolved physical parameters.

hydropilot-run

bash
hydropilot-run <run.yaml>

This is the single-run entry point. It loads the referenced config, evaluates one parameter vector, and prints a summary of objectives, constraints, diagnostics, and output locations.

It is intentionally narrow in scope:

  • good for one-off evaluations
  • not intended for optimization campaigns
  • not intended for experiment management

For repeated runs or algorithm-driven workflows, move to SimModel or UQPyLAdapter.

What HydroPilot CLI is good at

  • early config diagnostics
  • smoke testing a real project setup
  • parameter application for inspection
  • single-run execution without writing custom Python

Command comparison

CommandRuns model?Writes files?Best used for
hydropilot-validateNoNoStructural config checks
hydropilot-testYesYesEnd-to-end smoke testing
hydropilot-applyNoYesInspectable project copies
hydropilot-runYesYesOne-off evaluations