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
142studies
28,152subjects
164,283timelines
52.3Kestimated 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([...])