HydroPilot

XAJ

XAJ

This page presents the typical XAJ model path in HydroPilot: how an xaj.yaml plus CSV-oriented project can be organized into a runtime that is verifiable, repeatable, and ready to connect with UQPyL.

This case shows how HydroPilot supports CSV-oriented hydrological workflows.

What stands out

  • CSV-based readers and writers
  • RIVID-aware parameter targeting
  • template support for a non-SWAT hydrological model

When this case fits best

Use this path when:

  • the project is based on an XAJ workflow with xaj.yaml and CSV inputs/outputs
  • parameters are stored in parameters.csv
  • outputs are read from CSV files such as streamflow.csv or Runoff_Yield.csv
  • model targeting is easier to express through RIVID-based filtering than through SWAT-style HRU logic

Typical configuration pattern

The normal entry is version: xaj:

yaml
version: xaj
basic:
  projectPath: ./xaj
  workPath: ./work
  command: ./pyxaj.exe run xaj.yaml

The template expands this into a general config with CSV readers and CSV writers.

Why this case is useful

It demonstrates that HydroPilot is not only a SWAT wrapper. The same orchestration approach can support other hydrological models when parameter writing and result reading can be formalized.

What HydroPilot handles here

For XAJ-style projects, HydroPilot can:

  • discover project metadata from xaj.yaml
  • resolve parameter write targets from parameters.csv
  • map named variables to output files and columns
  • use rivid to target specific rows or result columns when needed

Minimal example shape

yaml
version: xaj
basic:
  projectPath: ./xaj
  workPath: ./work
  command: ./pyxaj.exe run xaj.yaml

parameters:
  design:
    - name: KC
      bounds: [0.5, 2.0]
    - name: WM
      bounds: [80, 200]
  physical:
    - name: KC
      mode: v
      filter:
        rivid: 60711600

This reflects the typical XAJ starting shape: CSV-based parameters, RIVID-aware targeting, and a template that expands into a general config.

This makes the XAJ path a good example of HydroPilot as a generic hydrological execution layer rather than a SWAT-only tool.

What this case supports well

  • CSV-based parameter writes
  • CSV-based output extraction
  • row and column resolution from project metadata
  • model-specific execution without fixed-width SWAT assumptions

Suggested first move

Start from an XAJ project that already has a stable xaj.yaml and CSV outputs. Validate that HydroPilot can discover the parameter table and output headers before trying to add objectives or optimization logic.

Connection to UQPyL

The same pattern still applies: HydroPilot owns model execution and CSV-level integration, while UQPyL can own the optimization or calibration logic through UQPyLAdapter.