THALis: CSP features and LDA readout
CSP → normalizer → LDA → smoothed probabilities, keep the fitted order straight. smoothing is nice until the hand feels late... need to look at that tradeoff
feature layer (eee5ef2): DualBandPairwiseCSP learns class-pair spatial filters separately in alpha and beta bands; the archive describes a 24-dimensional output. DualBandRealTimeCSPExtractor applies the learned transformation to incoming windows; SessionNormalizer handles feature normalization.
classification layer (66a52e6): CSPLDAClassifier produces class probabilities. OnlineClassifier adds exponential-moving-average smoothing. ClassificationResult carries the predicted class, probabilities and confidence.

MNE real-time decoding example

CSP/LDA training console and model files
- pipeline: raw EEG → preprocessing → windowing → CSP → LDA → smoothed probabilities. Files are
src/control/csp_features.py,src/control/lda_classifier.py, andsrc/main.py.
- review questions: how many classes/pairs and filters produce the 24 features? Which normalization parameters are learned on training data? Ensure CSP and normalization are fit within each training fold when evaluating. Record smoothing parameters separately because stable-looking output can come from temporal averaging rather than a better decoder. The log does not itself supply a held-out accuracy or latency result.