A large-scale MEG and EEG dataset for object recognition in naturalistic scenes
The 10 matches
- [1] § Methods › Experiment design › MEG experiment ↔ scripts/step3a-head_motion.py, lines 18–33 · score 0.78 · ImageNet03, ImageNet04, ImageNet02, ImageNet01, ses, NOD
- [2] § Technical Validation › Temporal dynamics of face representation ↔ src/decoding.py, lines 158–241 · score 0.62 · occipitotemporal sensors, cross validation, SVM, classification, decoding, accuracy
- [3] § Data Records › Raw data ↔ scripts/step1c-epoching.py, lines 19–42 · score 0.62 · detailed_events, NOD MEG, NOD EEG, metadata, BIDS, derivatives
- [4] § Methods › Data acquisition › Data preprocessing ↔ scripts/step2a-psd_plot.py, lines 89–113 · score 0.58 · Power Spectral Density, PSD, raw MEG
- [5] § Data Records › Preprocessed data ↔ scripts/step2b-ica_plot.py, lines 1–66 · score 0.57 · ImageNet_run, clean fif, ses, derivatives, preprocessed, raw
- [6] § Technical Validation › M/EEG-fMRI fusion analysis ↔ src/rsa/pre.py, lines 123–205 · score 0.55 · representational dissimilarity matrix, spatiotemporal, sensors, RDM, distance, correlation
- [7] § Methods › Data acquisition › Data preprocessing ↔ src/preprocessing/prep_meg.py, lines 106–139 · score 0.55 · bad channel detection, Maxwell, noisy, preprocessing, MEG
- [8] § Data Records › Preprocessed data ↔ scripts/step2a-psd_plot.py, lines 62–87 · score 0.55 · ImageNet_run, clean fif, ses, raw, sub, MEG
- [9] § Technical Validation › M/EEG-fMRI fusion analysis ↔ src/rsa/corr.py, lines 108–149 · score 0.51 · confidence interval, correlation coefficients, Spearman, RDM
- [10] § Data Records ↔ scripts/step1c-epoching.py, lines 19–42 · score 0.51 · OpenNeuro, ds005810, ds005811, BIDS, epoch, derivatives
Paper
Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
Python · 239 lines · 7 KB · MIT · 2 matches
- # %%
- from __future__ import annotations
- import os
- import os.path as op
- import sys
- from dataclasses import dataclass
- import mne
- import pandas as pd
- from wasabi import msg
- from src.epoching import Epoching
- from src.epoching import InfoExtraction
- sys.path.append(op.abspath('..'))
- # %%
- ROOT = '../../NOD-MEEG_upload'
- # NOTE: the event roots point to the per-subject ``sub-XX_events.csv`` files.
- # On OpenNeuro (MEG: ds005810, EEG: ds005811) these are published under
- # ``derivatives/detailed_events``. The BIDS ``*_events.tsv`` files do NOT carry
- # the image_id / response / class metadata that epoching relies on, so the
- # detailed_events CSVs are required here.
- MEG_ROOT, MEG_EVENT_ROOT, MEG_SAVE_ROOT = (
- f'{ROOT}/NOD-MEG/{path}' for path in [
- 'derivatives/preprocessed/raw',
- 'derivatives/detailed_events',
- 'derivatives/preprocessed/epochs',
- ]
- )
- EEG_ROOT, EEG_EVENT_ROOT, EEG_SAVE_ROOT = (
- f'{ROOT}/NOD-EEG/{path}' for path in [
- 'derivatives/preprocessed/raw',
- 'derivatives/detailed_events',
- 'derivatives/preprocessed/epochs',
- ]
- )
- EVENT_ID = 'stim_on'
- TMIN, TMAX = -0.1, 0.8
- LFREQ, HFREQ = 0.1, 40
- SFREQ = 200
- # %%
- class MakeEpochs:
- def __init__(
- self,
- roots: dict[str, str],
- event_roots: dict[str, str],
- event_id: str,
- tmin: float,
- tmax: float,
- lfreq: float,
- hfreq: float,
- sfreq: float,
- data_types: list[str],
- save_roots: dict,
- ) -> None:
- """make epochs based on the NOD-MEG& EEG cleaned data.
- Parameters
- ----------
- roots : dict
- Paths to the cleaned data. Keys are data types(meg, eeg), values are the corresponding paths
- event_roots : dict
- Paths to the event data. Keys are data types(meg, eeg), values are the corresponding paths
- event_id : str
- The event ID to be used for epoching, shoud be stored in the mne.BaseRaw object
- tmin : float
- The start time of the epoch
- tmax : float
- The end time of the epoch
- lfreq : float
- The low pass filter frequency
- hfreq : float
- The high pass filter frequency
- sfreq : float
- The sampling frequency
- data_types : list
- the data types of the database, default is ['meg', 'eeg']
- save_roots : dict
- Paths to save the epochs. Keys are data types(meg, eeg), values are the corresponding paths
- """
- self.roots = roots # {'meg': MEG_ROOT, 'eeg': EEG_ROOT}
- # {'meg': MEG_EVENT_ROOT, 'eeg': EEG_EVENT_ROOT}
- self.event_roots = event_roots
- self.event_id = event_id
- self.tmin = tmin
- self.tmax = tmax
- self.lfreq = lfreq
- self.hfreq = hfreq
- self.sfreq = sfreq
- self.data_types = data_types # ['meg', 'eeg']
- self.save_roots = save_root
- self.infos = {}
- for datatype in self.data_types:
- self.infos[datatype] = InfoExtraction(
- self.roots[datatype], self.event_roots[datatype],
- )
- def make_sub(
- self,
- sub: str,
- align_method: str,
- ) -> dict:
- """Create epochs for all data types for a subject
- Parameters
- ----------
- sub : str
- Subject ID
- align_method : str
- Method to align the data.
- Options are 'info_with_data', 'info_only' and 'maxwell
- Returns
- -------
- dict
- Keys are data types, values are the corresponding epochs
- """
- epochs = {}
- for datatype in self.data_types:
- info = self.infos[datatype]
- try:
- sub_fps = info.get_sub_fp(sub)
- except KeyError:
- msg.warn(f"Subject {sub} not found in {datatype} data.")
- continue
- epochor = Epoching(
- event_csv=sub_fps['events'],
- raw_paths=sub_fps['rawps'],
- tmin=self.tmin,
- tmax=self.tmax,
- lfreq=self.lfreq,
- hfreq=self.hfreq,
- sfreq=self.sfreq,
- datatype=datatype,
- event_id=self.event_id,
- )
- epoched = epochor.run(align_method=align_method)
- epochs[datatype] = epoched
- return epochs
- def run_all(
- self,
- align_method: str,
- ) -> None:
- """Create and save epochs for all data types for all subjects"""
- subs = set()
- for info in self.infos.values():
- subs.update(info.subs)
- for sub in sorted(subs):
- epochs = self.make_sub(sub, align_method)
- for datatype, epoch in epochs.items():
- self._save(epoch, sub, self.save_roots[datatype], datatype)
- def _save(
- self,
- epochs: mne.Epochs,
- sub: str,
- save_root: str,
- datatype: str,
- ) -> None:
- save_dir = os.path.join(save_root)
- os.makedirs(save_dir, exist_ok=True)
- epochs.save(f'{save_dir}/sub-{sub}_{datatype}_epo.fif', overwrite=True)
- def _repr_html_(self):
- root = (
- '<ul style="list-style-type:none; padding-left:0;">' +
- ''.join([f'<li>{k} : {v} </li>' for k, v in self.roots.items()]) +
- '</ul>'
- )
- event_root = (
- '<ul style="list-style-type:none; padding-left:0;">' +
- ''.join([f'<li>{k} : {v} </li>' for k, v in self.event_roots.items()]) +
- '</ul>'
- )
- nSub = (
- '<ul style="list-style-type:none; padding-left:0;">' +
- ''.join([f'<li>{k} : {len(v.subs)} </li>' for k, v in self.infos.items()]) +
- '</ul>'
- )
- save_root = (
- '<ul style="list-style-type:none; padding-left:0;">' +
- ''.join([f'<li>{k} : {v} </li>' for k, v in self.save_roots.items()]) +
- '</ul>'
- )
- to_show = {
- 'rawRoot': root,
- 'eventRoot': event_root,
- 'nSub': nSub,
- 'eventId': self.event_id,
- 'timeMin': self.tmin,
- 'timeMax': self.tmax,
- 'lowFreq': self.lfreq,
- 'highFreq': self.hfreq,
- 'sampleFreq': self.sfreq,
- 'dataTypes': self.data_types,
- 'saveRoot': save_root,
- }
- to_show_df = pd.DataFrame(
- list(to_show.items()), columns=[
- '', 'NOD_MEEG-Epochor',
- ],
- )
- # escape=False to allow HTML in 'rawRoot'
- html_output = to_show_df.to_html(index=False, escape=False)
- return html_output
- # %%
- roots = {'meg': MEG_ROOT, 'eeg': EEG_ROOT}
- event_roots = {'meg': MEG_EVENT_ROOT, 'eeg': EEG_EVENT_ROOT}
- data_types = ['meg', 'eeg']
- save_root = {'meg': MEG_SAVE_ROOT, 'eeg': EEG_SAVE_ROOT}
- epochor = MakeEpochs(
- roots=roots,
- event_roots=event_roots,
- event_id=EVENT_ID,
- tmin=TMIN,
- tmax=TMAX,
- lfreq=LFREQ,
- hfreq=HFREQ,
- sfreq=SFREQ,
- data_types=data_types,
- save_roots=save_root,
- )
- epochor.run_all(align_method='info_with_data')
- # %%
step1c-epoching.py at commit 0fdcd9d, under MIT · at the source
Overview
- Beijing Key Laboratory of Applied Experimental Psychology, Faculty of Psychology, Beijing Normal University,Beijing, 100875 China
- State Key Laboratory of Cognitive Neuroscience and Learning & IDG/McGovern Institute for Brain Research, Beijing Normal University,Beijing, 100875 China
- Department of Systems Science, Faculty of Arts and Sciences, Beijing Normal University,Zhuhai, 519087 China
- Department of Psychology, Faculty of Arts and Sciences, Beijing Normal University,Zhuhai, 519087 China
Abstract
The abstract is not reproduced here: the paper's license (none stated) does not allow it. Read it in the paper, at the publisher or on Europe PMC.
Repositories
Its files are read in the Code ↔ Paper reader above, with 10 matches between paragraphs and lines of code.
BNUCNL/NaturalVisionProject
caea6fcb03df89c8e3839bb62f33f0f5e87f3dfa, 31 December 2021Availability: 1 check, the latest on 26 September 2026: the link answers
- 26 September 2026: the link answers
42 files
- Analysis/
brain_inspired_nn.py , Python, 104 lines - Analysis/
compare_param/ , Python, 730 linesacc_diff.py - Analysis/
compare_param/ , Python, 106 linescompare_diff.py - Analysis/
model_utils.py , Python, 792 lines - Analysis/
preprocess/ , Jupyter, 775 linesInitialDataObservationCo des.ipynb - Analysis/
preprocess/ , Jupyter, 275 linesUnsupervisedAnalysisCode s.ipynb - Analysis/
preprocess/ , Python, 84 linesdata_inspection_for_deno ise.py - Analysis/
preprocess/ , Python, 422 linesdata_preprocess.py - Analysis/
preprocess/ , Python, 148 linesdrawtsne.py - Analysis/
preprocess/ , Python, 127 linessnr_prep.py - Analysis/
preprocess/ , Python, 285 linesvoxel_selection.py - Analysis/
voxel_decoding.py , Python, 135 lines - CoCo/
CoCoMEG.m , MATLAB, 339 lines - CoCo/
CoCoMRI.m , MATLAB, 314 lines - CoCo/
CoCoMRIMain.m , MATLAB, 27 lines - CoCo/
CoCoMegMain.m , MATLAB, 16 lines - CoCo/
CoCoMemory.m , MATLAB, 204 lines - CoCo/
confusion.m , MATLAB, 105 lines - HACS/
actionHacsDesignMatrix.m , MATLAB, 94 lines - HACS/
actionHacsMEG.m , MATLAB, 393 lines - HACS/
actionHacsMRI.m , MATLAB, 348 lines - HACS/
actionHacsMain.m , MATLAB, 13 lines - HACS/
confusion.m , MATLAB, 105 lines - HACS/
prepareStim/ , Python, 119 lineslength_width_ratio.py - HACS/
prepareStim/ , Python, 183 linesselect_stim.py - HACS/
prepareStim/ , Python, 92 linesvalidate_acc.py - ImageNet/
ImageNetDesignMatrix.m , MATLAB, 93 lines - ImageNet/
ImageNetMEG.m , MATLAB, 367 lines - ImageNet/
ImageNetMRI.m , MATLAB, 338 lines - ImageNet/
ImageNetMRIMain.m , MATLAB, 31 lines - ImageNet/
ImageNetMegMain.m , MATLAB, 16 lines - ImageNet/
ImageNetMemory.m , MATLAB, 242 lines - ImageNet/
ImageNetMemoryEvaluation , MATLAB, 49 lines.m - ImageNet/
ImageNetMemoryPrep.m , MATLAB, 174 lines - ImageNet/
RunBasedImageNetMEG.m , MATLAB, 9 lines - ImageNet/
confusion.m , MATLAB, 105 lines - Military/
militaryDesignMatrix.m , MATLAB, 42 lines - Military/
militaryMRI.m , MATLAB, 286 lines - Military/
militaryMain.m , MATLAB, 13 lines - Resting/
RestingMEG.m , MATLAB, 140 lines - Resting/
RestingMRI.m , MATLAB, 116 lines - README.md, Text, 2 lines
colehank/NOD-MEEG
0fdcd9d58c491bb3d36a53b24c1afe8f5607ab71, 15 July 2026Availability: 1 check, the latest on 26 September 2026: the link answers
- 26 September 2026: the link answers
34 files
- scripts/
config.py , Python, 24 lines - scripts/
step1a-MEG_preprocessing , Python, 74 lines.py - scripts/
step1b-EEG_preprocessing , Python, 76 lines.py - scripts/
step1c-epoching.py , Python, 239 lines, 2 matches - scripts/
step2a-psd_plot.py , Python, 191 lines, 2 matches - scripts/
step2b-ica_plot.py , Python, 305 lines, 1 match - scripts/
step3a-head_motion.py , Python, 579 lines, 1 match - scripts/
step3b-accuracy.py , Python, 197 lines - scripts/
step4-erp& , Python, 182 lineserf.py - scripts/
step5a-add_metadata.py , Python, 74 lines - scripts/
step5b-decoding.py , Python, 326 lines - scripts/
step6a-make_grand_data.p , Python, 83 linesy - scripts/
step6b-make_rdms.py , Python, 108 lines - scripts/
step6c-corr_rdm.py , Python, 422 lines - src/
__init__.py , Python, 1 line - src/
decoding.py , Python, 335 lines, 1 match - src/
epoching.py , Python, 344 lines - src/
preprocessing/ , Python, 316 linesICs_select_app.py - src/
preprocessing/ , Python, 1 line__init__.py - src/
preprocessing/ , Python, 326 linesdo_megnet.py - src/
preprocessing/ , Python, 168 linesinfo_extraction.py - src/
preprocessing/ , Python, 425 linesprep_eeg.py - src/
preprocessing/ , Python, 417 lines, 1 matchprep_meg.py - src/
preprocessing/ , Python, 176 linesprep_megnet.py - src/
rsa/ , Python, 1 line__init__.py - src/
rsa/ , Python, 735 lines, 1 matchcorr.py - src/
rsa/ , Python, 356 lines, 1 matchpre.py - src/
utils.py , Python, 65 lines - src/
viz/ , Python, 1 line__init__.py - src/
viz/ , Python, 85 linesplot_nod.py - src/
viz/ , Python, 88 linesplot_rdm.py - src/
viz/ , Python, 53 linesplot_topo.py - LICENSE, License, 21 lines
- README.md, Text, 15 lines
Code availability statement
The paper has a code availability statement. Its license (none stated) does not allow reproducing it here; in short, from what the harvester recognized in it:
- it points to the authors' code: BNUCNL/
NaturalVisionProject , colehank/NOD-MEEG
Read it in the paper: doi.org/10.1038/s41597-025-05174-7.
Tracing map
Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.
What the map holds:
- 2 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 73 scripts, each with its path and the digest of its content;
- 10 matches between paragraphs of the paper and lines of the code (method lexical-v1);
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
Datasets cited
- doi:10.18112/
openneuro.ds005810.v1.0. , at OpenNeuro; found in the references5 - doi:10.18112/
openneuro.ds005811.v1.0. , at OpenNeuro; found in the references8 - github.com/
nemardatasets/ , at github.com; found in DataCiteon005811
Versions
The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.
Version 1, 27 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 6 authors, 2 keywords, 5 MeSH terms, 2 funders, 57 references.
Cite
This paper
Zhang, G., Zhou, M., Zhen, S., Tang, S., Li, Z., & Zhen, Z. (2025). A large-scale MEG and EEG dataset for object recognition in naturalistic scenes. Scientific Data, 12(1), 857. https://
BibTeX
@article{zhang2025large,
author = {Zhang, Guohao and Zhou, Ming and Zhen, Shuyi and Tang, Shaohua and Li, Zheng and Zhen, Zonglei},
title = {{A large-scale MEG and EEG dataset for object recognition in naturalistic scenes}},
journal = {Scientific Data},
year = {2025},
volume = {12},
number = {1},
pages = {857},
publisher = {Nature Publishing Group},
issn = {2052-4463},
doi = {10.1038/
url = {https://
pmcid = {PMC12102372}
}
RIS
TY - JOUR
AU - Zhang, Guohao
AU - Zhou, Ming
AU - Zhen, Shuyi
AU - Tang, Shaohua
AU - Li, Zheng
AU - Zhen, Zonglei
TI - A large-scale MEG and EEG dataset for object recognition in naturalistic scenes
T2 - Scientific Data
J2 - Sci Data
PY - 2025
DA - 2025
VL - 12
IS - 1
SP - 857
SN - 2052-4463
PB - Nature Publishing Group
DO - 10.1038/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1038/
"type": "article-journal",
"title": "A large-scale MEG and EEG dataset for object recognition in naturalistic scenes",
"container-title": "Scientific Data",
"author": [
{
"family": "Zhang",
"given": "Guohao"
},
{
"family": "Zhou",
"given": "Ming"
},
{
"family": "Zhen",
"given": "Shuyi"
},
{
"family": "Tang",
"given": "Shaohua"
},
{
"family": "Li",
"given": "Zheng"
},
{
"family": "Zhen",
"given": "Zonglei"
}
],
"container-title-short":
"volume": "12",
"issue": "1",
"page": "857",
"DOI": "10.1038/
"PMCID": "PMC12102372",
"ISSN": "2052-4463",
"publisher": "Nature Publishing Group",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2025
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.1038/s41597-026-07350-9 [code]
- An open multi-center MEG-EEG dataset for studying conscious visual perception.Journal: Scientific dataIn common: PyPREP, MNE-BIDS, MNE-Python, 7 other tools, MEG, EEG, 3 references
- [2] doi:10.1038/s41597-026-07248-6 [code]
- A large-scale fMRI dataset for vision-language semantic association.Journal: Scientific dataIn common: OpenCV, h5py, Pillow, 7 other tools, fMRI, methods / tools, 5 references
- [3] doi:10.1097/j.pain.0000000000004044 [code]
- No effect of rhythmic visual stimulation on experimental pain perception.Journal: PainIn common: PyPREP, MNE-BIDS, ICLabel, 6 other tools, EEG, 3 references
- [4] doi:10.3758/s13428-026-02997-z [code]
- PyLossless: A non-destructive EEG processing pipeline.Journal: Behavior research methodsIn common: MNE-BIDS, ICLabel, MNE-Python, 4 other tools, methods / tools, EEG, 4 references
- [5] doi:10.1162/imag.a.1207 [code]
- Investigating the temporal dynamics and modeling of mid-level feature representations in humans.Journal: Imaging neuroscience (Cambridge, Mass.)In common: MNE-Python, OpenCV, Pillow, 7 other tools, EEG, 4 references
- [6] doi:10.1038/s42003-026-10169-0 [code]
- Shared representations in brains and models reveal a two-route cortical organization during scene perception.Journal: Communications biologyIn common: Plotly, h5py, Pillow, 8 other tools, 4 references
- [7] doi:10.1162/imag.a.1309 [code]
- Probing the content of semantic representations in body-selective regions.Journal: Imaging neuroscience (Cambridge, Mass.)In common: OpenCV, h5py, Pillow, 8 other tools, 4 references
- [8] doi:10.1093/cercor/bhag113 [code]
- Long-term reliability and stability of parameterized resting state EEG: evidence from a five-year follow-up.Journal: Cerebral cortex (New York, N.Y. : 1991)In common: PyPREP, MNE-BIDS, ICLabel, 7 other tools, methods / tools, EEG, 1 reference
- [9] doi:10.1038/s41593-026-02285-1 [code]
- Fixation duration on natural scenes is explained by memory encoding not processing demand.Journal: Nature neuroscienceIn common: MNE-Python, h5py, Pillow, 7 other tools, MEG, 4 references
- [10] doi:10.1007/s12021-026-09803-3 [code]
- NeuroFusion: A Unified Framework for Generalized Visual Stimulus Decoding from fMRI Across Datasets and Subjects.Journal: NeuroinformaticsIn common: MNE-BIDS, MNE-Python, h5py, 8 other tools, fMRI, methods / tools, 1 reference
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 2 repositories of the authors' code, each at its verified commit and with its license, 73 scripts, and 10 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:573b368a6c69e8a9…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
Request its removal
To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).
Discussion, reproductions, activity
Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
