Multimodal Forecasting Under Partial Observation
July 29, 2026 · View on GitHub
This page defines the bounded BL-37 multimodal forecasting product. It provides immutable multimodal custody, a deterministic missingness-aware classical baseline, partial-observation scoring, empirical split residual intervals, and explicit composition ports into BL-68 sensing and BL-33 controller proposals.
Production surfaces
The public scpn_quantum_control.forecasting facade exports:
MultimodalObservationBatchfor phase histories, graphs, exogenous events, masks, targets, frequencies, sample identifiers, split custody, and simulation-only domain tags;generate_synthetic_multimodal_dataset(...)for deterministic, independent train, calibration, and test Kuramoto trajectories;fit_multimodal_ridge_forecaster(...)for a linear reference model whose imputation means and scales come only from training custody;evaluate_partial_observation_batch(...)for observed wrapped-phase error plus an exact known-simulator Kuramoto forward residual;fit_residual_interval_calibrator(...)andcertify_interval_coverage(...)for sample-max split residual intervals over independent synthetic trajectory rows;plan_forecast_active_sensing(...)for an interval-width proxy entering the existing BL-68 no-submit planner; andforecast_to_controller_initialisation(...)for a clipped, unapplied existing BL-33ControllerProposal.
The four allowed tags—synthetic, grid_like_sim, eeg_like_sim, and
plasma_like_sim—identify stylised generator configurations. They do not
identify real datasets or establish domain fidelity.
Minimal deterministic workflow
import numpy as np
from scpn_quantum_control.forecasting import (
SyntheticMultimodalConfig,
apply_residual_interval,
certify_interval_coverage,
evaluate_partial_observation_batch,
evaluate_point_forecast,
fit_multimodal_ridge_forecaster,
fit_residual_interval_calibrator,
generate_synthetic_multimodal_dataset,
)
dataset = generate_synthetic_multimodal_dataset(
SyntheticMultimodalConfig(
train_samples=64,
calibration_samples=24,
test_samples=32,
seed=3701,
)
)
model = fit_multimodal_ridge_forecaster(dataset.train, ridge=10.0)
calibration_forecast = model.predict(dataset.calibration)
calibrator = fit_residual_interval_calibrator(
model,
calibration_forecast,
dataset.calibration,
alpha=0.10,
)
test_forecast = model.predict(dataset.test)
accuracy = evaluate_point_forecast(test_forecast, dataset.test)
interval = apply_residual_interval(calibrator, test_forecast)
coverage = certify_interval_coverage(model, calibrator, interval, dataset.test)
partial_mask = np.zeros_like(dataset.test.target_mask)
partial_mask[:, :, ::2] = True
partial = evaluate_partial_observation_batch(
test_forecast,
dataset.test,
partial_mask,
)
All batches and fitted arrays are copied and made read-only. Missing inputs are
normalised to NaN behind explicit masks. Split identifiers and SHA-256 content
digests make train/calibration/test leakage checks executable.
Frozen evidence
The committed evidence uses 64 training, 24 calibration, and 32 test trajectories, with 16/6/8 independent rows per synthetic tag. Input phase and event entries are randomly masked; exact simulator couplings remain fully known because the physics-residual certificate does not infer them.
| Held-out metric | Observed |
|---|---|
| Test wrapped MSE | 0.000823098535 |
| Persistence wrapped MSE | 0.00113867904 |
| Partial-mask fraction | 0.5 |
| Partial observed wrapped RMSE | 0.0254875208 |
| Exact-simulator Kuramoto residual RMSE | 0.210377396 |
Split residual radius (alpha=0.1) | 0.0961529067 |
| Empirical test sample coverage | 0.90625 |
| Empirical test value coverage | 0.9921875 |
The test MSE is lower than persistence overall and for each of the four frozen
test-tag groups. On calibration, the overall MSE is lower than persistence, but
the synthetic subgroup is not. These finite synthetic rows are regression
evidence for this exact configuration, not a general superiority result.
The nominal interval target is 0.9 and the frozen sample coverage is 0.90625. This is an empirical held-out result over independently generated trajectory rows. It is not a conditional-coverage, sequential EnbPI, or domain-transfer guarantee.
Regenerate and byte-check the evidence with:
PYTHONPATH=src python scripts/run_multimodal_forecasting_evidence.py
PYTHONPATH=src python scripts/run_multimodal_forecasting_evidence.py --check
Committed custody:
data/multimodal_forecasting/bl37_evidence.jsondata/multimodal_forecasting/bl37_evidence.md- content digest
f7728c62a7fae64afd6b17fa900d1c733cf5616f9b87cedd25b4b440b6550c02
Composition boundaries
plan_forecast_active_sensing(...) converts per-node interval widths into
InformationGainCandidate records and calls the existing BL-68 planner. The
frozen evidence produces an allowed local dry-run plan with
hardware_execution=False, would_submit=False, and no provider cost claim.
Passing request_hardware=True remains refused by BL-68.
forecast_to_controller_initialisation(...) maps the terminal forecast order
parameter into a clipped existing ControllerProposal. The returned record is
always applied=False and safety_decision=False. It does not establish
closed-loop stability, control performance, or operational suitability.
Scientific basis
- Cao et al. (2018), BRITS motivates preserving explicit missingness in multivariate time-series models. BL-37 does not implement or claim BRITS.
- Xu and Xie (2023) motivates careful uncertainty claims for time series. BL-37 uses independent synthetic trajectory rows and does not claim their sequential method.
- Smith and Gottwald (2023) treats dynamics learning under partial observation as a data-assimilation problem. BL-37 does not claim their ensemble Kalman parameter-inference result.
- Dörfler, Chertkov, and Bullo (2013) supplies oscillator-network context for the grid-like simulation tag. It does not validate an operational power-grid model here.
These sources constrain the architecture and claim language. They do not validate this repository's thresholds, generated trajectories, forecasts, or deployment suitability.
Explicit exclusions
- No real EEG, clinical, grid, SCADA, plasma diagnostic, or plant data is in BL-37 custody.
- No hidden-state reconstruction, coupling inference, data assimilation, or arbitrary partial-observation solution is claimed.
- No hardware, provider, QPU, adaptive sensing, clinical, safety, stability, control-performance, generalisation, advantage, publication, or deployment claim is made.
- The deterministic ridge model is a classical reference baseline, not a production forecasting service.