SpectraLite
SpectraLite is a 75,459-parameter network for resting-state EEG dementia screening. It reads 12 named spectral markers per electrode from any subset of 10โ20 electrodes and pools the electrodes with masked gated attention. It is one of the two model families in
S. Ghosh, R. N. Chaurasia, S. Sharma, and N. Sharma, "External Evaluation of EEG Dementia Classifiers and Their Referral Thresholds Across Independent Clinical Cohorts," manuscript submitted to IEEE Journal of Biomedical and Health Informatics, 2026.
Code: https://github.com/soinikghosh9/NeuroChronoGraph
Research use only. This is not a medical device and has not been validated prospectively. Sensitivity at 80% specificity was 0.32โ0.70 at the external cohorts, too low to rule out dementia.
Files
| Folder | Model | Parameters | Status |
|---|---|---|---|
spectralite/ |
SpectraLite, 12 features per electrode | 75,459 | reported model, fixed before any external cohort was scored |
spectralite16/ |
16-feature variant | 75,971 | exploratory: chosen after external scoring |
Each folder holds <task>/seed<s>/fold<k>.safetensors for the tasks control versus dementia
(CN_vs_dementia), Alzheimer's disease (CN_vs_AD), any impairment (CN_vs_impaired), and mild cognitive
impairment (CN_vs_MCI); three seeds (42, 43, 44); and five subject-grouped folds, plus config.json.
manifest.json lists every file and the training protocol; SHA256SUMS.txt holds checksums.
Use
import torch
from safetensors.torch import load_file
from src.models.spectral75k import SpectraLite, conformal_threshold # from the GitHub repository
def load(task, seed, fold):
m = SpectraLite(n_features=12)
m.load_state_dict(load_file(f"spectralite/{task}/seed{seed}/fold{fold}.safetensors"))
return m.eval()
models = [load("CN_vs_dementia", s, k) for s in (42, 43, 44) for k in range(5)]
# x: one subject's 24 preprocessed 4 s windows, (24, 19, 1024) at 256 Hz, each window and channel centred
# on its median and divided by its interquartile range; electrodes in the order
# Fp1 Fp2 F3 F4 C3 C4 P3 P4 O1 O2 F7 F8 T3 T4 T5 T6 Fz Cz Pz
with torch.no_grad():
score = torch.stack([m(x=x).softmax(-1)[:, 1].mean() for m in models]).mean().item()
# At a new clinic, set the referral threshold from k local healthy controls' scores (no patient labels):
tau = conformal_threshold(control_scores, target_specificity=0.80)
refer = score > tau
The preprocessing pipeline (band-pass, notch, average reference, ICA with ICLabel, 235 s truncation, 200 ยตV
window rejection, 24 windows per subject) is in the GitHub repository (experiments/126_harmonise_corpus.py,
experiments/127_extract_harmonised.py). The paper scores each external subject with the mean over the five
fold models of each seed and then over the three seeds.
Training
- Data: CAUEEG only (1,098 subjects after matching). No external cohort was used for training, model selection, or threshold selection.
- Recipe: AdamW, one-cycle schedule peaking at 3e-3, weight decay 1e-4, 25 epochs, batch size 128, inverse-class-weighted cross-entropy, final-epoch weights.
Results (subject-level AUC, three-seed ensembles)
| Task | Model | CAUEEG (out-of-fold) | ds004504 | P-ADIC | BrainLat |
|---|---|---|---|---|---|
| Control vs dementia | SpectraLite | 0.856 | 0.846 | 0.684 | 0.613 |
| Control vs dementia | 16-feature variant | 0.837 | 0.875 | 0.695 | 0.656 |
| Control vs AD | SpectraLite | 0.876 | 0.897 | 0.693 | 0.665 |
| Control vs AD | 16-feature variant | 0.856 | 0.909 | 0.697 | 0.705 |
Control versus MCI: SpectraLite 0.706 internally, but 0.455 at GENEEG, 0.521 at P-ADIC, and 0.603 at MISP. MCI was not detected externally.
The CAUEEG threshold gave specificity 0.33โ0.68 at the external cohorts. A split-conformal threshold from 20 local healthy controls gave mean specificity 0.79โ0.82 within each cohort.
Limitations
- External cohorts were small (48โ166 subjects), case-enriched, and clinically diagnosed without biomarker confirmation.
- The cohort explained 89% of the variance in external AUC across 26 models; expect performance to depend on the receiving clinic's population and severity mix.
- Mild Alzheimer's disease was detected near chance at one cohort (AUC 0.52).
License and data terms
The weights are released under CC BY-NC 4.0, for non-commercial research use. They were trained only on CAUEEG, whose terms allow use for academic and research purposes only; anyone using the weights must respect those terms. Please cite CAUEEG (M.-j. Kim, Y. C. Youn, and J. Paik, "Deep learning-based EEG analysis to classify normal, mild cognitive impairment, and dementia: Algorithms and dataset," NeuroImage 272:120054, 2023) and the paper above. The code in the GitHub repository is MIT-licensed.