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:

dict