geopulse.uq
Uncertainty-quantification utilities.
Provides the Uncertain wrapper type and Monte-Carlo propagation
helpers used across the pipeline.
- class geopulse.uq.Uncertain(nominal, samples=None, distribution='deterministic', params=<factory>)[source]
Bases:
Generic[T]A value that may carry uncertainty information.
- Parameters:
nominal (
TypeVar(T)) – The central / best-estimate value.samples (
Optional[list[TypeVar(T)]]) – Monte-Carlo samples, if uncertainty has been propagated. Length equals the number of MC draws.distribution (
str) – Distribution family. One of"deterministic","gaussian","uniform","ensemble". Default:"deterministic".params (
dict) – Distribution parameters. Forgaussian:{"std": ...}. Foruniform:{"low": ..., "high": ...}. Forensemble: empty (samples ARE the distribution).
Notes
Uncertainis not frozen:generate_samples()is a query method and does not mutate the instance, but downstream propagation code may attach freshly-drawnsamplesafter construction.- nominal: T
- generate_samples(n, rng=None)[source]
Draw
nMonte-Carlo samples from the declared distribution.- Parameters:
- Return type:
- Returns:
list –
nsamples, each with the same shape/type asnominal.- Raises:
ValueError – If
distributionis not one of the supported families.
- geopulse.uq.propagate_uncertainty(func, *args, n_samples=100, seed=42, **kwargs)[source]
Propagate uncertainty through a function via Monte Carlo.
Any argument that is an
Uncertainwith a non-deterministic distribution is sampled; deterministic arguments pass through unchanged.- Parameters:
func (
Callable[...,Any]) – The function to propagate through.*args (
Any) – Positional arguments — may includeUncertainvalues.n_samples (
int) – Number of Monte-Carlo samples. Default: 100.seed (
int) – Random seed for reproducibility. Default: 42.**kwargs (
Any) – Keyword arguments — may includeUncertainvalues.
- Return type:
- Returns:
Uncertain – Result with
distribution="ensemble"andsamplespopulated.
Examples
>>> u = Uncertain(nominal=1.0, distribution="gaussian", params={"std": 0.1}) >>> out = propagate_uncertainty(lambda x: x * 2, u, n_samples=100) >>> out.n_samples 100
Modules
Distribution representations for uncertainty quantification — STUB (WP2). |
|
Monte-Carlo propagation engine — STUB (WP2). |
|
Sensitivity-analysis utilities (Sobol, Morris) — STUB (WP3). |
|
Core uncertainty type: |