Complete annotated TOML reference#
Every TOML section with its direct fields, defaults and types. Sub-models are linked back to their per-section page.
Tip
The blocks below produce a structurally valid TOML skeleton.
Required and factory fields are commented out: uncomment and
replace the placeholder before running the project. Lines tagged
# example: come from Field(examples=...) declarations.
[workflow] (WorkflowConfig)
See [workflow] WorkflowConfig for the full description.
[workflow]
# Workflow mode dispatched by `hmp run`.
# mode = "" # REQUIRED
[workspace] (WorkspaceConfig)
See [workspace] WorkspaceConfig for the full description.
[workspace]
# Path to the project directory. Required in TOML configs.
# example: project_root = "."
# project_root = "" # REQUIRED
# Explicit shared data workspace root. When set, derives data_dir unless it is overridden. Result catalogs stay project-local by default.
# example: root = "../.."
# root = ... # default = None
# Explicit path to the project catalog.duckdb. Defaults to <project_root>/catalog.duckdb.
# catalog_path = ... # default = None
# Explicit path to the workspace data directory. Defaults to <root>/data.
# data_dir = ... # default = None
# Explicit path to the simulations Zarr directory. Defaults to <project_root>/simulations.
# simulations_dir = ... # default = None
# Root directory for per-project outputs (.solver_scratch/, figures/). Defaults to project_root when not set. Use this to redirect heavy outputs to a separate disk.
# example: output_root = "outputs/run_a"
# output_root = ... # default = None
[geographic] (GeographicConfig)
See [geographic] GeographicConfig for the full description.
[geographic]
# Geographic runtime mode. 'standard' keeps the historical DEM/outlet/polygon workflow. 'synthetic' builds one analytical support from [geographic.synthetic].
source_mode = "standard"
# Catchment definition payload used when source_mode='standard'. Discriminated by 'catch_def' on the nested table: 'dem' | 'txt' | 'from_outlet_coord' | 'from_polyg_shp'.
# catchment = ... # default = None
# Target projected CRS for all outputs (e.g. 'EPSG:2154'). If not set, derived from the input DEM.
# crs_project = ... # default = None
# DEM depression correction method. 'breach' (recommended) preserves natural flow paths. 'fill' raises sinks to their pour point.
dem_correc_type = "breach"
# Path to a raster representing the aquifer bottom elevation. Must share the same grid as the model domain.
# bottom_path = ... # default = None
# Folder with pre-computed regional flow rasters. When set, rasters are loaded instead of recomputed.
# reg_fold = ... # default = None
# Synthetic geographic support used when source_mode='synthetic'. This analytical mode bypasses watershed delineation from external DEM files.
# synthetic = ... # uses factory default
# Optional DEM-derived river-network extraction settings. When disabled, no stream network is generated in geographic preprocessing.
# river_network = ... # uses factory default
# If true, reuse previously generated geographic artifacts when the cached fingerprint matches the current DEM, outlet/polygon and geographic settings. This is useful for profiling repeated simulation runs in the same workspace.
reuse_existing_outputs = false
# Keep intermediate rasters and shapefiles on disk after geographic preprocessing. When false (default), results_stable/ is removed after ingestion into the simulation Zarr store.
write_intermediates = false
[domain] (DomainConfig)
See [domain] DomainConfig for the full description.
[domain]
# Ordered list of zone identifiers loaded in the domain registry. Keep this list for actual runtime zones (for example 'catchment', 'geology', or custom zonations). Spatial-support declarations live under domain.supports.
# zone_ids = ... # uses factory default
# Named spatial supports available to heterogeneous parameters. Each key is a support identifier referenced by field_spatial_id.
# supports = ... # uses factory default
# Vertical domain model configuration. Use 'constant_thickness' or 'flat_substratum'.
# depth_model = ... # uses factory default
[data] (DataManagersConfig)
See [data] DataManagersConfig for the full description.
[data]
# EPSG code or WKT string of the project coordinate reference system. When set, all loaded data is reprojected to this CRS. Example: 'EPSG:2154' (Lambert-93).
# project_crs = ... # default = None
# Ordered list of data-manager types explicitly requested in [data]. The launcher may append inferred types deduced from other sections (for example domain.zone_ids, flow.active_bc). Allowed values: 'dem', 'etp', 'geology', 'humidity', 'hydrography', 'hydrometry', 'intermittency', 'oceanic', 'piezometry', 'precipitation', 'radiation', 'recharge', 'runoff', 'soil_moisture', 'temperature', 'water_quality', 'wind'.
# types = ... # uses factory default
# Policy applied when the planner infers types not explicitly listed in data.types. 'warn': keep inferred types and continue even if data.<type> is missing. 'strict': raise when an inferred type has no explicit data.<type> section (except geology, which can use its default typed config).
inference_mode = "warn"
# DEM configuration used when 'dem' is listed in data.types.
# dem = ... # default = None
# Geology configuration used when 'geology' is listed in data.types.
# geology = ... # default = None
# Hydrography configuration (stream network vector data).
# hydrography = ... # default = None
# Hydrometry configuration (discharge time-series).
# hydrometry = ... # default = None
# Intermittency configuration (ONDE stream flow-state observations).
# intermittency = ... # default = None
# Oceanic configuration used when 'oceanic' is listed in data.types.
# oceanic = ... # default = None
# Piezometry configuration (groundwater level time-series).
# piezometry = ... # default = None
# Water quality configuration (physico-chemical parameters).
# water_quality = ... # default = None
# Recharge configuration (drainage / soil infiltration time series).
# recharge = ... # default = None
# Runoff configuration (surface runoff time series).
# runoff = ... # default = None
# Precipitation configuration (liquid and solid precipitation).
# precipitation = ... # default = None
# ETP configuration (potential evapotranspiration).
# etp = ... # default = None
# Temperature configuration (air temperature time series).
# temperature = ... # default = None
# Wind configuration (wind speed time series).
# wind = ... # default = None
# Humidity configuration (relative humidity time series).
# humidity = ... # default = None
# Radiation configuration (atmospheric and visible radiation).
# radiation = ... # default = None
# Soil moisture configuration (soil moisture index).
# soil_moisture = ... # default = None
[flow] (FlowConfig)
See [flow] FlowConfig for the full description.
[flow]
# Optional nonlinear runtime backend hint used by the Boussinesq solver implementation. Other flow solvers may ignore this field.
# example: runtime_backend = "local"
# example: runtime_backend = "scipy_sparse"
runtime_backend = "local"
# Optional Boussinesq surface-interaction closure selector. 'regularized_partition' uses the Marcais-style q_ex = G_r(theta) R(balance) law; 'complementarity' uses the mixed PETSc q_ex-perp-(z_top-h) formulation; 'vi_obstacle' uses the experimental PETSc head-only VI obstacle formulation; 'auto' keeps the historical backend-dependent default.
# example: surface_interaction_model = "auto"
# example: surface_interaction_model = "regularized_partition"
surface_interaction_model = "auto"
# Optional override for the nonlinear iteration budget used by the Boussinesq runtime backend.
# runtime_max_iterations = ... # default = None
# Optional override for the infinity-norm residual tolerance used by the Boussinesq runtime backend.
# runtime_tol_residual_inf = ... # default = None
# Optional override for the infinity-norm state-update tolerance used by Boussinesq backends that track it.
# runtime_tol_state_update_inf = ... # default = None
# Fixed number of Backward-Euler substeps per stress period for the experimental PETSc VI obstacle runtime. Rate-based forcing values are kept unchanged on each substep.
vi_substeps_per_period = 1
# When true, retry a failed PETSc VI obstacle stress period with increasing substep counts.
vi_substep_on_failure = false
# Maximum number of PETSc VI obstacle substeps allowed for adaptive failure retries.
# vi_max_adaptive_substeps = ... # default = None
# Fixed PETSc TS Backward-Euler steps per stress period for the experimental TS VI obstacle runtime.
ts_vi_steps_per_period = 4
# Enable experimental PETSc TS adaptivity for the TS VI obstacle runtime.
ts_vi_adapt = false
# Minimum TS VI time-step as a fraction of the stress-period length.
ts_vi_dt_min_fraction = 0.015625
# Maximum TS VI time-step as a fraction of the stress-period length.
ts_vi_dt_max_fraction = 0.25
# PETSc TS type for the experimental TS VI obstacle runtime.
ts_vi_type = "beuler"
# PETSc SNES type for the experimental TS VI obstacle runtime.
ts_vi_snes_type = "vinewtonrsls"
# Ordered list of flow-parameter identifiers used to build runtime parameters (for example ['K', 'Ss', 'Sy']).
# example: param_list = ["K", "Sy", "Ss"]
# param_list = ... # uses factory default
# Mapping of flow-parameter identifiers to native FieldParamConfig payloads.
# param = ... # uses factory default
# Validated flow initial-condition structure parsed from [flow.ic]. Stored as FlowInitialConditions(h=FlowInitialCondition).
# ic = ... # uses factory default
# Mapping of flow boundary-condition payloads parsed from ``[flow.bc]``. **Supported TOML sections** - ``[flow.bc.dirichlet.<id>]`` where ``<id>`` is one of ``ocean``, ``stream``, ``north_side``, ``south_side``, ``east_side``, ``west_side`` - ``[flow.bc.cauchy.drainage]`` - ``[flow.bc.robin.drainage]`` - ``[flow.bc.<custom_id>]`` for generic payloads **Common keys** - ``value`` (required): numeric or ``'<value> <unit>'`` - ``application_domain``: optional for dirichlet when ``<id>`` implies it (e.g. ``west_side`` -> ``'west side'``); required for ``cauchy`` and ``robin`` drainage **Allowed application_domain values:** ``top``, ``north side``, ``south side``, ``east side``, ``west side``. **Default units:** ``m`` for dirichlet, ``m2/s`` for cauchy/robin. **Cauchy vs Robin:** both map to the same MODFLOW ``DRN`` package; the distinction only matters for the Boussinesq solver, which uses two different surface-interaction closures (``cauchy`` for the linear formulation ``q = C(h - h_ref)``, ``robin`` for the regularized partition / complementarity variants selected by ``flow.surface_interaction_model``).
# bc = ... # uses factory default
# Typed sinks/sources payload (for example pumping wells).
# sinks_sources = ... # uses factory default
# Explicitly activated sink/source names for this flow run. Allowed values: 'recharge', 'wells', 'etp'. Boussinesq currently rejects 'etp' at solver-contract validation. An empty list means no sink/source package is assembled by the solver.
# example: active_sinks_sources = ["recharge"]
# example: active_sinks_sources = ["recharge", "wells"]
# example: active_sinks_sources = ["etp"]
# active_sinks_sources = ... # uses factory default
# Explicitly activated boundary-condition ids for this flow run. Allowed values are the canonical ids declared in the flow boundary-condition registry: 'ocean', 'stream', 'north_side', 'south_side', 'east_side', 'west_side', 'drainage'. An empty list means no boundary-condition package is assembled by the solver.
# example: active_bc = ["ocean"]
# example: active_bc = ["west_side", "east_side", "drainage"]
# active_bc = ... # uses factory default
# Global flow simulation regime used by solvers consuming [flow] (steady or transient).
# example: flow_regime = "steady"
# example: flow_regime = "transient"
flow_regime = "transient"
# For transient flow, mark the first solver stress period as steady-state. Ignored for steady flow, where all solver periods are steady.
# example: first_period_steady = true
# example: first_period_steady = false
first_period_steady = true
[transport] (TransportConfig)
See [transport] TransportConfig for the full description.
[transport]
# Ordered list of sink/source identifiers that are explicitly activated for this process. An empty list means no sink/source is active. Concrete process configs (e.g. FlowConfig) validate the allowed values.
# active_sinks_sources = ... # uses factory default
# Ordered list of boundary-condition identifiers that are explicitly activated for this process. An empty list means no boundary-condition package is assembled. Concrete process configs (e.g. FlowConfig) validate the allowed values.
# active_bc = ... # uses factory default
# Modpath solver configuration block.
# modpath = ... # uses factory default
# MT3DMS solver configuration block.
# mt3dms = ... # uses factory default
# MODFLOW 6 GWT solver configuration block.
# modflow6gwt = ... # uses factory default
# MODFLOW 6 PRT particle-tracking solver configuration block.
# modflow6prt = ... # uses factory default
[simulation] (SimulationConfig)
See [simulation] SimulationConfig for the full description.
[simulation]
# Human-readable simulation name.
name = ""
# Run identifier used as the output subfolder name under results_simulations/. When empty, derived from the TOML filename at load time (e.g. run_steady_nwt.toml -> steady_nwt).
# example: run_id = "steady_nwt"
run_id = ""
# Behavior when registering a simulation whose ``name`` already exists in this project. ``replace`` soft-replaces (the previous sim keeps its UUID but loses its name), ``fail`` raises an error, ``version`` auto-suffixes ``name.v2``, ``name.v3`` ...
on_collision = "replace"
# Short free-text description of the simulation intent.
description = ""
# Scientific objective used for catalog and ML stratification.
# scientific_objective = ... # default = None
# Contact email for the simulation metadata.
# contact_email = ... # default = None
# DOI or reference identifier for the simulation metadata.
# doi = ... # default = None
# Human-readable study area name.
# study_area_name = ... # default = None
# Outlet X coordinate in the project CRS units.
# outlet_x = ... # default = None
# Outlet Y coordinate in the project CRS units.
# outlet_y = ... # default = None
# Optional canonical simulation window used to align solver temporal settings and validate forcing coverage. Required for launcher flow processes and for runtime features that explicitly consume simulation-window dates.
# time = ... # default = None
# Ordered list of requested processes loaded from [[simulation.process]]. At most one process per type is supported.
# process = ... # uses factory default
# Results storage and export configuration loaded from [simulation.results]. Controls SimulationCatalog, derived variables, and automated exports.
# results = ... # uses factory default
# Master RNG seed for the simulation. When set, every stochastic consumer (mesh point sampling, synthetic forcing, ...) derives its own deterministic sub-seed via ``hydromodpy.core.rng.RngManager``. Persisted in ``runs_environment.rng_seed`` so the run can be re-executed from the catalog snapshot.
# rng_seed = ... # default = None
[solver] (SolverConfig)
See [solver] SolverConfig for the full description.
[solver]
# Active flow backend selector (discriminated union).
# backend = ... # uses factory default
[modflownwt] (ModflowConfig)
See [modflownwt] ModflowConfig for the full description.
[modflownwt]
# MODFLOW runtime package options grouped by package.
# runtime = ... # uses factory default
# Process-specific package controls (currently UPW/EVT knobs).
# process_specific = ... # uses factory default
# Spatial-grid payload split into `[...sgrid.planar]` and `[...sgrid.vertical]`.
# sgrid = ... # uses factory default
# Optional temporal discretization payload as one validated `TMeshConfig` model. In launcher mode, stress periods are driven by [simulation.time]; steady/transient policy is driven by [flow].flow_regime and [flow].first_period_steady.
# tgrid = ... # default = None
[modflow6] (Modflow6Config)
See [modflow6] Modflow6Config for the full description.
[modflow6]
# MODFLOW 6 runtime options.
# runtime = ... # uses factory default
# Process-specific controls for MODFLOW 6 flow packages.
# process_specific = ... # uses factory default
# Solver-grid payload split into planar and vertical sections.
# sgrid = ... # uses factory default
# Optional temporal discretization payload as TMeshConfig. In launcher mode, stress periods are driven by [simulation.time]; steady/transient policy is driven by [flow].flow_regime and [flow].first_period_steady.
# tgrid = ... # default = None
[display] (DisplayConfig)
See [display] DisplayConfig for the full description.
[display]
# Master switch. When False, no figure is rendered or saved.
enabled = true
# Matplotlib backend. 'auto' selects Agg in headless mode and a GUI backend when ``show`` is enabled.
backend = "auto"
# Named theme applied before rendering any figure.
preset = "default"
# Open an interactive window via ``matplotlib.pyplot.show``.
show = false
# Write rendered figures to disk under ``output_dir``.
save = true
# Directory (relative to project root) for saved figures.
output_dir = "figures"
# DPI used when saving raster figures.
dpi = 150
# Default sequential colormap for spatial figures.
cmap = "viridis"
# Names of registered figures to auto-render at the end of `hmp run` (and consumed by `hmp display`). Empty list disables auto-rendering; figures can still be produced later with `hmp display <toml>`. Disable per-run via `hmp run --no-display` or for an entire Python Project via `Project(..., no_display=True)`.
# figures = ... # uses factory default
# Per-figure keyword overrides, keyed by figure name (e.g. ``{'piezometric_map': {'cmap': 'cividis', 'vmin': 0}}``).
# overrides = ... # uses factory default
# Flow figure switches.
# flow = ... # uses factory default
# Particle figure switches.
# particles = ... # uses factory default
# Transport figure switches.
# transport = ... # uses factory default
[persistence] (PersistenceConfig)
See [persistence] PersistenceConfig for the full description.
[persistence]
# Persist DuckDB rows (simulations, parameters, metrics, calibration_iterations). When False, catalog writes are skipped.
save_catalog = true
# Persist per-simulation field arrays (head, concentration, derived) into the Zarr store.
save_zarr = true
# Persist per-simulation tabular outputs (timeseries, budgets, mass_balance) as Parquet files.
save_parquet = true
# Generate and refresh the ``hydromodpy.lock`` reproducibility manifest after data ingestion.
save_lock = true
# Codec used for Zarr field arrays and Parquet tables. 'none' disables compression.
compression = "zstd"
# Compression level (codec-dependent). Ignored when compression='none'.
compression_level = 3
[analysis] (AnalysisConfig)
See [analysis] AnalysisConfig for the full description.
[analysis]
# Optional regional-lab batch settings loaded from [analysis.batch]. Parsed standalone via RegionalLabLauncher under the section name [regional_lab].
# batch = ... # default = None
# Optional publication block copying selected run figures into a versionable capability-gallery source folder, loaded from [analysis.capability_gallery].
# capability_gallery = ... # default = None
# Optional simulation-comparison block loaded from [analysis.comparison]. Parsed standalone via SimulationComparisonConfig under the section name [comparison].
# comparison = ... # default = None
[overview] (OverviewConfig)
See [overview] OverviewConfig for the full description.
[overview]
# Watershed name.
name = ""
# Global start date (YYYY-MM-DD).
# date_start = ... # default = None
# Global end date (YYYY-MM-DD).
# date_end = ... # default = None
# Label used for the regional location figure.
# regional_context_label = ... # default = None
# Panel toggles.
# panels = ... # uses factory default
[mesh_catchment] (MeshCatchmentConfig)
See [mesh_catchment] MeshCatchmentConfig for the full description.
[mesh_catchment]
# Meshing compliance target. 'geology_only' conforms the mesh to geology interfaces only, 'rivers_only' conforms the mesh to river traces only, and 'geology_rivers' enforces both sets of constraints in one mesh.
constraints_mode = "geology_rivers"
# Optional `.msh` output path for the generated planar mesh. When omitted, the launcher writes the mesh to `results_stable/mesh/mesh_catchment.msh` inside the active catchment workspace in standard layout, or directly to `workspace.project_root/mesh_catchment.msh` when `output_layout='flat'` is used.
# output_mesh = ... # default = None
# Optional JSON sidecar path for QA metrics, cleaned-input diagnostics, and summary metadata describing the generated mesh. When omitted, the launcher writes it next to the default mesh output.
# output_summary_json = ... # default = None
# Optional overview figure path. Use it when you want a quick visual QA artifact showing the support domain, geology zones, river constraints, and final mesh footprint.
# output_figure = ... # default = None
# Optional regional overview figure path. When omitted but output_figure is set, the launcher writes a second figure next to the main one with suffix `_regional` to show where the catchment sits on the full DEM.
# output_figure_regional = ... # default = None
# If true, generate the overview figure artifacts when figure output paths are configured. Set it to false to skip figure creation entirely, even in batch mode where default filename patterns are present.
figures_enabled = true
# If true, export the solver-exchange mesh bundle next to the generated mesh. Set it to false for profiling or mesh-only runs that do not need bundle metadata. Downstream solvers that require runtime mesh support may fail without this bundle.
export_exchange_bundle = true
# Pixel density used when rendering the main mesh overview figure. Increase it when you need to inspect mesh edges and constraints more closely in the saved PNG.
figure_dpi = 300
# Pixel density used when rendering the regional overview figure. Keep it lower than figure_dpi when you want detailed local mesh inspection without making the regional PNG too heavy.
figure_regional_dpi = 220
# Dedicated-launcher output layout. Use 'standard' to keep final mesh artifacts under `results_stable/mesh/`, or 'flat' to write final mesh artifacts directly under `workspace.project_root` while keeping intermediate runtime folders out of that final directory.
output_layout = "standard"
# If true, open the generated overview figure interactively at the end of the run. Keep it false for batch or headless execution.
show_plot = false
# Control what happens to intermediate geographic preprocessing artifacts after the mesh run. Use 'keep' to preserve the canonical `results_stable/geographic` and `results_stable/demcorrecflow` folders, or 'cleanup' to delete them at the end of the dedicated mesh launcher once the mesh outputs and exchange bundle have been written.
geographic_outputs_mode = "keep"
# River-constraint section used when constraints_mode includes rivers. The default behavior is to reuse the in-memory river trace already built by the geographic pipeline.
# rivers = ... # uses factory default
# Optional geology support used when constraints_mode includes geology. This section defines which polygon source represents lithological zones and how those polygons should be interpreted before conformal meshing. Validated through the geology data-source Protocol; stored as a normalized mapping.
# geology = ... # default = None
# Optional watershed-boundary mesh constraint. Enable it to force a conformal mesh line along the catchment boundary while keeping the geology zonation represented on the whole support domain.
# watershed_boundary = ... # uses factory default
# Optional hydraulic-property tables keyed by geology zones. The launcher projects geology on the mesh and exports per-cell conductivity/storage values as weighted averages of geology fractions.
# hydraulic_properties = ... # default = None
# Effective support domain to mesh. The default `geographic_box_buffer` mode reuses the catchment bounding box plus geographic buffer prepared during delineation, which is usually the right support for mono-catchment meshing.
# domain = ... # uses factory default
# Low-level Gmsh sizing and cleanup parameters controlling cell size, simplification, and interface refinement. Defaults are valid, but project examples typically override them to target a desired number of cells.
# zone_meshing = ... # uses factory default
[mesh_input] (MeshInputConfig)
See [mesh_input] MeshInputConfig for the full description.
[mesh_input]
# Path to the external planar mesh file (typically a ``.msh``). Required when ``bundle_dir`` is not provided. Relative paths are resolved against the TOML directory.
# mesh_path = ... # default = None
# Path to the solver-exchange mesh bundle directory associated with the external mesh. Required when ``mesh_path`` is not provided. Relative paths are resolved against the TOML directory.
# bundle_dir = ... # default = None
[calibration] (CalibrationConfig)
See [calibration] CalibrationConfig for the full description.
[calibration]
# Optimization method. Optuna is installed by default; install the calibration extra for cma_es and Optuna's cmaes sampler.
method = "grid"
# Maximum number of calibration iterations.
max_iter = 100
# Number of suggestions drawn per ask (for parallel optimizers).
batch_size = 1
# Number of trials evaluated concurrently inside one batch via a thread pool. parallel=1 keeps the legacy sequential loop.
parallel = 1
# Random seed for reproducibility.
# seed = ... # default = None
# How much to persist per iteration: - 'none': 1 DuckDB row per iteration, no Zarr. - 'best_n': same + promote top N to full simulations after the loop. - 'all': every iteration becomes a full simulation (Zarr included).
save_runs = "none"
# Number of top iterations to promote when save_runs='best_n'.
save_best_n = 10
# Enable params_hash content-addressable cache.
use_cache = true
# Skip Parquet/Zarr writes for lumped models (GR4J, ...) and read simulated series from the per-trial RAM cache instead. Only the promoted runs go through the catalog write path.
lightweight_extraction = true
# Metric key used by the default ScalarObjective.
objective = "nse"
# Observed variable (for ObservationSet).
variable = "head"
# Extra keyword arguments forwarded to the optimizer adapter.
# optimizer_kwargs = ... # uses factory default
# Per-parameter declarations (bounds, transform, prior, path).
# parameters = ... # uses factory default
# Named observables extracted from each candidate run.
# outputs = ... # uses factory default
# Weighted blocks making up a composite objective. When empty, a single implicit block is built from 'objective' and 'variable'.
# objective_blocks = ... # uses factory default
# 'none' skips component metrics; 'summary' keeps block totals; 'full' also stores per-block raw and normalized costs.
persist_iteration_detail = "summary"
# Persist the candidate distribution alongside the session.
persist_model_distribution = false
# Replay the best candidate with full outputs after the loop.
rerun_best_with_outputs = false
# Write a standalone override TOML for each candidate under 'candidates_root' so runs can be replayed later.
materialize_candidates = false
# Directory for per-candidate overlay TOMLs. Required when materialize_candidates is True.
# candidates_root = ... # default = None
# Single switch governing every persistence sink (catalog, Zarr, Parquet, lockfile) for calibration outputs.
# persistence = ... # uses factory default
[testbed] (TestbedConfig)
See [testbed] TestbedConfig for the full description.
[testbed]
# Resolved path of the TOML file that produced this config.
# config_path = "" # REQUIRED
# Directory used to resolve relative paths.
# base_dir = "" # REQUIRED
# Stable testbed identifier.
# id = "" # REQUIRED
# Selected testbed profile.
# profile = "" # REQUIRED
# High-level subject covered by the testbed (flow, mesh, transport).
# subject = "" # REQUIRED
# Stated purpose of the testbed (robustness, sensitivity, ...).
# purpose = "" # REQUIRED
# Directory where testbed artifacts are written.
# output_root = "" # REQUIRED
# When false, child configs are materialized but not executed.
execute = true
# When false, the first failure aborts the testbed.
continue_on_error = true
# Optional child workflow TOML used as the case base config.
# base_config_path = ... # default = None
# Child-runner selection for every case.
# runner = "" # REQUIRED
# Explicit executable cases declared in the TOML.
case = []
# Optional catalog source used to expand cases from rows.
# catalog = ... # default = None
# Case-generation rules applied to catalog rows.
case_from_catalog = []
# Metrics extracted from each child-runner summary.
metrics = []
[site_selection] (SiteSelectionConfig)
See [site_selection] SiteSelectionConfig for the full description.
[site_selection]
# Stable identifier for this selection campaign.
# selection_id = "" # REQUIRED
# Output directory for all site-selection artifacts.
# output_root = "" # REQUIRED
# Optional seed used by stochastic candidate thinning.
# random_seed = ... # default = None
# no description
# strategy = ... # uses factory default
# Territory where candidate basins are searched.
# territory = "" # REQUIRED
# no description
# dem = ... # uses factory default
# no description
# hydrology = ... # uses factory default
# Compact settings for DEM-only automatic small-basin selection.
# dem_area_light = ... # default = None
# no description
# input = ... # uses factory default
# no description
# outlets = ... # uses factory default
# no description
# spatial_selection = ... # uses factory default
# no description
# criteria = ... # uses factory default
# no description
# output = ... # uses factory default
# no description
# map_context = ... # uses factory default
[hydrometry] (HydrometryConfig)
See [hydrometry] HydrometryConfig for the full description.
[hydrometry]
# Project start date (ISO format, e.g. '2019-01-01').
# example: date_start = "2019-01-01"
# date_start = ... # default = None
# Project end date (ISO format, e.g. '2025-12-31').
# example: date_end = "2025-12-31"
# date_end = ... # default = None
# At least one data source.
# sources = [] # REQUIRED