BCI Research Workbench

The Operating System for
BCI Research

MethodsWorkflowsExperimentsResultsReproducePublish
Neural Flow

Design BCI paradigms
by connecting blocks.

Sequence tasks, loops, and triggers on a visual canvas, no scripting.

Multimodal

Pictures, sound and words
on the recording’s clock.

Every stimulus is timed to the signal, so a trial’s media, data and label always stay together.

Text Image Audio Video
one block · five artifacts · one droppedone index vector
i=0
i=1
i=2
i=3
i=4
X — epochs
face
tone
word
unbound
house
Y — labels
Signal Processing Pipeline

From raw signal to activation map.

Preprocess with MNE, add your own custom filters in Python, and generate 2D activation maps and 3D cortical renders, all from the same pipeline.

  • MNE

    Preprocessing with MNE

    Standard filtering and preprocessing pipelines on MNE foundations.

  • Python

    Custom filters in Python

    Drop in your own filters and transforms with plain Python.

  • 2D & 3D activation maps

    Generate topographic maps and 3D cortical renders from the results.

3D · Cortical surface

Whole-brain activation map

Reconstructed activity projected onto a 3D cortical mesh for spatial localization of the response, built on the same MNE-derived source estimates as the 2D views.

3D cortical activation map
2D topographic activation series
2D · Topographic series

Time-resolved scalp maps

Channel-wise concentration changes plotted across the epoch, from baseline to peak response.

Overlay time plot with topographic snapshot
2D · Overlay + timecourse

Per-channel waveform overlay

All channels overlaid against a synchronized topographic snapshot at the selected timepoint.

Analysis

Every analysis step, one workspace.

Preview any step on one file, then batch-apply across the whole dataset, every output drops straight into ML Flow.

BCILattice, Analysis
BCILattice Analysis workspace showing channel scores and a visualization chart
  1. 1Apply to one file
  2. 2Check the result
  3. 3Batch-apply to all
  4. 4Import into ML Flow
ML Flow

Build model pipelines
block by block.

Drag, connect, and run from raw signal to a scored model.

BCILattice · AI Assistant
Create a workflow to compare EEG classifiers.
Workflow created: Select Files → StandardScaler → EEGNet Small/Medium/Large → Model Selector → Graph Output.
Make it reproducible and add evaluation.
Added fixed seed, train/validation split, Accuracy, F1, Confusion Matrix, early stopping, and versioned settings.
Works withClaudeOpenAIno API keys
AI Assistant

Get unstuck
while you work.

AI that understands your project.

Model library

From logistic regression to EEG transformers.

The desktop Components Library, mirrored. Every ecosystem, model family and pipeline stage on one palette — drag it onto the ML Flow canvas, or rewire it by hand.

11,337 blocks · 40 catalog categories scikit-learn · PyTorch · Hugging Face · pyRiemann
Ecosystem palette, as it appears in the app
Components LibraryDefault (curated)

Classical ML

Fast, interpretable baselines. Every serious BCI result starts by beating these.

scikit-learn

Pipelines, CV, the classics

XG

XGBoost

Gradient-boosted trees

Linear / logisticSVM / kernelRandom forest / baggingGradient boostingHMM / Bayesian

Drops into ML Linear, ML Ensemble, ML Neighbors & ML Clustering blocks

Pipeline building blocks

Preprocessing

109

StandardScaler · RobustScaler · SimpleImputer · KNNImputer

Signal Processing

621

MNE Epochs · ICA · wavelets · band-pass filters

Feature Selection

35

SelectKBest · RFE · RFECV · SelectFromModel

Dimensionality Reduction

94

PCA · FastICA · KernelPCA · NMF

Optimization

41

Adam · AdamW · SGD · RMSprop · Muon · LBFGS

Cross Validation

54

KFold · StratifiedKFold · GridSearchCV · TimeSeriesSplit

Evaluation

89

accuracy · F1 · ROC-AUC · confusion matrix

Model Interpretation

123

