About
fNIRSAtlas is the largest open benchmark for fNIRS classification: 23 classification tasks from 19 public data collections, with 375 unique participants and 29,438 epochs. A single automated pipeline takes every task from raw data to evaluation, under both cross-subject and within-subject protocols.
Features
- Automatic download, preprocessing, and classification
- Nested cross-validation for evaluation and hyperparameter search
- Baselines: LDA, ANN, CNN, LSTM, EEGNet, DCN, MultiRocketHydra, fNIRS-T, fNIRSNet23, fNIRSNet24
- Run your own PyTorch or scikit-learn models
- Statistical comparison between models
- Processed data readable with no heavy dependencies
License
Code: MIT. Datasets keep their original licenses, listed below. Check them before use, some restrict derivatives or commercial use.
Code
Source, documentation, and examples are on GitHub.
Install
pip install "fnirsatlas[all]"
Run a suite
From a repository checkout. Downloads, processes, and classifies the data.
python scripts/run_all.py --suite ma
Load processed data
from fnirsatlas.io import fNIRSAtlasDataset
ds = fNIRSAtlasDataset("bnci")
X, y, groups, info = ds.as_tuple()
Datasets
The pipeline fetches data from its original sources. Raw data takes about 60 GB, processed data about 800 MB.
| Dataset | Suite | Subjects | Epochs | Channels | Conditions | Hz | Device | License |
|---|---|---|---|---|---|---|---|---|
| Buccino2016 | Motor | 15 | 1500 | 68 | 4 | 10.4 | NIRx NIRScout 8-16 | CC BY 4.0 |
| Bak2019 | Motor | 30 | 2250 | 40 | 3 | 13.3 | Shimadzu LIGHTNIRS | CC BY 4.0 |
| Ortega2020 | Motor | 14 | 356 | 48 | 3 | 12.5 | NIRx NIRScout | MIT |
| Luke2021 | Motor | 5 | 450 | 40 | 3 | 7.8 | NIRx NIRScout 16x24 | Other (open) |
| Cockx2023 | Motor | 24 | 1844 | 48 | 16 | 50 | Artinis Brite24 | CC BY-SA 4.0 |
| Guevara2024 | Motor | 20 | 395 | 44 | 2 | 50 | Artinis Brite MKII | CC BY 4.0 |
| Luke2024b | Motor | 10 | 1081 | 128 | 4 | 8.9 | NIRx NIRScout | CC BY 4.0 |
| Gao2024 | Motor | 12 | 1080 | 200 | 2 | 8.7 | NIRx NIRSport2 16x16 | CC0 |
| Bnci | Mental arithmetic | 8 | 348 | 104 | 2 | 10 | Hitachi ETG-4000 | CC BY-ND 4.0 |
| Shin2016 (ma) | Mental arithmetic | 29 | 1740 | 72 | 2 | 10 | NIRx NIRScout | GPL-3.0 |
| Shin2018b | Mental arithmetic | 12 | 720 | 18 | 2 | 10 | NIRx NIRScout | CC BY 4.0 |
| Shin2019 (ma) | Mental arithmetic | 18 | 1620 | 32 | 3 | 13.3 | Shimadzu LIGHTNIRS | CC BY 4.0 |
| Shin2016 (mi) | Motor imagery | 29 | 1740 | 72 | 2 | 10 | NIRx NIRScout | GPL-3.0 |
| Shin2019 (mi) | Motor imagery | 18 | 1620 | 32 | 3 | 13.3 | Shimadzu LIGHTNIRS | CC BY 4.0 |
| Yi2025 | Motor imagery | 18 | 5735 | 48 | 8 | 7.8 | NIRx NIRScout | CC BY 4.0 |
| Herff2014 | N-back | 10 | 300 | 16 | 3 | 25 | Artinis Oxymon Mark III | On request |
| Shin2018 (n-back) | N-back | 26 | 702 | 72 | 3 | 10 | NIRx NIRScout | CC BY 4.0 |
| Huang2021 | N-back | 68 | 1088 | 4 | 4 | 5.2 | ISS Imagent | CC BY 4.0 |
| Nemo (empe) | Emotion | 31 | 1203 | 48 | 4 | 50 | Artinis Brite24 | CC BY-NC 4.0 |
| Nemo (afim) | Emotion | 31 | 718 | 48 | 4 | 50 | Artinis Brite24 | CC BY-NC 4.0 |
| Shin2018 (wg) | Misc | 26 | 1560 | 72 | 2 | 10 | NIRx NIRScout | CC BY 4.0 |
| Shader2021 | Misc | 8 | 368 | 104 | 3 | 3.9 | NIRx NIRScout | CC BY 4.0 |
| Luke2024a | Misc | 17 | 1020 | 50 | 3 | 5.2 | NIRx NIRScoutX | CC BY 4.0 |
| Total | 375 | 29438 |
Subjects total counts unique participants. Epochs and conditions cover all recorded conditions. Herff2014: access granted automatically after signing a form.
Citation
@inproceedings{makela2026fnirsatlas,
title = {fNIRSAtlas: A Large-Scale Benchmark for Functional Near-Infrared Spectroscopy Classification},
author = {M{\"a}kel{\"a}, Kalle and Ruotsalo, Tuukka},
booktitle = {Advances in Neural Information Processing Systems, Datasets and Benchmarks Track},
year = {2026}
}