From 566f8415babd46054c79257f7b80416eafea823b Mon Sep 17 00:00:00 2001 From: pauladkisson Date: Fri, 9 Aug 2024 13:22:15 -0400 Subject: [PATCH] added reanalysis notebook and readme --- 000458/AllenInstitute/README.md | 7 + 000458/AllenInstitute/environment.yaml | 11 + 000458/AllenInstitute/reanalysis.ipynb | 1438 ++++++++++++++++++++++++ 3 files changed, 1456 insertions(+) create mode 100644 000458/AllenInstitute/README.md create mode 100644 000458/AllenInstitute/environment.yaml create mode 100644 000458/AllenInstitute/reanalysis.ipynb diff --git a/000458/AllenInstitute/README.md b/000458/AllenInstitute/README.md new file mode 100644 index 0000000..c226598 --- /dev/null +++ b/000458/AllenInstitute/README.md @@ -0,0 +1,7 @@ +# Reanalysis of Dandiset 000458 + +This submission provides a walkthrough of basic reanalysis of Dandiset #000458: `reanalysis.ipynb` + +The notebook makes an approximate reproduction of Figure 4B from the 2023 _Neuron_ article [“Active cortical networks promote shunting fast synaptic inhibition _in vivo_”](https://doi.org/10.1016/j.neuron.2023.08.005) by Burman et al. + +It is meant as a companion to the upcoming blog post: ["Unraveling Anesthesia's Effect on Brain Activity"](https://github.com/dandi/dandi.github.io/pull/74) \ No newline at end of file diff --git a/000458/AllenInstitute/environment.yaml b/000458/AllenInstitute/environment.yaml new file mode 100644 index 0000000..6a32812 --- /dev/null +++ b/000458/AllenInstitute/environment.yaml @@ -0,0 +1,11 @@ +# run: conda env create --file environment.yaml +name: blog_000458_env +channels: + - conda-forge +dependencies: + - python==3.12 + - pip + - pip: + - dandi + - ipykernel + - matplotlib \ No newline at end of file diff --git a/000458/AllenInstitute/reanalysis.ipynb b/000458/AllenInstitute/reanalysis.ipynb new file mode 100644 index 0000000..f621dc6 --- /dev/null +++ b/000458/AllenInstitute/reanalysis.ipynb @@ -0,0 +1,1438 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Reanalyzing Dandiset #000458" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook works through some basic reanalysis of Dandiset #000458 to demonstrate how easy and straightforward the process is!\n", + "\n", + "We will aim to make an approximate reproduction of Figure 4B from the 2023 _Neuron_ article [“Active cortical networks promote shunting fast synaptic inhibition _in vivo_”](https://doi.org/10.1016/j.neuron.2023.08.005) by Burman et al." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from pynwb import NWBHDF5IO\n", + "from fsspec import filesystem\n", + "from h5py import File\n", + "from dandi.dandiapi import DandiAPIClient\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "def stream_nwbfile(DANDISET_ID, file_path):\n", + " '''Stream NWB file from DANDI archive.\n", + " \n", + " Parameters\n", + " ----------\n", + " DANDISET_ID : str\n", + " Dandiset ID\n", + " file_path : str\n", + " Path to NWB file in DANDI archive\n", + " \n", + " Returns\n", + " -------\n", + " nwbfile : NWBFile\n", + " NWB file\n", + " io : NWBHDF5IO\n", + " NWB IO object (for closing)\n", + " \n", + " Notes\n", + " -----\n", + " The io object must be closed after use.\n", + " '''\n", + " with DandiAPIClient() as client:\n", + " asset = client.get_dandiset(DANDISET_ID, 'draft').get_asset_by_path(file_path)\n", + " s3_url = asset.get_content_url(follow_redirects=1, strip_query=True)\n", + " fs = filesystem(\"http\")\n", + " file_system = fs.open(s3_url, \"rb\")\n", + " file = File(file_system, mode=\"r\")\n", + " io = NWBHDF5IO(file=file, load_namespaces=True)\n", + " nwbfile = io.read()\n", + " return nwbfile, io" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First we'll stream in the NWB file directly from DANDI using the function defined above." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/anaconda3/envs/blog_000458_env/lib/python3.12/site-packages/hdmf/utils.py:668: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.5.1 because version 1.8.0 is already loaded.\n", + " return func(args[0], **pargs)\n", + "/opt/anaconda3/envs/blog_000458_env/lib/python3.12/site-packages/hdmf/utils.py:668: UserWarning: Ignoring cached namespace 'core' version 2.5.0 because version 2.7.0 is already loaded.\n", + " return func(args[0], **pargs)\n", + "/opt/anaconda3/envs/blog_000458_env/lib/python3.12/site-packages/hdmf/utils.py:668: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.2.0 because version 0.5.0 is already loaded.\n", + " return func(args[0], **pargs)\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + "

root (NWBFile)

session_description: EEG and Neuropixels recording during wakefulness and isoflurane anesthesia
identifier: 586468-20210819-v001
session_start_time2021-08-19 11:36:39.948000-07:00
timestamps_reference_time2021-08-19 11:36:39.948000-07:00
file_create_date
02023-03-15 19:17:54.071879-07:00
experimenter('Claar, Leslie D', 'Rembado, Irene', 'Kuyat, Jacqulyn R', 'Russo, Simone', 'Marks, Lydia C', 'Olsen, Shawn R', 'Koch, Christof')
related_publications('https://doi.org/10.7554/eLife.84630.1',)
acquisition
ElectricalSeriesEEG
resolution: -1.0
comments: no comments
description: voltage measured over time and associated timestamps from EEG array
conversion: 1.9499999284744263e-07
offset: 0.0
unit: volts
data
timestamps
timestamps_unit: seconds
interval: 1
electrodes
description: EEG electrodes
table
description: metadata about extracellular electrodes
table\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
locationgroupgroup_nameis_data_validprobe_vertical_positionprobe_horizontal_positionxyzreference
id
0VISlEEG array pynwb.ecephys.ElectrodeGroup at 0x5116662832\\nFields:\\n description: 30-ch surface grid\\n device: EEG array pynwb.device.Device at 0x5107244336\\nFields:\\n description: H32 Mouse EEG (30-ch)\\n manufacturer: Neuronexus\\n\\n location: skull surface, both hemispheres\\nEEG arrayTrue-1-1377.058.082.0stainless steel skull screw, left CB
1VISpEEG array pynwb.ecephys.ElectrodeGroup at 0x5116662832\\nFields:\\n description: 30-ch surface grid\\n device: EEG array pynwb.device.Device at 0x5107244336\\nFields:\\n description: H32 Mouse EEG (30-ch)\\n manufacturer: Neuronexus\\n\\n location: skull surface, both hemispheres\\nEEG arrayTrue-1-1377.024.0141.0stainless steel skull screw, left CB
2RSPaglEEG array pynwb.ecephys.ElectrodeGroup at 0x5116662832\\nFields:\\n description: 30-ch surface grid\\n device: EEG array pynwb.device.Device at 0x5107244336\\nFields:\\n description: H32 Mouse EEG (30-ch)\\n manufacturer: Neuronexus\\n\\n location: skull surface, both hemispheres\\nEEG arrayTrue-1-1377.020.0188.0stainless steel skull screw, left CB
3VISalEEG array pynwb.ecephys.ElectrodeGroup at 0x5116662832\\nFields:\\n description: 30-ch surface grid\\n device: EEG array pynwb.device.Device at 0x5107244336\\nFields:\\n description: H32 Mouse EEG (30-ch)\\n manufacturer: Neuronexus\\n\\n location: skull surface, both hemispheres\\nEEG arrayTrue-1-1333.047.079.0stainless steel skull screw, left CB

... and 1178 more rows.

LFPprobeB
electrical_series
ElectricalSeriesprobeB
resolution: -1.0
comments: no comments
description: voltage measured over time and associated timestamps from NeuropixelsprobeB
conversion: 1.9499999999999999e-07
offset: 0.0
unit: volts
data
timestamps
timestamps_unit: seconds
interval: 1
electrodes
description: probeB electrodes
table
description: metadata about extracellular electrodes
table\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
locationgroupgroup_nameis_data_validprobe_vertical_positionprobe_horizontal_positionxyzreference
id
0VISlEEG array pynwb.ecephys.ElectrodeGroup at 0x5116662832\\nFields:\\n description: 30-ch surface grid\\n device: EEG array pynwb.device.Device at 0x5107244336\\nFields:\\n description: H32 Mouse EEG (30-ch)\\n manufacturer: Neuronexus\\n\\n location: skull surface, both hemispheres\\nEEG arrayTrue-1-1377.058.082.0stainless steel skull screw, left CB
1VISpEEG array pynwb.ecephys.ElectrodeGroup at 0x5116662832\\nFields:\\n description: 30-ch surface grid\\n device: EEG array pynwb.device.Device at 0x5107244336\\nFields:\\n description: H32 Mouse EEG (30-ch)\\n manufacturer: Neuronexus\\n\\n location: skull surface, both hemispheres\\nEEG arrayTrue-1-1377.024.0141.0stainless steel skull screw, left CB
2RSPaglEEG array pynwb.ecephys.ElectrodeGroup at 0x5116662832\\nFields:\\n description: 30-ch surface grid\\n device: EEG array pynwb.device.Device at 0x5107244336\\nFields:\\n description: H32 Mouse EEG (30-ch)\\n manufacturer: Neuronexus\\n\\n location: skull surface, both hemispheres\\nEEG arrayTrue-1-1377.020.0188.0stainless steel skull screw, left CB
3VISalEEG array pynwb.ecephys.ElectrodeGroup at 0x5116662832\\nFields:\\n description: 30-ch surface grid\\n device: EEG array pynwb.device.Device at 0x5107244336\\nFields:\\n description: H32 Mouse EEG (30-ch)\\n manufacturer: Neuronexus\\n\\n location: skull surface, both hemispheres\\nEEG arrayTrue-1-1333.047.079.0stainless steel skull screw, left CB

... and 1178 more rows.

LFPprobeC
electrical_series
ElectricalSeriesprobeC
resolution: -1.0
comments: no comments
description: voltage measured over time and associated timestamps from NeuropixelsprobeC
conversion: 1.9499999999999999e-07
offset: 0.0
unit: volts
data
timestamps
timestamps_unit: seconds
interval: 1
electrodes
description: probeC electrodes
table
description: metadata about extracellular electrodes
table\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
locationgroupgroup_nameis_data_validprobe_vertical_positionprobe_horizontal_positionxyzreference
id
0VISlEEG array pynwb.ecephys.ElectrodeGroup at 0x5116662832\\nFields:\\n description: 30-ch surface grid\\n device: EEG array pynwb.device.Device at 0x5107244336\\nFields:\\n description: H32 Mouse EEG (30-ch)\\n manufacturer: Neuronexus\\n\\n location: skull surface, both hemispheres\\nEEG arrayTrue-1-1377.058.082.0stainless steel skull screw, left CB
1VISpEEG array pynwb.ecephys.ElectrodeGroup at 0x5116662832\\nFields:\\n description: 30-ch surface grid\\n device: EEG array pynwb.device.Device at 0x5107244336\\nFields:\\n description: H32 Mouse EEG (30-ch)\\n manufacturer: Neuronexus\\n\\n location: skull surface, both hemispheres\\nEEG arrayTrue-1-1377.024.0141.0stainless steel skull screw, left CB
2RSPaglEEG array pynwb.ecephys.ElectrodeGroup at 0x5116662832\\nFields:\\n description: 30-ch surface grid\\n device: EEG array pynwb.device.Device at 0x5107244336\\nFields:\\n description: H32 Mouse EEG (30-ch)\\n manufacturer: Neuronexus\\n\\n location: skull surface, both hemispheres\\nEEG arrayTrue-1-1377.020.0188.0stainless steel skull screw, left CB
3VISalEEG array pynwb.ecephys.ElectrodeGroup at 0x5116662832\\nFields:\\n description: 30-ch surface grid\\n device: EEG array pynwb.device.Device at 0x5107244336\\nFields:\\n description: H32 Mouse EEG (30-ch)\\n manufacturer: Neuronexus\\n\\n location: skull surface, both hemispheres\\nEEG arrayTrue-1-1333.047.079.0stainless steel skull screw, left CB

... and 1178 more rows.

LFPprobeF
electrical_series
ElectricalSeriesprobeF
resolution: -1.0
comments: no comments
description: voltage measured over time and associated timestamps from NeuropixelsprobeF
conversion: 1.9499999999999999e-07
offset: 0.0
unit: volts
data
timestamps
timestamps_unit: seconds
interval: 1
electrodes
description: probeF electrodes
table
description: metadata about extracellular electrodes
table\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
locationgroupgroup_nameis_data_validprobe_vertical_positionprobe_horizontal_positionxyzreference
id
0VISlEEG array pynwb.ecephys.ElectrodeGroup at 0x5116662832\\nFields:\\n description: 30-ch surface grid\\n device: EEG array pynwb.device.Device at 0x5107244336\\nFields:\\n description: H32 Mouse EEG (30-ch)\\n manufacturer: Neuronexus\\n\\n location: skull surface, both hemispheres\\nEEG arrayTrue-1-1377.058.082.0stainless steel skull screw, left CB
1VISpEEG array pynwb.ecephys.ElectrodeGroup at 0x5116662832\\nFields:\\n description: 30-ch surface grid\\n device: EEG array pynwb.device.Device at 0x5107244336\\nFields:\\n description: H32 Mouse EEG (30-ch)\\n manufacturer: Neuronexus\\n\\n location: skull surface, both hemispheres\\nEEG arrayTrue-1-1377.024.0141.0stainless steel skull screw, left CB
2RSPaglEEG array pynwb.ecephys.ElectrodeGroup at 0x5116662832\\nFields:\\n description: 30-ch surface grid\\n device: EEG array pynwb.device.Device at 0x5107244336\\nFields:\\n description: H32 Mouse EEG (30-ch)\\n manufacturer: Neuronexus\\n\\n location: skull surface, both hemispheres\\nEEG arrayTrue-1-1377.020.0188.0stainless steel skull screw, left CB
3VISalEEG array pynwb.ecephys.ElectrodeGroup at 0x5116662832\\nFields:\\n description: 30-ch surface grid\\n device: EEG array pynwb.device.Device at 0x5107244336\\nFields:\\n description: H32 Mouse EEG (30-ch)\\n manufacturer: Neuronexus\\n\\n location: skull surface, both hemispheres\\nEEG arrayTrue-1-1333.047.079.0stainless steel skull screw, left CB

... and 1178 more rows.

