Block Index
Every block BCILattice makes itself, in one line each — grouped the way the ML Suite palette groups them.
About this list
BCILattice's palette holds two kinds of blocks. Most of the roughly 11,000 come straight from libraries such as scikit-learn, PyTorch and MNE. The 147 below are our own: written, tested and maintained as part of the app. Each has a one-line summary here and a link to its full description — ports, settings and the pitfalls it guards against.
- The groups match the palette, in the same order, so what you read here is where you will find it.
- core marks an everyday block — where a graph in that area usually starts. Unmarked blocks answer more specialised questions; every block is in the palette either way.
- In the app, hover any block in the palette to see the same one-liner, and hover a category name where there is a choice to make (for example Multiple Models) for a “which one do I need?” list.
147 blocks in 21 groups.
Inputs
Where data enters a graph.
| Input Blockcore | Marks where data enters a pipeline; it becomes an input port when the pipeline is compiled. | Full description → |
| File Pathcore | Points at one file on disk, for a block that reads files itself. | Full description → |
| Select Filescore | Picks the recordings to train on and loads them. Every workflow starts here. | Full description → |
| Custom Labelscore | Supplies class labels from a file or a typed list when the recording has none. | Full description → |
| Candidate Bankcore | Loads a set of candidates (stimuli, sentences) that is not one row per trial — for retrieval and generation. | Full description → |
| Model Set | Brings models from earlier experiments into a workflow, e.g. to run one test on each. | Full description → |
| Sub-Workflow | Runs another compiled workflow as a single step inside this one. | Full description → |
Analysis
The Analysis suite's processing steps, as blocks you can wire yourself.
| Channel Selectioncore | Keeps the channels that best separate your classes and drops the rest. | Full description → |
| Signal Projection | Turns each channel's time series into an image, for image models (CNNs). | Full description → |
| Time-Frequency Featurescore | Turns time-frequency power into features: band power per channel and time window. | Full description → |
Outputs
Where a graph hands its results back.
| Output Blockcore | Marks what a graph hands back; every graph ends in exactly one output. | Full description → |
| Multi-Head Output | Splits one network into several output heads, one per task. | Full description → |
Graphs
Pictures of what a graph produced.
| Graph Outputcore | Draws whatever reaches it and saves the picture. Can end a graph. | Full description → |
| Data Graphcore | Plots any data passing through, without ending the graph. | Full description → |
| Confusion Matrix Graphcore | Draws a confusion matrix from true and predicted labels. | Full description → |
Ensemble & Voting
Several models' predictions combined into one.
| Ensemble Voter | Combines several models' predictions into one by voting or averaging. | Full description → |
Data Routing
Splitting, merging and combining data as it flows.
| Data Merger | Joins several data streams into one. | Full description → |
| Data Splitter | Splits data into several parts, e.g. train and test. | Full description → |
| Feature Concatenator | Puts several feature tables side by side into one wider table. | Full description → |
| Stacking Assembler | Builds a stacked ensemble: a second model learns from several models' predictions. | Full description → |
| ForEach Collect | Gathers the results of a ForEach loop and ranks them. | Full description → |
Flow Control
Branches, loops and repeats — deciding what runs, and how often.
| Conditional Branch | Sends data one way or another depending on a condition. | Full description → |
| Pipeline Switch | Picks one of several routes for the data. | Full description → |
| Parallel Fan-out | Sends the same data to several branches at once. | Full description → |
| Loop Block | Repeats part of the graph a set number of times. | Full description → |
| ForEach | Runs the rest of the graph once for each item in a list. | Full description → |
Model Structure
Shaping a model before it is trained.
| Model Concat | Joins parallel branches of a network side by side. | Full description → |
| Expression Layer | A small calculation between network layers, like log(1 + x). No weights. | Full description → |
| Model Add | Adds parallel branches of a network together (e.g. a skip connection). | Full description → |
| Neural Prefix Encoder | Brain-to-text: maps brain features into a frozen language model so it writes text. | Full description → |
| Neural Image Prefix | Brain-to-image: maps brain features into a frozen image decoder so it draws a picture. | Full description → |
| Model Pipelinecore | Chains preprocessing and a model into one, so cross-validation refits every step per fold. | Full description → |
| Neural ODE Block | A network layer that evolves continuously in time instead of in fixed steps. | Full description → |
Custom
Your own Python, as a step in the graph.
| Custom Code | Runs your own Python as a step. Researcher plan. | Full description → |
Media
Stimuli — images, text, audio, video — lined up with the recording.
| Media Loadercore | Loads the images, audio or video shown during the recording, one per trial. | Full description → |
| Text Loadercore | Loads one caption per trial, for text decoding. | Full description → |
| Media Windower | Cuts a continuous stimulus stream into the same windows as the trials. | Full description → |
| Audio Features | Extracts sound features (loudness envelope, spectrum, MFCC) from audio stimuli. | Full description → |
| Media Embedder | Describes each stimulus with a pretrained model's embedding. | Full description → |
| Encoding Model (TRF) | Relates a stimulus to the brain response over time — predicting either from the other. | Full description → |
Metrics
Turning predictions into numbers.
| Accuracy Metriccore | Share of predictions that are right. | Full description → |
| Confusion Matrix Metriccore | Counts which class was predicted for which true class. | Full description → |
| F1 Score Metriccore | Balances precision and recall — better than accuracy for unequal class sizes. | Full description → |
| Log Loss Metriccore | How good the predicted probabilities are; punishes confident mistakes. | Full description → |
| Metrics Bundlecore | Collects several metric blocks into one input for a trainer. | Full description → |
| Metric Calculatorcore | Computes metrics from predictions and true labels, right on the canvas. | Full description → |
| Standard Metricscore | The usual set of metrics in one block — pick a preset. | Full description → |
| Precision Metriccore | Of the trials called positive, how many really were. | Full description → |
| Recall Metriccore | Of the real positives, how many were found. | Full description → |
| ROC AUC Metriccore | How well the model ranks positives above negatives, across all thresholds. | Full description → |
| R2 Score Metriccore | Regression: how much of the target's variation the model explains. | Full description → |
| MAE Metriccore | Regression: the average size of an error, in the target's units. | Full description → |
| MSE Metriccore | Regression: average squared error — large misses count much more. | Full description → |
| RMSE Metriccore | Regression: square root of MSE, back in the target's units. | Full description → |
| Median AE Metriccore | Regression: the typical error, not swayed by a few bad misses. | Full description → |
| MAPE Metriccore | Regression: the average error as a percentage of the true value. | Full description → |
| Explained Variance Metriccore | Regression: like R², but ignores a constant offset. | Full description → |
| Pearson Correlation Metriccore | Regression: whether predictions rise and fall with the truth. | Full description → |
Training
The blocks that actually train, evaluate and reuse models.
| BCILattice Trainercore | Trains a model on your data and reports how well it does. The standard trainer. | Full description → |
| Fine-Tuning Trainer | Continues training an already-trained model on new data, optionally freezing parts of it. | Full description → |
| DANN Trainer | Trains a model to work on a new domain (person, session) that has no labels. | Full description → |
| Contrastive Trainer | Pre-trains a model on unlabelled data, before any labels are used. | Full description → |
| Multi-Task Trainer | Trains one model to answer several questions at once. | Full description → |
| Class-Incremental Trainer | Adds new classes over time without forgetting the old ones. | Full description → |
| Domain-Incremental Trainer | Learns the same classes on new domains in turn, without forgetting earlier ones. | Full description → |
| Continual Learning Trainer | Trains on tasks one after another, protecting what was learned before. | Full description → |
| Distillation Trainer | Trains a small model to copy a large one. | Full description → |
| Trainer Trigger | Hands the trainer's training split to a block that must fit on training data only. | Full description → |
| Validation Schemecore | Plug into a trainer's Val/Eval input to cross-validate it (k-fold, leave-one-subject-out and more). | Full description → |
| Evaluation Protocolcore | Plug into a trainer's Val/Eval input to choose what trains and what tests: e.g. train on session 1, test on the other sessions. | Full description → |
| Nested CV | Cross-validation for when you also tune settings, so the tuning cannot inflate the score. | Full description → |
| Time-Resolved Decoder | Decodes at every time point, showing WHEN in the trial the classes differ. | Full description → |
| Split by Domaincore | Splits data by subject, session or rows into two named parts. | Full description → |
| Evaluate Modelcore | Scores a trained model on new data, without training it further. | Full description → |
| Load Trained Modelcore | Brings back a model trained in an earlier run — architecture and weights. | Full description → |
| Forward Passcore | Runs data through a model and returns what comes out (e.g. embeddings). | Full description → |
| Pseudo Labelcore | Turns a model's confident guesses on unlabelled trials into training labels. | Full description → |
| Federated Averaging | Trains one model across several sites without pooling their data. | Full description → |
| Episode Samplercore | Builds few-shot practice episodes: a handful of examples per class, plus test trials. | Full description → |
| Prototypical Adaptercore | Classifies by the nearest class average — works with very few examples. | Full description → |
| Meta-Learner | Learns a starting point that adapts quickly to a new person from a few trials. | Full description → |
| Zero-Shot Classifier | Recognises classes it never trained on, from a description of each class. | Full description → |
| Active Learning Samplercore | Suggests which unlabelled trials are most worth labelling next. | Full description → |
| Label Model | Combines several noisy labellers into one best-guess label. | Full description → |
| Architecture Search | Tries many network designs and keeps the best on held-out data. | Full description → |
| Rule Constraint Layer | Makes a model's outputs follow rules you state, e.g. a valid command sequence. | Full description → |
Multiple Models
Working with several models or runs side by side.
| Model Collectioncore | Trains several models on the same data in one run; each gets its own results row. | Full description → |
| Model Selector | Keeps only the best of several models, by a score you choose. | Full description → |
| Statistical Comparison | Tests whether model A is really better than model B, or the gap is noise. | Full description → |
| Run Aggregator | Puts many runs in one table with confidence intervals and paired differences. | Full description → |
| Decoding Curve Comparison | Finds when in time two decoding curves really differ. | Full description → |
Evaluation
Harder questions than 'what is the accuracy?'.
| Pseudo-Online Evaluator | Checks whether a decoder would work live: false alarms per minute, delay, bit rate. | Full description → |
| Neuro Explainer | Shows which channels, bands and time windows the model relied on, drawn on a head. | Full description → |
| Embed & Retrieve | Scores a model that ranks candidates (e.g. which image was seen) against chance. | Full description → |
| Open-Set Scorer | Lets a classifier answer 'none of these' for trials unlike anything it learned. | Full description → |
| Reconstruction Evaluator | Scores a reconstructed image against the real one, with side-by-side pictures. | Full description → |
| Uncertainty Estimatorcore | Estimates how sure the model is of each prediction, and whether that is calibrated. | Full description → |
| Conformal Predictor | Gives a set of likely classes per trial, with a guaranteed hit rate. | Full description → |
| Causal Connectivity | Estimates which channels drive which (Granger, transfer entropy), against a random baseline. | Full description → |
Domain Adaptation
Making a model work on a new person, session or site.
| CORAL Adaptercore | Aligns one domain's data statistics to another's, so a model transfers. | Full description → |
| Euclidean Alignmentcore | Puts each subject's data on a common reference — a simple, strong first step for cross-subject work. | Full description → |
| Feature Alignmentcore | Rescales features of one domain onto another (z-score, whitening, …). | Full description → |
| Subject Adaptationcore | Adapts a trained model to a new subject using a little of their data. | Full description → |
| Session Transfer | Carries a decoder from one session to the next. | Full description → |
| MMD Aligner | Measures how different two domains are, and reduces the difference. | Full description → |
| Transfer Component Analysis | Finds a shared space where two domains overlap. | Full description → |
| DANN Discriminator | The domain classifier a DANN Trainer trains against. | Full description → |
Preprocessing
Getting data into the shape the next block needs.
| Epochingcore | Cuts continuous rows into model samples, sized in seconds, Hz or rows (the same settings as Select Files). | Full description → |
| Epoch Featurescore | Turns epoched signals into one row of features per trial, for classical models. | Full description → |
| Projection Adaptercore | Reshapes signal images for an image model or into feature rows. | Full description → |
| Modality Fusioncore | Combines EEG and fNIRS, and shows whether combining actually helped. | Full description → |
DL Training
The parts of a deep-learning training loop, if you want to set them yourself.
| Adam Optimizer | Adjusts network weights during training. The usual default. | Full description → |
| AdamW Optimizer | Adam with a better form of weight decay; common for transformers. | Full description → |
| SGD Optimizer | Plain gradient descent, optionally with momentum. | Full description → |
| RMSprop Optimizer | An optimizer often used for recurrent networks. | Full description → |
| Adamax Optimizer | A variant of Adam that can be more stable. | Full description → |
| NAdam Optimizer | Adam with Nesterov momentum. | Full description → |
| CrossEntropy Loss | The usual training loss for choosing between classes. | Full description → |
| BCEWithLogits Loss | Training loss for yes/no or several independent labels; the numerically safe form. | Full description → |
| BCE Loss | Training loss for yes/no outcomes, on probabilities. | Full description → |
| Focal Loss | Focuses training on the hard trials; helps with rare classes. | Full description → |
| NLL Loss | Training loss on log-probabilities. | Full description → |
| MSE Loss | Training loss for continuous targets: squared error. | Full description → |
| L1 Loss | Training loss for continuous targets: absolute error, less swayed by outliers. | Full description → |
| Huber Loss | A mix of MSE and L1: squared for small errors, absolute for large ones. | Full description → |
| StepLR | Lowers the learning rate by a step every few epochs. | Full description → |
| ExponentialLR | Lowers the learning rate a little every epoch. | Full description → |
| CosineAnnealingLR | Lowers the learning rate smoothly over training. | Full description → |
| CosineWarmRestarts | Smooth learning-rate decreases, restarted periodically. | Full description → |
| OneCycleLR | Raises then lowers the learning rate over one run. | Full description → |
| CyclicLR | Moves the learning rate up and down between two limits. | Full description → |
| ReduceLROnPlateau | Lowers the learning rate when progress stalls. | Full description → |
| Train/Val Splitter | Sets the split the training loop checks itself against. | Full description → |
| PyTorch DataLoader | Feeds training data in batches. | Full description → |
Domain Incremental
Learning new domains one after another without forgetting old ones.
| Replay Buffer | Keeps a sample of past trials to mix into later training, so old tasks are not forgotten. | Full description → |
| EWC Regularizer | Protects the weights an earlier task depended on. | Full description → |
| Task Manager | Organises a sequence of domains: one output head each, or one shared. | Full description → |
| Domain Drift Detector | Measures how different two domains are. | Full description → |
| PackNet Freezer | Gives each task its own frozen share of the weights. | Full description → |
| Progressive Layers | Adds a new network column per domain, keeping the old ones frozen. | Full description → |
Graph Learning
Treating the electrodes as a graph.
| Channel Graph Builder | Builds a graph of how electrodes relate (correlation, coherence, distance). | Full description → |
| Graph Neural Encoder | A graph neural network over that electrode graph. | Full description → |
Generative Models
Generating synthetic trials.
| GAN Trainer | Generates synthetic trials with a GAN, and checks they are not copies of real ones. | Full description → |
| Diffusion Generator | Generates synthetic trials with a diffusion model, and checks they are not copies. | Full description → |
Reinforcement Learning
Learning a policy from feedback.
| RL Agent Trainer | Learns which action to take from feedback, trial by trial. | Full description → |
| Offline Policy Trainer | Learns a policy from logged past interactions. | Full description → |
| Multi-Agent Arena | Several policies with an arbiter; checks whether the group beats its best member. | Full description → |
Looking for a library block (an sklearn classifier, an MNE filter, a PyTorch layer)? Search the palette in the app, or see the Components reference. To turn another package into blocks, see Extensions.