SCPN Fusion Core v3.0.0 — Rust SNN, Full-Chain UQ, Shot Replay
v3.0.0 — Rust SNN PyO3, Full-Chain UQ, Shot Replay
Highlights
- Rust SNN via PyO3:
PySnnPoolandPySnnControllerexpose the Rust LIF spiking neuron controller to Python. Python-side wrappers (RustSnnPool,RustSnnController) with graceful fallback when Rust extension is not compiled. - Monte Carlo UQ through full solver chain:
quantify_full_chain()propagates uncertainty through equilibrium boundary → transport coefficients → fusion power, returning [p5, p50, p95] bands for psi NRMSE, tau_E, P_fusion, Q, and beta_N. - FNO turbulence surrogate deprecated: Runtime
FutureWarningon initialization. Relative L2 = 0.79 on 60 synthetic samples — will be retired in v4.0 unless real gyrokinetic training data becomes available. - Shot Replay Streamlit tab: 5th tab loads DIII-D disruption NPZ files with time-series diagnostics (Ip, ne, Te, dB/dt, toroidal modes) and disruption predictor risk overlay.
- Paper manuscripts updated: Both Paper A (equilibrium solver) and Paper B (SNN controller) updated with v2.1.0 improvements and metrics.
Test Suite
- 1225 tests passed, 57 skipped, 0 failures
- 19 new SNN PyO3 tests (skip when Rust not compiled)
- 12 new full-chain UQ tests
New Files
scpn-fusion-rs/crates/fusion-python/src/lib.rs— PyO3 SNN bindings (+87 lines)src/scpn_fusion/core/_rust_compat.py— Python SNN wrappers (+70 lines)src/scpn_fusion/core/uncertainty.py— Full-chain MC UQ (+241 lines)src/scpn_fusion/ui/app.py— Shot Replay tab (+155 lines)tests/test_snn_pyo3_bridge.py— 19 teststests/test_uq_full_chain.py— 12 tests
Full changelog: https://github.com/anulum/scpn-fusion-core/blob/main/CHANGELOG.md