pycsamt.agents.ensemble_agent#
pycsamt.agents.ensemble_agent#
EnsembleAgent — Ensemble 1-D inversion with uncertainty quantification.
Wraps EnsembleInverter:
Trains N independent
EMInverter1Dmodels on a shared synthetic dataset using different random seeds.Predicts mean resistivity and uncertainty (std / confidence intervals) for every observed station.
Optionally calibrates the intervals using a held-out conformal set.
Reports empirical coverage (fraction of true values inside the interval) as a reliability metric.
The outputs feed directly into the ReportAgent and are used as a
rigorous uncertainty-aware alternative to single-model AI inversion.
Requires PyTorch or TensorFlow.
Classes
|
Ensemble 1-D MT inversion with uncertainty bands. |
- class pycsamt.agents.ensemble_agent.EnsembleAgent(*, api_key=None, model=None, llm_provider='claude', n_estimators=5, arch='resnet', n_layers=5, n_train_samples=2000, epochs=30, calibrate=True)[source]#
Bases:
BaseAgentEnsemble 1-D MT inversion with uncertainty bands.
- Parameters:
api_key (str)
model (str)
llm_provider (str)
n_estimators (int) – Number of independent models in the ensemble (default 5).
arch (str) – Network architecture for each estimator (default
"resnet").n_layers (int) – Number of model layers (default 5).
n_train_samples (int) – Synthetic training samples per estimator (default 2 000).
epochs (int) – Training epochs per estimator (default 30).
calibrate (bool) – Apply conformal calibration using 20 % of training data (default True).
keys (Output data)
----------
path (sites /)
output_dir (str, optional)
keys
----------------
EnsembleInverter (ensemble)
{station (pred_hi dict)
{station
{station
{station
coverage (coverage float — empirical 90 % interval)
float (rms_global)
dict (figure_paths)
dict
Examples
>>> agent = EnsembleAgent(n_estimators=3, epochs=20) >>> result = agent.execute({"path": "/data/L22PLT", "output_dir": "/out/ens"}) >>> result["coverage"] # should be ≈ 0.90 after calibration 0.88
- SYSTEM_PROMPT: str = 'You are an expert in Bayesian and ensemble methods for geophysical inversion.\nGiven an ensemble inversion result with uncertainty quantification, write 4-5\nsentences that:\n1. Describe the ensemble configuration (N models, architecture, training data).\n2. State the prediction quality (mean RMS, uncertainty magnitude).\n3. Assess the calibration: are the confidence intervals reliable?\n4. Identify depth ranges or stations where uncertainty is largest.\n5. Recommend whether the uncertainty is small enough for geological interpretation.\nReply in plain scientific English.\n'#
Override in subclasses to give the LLM its domain expertise.
- execute(input_data)[source]#
Run this agent on input_data and return an
AgentResult.Subclasses must implement this method. The contract:
Reset
self._last_cost = 0.0at the top.Record wall-clock time with
t0 = time.time().Return
AgentResult(elapsed_seconds=time.time()-t0, cost_estimate_usd=self._last_cost, ...).
- Parameters:
- Return type: