Skip to main content
Powered by ShareScore

Find research datasets worth reusing

Search datasets from major research repositories and use ShareScore to quickly assess how well each record supports discovery, access, and reuse.

10

datasets available to search

ShareScore release 0.7.1

Reset

Dataset results

10 results for “brain-machine interface”

Learn how ShareScore rates datasets ↗
zenodo40/100

Dataset for "Brain-machine interface learning is facilitated by specific patterning of distributed cortical feedback"

<p><strong>Dataset for the manuscript entitled: Brain-machine interface learning is facilitated by specific patterning of distributed cortical feedback.</strong></p> <p><strong><em>DOI of the manuscript:</em>&nbsp;<a href="https://doi.org/10.1126/sciadv.adh1328">10.1126/sciadv.adh1328</a></strong></p> <p><em><strong>Abstract of the manuscript:</strong></em></p> <p>Neuroprosthetics offer great hope for motor-impaired patients. One obstacle is that fine motor control requires near-instantaneous, rich somatosensory feedback. Such distributed feedback may be recreated in a brain-machine interface using distributed artificial stimulation across the cortical surface. Here, we hypothesized that neuronal stimulation must be contiguous in its spatiotemporal dynamics in order to be efficiently integrated by sensorimotor circuits. Using a closed-loop brain-machine interface, we trained head-fixed mice to control a virtual cursor by modulating the activity of motor cortex neurons. We provided artificial feedback in real time with distributed optogenetic stimulation patterns in the primary somatosensory cortex. Mice developed a specific motor strategy and succeeded to learn the task only when the optogenetic feedback pattern was spatially and temporally contiguous while it moved across the topography of the somatosensory cortex. These results reveal new properties of sensorimotor cortical integration and set new constraints on the design of neuroprosthetics.</p> <p><strong><em>Description of the variables in the data storage dictionary:</em></strong></p> <ol> <li>cursor_positions: sequence of the virtual cursor position over a session</li> <li>range_of_rewardable_cursor_position: range of cursor positions that can be rewarded. Upper threshold excluded. Lower threshold included. &nbsp;</li> <li>cursor_times: timing of the cursor positions provided by the cursor_positions data, in the same clock as spike and lick times.&nbsp;</li> <li>lick_times: timing of all recorded licks. &nbsp;</li> <li>reward_times:timing of the opening of the valve that releases the water reward.&nbsp;</li> <li>master_spike_times: time of the spikes of the master neurons.</li> <li>master_spike_shape: spike shape of each spike stored in master_spike_times. The shipe shapes are shown for 3s (30kHz sampling rate), for each 4 electrode of the corresponding tetrode.</li> <li>neighbor_spike_times': same as master_spike_times for neighbor neurons.</li> <li>neighbor_spike_shape': same as master_spike_shape for neighbor neurons. &nbsp;&nbsp;</li> </ol> <p><em><strong>General structure of the data set:</strong></em></p> <p>Each variable is a hierarchical tree of lists: [<em>Protocol</em>][<em>Mouse</em>][<em>Session</em>].&nbsp;</p> <p><em>Protocol</em> takes one of the following values:&nbsp;0: Bar feedback | 1: Full shuffle |&nbsp;2: No Feedback |&nbsp;5: Playback Structured Feedback |&nbsp;7: Spontaneous activity |&nbsp;8: Barrel Shuffle | 9: Frame shuffle.</p> <p><em>Mouse </em>and&nbsp;<em>Session</em> iterate through respectively the mice that were involved in the protocole, and the sessions, generally 5 in total.</p> <p><em><strong>Python code to load the hdf5 File</strong></em></p> <p>The code below relies on libraries available on a standard, mac anaconda install of the jupyter notebook system on the 25/03/2024. It provides with several nested lists of Numpy arrays.</p> <p>For instance, to access the series of cursor positions of Mouse M during session number S of Protocole P, index as follows:&nbsp;</p> <p>CP = cursor_positions_DATA[P][M][S]</p> <p># 1 - Load the libraries</p> <p>&nbsp; &nbsp; import h5py<br>&nbsp; &nbsp; import numpy as np<br>&nbsp; &nbsp; import pylab as pl</p> <p>&nbsp; &nbsp; filename = "./data.h5"<br>&nbsp; &nbsp; f = h5py.File(filename, "r")</p> <p># 2 - Extraction of the cursor position, time, lick and reward time, as well as the activity of the master and neighbor neurons.&nbsp;</p> <p>&nbsp; &nbsp; cursor_positions = f['cursor_positions']</p> <p>&nbsp; &nbsp; cursor_positions_DATA = []<br>&nbsp; &nbsp; for Protocole in range(9):<br>&nbsp; &nbsp; &nbsp; &nbsp; DATA_protocole = []<br>&nbsp; &nbsp; &nbsp; &nbsp; P = f[cursor_positions[Protocole][0]]<br>&nbsp; &nbsp; &nbsp; &nbsp; for Mouse in range(16): &nbsp; &nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # Loop through the mice, and collect&nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; M = f[P[Mouse][0]]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if not(list(M) == [0,1]) and (len(M) == 5):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DATA_mouse = []<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for Session in range(5):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; S = f[M[Session][0]]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bfr = np.array(S)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DATA_mouse.append(bfr)&nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DATA_protocole.append(DATA_mouse)<br>&nbsp; &nbsp; &nbsp; &nbsp; cursor_positions_DATA.append(DATA_protocole)</p> <p>&nbsp;</p> <p>&nbsp; &nbsp; cursor_times = f['cursor_times']</p> <p>&nbsp; &nbsp; cursor_times_DATA = []<br>&nbsp; &nbsp; for Protocole in range(9):<br>&nbsp; &nbsp; &nbsp; &nbsp; DATA_protocole = []<br>&nbsp; &nbsp; &nbsp; &nbsp; P = f[cursor_times[Protocole][0]]<br>&nbsp; &nbsp; &nbsp; &nbsp; for Mouse in range(16): &nbsp; &nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # Loop through the mice, and collect&nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; M = f[P[Mouse][0]]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if not(list(M) == [0,1]) and (len(M) == 5):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DATA_mouse = []<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for Session in range(5):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; S = f[M[Session][0]]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bfr = np.array(S)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DATA_mouse.append(bfr)&nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DATA_protocole.append(DATA_mouse)<br>&nbsp; &nbsp; &nbsp; &nbsp; cursor_times_DATA.append(DATA_protocole)</p> <p>&nbsp;</p> <p>&nbsp; &nbsp; lick_times = f['lick_times']</p> <p>&nbsp; &nbsp; lick_times_DATA = []<br>&nbsp; &nbsp; for Protocole in range(9):<br>&nbsp; &nbsp; &nbsp; &nbsp; DATA_protocole = []<br>&nbsp; &nbsp; &nbsp; &nbsp; P = f[lick_times[Protocole][0]]<br>&nbsp; &nbsp; &nbsp; &nbsp; for Mouse in range(16): &nbsp; &nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # Loop through the mice, and collect&nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; M = f[P[Mouse][0]]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if not(list(M) == [0,1]) and (len(M) == 5):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DATA_mouse = []<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for Session in range(5):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; S = f[M[Session][0]]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bfr = np.array(S)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DATA_mouse.append(bfr)&nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DATA_protocole.append(DATA_mouse)<br>&nbsp; &nbsp; &nbsp; &nbsp; lick_times_DATA.append(DATA_protocole)</p> <p>&nbsp;</p> <p>&nbsp; &nbsp; reward_times = f['reward_times']</p> <p>&nbsp; &nbsp; reward_times_DATA = []<br>&nbsp; &nbsp; for Protocole in range(9):<br>&nbsp; &nbsp; &nbsp; &nbsp; DATA_protocole = []<br>&nbsp; &nbsp; &nbsp; &nbsp; P = f[reward_times[Protocole][0]]<br>&nbsp; &nbsp; &nbsp; &nbsp; for Mouse in range(16): &nbsp; &nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # Loop through the mice, and collect&nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; M = f[P[Mouse][0]]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if not(list(M) == [0,1]) and (len(M) == 5):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DATA_mouse = []<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for Session in range(5):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; S = f[M[Session][0]]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bfr = np.array(S)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DATA_mouse.append(bfr)&nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DATA_protocole.append(DATA_mouse)<br>&nbsp; &nbsp; &nbsp; &nbsp; reward_times_DATA.append(DATA_protocole)</p> <p>&nbsp;</p> <p>&nbsp; &nbsp; master_spike_times = f['master_spike_times']</p> <p>&nbsp; &nbsp; master_spike_times_DATA = []<br>&nbsp; &nbsp; for Protocole in range(9):<br>&nbsp; &nbsp; &nbsp; &nbsp; DATA_protocole = []<br>&nbsp; &nbsp; &nbsp; &nbsp; P = f[master_spike_times[Protocole][0]]<br>&nbsp; &nbsp; &nbsp; &nbsp; for Mouse in range(16): &nbsp; &nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # Loop through the mice, and collect&nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; M = f[P[Mouse][0]]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if not(list(M) == [0,1]) and (len(M) == 5):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DATA_mouse = []<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for Session in range(5):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; S = f[M[Session][0]]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DATA_unit = []<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for Unit in range(len(S)):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if not(list(S) == [0,1]):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; N = f[S[Unit][0]]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bfr = np.array(N)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DATA_unit.append(bfr)&nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DATA_mouse.append(DATA_unit)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DATA_protocole.append(DATA_mouse)<br>&nbsp; &nbsp; &nbsp; &nbsp; master_spike_times_DATA.append(DATA_protocole)</p> <p>&nbsp;</p> <p>&nbsp; &nbsp; neighbor_spike_times = f['neighbor_spike_times']</p> <p>&nbsp; &nbsp; neighbor_spike_times_DATA = []<br>&nbsp; &nbsp; for Protocole in range(9):<br>&nbsp; &nbsp; &nbsp; &nbsp; DATA_protocole = []<br>&nbsp; &nbsp; &nbsp; &nbsp; P = f[neighbor_spike_times[Protocole][0]]<br>&nbsp; &nbsp; &nbsp; &nbsp; for Mouse in range(16): &nbsp; &nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # Loop through the mice, and collect&nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; M = f[P[Mouse][0]]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if not(list(M) == [0,1]) and (len(M) == 5):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DATA_mouse = []<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for Session in range(5):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; S = f[M[Session][0]]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DATA_unit = []<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for Unit in range(len(S)):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if not(list(S) == [0,1]):<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; N = f[S[Unit][0]]<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bfr = np.array(N)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DATA_unit.append(bfr)&nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DATA_mouse.append(DATA_unit)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DATA_protocole.append(DATA_mouse)<br>&nbsp; &nbsp; &nbsp; &nbsp; neighbor_spike_times_DATA.append(DATA_protocole)</p> <p>&nbsp;</p>

