pofff.visualization.everert module

Postprocess Everest (ERT) ensemble and optimization studies. Generates diagnostics, plots, and extracts best simulations.

class pofff.visualization.everert.Config(path: Path, times: str, jobs: List[str], external: Path, run: str, maps: Path, min_saturation: float, min_concentration: float)

Bases: object

Runtime configuration and paths.

external: Path
jobs: List[str]
maps: Path
min_concentration: float
min_saturation: float
path: Path
run: str
times: str
class pofff.visualization.everert.EnsembleState(observations: ndarray, n_e: int, n_i: int, no_obs: int, no_para: int, simulations: List[List[list]] = <factory>, sim_ens: List[List[float]] = <factory>, miss_ens: List[List[float]] = <factory>, par_dis: List[List[float]] = <factory>, idrealisation: List[List[int]] = <factory>, num_ens: List[int] = <factory>, cumulative: List[List[List[float]]] = <factory>, para_file: Path | None = None, para_names: List[str] = <factory>)

Bases: object

Holds ensemble simulations and diagnostics.

cumulative: List[List[List[float]]]
idrealisation: List[List[int]]
miss_ens: List[List[float]]
n_e: int
n_i: int
no_obs: int
no_para: int
num_ens: List[int]
observations: ndarray
par_dis: List[List[float]]
para_file: Path | None = None
para_names: List[str]
sim_ens: List[List[float]]
simulations: List[List[list]]
class pofff.visualization.everert.OptimizationState(optimization: List[float] = <factory>, optimal_value: float = -inf, ind_batch: int = 0, ind_sim: int = 0, tot_eval: int = 0, s: List[List[int]] = <factory>, x: List[int] = <factory>)

Bases: object

Tracks optimization progress and outcomes.

ind_batch: int = 0
ind_sim: int = 0
optimal_value: float = -inf
optimization: List[float]
s: List[List[int]]
tot_eval: int = 0
x: List[int]
pofff.visualization.everert.copy_tree_contents(src: Path, dst: Path)

Copy contents of src into dst (cp -r src/. dst/).

pofff.visualization.everert.ensure_dir(path: Path)

Create directory if missing.

pofff.visualization.everert.extract_best_simulation(cfg: Config, state: EnsembleState)

Extract best-fitting ensemble realization.

pofff.visualization.everert.extract_optimal_solution(cfg: Config, opt: OptimizationState)

Extract and postprocess optimal optimization result.

pofff.visualization.everert.initialize_ensemble(cfg: Config) EnsembleState

Initialize ensemble from simulation folders.

pofff.visualization.everert.main()

Entry point.

pofff.visualization.everert.parse_args() Config

Parse command-line arguments.

pofff.visualization.everert.plot_cumulative_misfit(cfg: Config, state: EnsembleState, tab20)

Plot cumulative misfit contributions per observation.

pofff.visualization.everert.plot_hm_mismatch(cfg: Config, state: EnsembleState)

Plot ensemble-mean misfit per iteration.

pofff.visualization.everert.plot_misfit(cfg: Config, state: EnsembleState)

Plot ensemble misfit per iteration.

pofff.visualization.everert.plot_observable_distribution(cfg: Config, state: EnsembleState)

Plot observable sum distributions.

pofff.visualization.everert.plot_optimization(cfg: Config, opt: OptimizationState)

Plot optimization progress.

pofff.visualization.everert.plot_optimization_details(cfg: Config, opt: OptimizationState)

Plot optimization success statistics.

pofff.visualization.everert.plot_parameter_distributions(cfg: Config, state: EnsembleState)

Boxplots of parameter distributions.

pofff.visualization.everert.plot_simulation_ensemble(cfg: Config, state: EnsembleState, tab20)

Plot initial and final ensemble simulations.

pofff.visualization.everert.process_optimization(cfg: Config) OptimizationState

Process Everest optimization results.

pofff.visualization.everert.read_realisation(cfg: Config, state: EnsembleState, i: int, j: int)

Read one realization and update ensemble statistics.

pofff.visualization.everert.run(cmd: List[str]) None

Execute external command and abort on failure.

pofff.visualization.everert.save_figure(fig, path: Path, dpi=300)

Save figure and release memory.

pofff.visualization.everert.setup_matplotlib()

Apply consistent matplotlib styling.