This notebook is designed as a guide for student projects in Computational Neurosciecne Course of Neuromatch Academy.
The AJILE12 dataset is the largest publicly available human neurobehavioral dataset, recorded during passive clinical epilepsy monitoring. It includes synchronized intracranial neural recordings and upper body pose trajectories across 55 semi-continuous days of naturalistic movements, along with relevant metadata. The dataset was created to understand the neural basis of human movement in naturalistic scenarios and expand neuroscience research beyond constrained laboratory paradigms. It is available on The DANDI Archive in the Neurodata Without Borders (NWB) data standard and can be explored using a browser-based dashboard.
For scientific background, see the following papers from Bing Brunton lab who graciously has released the AJILE12 dandiset on DANDI:
Behavioral and Neural Variability of Naturalistic Arm Movements. eNeuro, 2021. https://doi.org/10.1523/ENEURO.0007-21.2021
Mining naturalistic human behaviors in long-term video and neural recordings. Journal of Neuroscience Methods, 2021. https://doi.org/10.1016/j.jneumeth.2021.109199
Annotated Joints in Long-term Electrocorticography (AJILE12) from human participants; the dataset was recorded opportunistically during passive clinical epilepsy monitoring. AJILE12 includes synchronized intracranial neural recordings and upper body pose trajectories across 55 semi-continuous days of naturalistic movements, along with relevant metadata, including thousands of wrist movement events and annotated behavioral states. Neural recordings are available at 500 Hz from at least 64 electrodes per participant, for a total of 1280 hours. Pose trajectories at 9 upper-body keypoints, including wrist, elbow, and shoulder joints, were sampled at 30 frames per second and estimated from 118 million video frames.
The following link provides some information on the dataset: AJILE Data Readme
The following paper provides a more through detail on data and acquisition:
AJILE12: Long-term naturalistic human intracranial neural recordings and pose. Scientific Data, 2022. https://doi.org/10.1038/s41597-022-01280-y
This code is meant to be run in a notebook. It checks if the notebook is running on a Google Colab GPU, and if it is, it clones the Neuromatch-AJILE12 repository from GitHub, changes the current working directory to the Neuromatch-AJILE12k directory, and installs the package in editable mode using pip. This is done to set up the environment for using the Neuromatch-AJILE12 package in a Google Colab notebook. If you wish to run this code on a local machine, you can comment the next cell and simply clone the git link below.
# @title Install dependencies
!pip install seaborn --quiet
!pip install statsmodels --quiet
# @title Clean install of AJILE12 on Google Colab;
# @markdown This is to prevent overwriting conflicts. You can run this once for each new run instance on colab.
%cd /
%rm -rf /content/Neuromatch-AJILE12/ # removes old version of AJILE12 if it exists
%cd /content # change to content directory where AJILE12 will be installed
/ [Errno 2] No such file or directory: '/content # change to content directory where AJILE12 will be installed' /
# @title If running on Google Colab, run this cell once, then restart the runtime and run the rest of the notebook
import os
if "COLAB_GPU" in os.environ:
!git clone https://github.com/neurovium/Neuromatch-AJILE12
%cd Neuromatch-AJILE12
%pip install -e . --quiet
Cloning into 'Neuromatch-AJILE12'... remote: Enumerating objects: 292, done. remote: Counting objects: 100% (292/292), done. remote: Compressing objects: 100% (197/197), done. remote: Total 292 (delta 130), reused 225 (delta 71), pack-reused 0 Receiving objects: 100% (292/292), 9.15 MiB | 11.18 MiB/s, done. Resolving deltas: 100% (130/130), done. /Neuromatch-AJILE12 Preparing metadata (setup.py) ... done ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 297.4/297.4 kB 12.4 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 131.9/131.9 kB 12.4 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 197.1/197.1 kB 19.3 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.3/10.3 MB 58.1 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 143.0/143.0 kB 13.3 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 55.0/55.0 kB 5.4 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.7/1.7 MB 13.7 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 63.2/63.2 kB 6.9 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 78.7 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42.8/42.8 kB 3.8 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 51.7/51.7 kB 5.6 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 112.2/112.2 kB 10.2 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 206.1/206.1 kB 17.2 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.3/3.3 MB 35.5 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 511.6/511.6 kB 29.2 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 MB 59.3 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.8/3.8 MB 16.6 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 682.3/682.3 kB 22.2 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 MB 37.4 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 48.4/48.4 kB 2.1 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 41.7/41.7 kB 2.4 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 58.4/58.4 kB 3.6 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 485.6/485.6 kB 25.9 MB/s eta 0:00:00 Preparing metadata (setup.py) ... done ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.7/6.7 MB 53.1 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.3/1.3 MB 34.3 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.4/3.4 MB 46.0 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 43.3 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 260.7/260.7 kB 20.9 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.7/11.7 MB 26.2 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.7/2.7 MB 62.0 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.4/3.4 MB 52.6 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 135.9/135.9 kB 3.6 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.0/11.0 MB 54.0 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 79.8/79.8 kB 4.6 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 81.2/81.2 MB 9.7 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 73.5/73.5 MB 9.1 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 58.8/58.8 MB 13.0 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.0/1.0 MB 58.0 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 271.6/271.6 kB 23.6 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.7/2.7 MB 83.3 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 107.5/107.5 kB 12.3 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.3/4.3 MB 73.4 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 283.7/283.7 kB 24.8 MB/s eta 0:00:00 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 66.4/66.4 kB 6.4 MB/s eta 0:00:00 Building wheel for asciitree (setup.py) ... done
AJILE12 is in NWB format. NWB is a Hierarchical Data Format (HDF) intended for scientific data. HDF is a platform-independent file format that can be used on many different computers, regardless of the operating system that machine is running. To know more about HDF, you can visit HDFGroup.
For more information about NWB, see the following papers.
Neurodata Without Borders: Creating a Common Data Format for Neurophysiology. Neuron, 2015. https://doi.org/10.1016/j.neuron.2015.10.025
The Neurodata Without Borders ecosystem for neurophysiological data science. eLife, 2022. https://doi.org/10.7554/eLife.78362
NWB documentation provides further information on the data structure and Python/Matlab APIs to access it.
# Numerical and plotting packages
import seaborn as sns
import numpy as np
import pandas as pd
import statsmodels.api as sm
import natsort
from scipy.signal import sosfiltfilt, butter, hilbert
# Libraries needed for this notebook to interact with the DANDI API
from pynwb import NWBHDF5IO
from dandi.dandiapi import DandiAPIClient
# Libraries needed for this notebook to interact with NWB events
from ndx_events import LabeledEvents, AnnotatedEventsTable, Events
# FSSpec is a library that allows us to read files from the cloud
import fsspec
# NWB is based on HF5, so we need this library to read NWB files
import h5py
The data is hosted on AMAZON AWS in S3 buckets. The following steps guide you to locate the data based on the dandiset information, setup streaming and reading the data from the cloud. Alternatively, you can access the data on DANDI. If you choose to directly download from DANDI, you will need a github account. The following code will be sufficient to programatically download/stream data (either for colab notebook or for your own personal machine).
# Subject and session number for loading dataThese parameters can be adjusted to analyze other electrodes, frequency bands, behavior types, participants, sessions, etc.
# Example:
# Select data from participant 1, session 3 only during times that the participant was eating.
# ECoG data will be converted to spectral power in the gamma band (80-100 Hz) for electrode 7, which is located over the motor cortex.
# We will also look at the vertical velocity of the right wrist.
sbj, session = 1, 3 # participant 1, session 3
behavior_type = 'Eat' # only analyze data during eating
neural_freq_range = [80, 100] # Frequency band of interest in Hz
ecog_ch_num = 7 # electrode number over motor cortex
keypoint_of_interest = 'R_Wrist' # right wrist movement
pose_direction = 'vertical' # 'vertical' or 'horizontal'
# You can read specific sections within individual data files directly from remote stores such as the DANDI Archive.
# This is especially useful for reading small pieces of data from a large NWB file stored remotely. First, you will need to get the location of the file.
# Now you can get the url of a particular NWB file using the dandiset ID and the path of that file within the dandiset.
with DandiAPIClient() as client:
asset = client.get_dandiset("000055").get_asset_by_path(
"sub-{0:>02d}/sub-{0:>02d}_ses-{1:.0f}_behavior+ecephys.nwb".format(sbj, session)
)
s3_path = asset.get_content_url(follow_redirects=1, strip_query=True)
# s3_path is the url of the file on the DANDI Archive. You can now use this url to read the file using pynwb.
# Note that this url path may change if the file is updated on the DANDI Archive. ALWAYS use the "dandiset ID" and "path" to the file within the dandiset to get the url.
s3_path
'https://dandiarchive.s3.amazonaws.com/blobs/e54/21f/e5421ff3-05f6-4d5e-a884-6d3e57a11951'
There are two methods for streaming NWB data from the cloud using PyNWB streaming. Currently, Colab is natively not compatible with ROS3 (read only S3); though you can use that ROS3 method for a local machine/server. If you wish to use ROS3 (instead of fsspec) on Colab, see the details in the local readme.txt file.
# You can also read specific sections within individual data files directly from remote stores such as the DANDI Archive.
from fsspec.implementations.cached import CachingFileSystem
# Note, caching is set once per access. If you want to change the cache location, you will need to restart the kernel.
fs = CachingFileSystem(
fs=fsspec.filesystem("http"),
cache_storage="nwb-cache", # Local folder for the cache
)
f = fs.open(s3_path, "rb")
file = h5py.File(f)
io = NWBHDF5IO(file=file, mode='r', load_namespaces=True)
nwbfile = io.read()
/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded."
Check NWB file and its content.
# You can now access the data in the file as you would normally do with NWB files.
nwbfile
root pynwb.file.NWBFile at 0x140485795389664 Fields: acquisition: { ECGL <class 'pynwb.base.TimeSeries'>, ECGR <class 'pynwb.base.TimeSeries'>, EOGL <class 'pynwb.base.TimeSeries'>, EOGR <class 'pynwb.base.TimeSeries'>, ElectricalSeries <class 'pynwb.ecephys.ElectricalSeries'> } devices: { ECG <class 'pynwb.device.Device'>, EOG <class 'pynwb.device.Device'>, GRID <class 'pynwb.device.Device'>, LAT <class 'pynwb.device.Device'>, LID <class 'pynwb.device.Device'>, LMT <class 'pynwb.device.Device'>, LPT <class 'pynwb.device.Device'>, LTO <class 'pynwb.device.Device'> } electrode_groups: { ECG <class 'pynwb.ecephys.ElectrodeGroup'>, EOG <class 'pynwb.ecephys.ElectrodeGroup'>, GRID <class 'pynwb.ecephys.ElectrodeGroup'>, LAT <class 'pynwb.ecephys.ElectrodeGroup'>, LID <class 'pynwb.ecephys.ElectrodeGroup'>, LMT <class 'pynwb.ecephys.ElectrodeGroup'>, LPT <class 'pynwb.ecephys.ElectrodeGroup'>, LTO <class 'pynwb.ecephys.ElectrodeGroup'> } electrodes: electrodes <class 'hdmf.common.table.DynamicTable'> epochs: epochs <class 'pynwb.epoch.TimeIntervals'> file_create_date: [datetime.datetime(2021, 6, 9, 5, 44, 48, 194751, tzinfo=tzoffset(None, -14400))] identifier: 4c571b6c-1028-476f-b0e1-e34aa27b3206 intervals: { epochs <class 'pynwb.epoch.TimeIntervals'>, reaches <class 'pynwb.epoch.TimeIntervals'> } processing: { behavior <class 'pynwb.base.ProcessingModule'> } session_description: no description session_id: 3 session_start_time: 2000-01-02 19:00:00-05:00 subject: subject pynwb.file.Subject at 0x140485795395616 Fields: species: Homo sapiens subject_id: 01 timestamps_reference_time: 2000-01-02 19:00:00-05:00
Get information about the electrodes.
# Information about the electrodes is stored in the nwbfile.electrodes table.
nwbfile.electrodes
electrodes hdmf.common.table.DynamicTable at 0x140485795392208 Fields: colnames: ['x' 'y' 'z' 'imp' 'location' 'filtering' 'group' 'group_name' 'standard_deviation' 'kurtosis' 'median_deviation' 'good' 'low_freq_R2' 'high_freq_R2'] columns: ( x <class 'hdmf.common.table.VectorData'>, y <class 'hdmf.common.table.VectorData'>, z <class 'hdmf.common.table.VectorData'>, imp <class 'hdmf.common.table.VectorData'>, location <class 'hdmf.common.table.VectorData'>, filtering <class 'hdmf.common.table.VectorData'>, group <class 'hdmf.common.table.VectorData'>, group_name <class 'hdmf.common.table.VectorData'>, standard_deviation <class 'hdmf.common.table.VectorData'>, kurtosis <class 'hdmf.common.table.VectorData'>, median_deviation <class 'hdmf.common.table.VectorData'>, good <class 'hdmf.common.table.VectorData'>, low_freq_R2 <class 'hdmf.common.table.VectorData'>, high_freq_R2 <class 'hdmf.common.table.VectorData'> ) description: metadata about extracellular electrodes id: id <class 'hdmf.common.table.ElementIdentifiers'>
# Specific information about the electrode of interest can be accessed using the electrode number.
nwbfile.electrodes[ecog_ch_num]
x | y | z | imp | location | filtering | group | group_name | standard_deviation | kurtosis | median_deviation | good | low_freq_R2 | high_freq_R2 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | ||||||||||||||
7 | -53.896469 | -29.059873 | 62.709102 | NaN | unknown | 250 Hz lowpass | GRID pynwb.ecephys.ElectrodeGroup at 0x1404857... | GRID | 45.422554 | 2.707063 | 37.685382 | True | 0.103835 | 0.055118 |
# assign the cloud path to a variable
from hdmf.common.table import DynamicTable
# assuming you have already loaded your NWB file into memory
electrodes = nwbfile.electrodes
print(electrodes)
electrodes hdmf.common.table.DynamicTable at 0x140485795392208 Fields: colnames: ['x' 'y' 'z' 'imp' 'location' 'filtering' 'group' 'group_name' 'standard_deviation' 'kurtosis' 'median_deviation' 'good' 'low_freq_R2' 'high_freq_R2'] columns: ( x <class 'hdmf.common.table.VectorData'>, y <class 'hdmf.common.table.VectorData'>, z <class 'hdmf.common.table.VectorData'>, imp <class 'hdmf.common.table.VectorData'>, location <class 'hdmf.common.table.VectorData'>, filtering <class 'hdmf.common.table.VectorData'>, group <class 'hdmf.common.table.VectorData'>, group_name <class 'hdmf.common.table.VectorData'>, standard_deviation <class 'hdmf.common.table.VectorData'>, kurtosis <class 'hdmf.common.table.VectorData'>, median_deviation <class 'hdmf.common.table.VectorData'>, good <class 'hdmf.common.table.VectorData'>, low_freq_R2 <class 'hdmf.common.table.VectorData'>, high_freq_R2 <class 'hdmf.common.table.VectorData'> ) description: metadata about extracellular electrodes id: id <class 'hdmf.common.table.ElementIdentifiers'>
It can get cumbersome to manually dissect an NWB file with print statements. There are a few ways to view an NWB graphically instead. A great way to do this in a Jupyter notebook is with NWBWidgets. Here, you can use NWBWidgets to view a file from a location on your machine. If you don't want to download a file just to view it, you can still use NWBWidgets to view it remotely. Check out Streaming an NWB File with fsspec to learn how to do this. Another way to explore an NWB file, that doesn't require Jupyter, is with HDFView
# Use the nwbwidgets package to visualize the NWB file, explore the data, and access the metadata.
from nwbwidgets import nwb2widget
nwb2widget(nwbfile)
VBox(children=(HBox(children=(Label(value='session_description:', layout=Layout(max_height='40px', max_width='…
Each subject has multiple experimental sessions. You can check that programatically.
# get the path to each subject's session behavior/ecephys files
with DandiAPIClient() as client:
paths = []
for file in client.get_dandiset("000055", "draft").get_assets_with_path_prefix(""):
paths.append(file.path)
paths = natsort.natsorted(paths)
# print(paths)
paths
['sub-01/sub-01_ses-3_behavior+ecephys.nwb', 'sub-01/sub-01_ses-4_behavior+ecephys.nwb', 'sub-01/sub-01_ses-5_behavior+ecephys.nwb', 'sub-01/sub-01_ses-7_behavior+ecephys.nwb', 'sub-02/sub-02_ses-3_behavior+ecephys.nwb', 'sub-02/sub-02_ses-4_behavior+ecephys.nwb', 'sub-02/sub-02_ses-5_behavior+ecephys.nwb', 'sub-02/sub-02_ses-6_behavior+ecephys.nwb', 'sub-03/sub-03_ses-3_behavior+ecephys.nwb', 'sub-03/sub-03_ses-4_behavior+ecephys.nwb', 'sub-03/sub-03_ses-5_behavior+ecephys.nwb', 'sub-03/sub-03_ses-6_behavior+ecephys.nwb', 'sub-04/sub-04_ses-3_behavior+ecephys.nwb', 'sub-04/sub-04_ses-4_behavior+ecephys.nwb', 'sub-04/sub-04_ses-5_behavior+ecephys.nwb', 'sub-04/sub-04_ses-6_behavior+ecephys.nwb', 'sub-04/sub-04_ses-7_behavior+ecephys.nwb', 'sub-05/sub-05_ses-3_behavior+ecephys.nwb', 'sub-05/sub-05_ses-4_behavior+ecephys.nwb', 'sub-05/sub-05_ses-7_behavior+ecephys.nwb', 'sub-06/sub-06_ses-3_behavior+ecephys.nwb', 'sub-06/sub-06_ses-4_behavior+ecephys.nwb', 'sub-06/sub-06_ses-5_behavior+ecephys.nwb', 'sub-06/sub-06_ses-6_behavior+ecephys.nwb', 'sub-06/sub-06_ses-7_behavior+ecephys.nwb', 'sub-07/sub-07_ses-3_behavior+ecephys.nwb', 'sub-07/sub-07_ses-4_behavior+ecephys.nwb', 'sub-07/sub-07_ses-5_behavior+ecephys.nwb', 'sub-07/sub-07_ses-6_behavior+ecephys.nwb', 'sub-07/sub-07_ses-7_behavior+ecephys.nwb', 'sub-08/sub-08_ses-3_behavior+ecephys.nwb', 'sub-08/sub-08_ses-4_behavior+ecephys.nwb', 'sub-08/sub-08_ses-5_behavior+ecephys.nwb', 'sub-08/sub-08_ses-6_behavior+ecephys.nwb', 'sub-08/sub-08_ses-7_behavior+ecephys.nwb', 'sub-09/sub-09_ses-3_behavior+ecephys.nwb', 'sub-09/sub-09_ses-4_behavior+ecephys.nwb', 'sub-09/sub-09_ses-5_behavior+ecephys.nwb', 'sub-09/sub-09_ses-6_behavior+ecephys.nwb', 'sub-09/sub-09_ses-7_behavior+ecephys.nwb', 'sub-10/sub-10_ses-3_behavior+ecephys.nwb', 'sub-10/sub-10_ses-4_behavior+ecephys.nwb', 'sub-10/sub-10_ses-5_behavior+ecephys.nwb', 'sub-10/sub-10_ses-6_behavior+ecephys.nwb', 'sub-10/sub-10_ses-7_behavior+ecephys.nwb', 'sub-11/sub-11_ses-3_behavior+ecephys.nwb', 'sub-11/sub-11_ses-4_behavior+ecephys.nwb', 'sub-11/sub-11_ses-5_behavior+ecephys.nwb', 'sub-11/sub-11_ses-6_behavior+ecephys.nwb', 'sub-11/sub-11_ses-7_behavior+ecephys.nwb', 'sub-12/sub-12_ses-3_behavior+ecephys.nwb', 'sub-12/sub-12_ses-4_behavior+ecephys.nwb', 'sub-12/sub-12_ses-5_behavior+ecephys.nwb', 'sub-12/sub-12_ses-6_behavior+ecephys.nwb', 'sub-12/sub-12_ses-7_behavior+ecephys.nwb']
Get the list of hemisphere implanted, and number of recording days for each participant and turn it to a dataframe.
from plot_utils import load_data_characteristics
rec_days, hemi, surf_tot, surf_good, depth_tot, depth_good, _, part, _, _ = load_data_characteristics(fs=fs)
ages = [
44, 20, 33, 19, 31, 37, 26, 33, 20, 34, 34, 22
] # not found in data files
gender = [
'M', 'M', 'M', 'F', 'F', 'M', 'M', 'F', 'M', 'M', 'F', 'M'
] # not found in data files
surf_elecs = [str(val_good)+' / '+str(val_tot) for val_good, val_tot in zip(surf_good, surf_tot)]
depth_elecs = [str(val_good)+' / '+str(val_tot) for val_good, val_tot in zip(depth_good, depth_tot)]
# Generate a dataframe with the data characteristics
pd.DataFrame(
[part, gender, ages, rec_days, hemi, surf_elecs, depth_elecs],
index=[
'Participant',
'Gender',
'Age (years)',
'Recording days used',
'Hemisphere implanted',
'Surface electrodes: # good / total',
'Depth electrodes: # good / total'
]
).T
0%| | 0/12 [00:00<?, ?it/s]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 8%|▊ | 1/12 [00:07<01:19, 7.23s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 17%|█▋ | 2/12 [00:12<01:01, 6.14s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 25%|██▌ | 3/12 [00:24<01:20, 8.94s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 33%|███▎ | 4/12 [00:31<01:03, 7.89s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 42%|████▏ | 5/12 [00:37<00:51, 7.41s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 50%|█████ | 6/12 [00:42<00:39, 6.58s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 58%|█████▊ | 7/12 [00:48<00:31, 6.30s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 67%|██████▋ | 8/12 [00:54<00:24, 6.18s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 75%|███████▌ | 9/12 [01:00<00:18, 6.16s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 83%|████████▎ | 10/12 [01:06<00:12, 6.18s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 92%|█████████▏| 11/12 [01:13<00:06, 6.33s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 100%|██████████| 12/12 [01:19<00:00, 6.66s/it]
Participant | Gender | Age (years) | Recording days used | Hemisphere implanted | Surface electrodes: # good / total | Depth electrodes: # good / total | |
---|---|---|---|---|---|---|---|
0 | P01 | M | 44 | 4 | L | 79 / 86 | 6 / 8 |
1 | P02 | M | 20 | 4 | R | 69 / 70 | 16 / 16 |
2 | P03 | M | 33 | 4 | L | 79 / 80 | 0 / 16 |
3 | P04 | F | 19 | 5 | R | 67 / 84 | 0 / 0 |
4 | P05 | F | 31 | 3 | R | 104 / 106 | 0 / 0 |
5 | P06 | M | 37 | 5 | L | 70 / 80 | 0 / 0 |
6 | P07 | M | 26 | 5 | R | 63 / 64 | 0 / 0 |
7 | P08 | F | 33 | 5 | R | 83 / 92 | 0 / 0 |
8 | P09 | M | 20 | 5 | L | 96 / 98 | 28 / 28 |
9 | P10 | M | 34 | 5 | L | 82 / 86 | 39 / 40 |
10 | P11 | F | 34 | 5 | L | 103 / 106 | 0 / 0 |
11 | P12 | M | 22 | 5 | L | 88 / 92 | 24 / 32 |
# Count activity and blocklist coarse label durations for each participant
from plot_utils import clabel_table_create
blocklist_labels = False # show blocklist (True) or activity (False) label durations
if blocklist_labels:
common_acts = [
'Blocklist (Data break)',
'Blocklist (Camera move/zoom)',
'Blocklist (Camera occluded)',
'Blocklist (Experiment)',
'Blocklist (Private time)',
'Blocklist (Tether/bandage)',
'Blocklist (Hands under blanket)',
'Blocklist (Clinical procedure)',
]
else:
common_acts = [
'Sleep/rest',
'Inactive',
'Talk',
'TV',
'Computer/phone',
'Eat',
'Other activity',
]
# Generate table
clabel_table_create(common_acts,fs=fs)
0%| | 0/12 [00:00<?, ?it/s]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 8%|▊ | 1/12 [00:22<04:07, 22.52s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 17%|█▋ | 2/12 [00:44<03:44, 22.41s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 25%|██▌ | 3/12 [01:34<05:12, 34.73s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 33%|███▎ | 4/12 [01:58<04:03, 30.48s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 42%|████▏ | 5/12 [02:12<02:53, 24.73s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 50%|█████ | 6/12 [02:38<02:30, 25.03s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 58%|█████▊ | 7/12 [03:02<02:02, 24.58s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 67%|██████▋ | 8/12 [03:26<01:37, 24.41s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 75%|███████▌ | 9/12 [03:53<01:16, 25.40s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 83%|████████▎ | 10/12 [04:23<00:53, 26.70s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 92%|█████████▏| 11/12 [04:55<00:28, 28.55s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 100%|██████████| 12/12 [05:21<00:00, 26.76s/it]
Sleep/rest | Inactive | Talk | TV | Computer/phone | Eat | Other activity | Total | |
---|---|---|---|---|---|---|---|---|
P01 | 29.2 | 1.9 | 15.6 | 22.0 | 7.8 | 2.6 | 0.8 | 75.7 |
P02 | 53.2 | 2.1 | 9.2 | 7.7 | 2.9 | 2.1 | 4.8 | 79.8 |
P03 | 11.9 | 0.3 | 21.8 | 1.9 | 19.8 | 3.5 | 0.9 | 51.1 |
P04 | 34.0 | 3.1 | 28.3 | 11.0 | 8.2 | 2.0 | 1.2 | 78.9 |
P05 | 35.4 | 2.8 | 8.9 | 12.1 | 5.8 | 1.0 | 1.2 | 62.5 |
P06 | 37.8 | 0.1 | 2.8 | 5.7 | 2.6 | 0.3 | 0.2 | 45.3 |
P07 | 46.8 | 0.3 | 5.0 | 0.3 | 1.9 | 0.4 | 0.2 | 53.6 |
P08 | 47.8 | 0.8 | 6.8 | 5.3 | 1.3 | 0.6 | 2.2 | 61.8 |
P09 | 87.3 | 8.1 | 3.8 | 0.0 | 0.0 | 0.6 | 1.9 | 100.6 |
P10 | 67.5 | 2.1 | 5.8 | 0.1 | 5.6 | 0.0 | 1.8 | 81.4 |
P11 | 36.0 | 1.4 | 6.6 | 0.0 | 0.1 | 0.0 | 0.8 | 44.9 |
P12 | 32.4 | 0.3 | 1.5 | 0.1 | 0.5 | 0.0 | 0.6 | 35.4 |
Note that the figure from the data paper combined the targeted (targeted=True) and untargeted (both first_val=True and first_val=False) behavior labels.
# load the function to plot the coarse labels
from plot_utils import prune_clabels, plot_clabels
# set parameters for plotting coarse labels
targ_tlims = [13, 17] # targeted window to plot (in hours)
targeted = False # plot targeted window (True) or whole day (False)
targ_label = 'Computer/phone' #behavior_type
# Load the data and coarse labels for the targeted window
with DandiAPIClient() as client:
asset = client.get_dandiset("000055", "draft").get_asset_by_path(
"sub-01/sub-01_ses-4_behavior+ecephys.nwb"
)
s3_path = asset.get_content_url(follow_redirects=1, strip_query=True)
f = fs.open(s3_path, "rb")
file = h5py.File(f)
with NWBHDF5IO(file=file, mode='r', load_namespaces=True) as io:
# with NWBHDF5IO(s3_path, mode='r', load_namespaces=True, driver='ros3') as io: #if you want to use ROS3 to stream data, use this line instead and comment the three lines above
nwb = io.read()
clabels_orig = nwb.intervals['epochs'].to_dataframe()
/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded."
# Select coarse labels based on user parameters
label_col_d = {
'Other activity': 0,
'Computer/phone': 1,
'Eat': 2,
'TV': 3,
'Talk': 4
}
clabels, uni_labs = prune_clabels(clabels_orig, targeted,
targ_tlims, None,
targ_label)
# Plot coarse labels over time
fig = plot_clabels(clabels, uni_labs, targeted, None, targ_tlims, targlab_colind=label_col_d[targ_label])
# check if pickle file exists
!ls data/
# you should get a lost of files in the data folder:
# P01_Postcentral.npy P05_Postcentral.npy P09_Postcentral.npy
# P01_Precentral.npy P05_Precentral.npy P09_Precentral.npy
# P01_Temporal_Inf.npy P05_Temporal_Inf.npy P09_Temporal_Inf.npy
# P01_Temporal_Mid.npy P05_Temporal_Mid.npy P09_Temporal_Mid.npy
# P02_Postcentral.npy P06_Postcentral.npy P10_Postcentral.npy
# P02_Precentral.npy P06_Precentral.npy P10_Precentral.npy
# P02_Temporal_Inf.npy P06_Temporal_Inf.npy P10_Temporal_Inf.npy
# P02_Temporal_Mid.npy P06_Temporal_Mid.npy P10_Temporal_Mid.npy
# P03_Postcentral.npy P07_Postcentral.npy P11_Postcentral.npy
# P03_Precentral.npy P07_Precentral.npy P11_Precentral.npy
# P03_Temporal_Inf.npy P07_Temporal_Inf.npy P11_Temporal_Inf.npy
# P03_Temporal_Mid.npy P07_Temporal_Mid.npy P11_Temporal_Mid.npy
# P04_Postcentral.npy P08_Postcentral.npy P12_Postcentral.npy
# P04_Precentral.npy P08_Precentral.npy P12_Precentral.npy
# P04_Temporal_Inf.npy P08_Temporal_Inf.npy P12_Temporal_Inf.npy
# P04_Temporal_Mid.npy P08_Temporal_Mid.npy P12_Temporal_Mid.npy
P01_Postcentral.npy P05_Postcentral.npy P09_Postcentral.npy P01_Precentral.npy P05_Precentral.npy P09_Precentral.npy P01_Temporal_Inf.npy P05_Temporal_Inf.npy P09_Temporal_Inf.npy P01_Temporal_Mid.npy P05_Temporal_Mid.npy P09_Temporal_Mid.npy P02_Postcentral.npy P06_Postcentral.npy P10_Postcentral.npy P02_Precentral.npy P06_Precentral.npy P10_Precentral.npy P02_Temporal_Inf.npy P06_Temporal_Inf.npy P10_Temporal_Inf.npy P02_Temporal_Mid.npy P06_Temporal_Mid.npy P10_Temporal_Mid.npy P03_Postcentral.npy P07_Postcentral.npy P11_Postcentral.npy P03_Precentral.npy P07_Precentral.npy P11_Precentral.npy P03_Temporal_Inf.npy P07_Temporal_Inf.npy P11_Temporal_Inf.npy P03_Temporal_Mid.npy P07_Temporal_Mid.npy P11_Temporal_Mid.npy P04_Postcentral.npy P08_Postcentral.npy P12_Postcentral.npy P04_Precentral.npy P08_Precentral.npy P12_Precentral.npy P04_Temporal_Inf.npy P08_Temporal_Inf.npy P12_Temporal_Inf.npy P04_Temporal_Mid.npy P08_Temporal_Mid.npy P12_Temporal_Mid.npy
If the pickle file does not exist, then run the following cell to create it (You may need to do this if you are running the notebook locally). If you are running the notebook on colab, "data" folder will be automatically installed.
# import requests
# from bs4 import BeautifulSoup
# url = 'https://github.com/neurovium/Neuromatch-AJILE12/tree/master/data'
# html = requests.get(url).content
# soup = BeautifulSoup(html, 'html.parser')
# files = [a['href'] for a in soup.select('a.js-navigation-open') if a['href'].endswith('.npy')]
# !mkdir -p data
# for file in files:
# filename = file.split('/')[-1]
# raw_url = f'https://raw.githubusercontent.com{file.replace("/blob", "")}'
# !wget -O data/{filename} {raw_url}
# Load data characteristics including the number of good and total ECoG electrodes,
# # hemisphere implanted, and number of recording days for each participant.
from plot_utils import (
load_data_characteristics,
plot_ecog_descript,
)
dat_chact = load_data_characteristics(fs=fs) # call argument to "fs" is specific to fsspec. "fs" was created as a cache earlier in the notebook.
n_elecs_good, n_elecs_tot = dat_chact[-2], dat_chact[-1]
part_ids = dat_chact[-3]
fig = plot_ecog_descript(n_elecs_tot, n_elecs_good, part_ids, nrows=2,fs=fs)
0%| | 0/12 [00:00<?, ?it/s]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 8%|▊ | 1/12 [00:00<00:09, 1.13it/s]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 17%|█▋ | 2/12 [00:01<00:08, 1.13it/s]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 25%|██▌ | 3/12 [00:14<00:54, 6.07s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 33%|███▎ | 4/12 [00:14<00:31, 3.99s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 42%|████▏ | 5/12 [00:15<00:19, 2.84s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 50%|█████ | 6/12 [00:16<00:13, 2.18s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 58%|█████▊ | 7/12 [00:17<00:08, 1.76s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 67%|██████▋ | 8/12 [00:18<00:05, 1.49s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 75%|███████▌ | 9/12 [00:19<00:04, 1.34s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 83%|████████▎ | 10/12 [00:20<00:02, 1.22s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 92%|█████████▏| 11/12 [00:21<00:01, 1.10s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 100%|██████████| 12/12 [00:21<00:00, 1.82s/it] 0%| | 0/12 [00:00<?, ?it/s]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 8%|▊ | 1/12 [00:01<00:11, 1.05s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 17%|█▋ | 2/12 [00:02<00:11, 1.16s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 25%|██▌ | 3/12 [00:11<00:43, 4.88s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 33%|███▎ | 4/12 [00:12<00:27, 3.42s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 42%|████▏ | 5/12 [00:13<00:18, 2.61s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 50%|█████ | 6/12 [00:14<00:12, 2.05s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 58%|█████▊ | 7/12 [00:15<00:08, 1.69s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 67%|██████▋ | 8/12 [00:16<00:05, 1.47s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 75%|███████▌ | 9/12 [00:17<00:03, 1.33s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 83%|████████▎ | 10/12 [00:19<00:02, 1.33s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 92%|█████████▏| 11/12 [00:20<00:01, 1.22s/it]/usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.4.0-alpha because version 1.6.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'core' version 2.2.5 because version 2.6.0-alpha is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." /usr/local/lib/python3.10/dist-packages/hdmf/spec/namespace.py:531: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.1.0 because version 0.3.0 is already loaded. warn("Ignoring cached namespace '%s' version %s because version %s is already loaded." 100%|██████████| 12/12 [00:21<00:00, 1.77s/it]
# Import modules
from plot_utils import plot_ecog_pow
# Define variables
rois_plt = [
'Precentral',
'Postcentral',
'Temporal_Mid',
'Temporal_Inf'
]
sbplt_titles = [
'Precentral\nGyrus',
'Postcentral\nGyrus',
'Middle Temporal\nGyrus',
'Inferior Temporal\nGyrus'
]
freq_range = [3, 125]
lp = 'data/'
# Plot power spectra
plot_ecog_pow(
lp,
rois_plt,
freq_range,
sbplt_titles,
part_id='P01',
)
/Neuromatch-AJILE12/plot_utils/pow.py:94: FutureWarning: The `ci` parameter is deprecated. Use `errorbar='sd'` for the same effect. sns.lineplot( /Neuromatch-AJILE12/plot_utils/pow.py:94: FutureWarning: The `ci` parameter is deprecated. Use `errorbar='sd'` for the same effect. sns.lineplot( /Neuromatch-AJILE12/plot_utils/pow.py:94: FutureWarning: The `ci` parameter is deprecated. Use `errorbar='sd'` for the same effect. sns.lineplot( /Neuromatch-AJILE12/plot_utils/pow.py:94: FutureWarning: The `ci` parameter is deprecated. Use `errorbar='sd'` for the same effect. sns.lineplot( /Neuromatch-AJILE12/plot_utils/pow.py:167: FutureWarning: The `ci` parameter is deprecated. Use `errorbar=None` for the same effect. sns.lineplot( /Neuromatch-AJILE12/plot_utils/pow.py:167: FutureWarning: The `ci` parameter is deprecated. Use `errorbar=None` for the same effect. sns.lineplot( /Neuromatch-AJILE12/plot_utils/pow.py:167: FutureWarning: The `ci` parameter is deprecated. Use `errorbar=None` for the same effect. sns.lineplot( /Neuromatch-AJILE12/plot_utils/pow.py:167: FutureWarning: The `ci` parameter is deprecated. Use `errorbar=None` for the same effect. sns.lineplot(
Identify the start and stop times when the behavioral label of interest occurs.
# get coarse labels from NWB file
min_len = 100 # (sec) only keep times when the given label appears for longer than this amount of time at once
coarse_labels = nwbfile.intervals['epochs'].to_dataframe()
coarse_labels = coarse_labels[coarse_labels['labels'].str.contains(behavior_type)]
coarse_labels['diff'] = coarse_labels['stop_time'] - coarse_labels['start_time']
coarse_labels = coarse_labels[coarse_labels['diff'] > min_len]
coarse_labels.reset_index(inplace=True, drop=True)
# Print the coarse labels as a table
coarse_labels
start_time | stop_time | labels | diff | |
---|---|---|---|---|
0 | 34176.400000 | 34297.766667 | Eat, Talk | 121.366667 |
1 | 44378.266667 | 44497.500000 | Eat, Talk | 119.233333 |
2 | 44497.533333 | 44615.700000 | Eat, Talk | 118.166667 |
3 | 44615.933333 | 44736.066667 | Eat, Talk | 120.133333 |
4 | 44736.200000 | 44976.433333 | Eat, Talk | 240.233333 |
5 | 44976.500000 | 45095.933333 | Eat, Talk | 119.433333 |
6 | 45096.066667 | 45216.766667 | Eat, Talk | 120.700000 |
7 | 45216.800000 | 45336.100000 | Eat, Talk | 119.300000 |
8 | 64655.533333 | 64776.133333 | Eat, Talk | 120.600000 |
9 | 64776.166667 | 64895.733333 | Eat, Talk | 119.566667 |
10 | 64895.833333 | 65023.033333 | Eat, Talk | 127.200000 |
11 | 65375.533333 | 65501.966667 | Eat, TV | 126.433333 |
12 | 70177.000000 | 70297.566667 | Eat, TV | 120.566667 |
13 | 70297.633333 | 70418.000000 | Eat, TV | 120.366667 |
14 | 70418.033333 | 70537.633333 | Eat, TV | 119.600000 |
15 | 70537.700000 | 70655.333333 | Eat, TV | 117.633333 |
16 | 70655.466667 | 70774.933333 | Eat, TV | 119.466667 |
17 | 70775.033333 | 70897.666667 | Eat, TV | 122.633333 |
18 | 70897.766667 | 71015.100000 | Eat, TV | 117.333333 |
19 | 71015.133333 | 71136.366667 | Eat, TV | 121.233333 |
20 | 71377.233333 | 71495.700000 | Eat, TV | 118.466667 |
21 | 71495.800000 | 71615.500000 | Eat, TV | 119.700000 |
22 | 71615.566667 | 71735.033333 | Eat, TV | 119.466667 |
Load the corresponding ECoG data for each behavioral label chunk and convert to spectral power via the Hilbert transform.
filter_order = 4 # order of butterworth filter used to bandpass filter the ECoG data
neural_data = nwbfile.acquisition['ElectricalSeries'].data
sampling_rate = nwbfile.acquisition['ElectricalSeries'].rate # (Hz) ECoG sampling rate
neural_power = []
for i in range(coarse_labels.shape[0]):
# Identify the start/end indices for each continuous chunk of the given behavioral label
start_t = int(coarse_labels.loc[i, 'start_time']*sampling_rate)
end_t = int(coarse_labels.loc[i, 'stop_time']*sampling_rate)
# Load data snippet
neur_data_curr = neural_data[start_t:end_t, ecog_ch_num]
# Bandpass filter
sos = butter(filter_order, neural_freq_range, btype='bandpass', output='sos', fs=sampling_rate)
neur_data_filtered = sosfiltfilt(sos, neur_data_curr)
# Apply Hilbert transform and convert to decibels
neur_pow = np.abs(hilbert(neur_data_filtered))
neur_pow = 10*np.log(neur_pow)
# Take the difference between neighboring timepoints
neural_power.append(np.diff(neur_pow))
Load the corresponding pose data for each behavioral label chunk and convert to vertical velocity.
keypoints = list(nwbfile.processing['behavior'].data_interfaces['Position'].spatial_series.keys())
assert keypoint_of_interest in keypoints
assert pose_direction in ['vertical', 'horizontal']
keypoint_series = nwbfile.processing['behavior'].data_interfaces['Position'].spatial_series[keypoint_of_interest]
sampling_rate_keypoint = keypoint_series.rate # Hz
keypoint_velocity = []
for i in range(coarse_labels.shape[0]):
start_t = int(coarse_labels.loc[i, 'start_time']*sampling_rate_keypoint)
end_t = int(coarse_labels.loc[i, 'stop_time']*sampling_rate_keypoint)
# Load pose data snippet
pose_data_curr = keypoint_series.data[start_t:end_t, :]
pose_mag_curr = pose_data_curr[:, 1 if pose_direction == 'vertical' else 0]
# Convert to velocity (delta X / delta t)
velocity_curr = np.diff(pose_mag_curr)/(1/sampling_rate_keypoint)
keypoint_velocity.append(velocity_curr)
assert len(neural_power) == len(keypoint_velocity)
measures_all = []
for i in range(len(neural_power)):
# Neural power for the given chunk
neur_curr = neural_power[i]
l_neur = len(neur_curr)
# Pose velocity for the given chunk
accel_curr = keypoint_velocity[i]
l_accel = len(accel_curr)
# Downsample neural data to match pose data
inds_split = np.array_split(np.arange(l_neur), l_accel)
for j, inds in enumerate(inds_split):
measures_all.append([neur_curr[inds].mean(), accel_curr[j]])
# Combine neural/pose data into a dataframe
df_measures_all = pd.DataFrame(np.asarray(measures_all), columns=['Neural power (dB)', 'Keypoint velocity (pixels/sec)'])
# Remove any NaN's
df_measures_all.dropna(inplace=True)
# Remove instances with velocity close to 0
df_measures_all = df_measures_all[(df_measures_all['Keypoint velocity (pixels/sec)'] > 100) |\
(df_measures_all['Keypoint velocity (pixels/sec)'] < -100)]
We find a small, positive correlation between neural power in the gamma band and right wrist vertical velocity.
df_measures_all.corr(method='pearson')
Neural power (dB) | Keypoint velocity (pixels/sec) | |
---|---|---|
Neural power (dB) | 1.000000 | 0.025379 |
Keypoint velocity (pixels/sec) | 0.025379 | 1.000000 |
Regression identifies a small, but significant (p<0.05) positive relationship between neural power in the gamma band and right wrist vertical velocity. This result makes sense because moving one's wrist upward takes more effort (fighting against gravity) than moving one's arm downward and thus may require slightly more cortical control.
X = df_measures_all['Keypoint velocity (pixels/sec)']
Y = df_measures_all['Neural power (dB)']
X = sm.add_constant(X)
rlm_model = sm.RLM(Y, X, M=sm.robust.norms.HuberT())
rlm_results = rlm_model.fit()
rlm_results.summary()
Dep. Variable: | Neural power (dB) | No. Observations: | 6447 |
---|---|---|---|
Model: | RLM | Df Residuals: | 6445 |
Method: | IRLS | Df Model: | 1 |
Norm: | HuberT | ||
Scale Est.: | mad | ||
Cov Type: | H1 | ||
Date: | Mon, 03 Jul 2023 | ||
Time: | 08:21:31 | ||
No. Iterations: | 16 |
coef | std err | z | P>|z| | [0.025 | 0.975] | |
---|---|---|---|---|---|---|
const | -0.0075 | 0.006 | -1.251 | 0.211 | -0.019 | 0.004 |
Keypoint velocity (pixels/sec) | 1.635e-05 | 6.62e-06 | 2.470 | 0.014 | 3.37e-06 | 2.93e-05 |
Most of the data appears clustered near 0 velocity. The positive relationship between neural power and right wrist vertical velocity is only barely visible. Additional steps that may help better understand the relationship between neural spectral power and wrist velocity include: removing pose data with abnormally high standard deviation due to noisy tracking, subtracting spectral power in nearby periods with minimal movement from ECoG spectral power, and manually reviewing pose trajectories to remove noisy tracking periods.
sns.regplot(data=df_measures_all, x='Keypoint velocity (pixels/sec)', y='Neural power (dB)', robust=True, ci=None)
<Axes: xlabel='Keypoint velocity (pixels/sec)', ylabel='Neural power (dB)'>