NeuralFetch

Goal

NeuralFetch connects to 12 public repositories through a pluggable backend system and returns the same tidy events DataFrame regardless of the source.

DANDI DataLad Donders Dryad EEGDash Figshare HuggingFace OpenNeuro OSF PhysioNet Synapse Zenodo
↓ ↓ ↓ ↓ ↓
NeuralFetch
NeuralSet Events DataFrame

Quick install

pip install neuralfetch

Installing NeuralFetch automatically registers all curated studies in NeuralSet’s catalog — no extra imports needed.

import neuralset as ns

study = ns.Study(name="Gwilliams2022Neural", path="/data")  # MEG + speech, from OSF
study.download()
events = study.run()
events[["type", "start", "duration", "subject", "text"]].head()
type   start  duration              subject          text
Meg      0.0     396.0  Gwilliams2022Neural/A0001           NaN
Audio    0.0      42.3  Gwilliams2022Neural/A0001           NaN
Word     1.52     0.22  Gwilliams2022Neural/A0001         there
Word     1.74     0.18  Gwilliams2022Neural/A0001           was
Word     1.92     0.08  Gwilliams2022Neural/A0001             a

Explore Available Studies

Browse all studies from their declared StudyInfo metadata, filter by event type, and click any study for a ready-to-paste snippet and source link.

Devices
Events
138studies
27,895subjects
137,148timelines
52.0Kestimated hours
0.01 0.01 0.02 0.05 0.10 0.20 0.50 1.00 2.00 5.00 10.0 20.0 1.00 2.00 5.00 10.0 20.0 50.0 100 200 500 1.0K 2.0K 5.0K 10.0K Estimated hours per subject Number of subjects

Tutorials

Each tutorial walks through one building block of the NeuralFetch pipeline.

Fetch a curated study
Browse the catalog, download a sample dataset, and preview the events DataFrame.
study = ns.Study(name="Grootswagers2022HumanSample",
                    path="./data")
study.download()
events = study.run()
print(events[["type","start","duration"]].head())
Create or share a study
Wrap any local or remote dataset as a Study subclass and register it in the catalog.
class MyStudy(studies.Study):
 def iter_timelines(self):
     yield {"subject": "sub-01"}
 def _load_timeline_events(self, tl):
     return pd.DataFrame([...])