opencc-by-4.0May 2023View details →
dryad40/100

Data from: The impact of task context on predicting finger movements in a brain-machine interface

<p>A key factor in the clinical translation of brain-machine interfaces (BMIs) for restoring hand motor function will be their robustness to changes in a task. With functional electrical stimulation (FES) for example, the patient's own hand will be used to produce a wide range of forces in otherwise similar movements. To investigate the impact of task changes on BMI performance, we trained two rhesus macaques to control a virtual hand with their physical hand while we added springs to each finger group (index or middle-ring-small) or altered their wrist posture. Using simultaneously recorded intracortical neural activity, finger positions, and electromyography, we found that predicting finger kinematics and finger-related muscle activations across contexts led to significant increases in prediction error, especially for muscle activations. However, with respect to online BMI control of the virtual hand, changing either training task context or the hand's physical context during online control had little effect on online performance. We explain this dichotomy by showing that the structure of neural population activity remained similar in new contexts, which could allow for fast adjustment online. Additionally, we found that neural activity shifted trajectories proportional to the required muscle activation in new contexts, possibly explaining biased kinematic predictions and suggesting a feature that could help predict different magnitude muscle activations while producing similar kinematics.</p>

opencc-zeroJun 2023View details →
dryad40/100

Data from: The impact of task context on predicting finger movements in a brain-machine interface

