Skip to main content
0.6 ships paradigm factories and portable profiles so you can go from calibration epochs to a deployable Personalizer without owning a deep trunk — and warm-start day 2 without raw EEG. Requires pip install nimbus-bci[riemann] for Riemann / P300 geometry paths.

Choose a path

Portable profiles

Day-2 warm-start (profile + partial_fit with n≈40) beats frozen day-1 in the locked readout (+1.03 pp, CI [+0.11, +2.33], 0/9 no-regret). Re-attach the same encoder on from_profile / load. Also: Personalizer.save / load for the full artifact layout.

Motor imagery

Quick factory

Session recipe (geometry gateway)

Optional BALD cal shrink: calibrate_mi_bald(...) — do not default it for production cal-time claims (EP-CAL-TIME NO-GO).

P300

Claim framing for BNCI2014_008: parity + delivered ITR, not accuracy superiority.

Session-bundle trust contract

MISessionBundle / P300SessionBundle joblib sidecars are pickle payloads:
  • load(..., trusted=True) is required
  • save records sidecar_sha256; load verifies before unpickle
  • Tampered sidecars are refused even with trusted=True
  • Riemann .npz path never unpickles

Embedding transforms (brief)

Full guide: Embedding transforms.

Gate calibration

Default decision gates accept 7–78% of trials across trunks. Pin the realized accept rate with joint gate calibration:
fit_calibrated calibrates the confidence threshold within trials that pass the entropy ceiling. At K>2K > 2, the joint gate guarantees the realized accept rate matches target_accept on validation data, rather than being eroded by independent entropy rejection.

Next read

Online Safety Layer

Govern online adaptation with budgets, monitors, and rollback

Encoder contract

wrap, sfreq, save/load, profiles, and precomputed embeddings

BrainState

strict / permissive gates

Migration to 0.8

Upgrading to 0.8