helios-fusion-engine¶
Model-agnostic probabilistic fusion of heterogeneous space-weather model
outputs. This is the public framework of HELIOS Artifact C (the fusion
engine). Trained weights, BMA priors fitted on Table 3-1 events, and
equipment transfer functions live in the private
helios-fusion-internal companion repo and are NOT shipped with this
package.
What the framework provides¶
- Bayesian Model Averaging orchestrator with rolling-window skill-weight updates and explicit handling of missing component models.
- Reliability calibrators — isotonic (proposal-default), Platt (rejected, retained for comparison), and severity-stratified isotonic (one calibrator per Kp severity stratum).
- Conformal prediction wrappers — split conformal (marginal coverage) and Mondrian conformal (per-stratum coverage).
- Evaluation harness — CCMC-compatible metrics (HSS, TSS, POD, FAR, Brier, CRPS) with bootstrap 95% CIs and reliability-diagram slope.
- Typed records for fusion lineage compatible with the upcoming
helios-provenance-spec.
What the framework does NOT provide¶
- No trained weights. Callers supply BMA weights at construction time, or
fit them at runtime via
BMAOrchestrator.update_weights. - No equipment transfer functions. The GNSS slice (proposal Obj. 4) builds on top of this framework but ships separately.
- No kill-gate execution. The kill-gate runner lives in
helios-program/orchestration/kill_gate.pyand consumes this framework'sEvalReport.
Status¶
- v0.1.0 — public framework first release.
- See
architecture.mdfor the BMA + isotonic + conformal composition and the rationale for that stack. - See
baselines.mdfor the "best individual component model" baseline definition. - See the
01-synthetic-bma-demo.ipynbnotebook for a runnable end-to-end demonstration on synthetic data.
Quickstart¶
import numpy as np
from helios_fusion.bma import BMAOrchestrator
from helios_fusion.calibration import SeverityStratifiedCalibrator
from helios_fusion.conformal import MondrianConformalRegressor
from helios_fusion.eval import evaluate
# 1) Define BMA weights and fuse
bma = BMAOrchestrator(weights={"UMASEP": 0.4, "SEPMOD": 0.3, "SEP_Scoreboard_A": 0.3})
# fused = bma.fuse([umasep_output, sepmod_output, scoreboard_a_output])
# 2) Calibrate
cal = SeverityStratifiedCalibrator()
# cal.fit(train_fused_probs, train_truth, train_strata)
# calibrated = cal.transform(test_fused_probs, test_strata)
# 3) Conformal interval
cp = MondrianConformalRegressor()
# cp.fit(train_fused_probs, train_truth, train_strata)
# intervals = cp.predict_interval(test_fused_probs, test_strata, alpha=0.1)
# 4) Score
# report = evaluate(test_fused_probs, test_truth, test_strata)
# report.aggregate.hss.point # HSS point estimate
# report.aggregate.hss.ci_low / ci_high # bootstrap 95% CI
# report.aggregate.reliability_slope # H2 quantity (target |slope - 1| <= 0.15)
License¶
Apache 2.0 — see LICENSE.