| | --- |
| | language: en |
| | license: mit |
| | tags: |
| | - eeg |
| | - epilepsy |
| | - medical |
| | - vision-transformer |
| | - deep-learning |
| | datasets: |
| | - private |
| | metrics: |
| | - accuracy |
| | - auroc |
| | library_name: pytorch |
| | --- |
| | |
| | # DeepEpilepsy: Deep Learning Models for Epilepsy Diagnosis from Routine EEG |
| |
|
| |  |
| |
|
| | ## Model Description |
| |
|
| | DeepEpilepsy is a collection of deep learning models trained to identify epilepsy from routine EEG recordings. These models complement traditional interpretation based on interictal epileptiform discharges by detecting novel EEG patterns relevant to epilepsy diagnosis. |
| |
|
| | **Paper**: [Improving diagnostic accuracy of routine EEG for epilepsy using deep learning](https://academic.oup.com/braincomms/advance-article/doi/10.1093/braincomms/fcaf319/8240832) (Brain Communications, 2025) |
| |
|
| | **Repository**: [GitLab Repository](https://gitlab.com/chum-epilepsy/dl_epilepsy_reeg) - See README for full documentation and preprocessing code |
| |
|
| | ## Model Variants |
| |
|
| | - **DeepEpilepsy-Large**: ViT1d_Conv1d_large_50 (flagship model, 50-point patches) |
| | - **DeepEpilepsy-Small**: ViT1d_Conv1d_small_200 (200-point patches) |
| | - Variants available for 10s and 30s EEG segments |
| |
|
| | Additional architectures: SimpleViT1d, ConvNeXt, InceptionTime, ShallowConvNet |
| |
|
| | ## Usage |
| |
|
| | ```python |
| | import torch |
| | from epileptology.ml.models.transformers import ViT1d |
| | from epileptology.utils.parsers import parse_config |
| | |
| | # Load configuration |
| | config = parse_config("proj_config.yaml") |
| | training_config = parse_config(config["data"]["sweep_config"]) |
| | |
| | # Initialize model (example: DeepEpilepsy-Large-30s) |
| | model_name = "ViT1d_Conv1d_large_50" |
| | SFREQ = 200 |
| | SEGMENT_DURATION = 30 |
| | model_config = training_config[model_name]["model"] |
| | model_config.update({ |
| | "n_class": 2, |
| | "n_timepoints": int(SFREQ * SEGMENT_DURATION) |
| | }) |
| | |
| | model = ViT1d(**model_config) |
| | model.load_state_dict(torch.load("path/to/model.pt")) |
| | model.eval() |
| | |
| | # Preprocess EEG (shape: n_channels, n_timepoints) |
| | def standard_scale(eeg, eps=1e-20): |
| | means = eeg.mean(dim=-1, keepdim=True) |
| | stds = eeg.std(dim=-1, keepdim=True) + eps |
| | return (eeg - means) / stds |
| | |
| | # Crop to segment duration and normalize |
| | eeg_segment = eeg_segment[..., :int(SFREQ * SEGMENT_DURATION)] |
| | eeg_segment = standard_scale(eeg_segment).unsqueeze(0) # Add batch dimension |
| | |
| | # Inference |
| | device = torch.device("cuda" if torch.cuda.is_available() else "cpu") |
| | model.to(device) |
| | with torch.no_grad(): |
| | predictions = model(eeg_segment.to(device)) |
| | probabilities = torch.softmax(predictions, dim=1) |
| | ``` |
| |
|
| | ## Training Data |
| |
|
| | - 948 routine EEG recordings from 846 patients |
| | - Tertiary care center (CHUM, Montreal) |
| | - Temporal split: Training/validation (Jan 2018 - Jul 2019), Testing (Jul - Sep 2019) |
| | - Median follow-up: 2.2 years (training), 1.7 years (testing) |
| |
|
| | ## Performance |
| |
|
| | **DeepEpilepsy (flagship model)**: |
| | - AUROC: 0.76 (95% CI: 0.69–0.83) |
| | - Combined with interictal discharges: 0.83 (95% CI: 0.77–0.89) |
| | - Outperforms interictal discharge-based interpretation (AUROC: 0.69) |
| |
|
| | ## Citation |
| |
|
| | ```bibtex |
| | @article{10.1093/braincomms/fcaf319, |
| | author = {Lemoine, Émile and Toffa, Denahin and Xu, An Qi and Tessier, Jean-Daniel and Jemel, Mezen and Lesage, Frédéric and Nguyen, Dang K and Bou Assi, Elie}, |
| | title = {Improving diagnostic accuracy of routine EEG for epilepsy using deep learning}, |
| | journal = {Brain Communications}, |
| | pages = {fcaf319}, |
| | year = {2025}, |
| | doi = {10.1093/braincomms/fcaf319}, |
| | url = {https://doi.org/10.1093/braincomms/fcaf319} |
| | } |
| | ``` |
| |
|
| | ## Authors |
| |
|
| | Émile Lemoine, Denahin Toffa, An Qi Xu, Jean-Daniel Tessier, Mezen Jemel, Frédéric Lesage, Dang Khoa Nguyen, Elie Bou Assi |
| |
|
| | ## Contact |
| |
|
| | For questions, please contact the corresponding author or submit an issue on the GitLab repository. |
| |
|
| |
|