Open the record for dataset details and reuse information.

publicJun 2023View details →
ClinicalTrials.gov36/100

Microelectrode Brain-Machine Interface for Individuals With Tetraplegia

ClinicalTrials.gov study NCT01364480. IPD Sharing: YES. Countries: 1. Publications: 7.

controlledIPD-YESFeb 2026View details →
ClinicalTrials.gov32/100

Cortical Recording and Stimulating Array Brain-Machine Interface

ClinicalTrials.gov study NCT01894802. IPD Sharing: YES. Countries: 1. Publications: 10.

controlledIPD-YESFeb 2026View details →
ClinicalTrials.gov32/100

EEG Brain-Machine Interface Control of an Upper-Limb Robotic Exoskeleton for Robot-Assisted Rehabilitation After Stroke

ClinicalTrials.gov study NCT05374486. IPD Sharing: NO. Countries: 1. Publications: 5.

closedIPD-NOFeb 2026View details →
ClinicalTrials.gov24/100

Brain-Machine Interface for Freezing of Gait

ClinicalTrials.gov study NCT06642519. IPD Sharing: UNDECIDED. Countries: 1. Publications: 0.

restrictedIPD-UNDECIDEDFeb 2026View details →
ClinicalTrials.gov24/100

Training With Brain-machine Interfaces, Visuo-tactile Feedback and Assisted Locomotion for Patients With Chronic Complete Paraplegia

