#@title Data retrieval import os, requests fname = 'joystick_track.npz' url = "https://osf.io/6jncm/download" if not os.path.isfile(fname): try: r = requests.get(url) except requests.ConnectionError: print("!!! Failed to download data !!!") else: if r.status_code != requests.codes.ok: print("!!! Failed to download data !!!") else: with open(fname, "wb") as fid: fid.write(r.content)
# @title Install packages (`nilearn`, `nimare`. `duecredit`), import `matplotlib` and set defaults # install packages to visualize brains and electrode locations !pip install nilearn --quiet !pip install nimare --quiet !pip install duecredit --quiet from matplotlib import rcParams from matplotlib import pyplot as plt rcParams['figure.figsize'] = [20, 4] rcParams['font.size'] = 15 rcParams['axes.spines.top'] = False rcParams['axes.spines.right'] = False rcParams['figure.autolayout'] = True
# @title Data loading import numpy as np alldat = np.load(fname, allow_pickle=True)['dat'] # Select just one of the recordings here. This is subject 1, block 1. dat = alldat print(dat.keys())
dict_keys(['V', 'targetX', 'targetY', 'cursorX', 'cursorY', 'locs', 'hemisphere', 'lobe', 'gyrus', 'Brodmann_Area'])
This is one of multiple ECoG datasets from Miller 2019, recorded in clinical settings with a variety of tasks. Raw data here:
dat contain 4 sessions from 4 subjects, and was used in these papers:
Schalk, G., et al. "Decoding two-dimensional movement trajectories using electrocorticographic signals in humans." Journal of Neural Engineering 4.3 (2007): 264. doi: 10.1088/1741-2560/4/3/012
Schalk, Gerwin, et al. "Two-dimensional movement control using electrocorticographic signals in humans." Journal of Neural Engineering 5.1 (2008): 75. doi: 10.1088/1741-2560/5/1/008
From the dataset readme:
During the study, each patient was in a semi-recumbent position in a hospital bed about 1 m from a computer monitor. The patient used a joystick to maneuver a white cursor track a green target moving counter-clockwise in a circle of diameter 85% of monitor height ~1m away. The hand used to control the joystick was contralateral to the implanted electrode array.
We also know that subject 0 was implanted in the left temporal lobe, while subject 2 was implanted in the right frontal lobe.
Sample rate is always 1000Hz, and the ECoG data has been notch-filtered at 60, 120, 180, 240 and 250Hz, followed by z-scoring across the entire recording and conversion to float16 to minimize size.
dat['V']: continuous voltage data (time by channels)
dat['targetX']: position of the target on the screen
dat['targetY']: position of the target on the screen
dat['cursorX']: X position of the cursor controlled by the joystick
dat['cursorY']: X position of the cursor controlled by the joystick
dat['locs]: three-dimensional coordinates of the electrodes
from nilearn import plotting from nimare import utils plt.figure(figsize=(8, 8)) locs = dat['locs'] view = plotting.view_markers(utils.tal2mni(locs), marker_labels=['%d'%k for k in np.arange(locs.shape)], marker_color='purple', marker_size=5) view