SHAP · DeepExplainer · TreeExplainer · KernelExplainer

Computer Vision

421

OpenCV · torchvision · feature detectors

Data Manipulation

356

reshape · concat · merge · groupby · window

Math Operations

381

linear algebra · statistics · FFT · elementwise

BCI Augmentation

26

MixUp · time shift · channel dropout · SMOTE

Model families

Classical & probabilistic

  • Linear & logistic models
  • SVM & kernel methods
  • Random forest · bagging · boosting
  • HMM · probabilistic · Bayesian

Convolutional & recurrent

  • CNN · ResNet · Inception · EfficientNet
  • EEGNet · ShallowConvNet · DeepConvNet
  • LSTM · GRU · BiLSTM
  • Autoencoders · VAE

Attention & transformers

  • Transformers & attention models
  • EEGConformer · Conformer
  • BrainBERT · EEGTransformer
  • PatchTST · ViTEEG

Sequence & state-space

  • TCN · temporal ConvNets
  • Mamba SSM
  • MiniGPT · TinyGPT · LargeGPT
  • BioGPTBCI · LaBraMBCI · GPT2BCI

Riemannian & spatial

  • CSP · SPoC · Xdawn · SSD
  • Covariances · ERPCovariances
  • Tangent space projection
  • MDM · FgMDM · TSClassifier

Edge & compressed

  • MobileEEGNet · TinyEEGNet
  • QuantizedEEGNet · INT8
  • ONNX export
  • Quantization-aware training
Training library

Choosing the model is the easy part.

119 blocks we write and maintain ourselves — the distance between a model and a result you can defend.

Indexed

11,337

third-party catalog

Owned

119

written by us

Built for where BCI models break
8 blocks

“It worked on subject 1”

Domain Adaptation

A decoder rarely survives a new head, or a new day.

Euclidean AlignmentCORAL AdapterSubject AdaptationSession TransferMMD AlignerTransfer Component AnalysisFeature AlignmentDANN Discriminator
8 blocks

“Session 6 broke session 1”

Domain Incremental Learning

Training on new data quietly erases what the model already knew.

Continual Learning TrainerEWC RegularizerReplay BufferDistillation TrainerDomain Drift DetectorPackNet FreezerProgressive LayersTask Manager
11 blocks

“94% accurate, on what?”

Uncertainty & Evaluation

An accuracy number cannot say when the decoder should decline to answer.

Conformal PredictorUncertainty EstimatorOpen-Set ScorerPseudo-Online EvaluatorRun AggregatorDecoding Curve ComparisonNeuro ExplainerCausal Connectivity
All 14 categories core advanced
DL Training33
Training17
Complex Structures12
Evaluation11
Pipeline Blocks8
Domain Adaptation8
Domain Incremental Learning8
Model Structure7
Preprocessing4
Analysis3
Reinforcement Learning3
Graph Learning2
Generative Models2
Inputs1
Block reference
Extensions

Not on the palette? Install it.

Any Python package becomes typed blocks on the ML Flow canvas — sandboxed in its own process, introspected automatically, no code.

24 curated extensions · 7 categories
How a library becomes blocks

01Install

A name from the shelf, or any pip spec.

02Isolate

Own env, own process, own server.

03Introspect

Functions become typed blocks. No code.

ML Flow canvas
Cedalion SNIRF Readercore

in

path: str

out

rec: Recording

cedalion.io.read_snirf

own processMIT licencev25.1.0
The curated shelf
1

fNIRS

Cedalion

10

EEG / MEG

Autoreject · PyPREP

2

BCI decoding

Braindecode · MOABB

5

Biosignals

NeuroKit2 · YASA

2

Dimensionality reduction

UMAP · openTSNE

2

Acquisition

BrainFlow · pylsl

2

Neuroimaging

NiBabel · Nilearn

Resolved & licence-checked Version pinned & vetted Any Git URL or private indexExtensions docs
Experiment Hub

Every experiment is a versioned workspace.

Create, save, duplicate, and compare experiments inside a project, each with its own version, run history, and lineage.

