osmose.calibration.uq.design

Seeded LHS design executed through the Python engine, reduced for the UQ emulator.

The design runs through an INJECTABLE evaluator — a (point, seed) -> stat-dict callable — so the whole pipeline is testable without OSMOSE runs. The real evaluator (make_engine_evaluator) runs the Python engine with SSB output enabled; tests pass a synthetic function.

Two transforms live here and must not be conflated: base-10 10**val at the simulator-input boundary (point_to_overrides, mirroring problem.py:263) and natural np.log of the linear stat when forming the GP target Y (run_design).

Functions

grow_until_calibrated(evaluator, ...[, ...])

Build N0, gate every key, and grow by increment until all keys pass or n_max aborts.

lhs_design(free_params, n_points, seed)

Seeded Latin-hypercube design, (n_points, d), scaled to sampling-space bounds.

make_engine_evaluator(free_params, ...[, ...])

Build the real Python-engine evaluator: point+seed -> per-species stat dict.

point_to_overrides(x, free_params)

One sampling-space point -> OSMOSE override dict.

run_design(evaluator, free_params, ...[, ...])

Run an LHS design through evaluator over n_seeds seeds; reduce per key.

Classes

DesignResult(X, keys, Y, alpha)

LHS design with per-targeted-key natural-log seed-mean targets and noise.

GrowthResult(design, reports, status, rounds)

Outcome of the bounded design-growth loop.