iwfm.diagnostics.stability_jacobian

Lightweight diagnostic capture during PEST Jacobian perturbation runs.

For each parameter perturbation, reads only the small Convergence HDF5 (~34 KB) and compares against base-run metrics. Parameters that increase iteration counts, DIFFMAX, or trouble-timestep counts are flagged as structurally destabilizing — they affect model stability, not just fit.

Usage with pypest

from iwfm.diagnostics.stability_jacobian import StabilityCollector

collector = StabilityCollector(diagnostics_subdir=’model/diagnostics’) # … set collector on JacobianCalculator.stability_collector … # After Jacobian finishes: result = collector.compute() print(result.top_destabilizers)

Functions

compute_stability_scores(base_metrics, ...)

Compute stability Jacobian from base and perturbation metrics.

read_convergence_quick(hdf_path[, ...])

Read Diagnostics_Convergence.hdf and return lightweight metrics.

Classes

ConvergenceMetrics([max_iterations, ...])

Lightweight convergence metrics from a single model run.

StabilityCollector([diagnostics_subdir, ...])

Collect convergence metrics from base and perturbation model runs.

StabilityJacobian(n_params, n_timesteps, ...)

Per-parameter stability impact from Jacobian perturbation runs.