+ Create Save Duplicate Rename Compare Version History
3 experiments· active: Experiment 3
NameVerStatusBestModel
Experiment 31.2trained0.914MI-EEGNet
Experiment 21.0trained0.887ShallowConvNet
Experiment 11.0draft——
Lineagebranched
Experiment 1baseline import
└Experiment 2ICA + epoching
└Experiment 3CSP · retuned
Run history50 runs
run-48212 subjdone
run-48201 subjdone
run-48191 subjdone
Compare selected Provenance Export CSV
Results Validation

“Highest mean” is not a finding.

A second tab on the Results page tests whether a difference is real.

12 subjects · 3 pipelines

example
0.650.700.750.80accuracy0.6760.7060.731CSP+LDARiemannEEGNet
one subject group mean

Verdict

Different

Large effectPaired designFriedman agrees
RM-ANOVA
F(2, 22.0) = 168.74
p < .001 · partial η² = 0.939

Every subject moves the same way. A table of means can’t show that.

Compare by

SessionExperimentPipelineWorkflowSubjectRun

12 tests, matched to the design

RM-ANOVAFriedmanWelch’s tWilcoxonMann-Whitney UKruskal-Wallis+6 more

On every result

Assumption checksEffect size + CICorrected p-valuesTwo-factor models
Results Export & Notebook

The analysis we did not build.

No tool draws every chart a reviewer asks for. Take every table out as CSV or Excel, or write the analysis in the app with the results already loaded.

Run all Add cell Data Templates Export .ipynb
[1]
per_subject = (results[results.metric == "accuracy"]
               .groupby(["pipeline", "subject"])["value"].mean())
summary = per_subject.groupby("pipeline").agg(["mean", "std"])

fig, ax = plt.subplots()
ax.bar(summary.index, summary["mean"], yerr=summary["std"], capsize=5)
0.650.700.75EEGNetRiemannCSP+LDA

Right-click: PNG at 300 or 600 dpi, SVG, PDF, copy, zoom — the same menu as every other chart in the app.

Already loaded in every cell

resultsdfexperiments_dfruns_dfparameters_dfnppdpltsnsstatssklearntorchvalidation

Data opens a reference onto your own study: every name, every column, and a real value out of it. validation is the same module the Results Validation tab runs on.

Nine tables, one join key

Every row carries experiment_id, so the tables rejoin anywhere.

  • observationsone row per every stored score
  • parametersone row per every configuration value
  • runsone row per training run
  • experimentsone row per experiment
  • metricsone row per experiment × metric
  • modelsone row per trained model
  • reproducibilityone row per hashes, seeds, versions
  • versionsone row per version-history entry
  • studyone row per the study itself

Written as

CSV, one file per tableOne .zipOne .xlsx workbookanalysis.ipynb

The starter notebook already runs: it loads the CSVs, plots them, and runs a paired test across your subjects.

Report integrity

98.8% of what, and how sure are you?

Reports that show their evidence, get checked before export, and freeze when released.

example
98.8%best run
84.2%mean
95% CI 79.1–89.3%interval
n = 20sample size
chance 50.0%baseline
Checked before export
  • ProblemA linked value no longer resolves
  • CheckAccuracy reported with no interval
  • NoteSign-off incomplete

Warns, never blocks.

Frozen on releasev3 · Confidential
  • Author signed
  • Reviewer signed
  • Approverpending

Multiple authors, every edit attributed.

Share and reuse research

Train locally,
share when the work is ready.

Analysis stays on your machine. Publish and reuse through BCINexus only when collaboration matters.

Sync when needed

Secure cloud storage for private sharing, collaboration, and team workflows.

Coordinate your team

Assign tasks by module and track them to done.

BCINexus · Community Published

…

Contributors

…

Published studies

…

Active reviewers

…

Datasets

…

Models

Desktop app

Get BCILattice
and run your first experiment

Local data import, preprocessing, visual workflows, model training, reports, and optional publishing.