keywords
processing
behavior
description: processed behavioral data
data_interfaces
BehavioralTimeSeries
time_series
running_speed
starting_time: 0.0
rate: 100.0
resolution: -1.0
comments: no comments
description: running speed data, computed from wheel angular velocity
conversion: 1.0
offset: 0.0
unit: cm/s
data
starting_time_unit: seconds
epoch_tagsset()
electrodes
description: metadata about extracellular electrodes
table\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
locationgroupgroup_nameis_data_validprobe_vertical_positionprobe_horizontal_positionxyzreference
id
0VISlEEG array pynwb.ecephys.ElectrodeGroup at 0x5116662832\\nFields:\\n description: 30-ch surface grid\\n device: EEG array pynwb.device.Device at 0x5107244336\\nFields:\\n description: H32 Mouse EEG (30-ch)\\n manufacturer: Neuronexus\\n\\n location: skull surface, both hemispheres\\nEEG arrayTrue-1-1377.058.082.0stainless steel skull screw, left CB
1VISpEEG array pynwb.ecephys.ElectrodeGroup at 0x5116662832\\nFields:\\n description: 30-ch surface grid\\n device: EEG array pynwb.device.Device at 0x5107244336\\nFields:\\n description: H32 Mouse EEG (30-ch)\\n manufacturer: Neuronexus\\n\\n location: skull surface, both hemispheres\\nEEG arrayTrue-1-1377.024.0141.0stainless steel skull screw, left CB
2RSPaglEEG array pynwb.ecephys.ElectrodeGroup at 0x5116662832\\nFields:\\n description: 30-ch surface grid\\n device: EEG array pynwb.device.Device at 0x5107244336\\nFields:\\n description: H32 Mouse EEG (30-ch)\\n manufacturer: Neuronexus\\n\\n location: skull surface, both hemispheres\\nEEG arrayTrue-1-1377.020.0188.0stainless steel skull screw, left CB
3VISalEEG array pynwb.ecephys.ElectrodeGroup at 0x5116662832\\nFields:\\n description: 30-ch surface grid\\n device: EEG array pynwb.device.Device at 0x5107244336\\nFields:\\n description: H32 Mouse EEG (30-ch)\\n manufacturer: Neuronexus\\n\\n location: skull surface, both hemispheres\\nEEG arrayTrue-1-1333.047.079.0stainless steel skull screw, left CB

... and 1178 more rows.

electrode_groups
EEG array
description: 30-ch surface grid
location: skull surface, both hemispheres
device
description: H32 Mouse EEG (30-ch)
manufacturer: Neuronexus
probeB
description: Neuropixels probe B
location: see electrode locations
device
description: Neuropixels 1.0 probe
manufacturer: imec
probeC
description: Neuropixels probe C
location: see electrode locations
device
description: Neuropixels 1.0 probe
manufacturer: imec
probeF
description: Neuropixels probe F
location: see electrode locations
device
description: Neuropixels 1.0 probe
manufacturer: imec
devices
EEG array
description: H32 Mouse EEG (30-ch)
manufacturer: Neuronexus
probeB
description: Neuropixels 1.0 probe
manufacturer: imec
probeC
description: Neuropixels 1.0 probe
manufacturer: imec
probeF
description: Neuropixels 1.0 probe
manufacturer: imec
intervals
epochs
description: experimental epochs
table\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
start_timestop_timetags
id
04219.1533394345.123339[isoflurane_induction]
14345.1333398598.253339[isoflurane_anesthesia]
trials
description: experimental trials
table\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
start_timestop_timestimulus_typestimulus_descriptionestim_currentestim_target_regionestim_target_depthbehavioral_epochis_runningis_valid
id
0316.24158316.24198electricalbiphasic35SSpsuperficialawakeTrueFalse
1319.77460319.77500electricalbiphasic25SSpsuperficialawakeTrueFalse
2323.83623323.83663electricalbiphasic35SSpsuperficialawakeTrueFalse
3328.21852328.21892electricalbiphasic45SSpsuperficialawakeTrueFalse

... and 1676 more rows.

subject
age: P114D
description: mouse586468
sex: F
species: Mus musculus
subject_id: 586468
strain: C57BL/6J
epochs
description: experimental epochs
table\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
start_timestop_timetags
id
04219.1533394345.123339[isoflurane_induction]
14345.1333398598.253339[isoflurane_anesthesia]
trials
description: experimental trials
table\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
start_timestop_timestimulus_typestimulus_descriptionestim_currentestim_target_regionestim_target_depthbehavioral_epochis_runningis_valid
id
0316.24158316.24198electricalbiphasic35SSpsuperficialawakeTrueFalse
1319.77460319.77500electricalbiphasic25SSpsuperficialawakeTrueFalse
2323.83623323.83663electricalbiphasic35SSpsuperficialawakeTrueFalse
3328.21852328.21892electricalbiphasic45SSpsuperficialawakeTrueFalse

... and 1676 more rows.

units
description: Autogenerated by NWBFile
waveform_unit: volts
table\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
locationxyzisi_violationsamplitude_cutoffpresence_ratiowaveform_durationspike_timeselectrodeselectrode_groupwaveform_mean
id
0PO277.0155.0174.00.0000000.0001160.990.521943[13.948908781955936, 14.025342049467497, 14.08450866518183, 14.346508439556317, 14.40147505888757, 15.157907740806195, 15.264774315442935, 15.292574291502547, 15.399874199099429, 15.815873840854351, 15.919473751637554, 16.557439868909, 16.672106436828585, 16.717306397903883, 16.832472965392924, 16.846506286641272, 16.936506209136326, 17.530272364471273, 17.585805649981182, 17.843338761535563, 17.94750533849742, 18.25463840733795, 18.445438243027468, 18.528671504683132, 18.594771447760024, 18.666438052709793, 19.900170323593898, 19.96233693672474, 20.29010332112989, 20.83520285170829, 20.839269514872854, 20.847802840857582, 20.861136162708704, 21.01513603008914, 21.2044358670704, 21.20656919856657, 21.21230252696256, 21.694168778662004, 21.9071019286244, 21.910001926126995, 22.07893511398072, 23.158834184007503, 24.000600125773303, 24.273066557800917, 24.32386651405369, 24.367733142943848, 24.593399615274052, 24.73466616028668, 25.045065892980745, 25.275965694137483, 25.32046565581561, 25.563565446466157, 25.674632017485976, 26.19956489876455, 26.739864433476555, 27.263830648920873, 27.318963934775297, 27.450063821876427, 27.476897132101783, 27.578397044693418, 27.697096942473024, 27.719896922838416, 27.73799690725133, 27.74513023444166, 27.751430229016364, 27.8252301654623, 28.007630008385604, 28.060129963174404, 28.074563284078238, 28.301163088937983, 28.55352953827503, 28.613696153128217, 28.757796029034182, 28.910229231097105, 29.019362470448527, 29.292228902131683, 29.370295501570013, 29.42639545325858, 29.514962043654634, 29.76129516485406, 29.866861740610318, 29.891828385776535, 30.019461609196412, 30.082794887989223, 30.18542813293817, 30.771827627950415, 30.993660770248425, 31.08982735409961, 31.112294001418775, 31.331527145955818, 31.499793667716915, 31.509293659535842, 31.525626978803473, 31.932426628481153, 32.40055955867393, 32.726992610893944, 32.734559271044475, 32.77742590079583, 32.80955920645704, 33.20759219701756, ...][30]probeB pynwb.ecephys.ElectrodeGroup at 0x5117639808\\nFields:\\n description: Neuropixels probe B\\n device: probeB pynwb.device.Device at 0x5107246064\\nFields:\\n description: Neuropixels 1.0 probe\\n manufacturer: imec\\n\\n location: see electrode locations\\n[0.0, -7.581600000000008e-07, -1.5613650000000026e-06, -1.209585000000007e-06, -1.627665000000006e-06, -2.146365000000003e-06, -2.9172000000000074e-06, -4.0743300000000005e-06, -4.554225000000002e-06, -4.843409999999999e-06, -4.798559999999998e-06, -6.520020000000001e-06, -7.053734999999999e-06, -7.378800000000003e-06, -8.180054999999993e-06, -1.0015980000000006e-05, -1.772081999999999e-05, -0.00010121474999999995, -0.0003016995149999997, -0.00045183001500000034, -0.0004665817650000005, -0.00039831441000000057, -0.00029283676499999997, -0.00019088881499999984, -0.00011054608500000008, -4.806925500000001e-05, 2.2171499999999986e-07, 3.677271000000001e-05, 6.423943499999991e-05, 8.472438000000013e-05, 0.00010087779000000002, 0.00011406641999999992, 0.00012570070499999994, 0.00013607879999999987, 0.00014391233999999983, 0.00014854573500000013, 0.00014807441999999989, 0.0001445653949999998, 0.00013819181999999978, 0.00013092728999999995, 0.0001222616849999999, 0.00011252553000000002, 0.00010271118000000013, 9.31210799999999e-05, 8.432794499999997e-05, 7.593124500000007e-05, 6.846235499999997e-05, 6.150163500000003e-05, 5.443015499999995e-05, 4.8212970000000005e-05, 4.335318000000003e-05, 3.8737334999999975e-05, 3.418798499999998e-05, 3.083768999999994e-05, 2.7585674999999994e-05, 2.5344345000000014e-05, 2.330367000000002e-05, 2.0358779999999998e-05, 1.7913479999999996e-05, 1.5610725000000005e-05, 1.4146080000000007e-05, 1.242364499999999e-05, 1.0507380000000006e-05, 9.032009999999998e-06, 8.557379999999999e-06, 7.40356499999999e-06, 6.008145000000002e-06, 5.167694999999993e-06, 4.653869999999998e-06, 3.314024999999998e-06, 2.9019899999999975e-06, 2.464019999999998e-06, 1.833584999999999e-06, 7.294949999999995e-07, 4.777499999999975e-07, 5.036849999999988e-07, 6.066450000000003e-07, -3.186300000000004e-07, -5.894850000000017e-07, -1.125735000000003e-06, -1.5247049999999997e-06, -7.963800000000012e-07]
1PO277.0155.0174.00.1231420.0201980.990.467002[13.70340899337225, 13.7073423233183, 13.739008962714706, 13.763942274576323, 13.767442271562231, 13.891208831645258, 13.914875477930991, 13.941742121461004, 14.002175402751163, 14.037975371921448, 14.113741973340439, 14.218608549699468, 14.32887512140826, 14.356875097295585, 14.442941689844588, 14.501641639294121, 14.572974911197605, 14.612741543618597, 14.650374844543364, 14.679174819741775, 14.718008119633168, 14.749741425638831, 14.765608078641662, 14.815974701934238, 14.85460800199786, 14.888474639499748, 15.06377448853732, 15.107907783864505, 15.128474432819871, 15.137274425241628, 15.379074217011691, 15.44870749037915, 15.492307452832279, 15.5401407449732, 15.708373933429698, 15.731707246669146, 15.871373793059604, 15.894640439689852, 15.897607103801704, 15.930173742423051, 15.988540358826356, 16.09840693087955, 16.1373068973802, 16.174273532212453, 16.20597350491346, 16.273773446526434, 16.314540078086225, 16.339573389861698, 16.4709066100952, 16.691239753684954, 16.848139618567984, 16.950906196735502, 17.060806102093352, 17.116539387431033, 17.143839363921188, 17.21907263246618, 17.437372444473624, 17.54500568511679, 17.60817229738643, 17.623772283952235, 17.631738943758307, 17.669072244941447, 17.707805544918926, 17.74500551288355, 17.82777210827436, 17.945805339961396, 17.982638641575136, 18.00143862538522, 18.025938604286637, 18.060938574145837, 18.104571869903623, 18.16847181487509, 18.1972384567689, 18.21940510434638, 18.444538243802526, 18.521704844015915, 18.565538139601472, 18.591638117125, 18.60800476969729, 18.64530473757577, 18.682038039275596, 18.698871358112626, 18.75200464568934, 18.841971234879793, 18.89360452374825, 19.054571051795904, 19.133570983763775, 19.214504247400043, 19.434970724208313, 19.450604044078773, 19.662203861856028, 19.806670404112936, 19.84390370538216, 20.08993682683996, 20.11877013534297, 20.18967007428631, 20.274136668213146, 20.52763644990756, 20.59540305821588, 20.660003002584574, ...][31]probeB pynwb.ecephys.ElectrodeGroup at 0x5117639808\\nFields:\\n description: Neuropixels probe B\\n device: probeB pynwb.device.Device at 0x5107246064\\nFields:\\n description: Neuropixels 1.0 probe\\n manufacturer: imec\\n\\n location: see electrode locations\\n[0.0, -2.934749999999986e-07, 9.301499999999807e-08, -3.002999999999969e-07, -7.361250000000007e-07, -7.881900000000028e-07, -5.902649999999983e-07, -1.0836150000000003e-06, -1.8743399999999969e-06, -2.751255000000001e-06, -4.595759999999991e-06, -8.93255999999999e-06, -1.6075994999999986e-05, -2.6192010000000078e-05, -3.660559500000001e-05, -4.699558500000006e-05, -5.9001929999999916e-05, -7.681985999999996e-05, -9.960015000000021e-05, -0.00011559697499999983, -0.0001168161149999999, -0.00010427937000000005, -8.451339000000001e-05, -6.178984499999997e-05, -3.9123825e-05, -1.8851234999999982e-05, -1.4517750000000017e-06, 1.4324895000000007e-05, 2.9244150000000058e-05, 4.199539499999999e-05, 5.386582499999996e-05, 6.243393000000005e-05, 6.811974000000003e-05, 7.039110000000006e-05, 7.058414999999993e-05, 6.900075000000008e-05, 6.590239499999997e-05, 6.253650000000001e-05, 5.8298955000000016e-05, 5.382857999999996e-05, 5.0058059999999944e-05, 4.580627999999999e-05, 4.116995999999995e-05, 3.754276500000007e-05, 3.381514500000003e-05, 3.088546500000009e-05, 2.825589000000009e-05, 2.5488840000000073e-05, 2.326876500000002e-05, 2.1360105000000016e-05, 1.910941500000003e-05, 1.6966169999999995e-05, 1.5231644999999991e-05, 1.3287494999999997e-05, 1.2197055e-05, 1.094847e-05, 9.160320000000008e-06, 7.68358499999999e-06, 6.7456350000000036e-06, 6.062744999999996e-06, 5.296005000000001e-06, 4.797584999999999e-06, 4.124834999999999e-06, 3.3746700000000005e-06, 3.025424999999999e-06, 1.9184100000000004e-06, 2.48118e-06, 2.391480000000001e-06, 2.3076300000000006e-06, 2.6295750000000006e-06, 2.423654999999999e-06, 2.80449e-06, 3.2543550000000016e-06, 3.4986899999999994e-06, 2.9427450000000004e-06, 3.28107e-06, 3.522870000000002e-06, 2.8372500000000002e-06, 2.3000249999999996e-06, 1.5282150000000005e-06, 8.308949999999983e-07, 8.681400000000008e-07]
2PO277.0154.0174.00.4963150.0038770.990.453266[13.67164235406193, 13.701442328399196, 13.718142314017712, 13.752808950830627, 13.800808909494663, 13.828442219031103, 13.84904220129107, 13.88844216736112, 14.009508729769323, 14.078342003825696, 14.09024199357782, 14.213375220872933, 14.23464186922547, 14.322275127091928, 14.346275106423946, 14.370941751848534, 14.39320839933987, 14.433608364548775, 14.63160819403788, 14.690174810268957, 14.747608094142663, 14.77884140057887, 14.805108044625626, 14.845708009662246, 14.862607995108533, 15.230674344808733, 15.374074221317471, 15.397840867517118, 15.399474199443887, 15.423507512080505, 15.434074169647545, 15.467840807235518, 15.490374121163882, 15.592974032808229, 15.60257402454107, 15.622907340364009, 15.68504062019025, 15.718607257950396, 15.761940553966554, 15.803607184751286, 15.863207133425817, 15.935073738203357, 15.974173704531779, 16.03434031938491, 16.059973630643697, 16.188940186248658, 16.240606808421774, 16.26490678749542, 16.73503971596591, 16.90210623876044, 16.92540621869523, 17.079606085903436, 17.097839403534863, 17.26123926282031, 17.328572538168487, 17.35090585226908, 17.458305759779876, 17.530939030563843, 17.590505645933717, 17.72573886280867, 17.73097219163526, 17.826338776175362, 17.84473876032996, 18.035205262973193, 18.207005115024856, 18.247371746929105, 18.505204858225113, 18.63213808224782, 18.653038064249415, 18.664571387650653, 18.735037993633796, 18.838737904330912, 18.844137899680618, 18.85400455785043, 18.871904542435573, 18.882204533565528, 18.93630448697644, 18.99250443857892, 19.001504430828447, 19.059637714099324, 19.18067094320287, 19.27720419340494, 19.388137431206246, 19.471137359729482, 19.490404009804365, 19.50460399757577, 19.61213723830508, 19.633937219531674, 19.64697054164111, 19.69947049642991, 19.7577037796147, 19.998970238510708, 20.024270216723153, 20.043536866798036, 20.051570193213365, 20.21500338580347, 20.30743663953632, 20.411469883279665, 20.427503202805667, 20.52643645094099, ...][32]probeB pynwb.ecephys.ElectrodeGroup at 0x5117639808\\nFields:\\n description: Neuropixels probe B\\n device: probeB pynwb.device.Device at 0x5107246064\\nFields:\\n description: Neuropixels 1.0 probe\\n manufacturer: imec\\n\\n location: see electrode locations\\n[0.0, -4.867200000000009e-07, -5.001750000000147e-07, -4.4557500000000605e-07, -2.9250000000001996e-08, 3.644550000000057e-07, 2.263949999999939e-07, 3.6230999999998837e-07, -1.148549999999977e-07, -4.410899999999991e-07, -3.724500000000841e-08, 2.3396099999999973e-06, 8.411714999999997e-06, 1.3861574999999994e-05, 1.4905605000000002e-05, 7.999485e-06, -1.2148110000000026e-05, -5.1901395000000004e-05, -0.00010150764000000007, -0.00013575510000000002, -0.00014171703000000007, -0.00012637111500000007, -9.846330000000007e-05, -6.839430000000003e-05, -3.9699464999999986e-05, -1.6092570000000014e-05, 2.8900950000000027e-06, 1.85874e-05, 3.2455995e-05, 4.438180499999996e-05, 5.420122499999999e-05, 6.0560760000000015e-05, 6.371390999999993e-05, 6.489249000000001e-05, 6.455806500000004e-05, 6.207454499999998e-05, 5.8311824999999934e-05, 5.372600999999995e-05, 4.955788499999997e-05, 4.5556875000000016e-05, 4.240157999999999e-05, 3.8491830000000046e-05, 3.529656e-05, 3.1799235000000035e-05, 2.9428229999999982e-05, 2.726743499999996e-05, 2.5306514999999976e-05, 2.359129499999998e-05, 2.063236500000002e-05, 1.8679049999999975e-05, 1.680627000000001e-05, 1.5072330000000003e-05, 1.3695824999999995e-05, 1.2866489999999994e-05, 1.175421e-05, 1.1109734999999997e-05, 1.0349625000000002e-05, 8.880885e-06, 8.29374e-06, 7.90647e-06, 7.2032999999999984e-06, 6.583199999999998e-06, 5.703944999999999e-06, 5.388045e-06, 5.780969999999999e-06, 5.7136950000000005e-06, 5.914545e-06, 5.358209999999998e-06, 4.3641e-06, 3.472754999999997e-06, 3.117659999999994e-06, 2.708354999999994e-06, 2.8126799999999984e-06, 2.0909849999999943e-06, 1.7659199999999968e-06, 1.6931850000000031e-06, 1.2949949999999991e-06, 1.1255399999999974e-06, 1.058460000000002e-06, 1.7023500000000018e-06, 2.516279999999997e-06, 3.0158700000000028e-06]
3PO277.0154.0174.00.3888850.0753530.990.549414[13.909042149621087, 14.225341877234314, 14.316908465046879, 14.372775083603074, 14.494841645150075, 15.23494100780107, 15.364807562630972, 15.404007528873251, 15.71820725829491, 15.74634056740075, 16.16190687619553, 16.325340068785636, 16.748406371121632, 17.560605671682595, 18.037705260820246, 19.659637197399718, 20.1696034249004, 20.55206976219972, 20.70850296081801, 20.79470288658547, 20.93696943073695, 20.969636069272156, 20.99713604559014, 21.00450270591284, 21.025136021477465, 21.52330225913994, 23.21903413216529, 23.712133707524345, 23.718767035145277, 24.40409977829279, 25.907065150655626, 26.634464524243413, 26.67556448884949, 26.80129771390557, 26.828197690740183, 26.985864221629697, 26.992097549595087, 27.308463943817515, 27.340030583300063, 27.84069681880959, 27.85383014083294, 27.961063381820566, 28.122296576305246, 28.133496566660142, 28.19109651705702, 28.822762639753762, 29.038329120781782, 29.21649563401735, 29.307595555565115, 29.46316208826306, 29.55996200490216, 29.616661956074097, 29.714428538547395, 29.763461829654887, 29.774095153831183, 29.885195058155603, 29.970328318175007, 30.08539488575019, 30.201261452636402, 30.2026947847354, 30.348361325958876, 30.75552764198744, 30.805360932406018, 30.952127472682207, 31.270593865096203, 31.503393664616738, 31.63056022177176, 31.632893553095755, 31.74179345931475, 31.899193323767236, 32.09805981917668, 32.27115967010883, 32.488792816023704, 33.03212568145682, 33.08302563762351, 33.35949206620643, 33.951124890045264, 34.14309139139675, 34.264224620414154, 34.45712445429524, 34.51982440030014, 34.61035765566925, 34.949790696694095, 35.059190602482545, 35.25609043291894, 35.258190431110506, 35.403423639373784, 35.521790204107106, 35.59902347092975, 36.00295645640938, 36.487222706042076, 36.55012265187469, 36.90015568377123, 36.92298899744128, 37.229522066798495, 37.596721750578354, 37.83038821601923, 37.875888176836156, 37.88482150247637, 38.910053952913586, ...][32]probeB pynwb.ecephys.ElectrodeGroup at 0x5117639808\\nFields:\\n description: Neuropixels probe B\\n device: probeB pynwb.device.Device at 0x5107246064\\nFields:\\n description: Neuropixels 1.0 probe\\n manufacturer: imec\\n\\n location: see electrode locations\\n[0.0, 1.918800000000047e-07, 4.095000000000048e-07, -4.217849999999981e-07, -3.369599999999968e-07, 9.067500000000184e-08, 1.169999999998339e-09, -3.3949499999999143e-07, -4.777499999999977e-07, -1.3014299999999866e-06, -1.9897799999999944e-06, -2.1093150000000085e-06, -3.458519999999992e-06, -6.170384999999997e-06, -1.3548015000000013e-05, -2.6547104999999985e-05, -4.284832499999998e-05, -5.819209499999999e-05, -6.860899499999999e-05, -6.955279499999993e-05, -6.371507999999995e-05, -5.393563500000003e-05, -4.289980499999997e-05, -3.0139979999999988e-05, -1.885084499999993e-05, -8.888879999999979e-06, 4.7580000000008834e-08, 8.318505000000005e-06, 1.665826499999999e-05, 2.3285925000000002e-05, 2.845303500000002e-05, 3.2703060000000006e-05, 3.666077999999999e-05, 3.8222925000000045e-05, 3.888358500000007e-05, 3.9553605000000014e-05, 3.8940135000000006e-05, 3.8758200000000025e-05, 3.732651000000002e-05, 3.479930999999999e-05, 3.257669999999999e-05, 3.076105499999995e-05, 2.8782194999999956e-05, 2.685364499999999e-05, 2.431259999999999e-05, 2.217890999999997e-05, 1.962051000000001e-05, 1.8344040000000002e-05, 1.7072639999999996e-05, 1.5081104999999997e-05, 1.4079195000000012e-05, 1.3605149999999998e-05, 1.2695474999999999e-05, 1.1455860000000006e-05, 9.702420000000009e-06, 8.121555000000002e-06, 7.488585000000002e-06, 7.083375000000003e-06, 6.867120000000003e-06, 6.8554200000000036e-06, 6.7136550000000026e-06, 7.150065000000005e-06, 6.770985000000005e-06, 6.591000000000004e-06, 5.812170000000004e-06, 5.030220000000004e-06, 3.851055000000005e-06, 3.0357600000000025e-06, 2.6514150000000003e-06, 2.3495550000000023e-06, 2.338635000000004e-06, 2.2914450000000034e-06, 1.8991049999999995e-06, 1.5802800000000032e-06, 1.8983250000000038e-06, 2.2099350000000073e-06, 2.4876150000000024e-06, 1.953120000000004e-06, 2.7204450000000042e-06, 2.5623000000000047e-06, 2.9062800000000016e-06, 2.2889100000000018e-06]

