To make clinical diagnoses more understandable, we present EEGlass, a visual interactive dashboard on top of the efficient xEEGNet classifier network architecture, which puts a special emphasis on explainability of the model and outcome. This dataset and model focuses on Alzheimer’s Disease (AD) and Frontotemporal Dementia (FTD); every step in the classification is presented in a visual and understandable way, on top of an integrated Electroencephalography (EEG) database viewer.
xEEGNet is a fully interpretable classifier with only
1. Bandpass filters (
2. Spatial mixing with learned weights
3. Batch norm + band power (square, average, log):
4. Linear classifier (
In short: fixed bandpass filters
PCA, t-SNE and UMAP projections, selectable in all embedding views (PCA is the default).
As an example workflow, a user can start with a new participant by selecting a typical point in the window embedding (R2) to see the predicted output. The Total Band Power panel immediately shows how typical this window's band powers are for the patient, and whether the (e.g. alpha) bands align more with the healthy or AD/FTD cohort (R3). The Scalp View and Band Activations panel make explicit which channels and bands drove the prediction (R1).
Inspecting the raw signal, the user can judge for themselves whether the window looks atypical, where, for each patient and time window individually, the topomap, band activations, and total band power panel indicate which channels and bandpowers are worth a closer look (the corresponding bandpass filter can also be applied to the time-series view), directing the user to the most interesting aspects and making comparison easy while keeping them in control.
Combination of all frontend and backend utilities, and baseline for xEEG dashboard development.
To install dependencies:
uv install
bun installIf uv version is newer, use:
uv sync
To start a development server:
uv run fastapi dev backend/app.py --reload-dir backend/
bun devTo format code:
ruff format
prettier -w .Also useful: ruff check --fix --unsafe-fixes.
Build and start the full stack:
docker compose up --buildThe compose setup starts three services:
dataset-downloader: downloads and extracts the configured dataset into thedatasetsDocker volume, then exits.backend: starts only afterdataset-downloadercompleted successfully. It serves the API on http://localhost:8000.frontend: serves the UI on http://localhost:3000.
The default dataset is large. docker-compose.yml also contains a commented smaller dataset URL (only 5 patients instead of 88) that can be swapped into DATASET_URL to test the download flow without downloading the full 4.2 GB dataset.
