Skip to content

SCPN Fusion Core v3.0.0 — Rust SNN, Full-Chain UQ, Shot Replay

Choose a tag to compare

@anulum anulum released this 17 Feb 18:47
· 1354 commits to main since this release

v3.0.0 — Rust SNN PyO3, Full-Chain UQ, Shot Replay

Highlights

  • Rust SNN via PyO3: PySnnPool and PySnnController expose 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 FutureWarning on 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 tests
  • tests/test_uq_full_chain.py — 12 tests

Full changelog: https://github.com/anulum/scpn-fusion-core/blob/main/CHANGELOG.md