... and 973 more rows.

experiment_description: in vivo electrophysiology in a head-fixed mouse during cortical electrical microstimulation
session_id: 20210819
institution: Allen Institute
stimulus_notes: single pulse electrical stimuli targeted to SSp (superficial and deep layers)
" + ], + "text/plain": [ + "root pynwb.file.NWBFile at 0x4497082560\n", + "Fields:\n", + " acquisition: {\n", + " ElectricalSeriesEEG ,\n", + " LFPprobeB ,\n", + " LFPprobeC ,\n", + " LFPprobeF \n", + " }\n", + " devices: {\n", + " EEG array ,\n", + " probeB ,\n", + " probeC ,\n", + " probeF \n", + " }\n", + " electrode_groups: {\n", + " EEG array ,\n", + " probeB ,\n", + " probeC ,\n", + " probeF \n", + " }\n", + " electrodes: electrodes \n", + " epochs: epochs \n", + " experiment_description: in vivo electrophysiology in a head-fixed mouse during cortical electrical microstimulation\n", + " experimenter: ['Claar, Leslie D' 'Rembado, Irene' 'Kuyat, Jacqulyn R' 'Russo, Simone'\n", + " 'Marks, Lydia C' 'Olsen, Shawn R' 'Koch, Christof']\n", + " file_create_date: [datetime.datetime(2023, 3, 15, 19, 17, 54, 71879, tzinfo=tzoffset(None, -25200))]\n", + " identifier: 586468-20210819-v001\n", + " institution: Allen Institute\n", + " intervals: {\n", + " epochs ,\n", + " trials \n", + " }\n", + " keywords: \n", + " processing: {\n", + " behavior \n", + " }\n", + " related_publications: ['https://doi.org/10.7554/eLife.84630.1']\n", + " session_description: EEG and Neuropixels recording during wakefulness and isoflurane anesthesia\n", + " session_id: 20210819\n", + " session_start_time: 2021-08-19 11:36:39.948000-07:00\n", + " stimulus_notes: single pulse electrical stimuli targeted to SSp (superficial and deep layers)\n", + " subject: subject pynwb.file.Subject at 0x5117153056\n", + "Fields:\n", + " age: P114D\n", + " description: mouse586468\n", + " sex: F\n", + " species: Mus musculus\n", + " strain: C57BL/6J\n", + " subject_id: 586468\n", + "\n", + " timestamps_reference_time: 2021-08-19 11:36:39.948000-07:00\n", + " trials: trials \n", + " units: units " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "DANDISET_ID = \"000458\"\n", + "file_path = \"sub-586468/sub-586468_ses-20210819_behavior+ecephys.nwb\"\n", + "nwbfile, io = stream_nwbfile(DANDISET_ID, file_path)\n", + "display(nwbfile)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From the nwbfile html render, we can see that\n", + "- the epochs table has the isoflurane timing information\n", + "- the trials table has the stimulation times and associated properties\n", + "- the units table has spike-sorted units, each with a list of spike times" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We'll need to select stimulation times from the awake and anesthetized period separately in order to make a comparison. To avoid any edge effects, we will omit 100s before and after isoflurane induction." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
start_timestop_timetags
id
04219.1533394345.123339[isoflurane_induction]
14345.1333398598.253339[isoflurane_anesthesia]
\n", + "
" + ], + "text/plain": [ + " start_time stop_time tags\n", + "id \n", + "0 4219.153339 4345.123339 [isoflurane_induction]\n", + "1 4345.133339 8598.253339 [isoflurane_anesthesia]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Awake Period (omitting edge effects): 100s-4119.153338945424s\n", + "Isoflurane Period (omitting edge effects): 4445.133338945424s-8498.253338945426s\n" + ] + } + ], + "source": [ + "epochs_df = nwbfile.epochs.to_dataframe()\n", + "display(epochs_df)\n", + "\n", + "iso_start_time = epochs_df[\"start_time\"].iloc[-1] + 100\n", + "iso_stop_time = epochs_df[\"stop_time\"].iloc[-1] - 100\n", + "awake_start_time = 100\n", + "awake_stop_time = epochs_df[\"start_time\"].iloc[0] - 100\n", + "\n", + "print(f\"Awake Period (omitting edge effects): {awake_start_time}s-{awake_stop_time}s\")\n", + "print(f\"Isoflurane Period (omitting edge effects): {iso_start_time}s-{iso_stop_time}s\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we will select 3 representative trials from each time period." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Representative Awake Trials\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
start_timestop_timestimulus_typestimulus_descriptionestim_currentestim_target_regionestim_target_depthbehavioral_epochis_runningis_valid
id
7623645.525183645.52558electricalbiphasic25SSpdeepawakeFalseTrue
5222680.130092680.13049electricalbiphasic25SSpdeepawakeFalseTrue
5752891.895332891.89573electricalbiphasic25SSpdeepawakeFalseTrue
\n", + "
" + ], + "text/plain": [ + " start_time stop_time stimulus_type stimulus_description estim_current \\\n", + "id \n", + "762 3645.52518 3645.52558 electrical biphasic 25 \n", + "522 2680.13009 2680.13049 electrical biphasic 25 \n", + "575 2891.89533 2891.89573 electrical biphasic 25 \n", + "\n", + " estim_target_region estim_target_depth behavioral_epoch is_running \\\n", + "id \n", + "762 SSp deep awake False \n", + "522 SSp deep awake False \n", + "575 SSp deep awake False \n", + "\n", + " is_valid \n", + "id \n", + "762 True \n", + "522 True \n", + "575 True " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Representative Isoflurane Trials\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
start_timestop_timestimulus_typestimulus_descriptionestim_currentestim_target_regionestim_target_depthbehavioral_epochis_runningis_valid
id
10515826.677875826.67827electricalbiphasic45SSpdeepisofluraneFalseTrue
9075249.747295249.74769electricalbiphasic45SSpdeepisofluraneFalseTrue
11446201.428466201.42886electricalbiphasic45SSpdeepisofluraneFalseTrue
\n", + "
" + ], + "text/plain": [ + " start_time stop_time stimulus_type stimulus_description estim_current \\\n", + "id \n", + "1051 5826.67787 5826.67827 electrical biphasic 45 \n", + "907 5249.74729 5249.74769 electrical biphasic 45 \n", + "1144 6201.42846 6201.42886 electrical biphasic 45 \n", + "\n", + " estim_target_region estim_target_depth behavioral_epoch is_running \\\n", + "id \n", + "1051 SSp deep isoflurane False \n", + "907 SSp deep isoflurane False \n", + "1144 SSp deep isoflurane False \n", + "\n", + " is_valid \n", + "id \n", + "1051 True \n", + "907 True \n", + "1144 True " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "trials_df = nwbfile.trials.to_dataframe()\n", + "\n", + "iso_trials = trials_df[\n", + " (trials_df['is_running'] == False) &\n", + " (trials_df['is_valid'] == True) &\n", + " (trials_df['behavioral_epoch'] == 'isoflurane') &\n", + " (trials_df['start_time'].values >= iso_start_time) &\n", + " (trials_df['start_time'].values <= iso_stop_time)\n", + "]\n", + "awake_trials = trials_df[\n", + " (trials_df['is_running'] == False) &\n", + " (trials_df['is_valid'] == True) &\n", + " (trials_df['behavioral_epoch'] == 'awake') &\n", + " (trials_df['start_time'].values >= awake_start_time) &\n", + " (trials_df['start_time'].values <= awake_stop_time)\n", + "]\n", + "\n", + "rng = np.random.default_rng(1723217369) # int(datetime.now().timestamp()) at the time of writing\n", + "representative_iso_trials = iso_trials.sample(n=3, random_state=rng)\n", + "iso_stim_times = representative_iso_trials['start_time'].values\n", + "representative_awake_trials = awake_trials.sample(n=3, random_state=rng)\n", + "awake_stim_times = representative_awake_trials['start_time'].values\n", + "\n", + "print(\"Representative Awake Trials\")\n", + "display(representative_awake_trials)\n", + "print(\"Representative Isoflurane Trials\")\n", + "display(representative_iso_trials)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To match Figure 4B, we will look specifically at primary somatosensory neurons (SSp)." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of SSp Units 57\n" + ] + } + ], + "source": [ + "ssp_mask = np.isin(nwbfile.units.get('location').data[:], ['SSp-bfd', 'SSp-ll', 'SSp-tr'])\n", + "ssp_indices = np.where(ssp_mask)[0]\n", + "print(\"Number of SSp Units\", len(ssp_indices))\n", + "ssp_units = nwbfile.units.get(ssp_indices)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, we will plot the spike times of all of the SSp units for each representative stimulation time (awake and anesthetized)." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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zc1vfvMbY4wx//73v40ks379ep9livbMtW/f3jRp0sTMnTvXzJs3z1SvXt3UqVPH5Obmepf95ptvTHJysmnZsqWZO3euWbBggenVq5dxuVxmyZIl3uXuvfde7yfG5557zsyfP99cd911Zs6cOcYYY9auXWsuu+wyI8m8+uqr3ocV9ezcudPcdtttRpK59957vdsq2qPVu3dv07t3b+86ly5d6lPTq6++ai666CITERFhvvrqK2NM4SfiOnXqmLp165oHHnjAPPXUU2bYsGFGknnkkUe868rJyTHNmjUzcXFx5ve//7159NFHTYcOHUxaWppfewr79+9vEhMTzddff13qcmvXrjWSzPjx483p06dLXbboE3abNm3M0KFDzYIFC8wNN9xgJJkbb7yx1O815sx7Co0xZsSIEUaS2bJli/e5V155xbhcLjNw4EDzxBNPmLlz55oGDRqYypUrm/T0dO9yF198sUlOTjZ//OMfzfPPP29mz55t+vbta9asWeNdpn79+qZZs2amcuXKZtq0aebhhx82bdq0MREREWblypXe5Q4cOGBq1KhhEhMTzR/+8Afz8MMPm7Zt25qIiAif39GivbXt27c3HTp0MI888oiZMWOGqVSpkuncubN3uVOnTpmGDRua2rVrm1mzZpnnn3/ezJw503Tq1Mlnz8msWbOMy+Uy1157rXnyySfNzJkzTfXq1U2DBg28e3r9XReco6yM3bhxo5Fkli1b5n1u+PDhJiIiwnTs2NH73Oeff24kmX/84x/e5+rUqWMmTJhgFixYYB5++GHTuXPnEssYU3JP4R/+8AfjcrnMs88+633O37/FM7n55ptNZGSkWbVqVanLZWRkGElmyJAhxuPxlLrsiy++6M2hnj17mscff9xMnDjRREREmF69epmCgoJSv/9sewrvuusuI8m8//773udWrVplYmJiTLdu3cz8+fPNI488YtLS0kxMTIzPHsVRo0aZmJgYM3nyZPP888+buXPnmqFDh5q//vWv3mV69+5tateubVJTU82tt95qHn/8cdOjRw8jyfzf//2fd7mcnBzTokULEx0dbe68807z+OOPm549expJ5tFHH/UuV57/7/zJyUBmbrircE3hhg0bjCTzz3/+0xhTuPu+Tp065vbbb/dZruiXslq1aubo0aPe5995550SYXbppZeaNm3amJMnT3qf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jJFUOP+UJN11110aMGDAGZctmoqhV69e2rlzp9555x2tXLlSzz//vB555BE9/fTTuummm/z6GQJZz7kYO3asMjIytH79eiUlJXmfL9ruDTfcoDFjxpzxe9PS0s55u2cTExOjTp06qVOnTmrWrJnGjRunv//97yXmCZOkWrVqaeTIkfrVr36lVq1a6Y033tBLL72kqKiz/xmc6UKfs4mMjFS/fv28Xw8YMEDNmzfXb3/7W+9FPkXv06uvvqqaNWuWWMfPa7njjjs0dOhQvf3221qxYoXuu+8+/eUvf9G//vUvtW/f3u+6zkVZv2dS4YUBY8eO9f4+33bbbfrLX/6izz77THXq1FFBQYFcLpfef//9M64vISHB73XBGcqTsT169NDp06e1bt06ffzxx96LIXr27KmPP/5Y3333nQ4fPux9XpI+/vhjDRs2TL169dKTTz6pWrVqKTo6Wi+++KJef/31Etvr3r27Nm3apAULFuiaa65R1apVva+V52+xLJGRkWrTpo3atGmjbt26qW/fvnrttdd88qBItWrVNGzYMA0bNkx9+vTRmjVrtGfPnjNesHKuevXqperVq0uShg4dqjZt2uj666/XF198oYiICO/P/uCDD6pdu3ZnXEfR3+c111yjnj17aunSpVq5cqUefPBBzZ07V0uWLNGgQYMCVvOZ+JNDZeWkUzI3VFSopvC1115Tamqq9wrfn1uyZImWLl2qp59+WvHx8X6vs1GjRpKk6OjoMwbAL1WtWlXjxo3TuHHjlJ2drV69emnGjBneprA8Tcj51lPebc2ZM0dvv/22lixZUmJ+v5SUFCUmJio/P7/M7davX1/ffPONjDE+NWzdurVc9fxSx44dJUn79+8vdbno6GilpaVp+/btOnLkiE9QbN++XQ0bNvR+vWPHDhUUFJSYx9EftWrV0p133qmZM2fqs88+U9euXdW4cWNJhVcn+vP70rhxY02ZMkVTpkzR9u3b1a5dO82fP19//etffWr85Xu5bds2SfLWXb9+/TO+v0UTeJ/rf0hF/xH+8Y9/1Nq1a9W9e3c9/fTTmjVrlho3bixjjBo2bKhmzZqd17rgDOXJ2M6dOysmJkYff/yxPv74Y02dOlVSYUPz3HPPadWqVd6vi7z11luKi4vTihUrFBsb633+xRdfPGM9TZo00bx589SnTx8NHDhQq1atUmJi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P19vvvmmhg4d6vN8gwYNNGvWLI0ePVoJCQmqX7++3n33XR0+fFjDhw9XQkKC0tLStGHDBu/37NmzR0OHDlWVKlXkdrvVqlUrvffee97XL7vsMh09elRr1qw5z3cUAAD70BQi6F5++WVVr15d69ev16RJk3TLLbfo6quv1sUXX6yNGzeqf//+uvHGG5WTkyNJ+vHHH3XJJZeoffv22rBhgz744AMdPHhQ11xzzVm38dVXXykzM1MdO3Ys8dojjzyi7t2768svv9SQIUN04403avTo0brhhhu0ceNGNW7cWKNHj1bRTvSJEyfq1KlT+ve//62vv/5ac+fO9dkDGhMTo3bt2unjjz8O8DsFAEDw0BQi6Nq2bas//vGPatq0qe655x7FxcWpevXqGj9+vJo2bar7779fP/zwg7766itJ0oIFC9S+fXvNnj1bzZs3V/v27fXCCy9o9erV2rZt2xm3sWfPHkVGRio1NbXEa4MHD9Zvf/tb77aysrLUqVMnXX311WrWrJnuvvtubdmyRQcPHpQk7d27V927d1ebNm3UqFEjXX755erVq5fPOmvXrq09e/YE+J0CACB4aAoRdGlpad5xZGSkqlWrpjZt2nifq1GjhiTp0KFDkgovGFm9erX3HMWEhAQ1b95ckrRz584zbuPEiROKjY0948UwP99+0bZK2/5tt92mWbNmqXv37po+fbq3Wf25+Ph4755NAACciKYQQRcdHe3ztcvl8nmuqJErKCiQJGVnZ2vo0KHatGmTz2P79u0l9tgVqV69unJycpSbm1vq9ou2Vdr2b7rpJu3atUs33nijvv76a3Xs2FFPPPGEzzqPHj2qlJQU/94AAABCEE0hQt5FF12kb7/9Vg0aNFCTJk18Hm63+4zf065dO0mF8wgGQt26dfW73/1OS5Ys0ZQpU/Tcc8/5vP7NN9+offv2AdkWAAB2oClEyJs4caKOHj2q6667Tp9//rl27typFStWaNy4ccrPzz/j96SkpOiiiy7SJ598ct7bv+OOO7RixQqlp6dr48aNWr16tVq0aOF9fffu3frf//6nfv36nfe2AACwC00hQl7t2rX16aefKj8/X/3791ebNm10xx13qHLlyoqIOPuv8E033aTXXnvtvLefn5+viRMnqkWLFho4cKCaNWumJ5980vv6okWL1L9/f9WvX/+8twUAgF2YvBph68SJE7rwwgu1ePFidevWzZJt5ObmqmnTpnr99dfVvXt3S7YBAEAwsKcQYSs+Pl6vvPJKqZNcn6+9e/fq3nvvpSEEADgeewoBAADAnkIAAADQFAIAAEA0hQAAABBNIQAAAERTCAAAANEUAgAAQDSFAAAAEE0hAAAARFMIAAAASf8PDnYmaqUcOWkAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pre_duration = 3e-3\n", + "post_duration = 15e-3\n", + "\n", + "trial_names = ['Trial 3', 'Trial 2', 'Trial 1']\n", + "fig, axs = plt.subplots(3, 2, figsize=(7.5, 10), sharex=True, sharey=True)\n", + "for j, stim_time in enumerate(iso_stim_times):\n", + " ax = axs[j, 0]\n", + " trial_name = trial_names[j]\n", + " all_spike_times = []\n", + " for i in range(len(ssp_units)):\n", + " spike_times = ssp_units.iloc[i].spike_times\n", + " spike_times = spike_times[(spike_times > stim_time - pre_duration) & (spike_times < (stim_time + post_duration))]\n", + " spike_times = (spike_times - stim_time) * 1e3\n", + " all_spike_times.append(spike_times)\n", + "\n", + " ax.eventplot(all_spike_times, colors='k')\n", + " ax.axvline(0, color='r', linestyle='--')\n", + " ax.set_xlim(-pre_duration * 1e3, post_duration * 1e3)\n", + " ax.set_yticks([])\n", + " ax.set_ylabel(trial_name+'\\nNeurons')\n", + "axs[-1, 0].set_xlabel('Time (ms)')\n", + "_ = axs[0, 0].set_title('Anesthetized SSp Responses')\n", + "\n", + "for j, stim_time in enumerate(awake_stim_times):\n", + " ax = axs[j, 1]\n", + " trial_name = trial_names[j]\n", + " all_spike_times = []\n", + " for i in range(len(ssp_units)):\n", + " spike_times = ssp_units.iloc[i].spike_times\n", + " spike_times = spike_times[(spike_times > stim_time - pre_duration) & (spike_times < (stim_time + post_duration))]\n", + " spike_times = (spike_times - stim_time) * 1e3\n", + " all_spike_times.append(spike_times)\n", + "\n", + " ax.eventplot(all_spike_times, colors='k')\n", + " ax.axvline(0, color='r', linestyle='--')\n", + " ax.set_xlim(-pre_duration * 1e3, post_duration * 1e3)\n", + " ax.set_yticks([])\n", + " ax.set_ylabel(trial_name+'\\nNeurons')\n", + "axs[-1, 0].set_xlabel('Time (ms)')\n", + "_ = axs[0, 1].set_title('Awake SSp Responses')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As in Figure 4B of the paper, the raster plots show that the awake responses are more distributed in time (less synchronous) than the anesthetized responses." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "blog_env", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}