geoprior.models.subsidence.identifiability#

Identifiability scenarios for GeoPrior-style models.

Goal: - break non-identifiability ridges by construction.

Option A: - learn tau only - derive K from tau via closure - freeze (or fix) Ss and Hd

Functions

apply_ident_locks(model[, profile])

derive_K_from_tau_np(tau_sec, Ss, Hd, kappa_b, *)

derive_K_from_tau_tf(tau_sec, Ss, Hd, kappa_b, *)

Closure:

get_ident_profile(regime)

ident_audit_dict(model, *[, extra_sk_keys])

Small, JSON-safe audit of identifiability configuration.

init_identifiability(regime, scaling_kwargs)

Apply identifiability profile to scaling kwargs.

resolve_compile_weights(profile, *, ...)

scenario_tau_only_derive_K(params, *, kappa_b)

Option A: - keep tau free - freeze/fix Ss and Hd - derive K from tau by closure

Classes

ScenarioOut(params, extra_loss, diag)

geoprior.models.subsidence.identifiability.init_identifiability(regime, scaling_kwargs)[source]#

Apply identifiability profile to scaling kwargs.

  • does NOT override user-provided keys

  • ensures sk[“bounds_loss”] exists (dict form)

Parameters:
Return type:

tuple[str | None, dict[str, Any] | None, dict]

geoprior.models.subsidence.identifiability.apply_ident_locks(model, profile=None)[source]#
Parameters:
Return type:

None

geoprior.models.subsidence.identifiability.resolve_compile_weights(profile, *, lambda_cons, lambda_gw, lambda_prior, lambda_smooth, lambda_mv, lambda_bounds, lambda_q)[source]#
Parameters:
Return type:

dict[str, float]

geoprior.models.subsidence.identifiability.get_ident_profile(regime)[source]#
Parameters:

regime (str | None)

Return type:

tuple[str | None, dict[str, Any] | None]

geoprior.models.subsidence.identifiability.ident_audit_dict(model, *, extra_sk_keys=None)[source]#

Small, JSON-safe audit of identifiability configuration.

Intended for experiment logs / manifests / eval JSON.

Parameters:
Return type:

dict[str, Any]