ClinicalTrials.gov study NCT03992690. IPD Sharing: UNDECIDED. Countries: 1. Publications: 0.

restrictedIPD-UNDECIDEDFeb 2026View details →
ClinicalTrials.gov24/100

MindEx: A Novel, Multifocal, Cognitive Brain-Machine Interface System

ClinicalTrials.gov study NCT05936619. IPD Sharing: NO. Countries: 1. Publications: 0.

closedIPD-NOFeb 2026View details →
ClinicalTrials.gov24/100

Upper Extremity Rehabilitation Training Using Brain-Machine Interface Biofeedback in Stroke Patients With Hemiplegia

ClinicalTrials.gov study NCT04290377. IPD Sharing: NO. Countries: 1. Publications: 0.

closedIPD-NOFeb 2026View details →

ScienceDex guides

Understand access before you commit

These curated guides explain access requirements, typical timelines, costs, and reuse considerations for widely used research datasets.

Compare curated datasets

Allen Brain Atlas

Allen Brain Atlas is an Allen Institute collection of brain map atlases, datasets, APIs, and analysis tools covering mouse, human, and non-human primate brain resources.

allen-brain-atlas
neuroscienceopenDocumentation, web resources, and API references are available online.
Last verified 2026-04-30Open record

Annotated Behaviour and Observability Dataset (ABODe)

ABODe is a University of Edinburgh DataShare dataset for behavior classification in group-housed mice using home-cage video, identities, bounding boxes, ground-plate positions, and annotator labels.

abode-home-cage
behavioral-neuroscienceopenThe DataShare record exposes download links for annotations, documentation, license text, and the zipped per-snippet data directory.
Last verified 2026-04-30Open record

DANDI Archive for NWB datasets

DANDI is a BRAIN Initiative archive for publishing and sharing neurophysiology data, including electrophysiology, optophysiology, and behavioral data packaged as NWB and related standards.

dandi-nwb
electrophysiologyopenPublished Dandiset metadata and archive endpoints are available through the production DANDI API.
Last verified 2026-04-30Open record

International Brain Laboratory public data

The International Brain Laboratory public data releases expose standardized mouse decision-making experiments, including Neuropixels recordings, widefield calcium imaging, behavior, and session metadata accessed through the ONE API.

ibl
behavioral-neuroscienceopenPublic sessions can be searched and loaded from the IBL public data server through ONE.
Last verified 2026-04-29Open record

OpenNeuro

OpenNeuro is a free, open platform for sharing neuroimaging datasets, with public search, dataset pages, and download paths for web, S3, DataLad, and the OpenNeuro CLI.

openneuro
neuroscienceopenPublished datasets are available on demand over the internet.
Last verified 2026-04-29Open record