← Back to tool|Methods & Citation

Cortex EEG Analysis Tool

Cortex estimates the aperiodic (1/f) exponent of resting-state EEG power spectra and places the recording in a pre-computed neurological disease landscape using UMAP. The tool is designed for researchers who want a quick, reproducible summary of spectral slope as a potential biomarker.

For research use only — not a clinical diagnosis tool.

Spectral Parameterization (specparam v2)

Aperiodic exponent extraction uses the specparam v2 library (formerly FOOOF; Donoghue et al., 2020).

Fitting parameters

Frequency range (default)
1–20 Hz
Aperiodic mode
fixed
Peak width limits
0.5–12.0 Hz
Min peak height
0.05
Max peaks
6

Quality gates

High quality
R² ≥ 0.90
Acceptable
R² ≥ 0.70
Low quality
R² < 0.70

PSD is computed via Welch method (2-second windows) and averaged across channels after outlier rejection (>10× median channel power). specparam receives linear power input.

UMAP Embedding

Reference recordings are embedded using UMAP (McInnes et al., 2018). New recordings are placed via umap.transform() without re-fitting the reference embedding.

Input featuresexponent, offset
n_neighbors15
min_dist0.1
metriceuclidean
n_components2
random_state42

Distance scoring uses aperiodic exponent alone (not UMAP Euclidean position), expressed in standard deviations from each population mean.

Reference Populations

2,051 recordings total. Populations below contribute to reference distance scoring.

PopulationnSource datasetDOIFit range
ALS96bigP3BCI — Mainsah et al. (PhysioNet)10.13026/0byy-ry861–20 Hz
HC (bigP3BCI)36bigP3BCI — Mainsah et al. (PhysioNet)10.13026/0byy-ry861–20 Hz
PD15BrainLat — Prado et al. (Synapse)10.1038/s41597-023-02806-81–20 Hz
HC (BrainLat)28BrainLat — Prado et al. (Synapse)10.1038/s41597-023-02806-81–20 Hz
AD35BrainLat — Prado et al. (Synapse)10.1038/s41597-023-02806-81–20 Hz
bvFTD17BrainLat — Prado et al. (Synapse)10.1038/s41597-023-02806-81–20 Hz
MDD51Mumtaz W (figshare)10.6084/m9.figshare.42441711–20 Hz
SZ14Olejarczyk & Jernajczyk (RepOD)10.18150/repod.01074411–20 Hz

Visual Reference Only

These populations appear in the UMAP scatter but are excluded from distance scoring (incompatible absolute PSD scale or insufficient offset data for calibration).

PopulationnSource datasetDOIFit range
HC (Dortmund)742Dortmund EEG corpus (internal)N/A — internal dataset1–20 Hz
HC (BI2013a)72Brain Invaders 2013a — Vaineau et al.10.5281/zenodo.26691871–20 Hz
FTD (OpenNeuro)23OpenNeuro ds004504 — Miltiadous et al.10.18112/openneuro.ds004504.v1.0.91–20 Hz
AD (OpenNeuro)36OpenNeuro ds004504 — Miltiadous et al.10.18112/openneuro.ds004504.v1.0.91–20 Hz
HC (OpenNeuro ds004504)29OpenNeuro ds004504 — Miltiadous et al.10.18112/openneuro.ds004504.v1.0.91–20 Hz
PD (OpenNeuro)12OpenNeuro ds003490 — Cavanagh JF10.18112/openneuro.ds003490.v1.1.01–20 Hz
HC (OpenNeuro ds003490)23OpenNeuro ds003490 — Cavanagh JF10.18112/openneuro.ds003490.v1.1.01–20 Hz
HC (HUSM)56Mumtaz W (figshare)10.6084/m9.figshare.42441711–20 Hz
HC (Olejarczyk)14Olejarczyk & Jernajczyk (RepOD)10.18150/repod.01074411–20 Hz
PD (ds004584)91OpenNeuro ds004584 — Singh et al.10.18112/openneuro.ds004584.v1.0.01–20 Hz
HC (ds004584)44OpenNeuro ds004584 — Singh et al.10.18112/openneuro.ds004584.v1.0.01–20 Hz
PD (ds007526)115OpenNeuro ds007526 — Katzir et al.10.18112/openneuro.ds007526.v1.0.21–20 Hz
HC (ds007526)28OpenNeuro ds007526 — Katzir et al.10.18112/openneuro.ds007526.v1.0.21–20 Hz
MDD (ds003478)44OpenNeuro ds003478 — Cavanagh JF10.18112/openneuro.ds003478.v1.1.01–20 Hz
HC (ds003478)196OpenNeuro ds003478 — Cavanagh JF10.18112/openneuro.ds003478.v1.1.01–20 Hz
PD (ds007020)92OpenNeuro ds007020 — Jamshidi et al.10.18112/openneuro.ds007020.v1.0.01–20 Hz
FEP (ds003944)50OpenNeuro ds003944 — Salisbury et al.10.18112/openneuro.ds003944.v1.0.11–20 Hz
HC (ds003944)32OpenNeuro ds003944 — Salisbury et al.10.18112/openneuro.ds003944.v1.0.11–20 Hz
FEP (ds003947)30OpenNeuro ds003947 — Salisbury et al.10.18112/openneuro.ds003947.v1.0.11–20 Hz
HC (ds003947)30OpenNeuro ds003947 — Salisbury et al.10.18112/openneuro.ds003947.v1.0.11–20 Hz

Citation

Tran, Khanh Dung, Rayo Lab Pte. Ltd. (2026). Cortex EEG Analysis Tool. https://cortex.therayo.com

Please also cite the specparam library: Donoghue T, et al. (2020). Parameterizing neural power spectra into periodic and aperiodic components. Nature Neuroscience, 23, 1655–1665. https://doi.org/10.1038/s41593-020-00744-x

Reference Manifest

Download the complete reference population statistics (mean exponent, SD, n per population) as a JSON file for independent verification.

Download reference manifest (JSON)

Python SDK

Single-file script — no package installation. Download and import directly.

Quick start

# Install dependency
pip install requests

# Analyze a single file
from cortex_eeg import analyze, analyze_batch, save_csv

result = analyze("sub-01.edf")
print(result["exponent"], result["fit_quality"])
# e.g. 1.23 high

# Analyze 40 files and export CSV
results = analyze_batch([f"sub-{i:02d}.edf" for i in range(1, 41)])
save_csv(results, "study_results.csv")

# Command-line usage
# python3 cortex_eeg.py sub-01.edf sub-02.edf --csv results.csv