Skip to main content
Advanced BCI patterns without duplicating full SDK walkthroughs. Use this as an implementation checklist, then follow the linked guides for exact APIs.
Frozen-encoder personalization: Personalizer. Python streaming / sklearn: Python Streaming Inference, sklearn Integration. Julia streaming: Julia Streaming Inference.
Under deployment stress on a frozen trunk, prefer Personalizer + small labeled calibration over full fine-tuning. Classical cross-subject / multi-session recipes still apply to feature pipelines and standalone heads.

Cross-subject training

Combine calibration data from multiple users, then personalize to a new user with a small labeled set. When a frozen trunk already transfers, prefer Personalizer + per-user calibration over full fine-tuning. Core workflow:
  1. Extract the same feature type (or freeze the same encoder) for every subject.
  2. Normalize using training subjects only.
  3. Train a conservative baseline (Personalizer(head="lda") or NimbusLDA).
  4. Evaluate with subject-wise splits, not random trial splits.
  5. Personalize with a small calibration set for the target subject.

Hybrid BCI

Hybrid BCIs combine evidence from multiple paradigms, such as motor imagery plus P300. Recommended pattern:
  • Keep one Personalizer / head per paradigm (or one frozen trunk + head).
  • Normalize each feature family separately.
  • Combine posterior probabilities or confidence-weighted decisions.
  • Log disagreement between paradigms for later review.
Use conservative thresholds for high-stakes actions and require confirmation when paradigms disagree. App gates: BrainState.

Continuous control

Continuous control maps repeated predictions into a smoothed command stream.
Keep smoothing outside the classifier. The model reports uncertainty; the control layer decides how aggressively to act.

Adaptive learning

Adaptation is useful when signal distributions drift during long sessions or across days.
See Personalizer overview for adapt vs trial gates, and Active Learning for label selection.

Multi-session experiments

For experiments that span days or weeks:
  • Use a stable preprocessing / encoder pipeline and save its parameters (model_id, embedding_dim).
  • Save normalization parameters with each trained profile (Personalizer.save / head artifacts).
  • Track hardware, montage, impedance, session time, and participant state.
  • Evaluate same-session and cross-session performance separately.
  • Compare adaptation against a no-adaptation baseline.
Suggested metadata to log:

Robust deployment

Production systems should separate personalization, control, and safety policy:
  1. Personalizer returns BrainState (intent, posterior, confidence, gates).
  2. Quality gate accepts, rejects, or asks for more data (need_more_data).
  3. Control layer maps accepted intents to actions.
  4. Monitoring logs confidence, latency, rejection rate, and drift.
For detailed safeguards, see Error Handling and BrainState.

Next read

Personalizer

Encoder contract, adapt helper, BrainState

Basic Examples

Compact starter recipes

Active Learning

Label-efficient calibration

Streaming configuration

Chunking and aggregation decisions