model.runtime.configs.learning_config¶

Unified learning configuration.

One learning run = a single coupled forward + a single optimiser, with one or more loss heads attached to it. The shared run settings (time, spinup, weight initialization, optimiser/training, output dir) live directly under learning; each loss head contributes only its own data + how to split its entities:

  • site_level – flux-tower (vertical) constraint: domain + targets.

  • gauge_level – gauge-discharge (lateral) constraint: gauges + target.

Per-target loss weights live on the targets; k-fold CV is per head (it folds over that head’s entities). At least one loss head must be present.

Module Contents¶

Classes¶

GaugeSelectionConfig

learning.gauge_level.gauges – gauge discharge data + selection filters.

SiteLevelConfig

learning.site_level – flux-tower loss head (data + entity split).

GaugeLevelConfig

learning.gauge_level – gauge-discharge loss head (data + entity split).

LearningConfig

Top-level learning block: one forward + one optimiser + loss heads.

Data¶

API¶

class model.runtime.configs.learning_config.GaugeSelectionConfig¶

Bases: model.runtime.configs.base_config.BaseConfig

learning.gauge_level.gauges – gauge discharge data + selection filters.

The river-network file (gauge allocation + routing geometry) is read from model.schemes.river_routing.parameters_path, not repeated here.

discharge_path: object¶

None

allocation_path: object¶

None

selection: object¶

None

area_tol: float¶

0.2

min_area_km2: float¶

1000.0

min_days: int¶

730

min_obs_runoff: float¶

0.05

classmethod from_dict(raw)¶
validate()¶
class model.runtime.configs.learning_config.SiteLevelConfig¶

Bases: model.runtime.configs.base_config.BaseConfig

learning.site_level – flux-tower loss head (data + entity split).

domain: model.runtime.configs.site_simulation_config.DomainConfig¶

ā€˜field(…)’

targets_path: object¶

None

targets: model.runtime.configs.site_learning_config.TargetConfig¶

ā€˜field(…)’

cross_validation: model.runtime.configs.site_learning_config.CrossValidationConfig¶

ā€˜field(…)’

classmethod from_dict(raw)¶
is_enabled()¶
validate()¶
class model.runtime.configs.learning_config.GaugeLevelConfig¶

Bases: model.runtime.configs.base_config.BaseConfig

learning.gauge_level – gauge-discharge loss head (data + entity split).

gauges: model.runtime.configs.learning_config.GaugeSelectionConfig¶

ā€˜field(…)’

targets: model.runtime.configs.site_learning_config.TargetConfig¶

ā€˜field(…)’

cross_validation: model.runtime.configs.site_learning_config.CrossValidationConfig¶

ā€˜field(…)’

classmethod from_dict(raw)¶
is_enabled()¶
validate()¶
class model.runtime.configs.learning_config.LearningConfig¶

Bases: model.runtime.configs.base_config.BaseConfig

Top-level learning block: one forward + one optimiser + loss heads.

Shared run settings live here; site_level / gauge_level add the loss heads. The parameters to calibrate and their sources are declared in the standard parameterization block.

time: model.runtime.configs.site_simulation_config.SiteTimeConfig¶

ā€˜field(…)’

spinup: model.runtime.configs.site_simulation_config.SiteSpinupConfig¶

ā€˜field(…)’

initialization: model.runtime.configs.site_learning_config.SiteLearningInitializationConfig¶

ā€˜field(…)’

training: model.runtime.configs.site_learning_config.TrainingConfig¶

ā€˜field(…)’

output_dir: object¶

None

save_final_inference: bool¶

True

site_level: model.runtime.configs.learning_config.SiteLevelConfig¶

ā€˜field(…)’

gauge_level: model.runtime.configs.learning_config.GaugeLevelConfig¶

ā€˜field(…)’

classmethod from_dict(raw)¶
is_enabled()¶
active_heads()¶
validate()¶
model.runtime.configs.learning_config.__all__¶

[ā€˜LearningConfig’, ā€˜SiteLevelConfig’, ā€˜GaugeLevelConfig’, ā€˜GaugeSelectionConfig’]