iwfm.diagnostics.suggest_parameter_changes¶
- iwfm.diagnostics.suggest_parameter_changes(bundle, sensitivity, node_coords, stream_node_ids=None, n_reps_per_group=25, phase=None, param_config=None, candidate_nodes=None, pst_file=None, diagnostic_weight=0.3, verbose=False)[source]¶
Generate parameter selection recommendations from diagnostic data.
- Parameters:
bundle (DiagnosticBundle) – Assembled diagnostic bundle from current PEST iteration.
sensitivity (dict) – From read_pest_sensitivity: {param_name: {sensitivity, …}}.
node_coords (dict) – {node_id: (x, y)} for all GW nodes.
stream_node_ids (list of int, optional) – All stream node IDs. If None, stream params skipped.
n_reps_per_group (int) – Target number of representative nodes per parameter group per layer.
phase (int, optional) – Calibration phase (1-3). Only parameters with phase <= this are activated. If None, determine from bundle signals.
param_config (dict, optional) – Override DEFAULT_PARAM_CONFIG.
candidate_nodes (dict, optional) – {prefix: set of int} restricting which nodes can be selected per parameter prefix. If None and pst_file provided, extracted automatically from .pst file.
pst_file (str, optional) – Path to .pst file. Used to auto-detect candidate nodes if candidate_nodes not provided.
diagnostic_weight (float) – Weight for diagnostic signals in selection (0-1).
verbose (bool) – Print progress.
- Returns:
Recommendation structure with keys: - ‘phase’: int, recommended calibration phase - ‘param_groups’: dict of per-group recommendations - ‘bound_changes’: list of bound adjustment recommendations - ‘summary’: str, human-readable summary
- Return type: