{ "cells": [ { "cell_type": "markdown", "id": "50af6f85", "metadata": {}, "source": [ "# Accessing Visual Behavior Neuropixels Data" ] }, { "cell_type": "markdown", "id": "83baaafe", "metadata": {}, "source": [ "## Tutorial overview\n", "\n", "This Jupyter notebook covers the various methods for accessing the Allen Institute Visual Behavior Neuropixels dataset. We will go over how to request data, where it's stored, and what the various files contain. If you're having trouble downloading the data, or you just want to know more about what's going on under the hood, this is a good place to start.\n", "\n", "This data release will not have a web interface for browsing through the released data, as with the [two-photon imaging Visual Coding dataset](http://observatory.brain-map.org/visualcoding). Instead, the data must be retrieved through the AllenSDK (Python 3.6+) or via requests sent to the **Amazon Web Services (AWS)** **Simple Storage Service (S3)** bucket (name: [visual-behavior-neuropixels-data](https://s3.console.aws.amazon.com/s3/buckets/visual-behavior-neuropixels-data)) for this project.\n", "\n", "Functions related to data analysis as well as descriptions of metadata table columns will be covered in other tutorials. For a full list of available tutorials for this project, see the [SDK documentation](https://allensdk.readthedocs.io/en/latest/visual_behavior_optical_physiology.html)." ] }, { "cell_type": "markdown", "id": "53e75988", "metadata": {}, "source": [ "## Options for data access\n", "\n", "The `VisualBehaviorNeuropixelsProjectCache` object in the AllenSDK is the easiest way to interact with the released data. This object abstracts away the details of on-disk file storage, and delivers the data to you as ready-to-analyze Python objects. The cache will automatically keep track of which files are stored locally, and will download additional files on an as-needed basis. Usually you won't need to worry about the organization of these files, but this tutorial will cover those details in case you want to analyze them without using the AllenSDK (e.g., in Matlab). This tutorial begins with an introduction to this approach.\n", "\n", "Another option is to directly download the data using an S3 URL. This should be used if the other options are broken or are not available to you. Instructions for this can be found at the end of this tutorial." ] }, { "cell_type": "markdown", "id": "75b3ae20", "metadata": {}, "source": [ "## Using the AllenSDK to retrieve data\n", "\n", "Most users will want to access data via the AllenSDK. This requires nothing more than a Python interpreter and some free disk space to store the data locally.\n", "\n", "How much data is there? If you want to download the complete dataset (153 NWB files plus 5 metadata csv files), you'll need 524 GB of space.\n", "\n", "Before downloading the data, you must decide on a cache directory where you would like downloaded data to be stored. This directory is where the `VisualBehaviorNeuropixelsProjectCache` object will look first when you request a metadata table or a data file.\n", "\n", "When you initialize a local cache for the first time, it will create the manifest file at the path that you specify. This file lives one directory up from the rest of the data, so make sure you put it somewhere that has enough space available.\n", "\n", "When you need to access the data in subsequent analysis sessions, you should point the `VisualBehaviorNeuropixelsProjectCache` object to an existing cache directory; otherwise, it will try to re-download the data in a new location.\n", "\n", "To get started with this approach, first take care of the necessary imports:\n", "\n", "We will first install allensdk into your environment by running the appropriate commands below. " ] }, { "cell_type": "markdown", "id": "f13f8c95", "metadata": {}, "source": [ "## Instal AllenSDK into your local environment" ] }, { "cell_type": "markdown", "id": "394255fc", "metadata": {}, "source": [ "You can install AllenSDK with:" ] }, { "cell_type": "code", "execution_count": null, "id": "abd813fe", "metadata": {}, "outputs": [], "source": [ "pip install allensdk" ] }, { "cell_type": "markdown", "id": "e2021a8e", "metadata": {}, "source": [ "## Install AllenSDK into your notebook environment (good for Google Colab)" ] }, { "cell_type": "markdown", "id": "9765633d", "metadata": {}, "source": [ "You can install AllenSDK into your notebook environment by executing the cell below.\n", "\n", "If using Google Colab, click on the RESTART RUNTIME button that appears at the end of the output when this cell is complete,. Note that running this cell will produce a long list of outputs and some error messages. Clicking RESTART RUNTIME at the end will resolve these issues.\n", "You can minimize the cell after you are done to hide the output." ] }, { "cell_type": "code", "execution_count": null, "id": "18345f53", "metadata": {}, "outputs": [], "source": [ "!pip install --upgrade pip\n", "!pip install allensdk" ] }, { "cell_type": "markdown", "id": "f0592bb2", "metadata": {}, "source": [ "## Import required packages" ] }, { "cell_type": "code", "execution_count": 1, "id": "9d2f1f6d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Your allensdk version is: 2.13.5\n" ] } ], "source": [ "from pathlib import Path\n", "import matplotlib.pyplot as plt\n", "\n", "import allensdk\n", "from allensdk.brain_observatory.behavior.behavior_project_cache import VisualBehaviorNeuropixelsProjectCache\n", "\n", "# Confirming your allensdk version\n", "print(f\"Your allensdk version is: {allensdk.__version__}\")" ] }, { "cell_type": "markdown", "id": "6e268380", "metadata": {}, "source": [ "Next, we'll specify the directory where you'd like downloaded data to be stored (cache_dir). Remember to choose a location that has plenty of free space available." ] }, { "cell_type": "code", "execution_count": 2, "id": "ca3f1f01", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "ecephys_sessions.csv: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████| 63.5k/63.5k [00:00<00:00, 146kMB/s]\n", "behavior_sessions.csv: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████| 531k/531k [00:00<00:00, 959kMB/s]\n", "units.csv: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 132M/132M [00:14<00:00, 8.87MMB/s]\n", "probes.csv: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 127k/127k [00:00<00:00, 614kMB/s]\n", "channels.csv: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 27.9M/27.9M [00:09<00:00, 3.01MMB/s]\n" ] } ], "source": [ "# Update this to a valid directory in your filesystem\n", "data_storage_directory = Path(\"/tmp/vbn_cache\")\n", "\n", "cache = VisualBehaviorNeuropixelsProjectCache.from_s3_cache(cache_dir=data_storage_directory)" ] }, { "cell_type": "markdown", "id": "4fed1ef9", "metadata": {}, "source": [ "Instantiating the cache will have it to download 5 project metadata files:\n", "\n", "1. `ecephys_sessions.csv` (64 kB)\n", "2. `behavior_sessions.csv` (531 kB)\n", "3. `units.csv` (130 MB)\n", "4. `probes.csv` (127 kB)\n", "5. `channels.csv` (28 MB)\n", "\n", "Each one contains a table of information related to its file name. If you're using the AllenSDK, you won't have to worry about how these files are formatted. Instead, you'll load the relevant data using specific accessor method: `get_ecephys_session_table()`, `get_behavior_session_table()`, `get_probe_table()`, `get_unit_table()` and `get_channel_table()`. These functions return a pandas DataFrame containing a row for each item and a column for each metric.\n", "\n", "If you are analyzing data without using the AllenSDK, you can load the data using your CSV file reader of choice. However, please be aware the columns in the original file do not necessarily match what's returned by the AllenSDK, which may combine information from multiple files to produce the final DataFrame." ] }, { "cell_type": "markdown", "id": "7f96ddc9", "metadata": {}, "source": [ "### Managing versions of the dataset\n", "\n", "Over time, updates may be made to the released dataset. These updates will result in new versions of the dataset being available in the S3 bucket. The versions of the dataset are managed through distinct data manifests stored on S3.\n", "\n", "**Note:** Some of the cells below may seem a little pointless at first, since there is only one version of the data release as of this writing (June 7, 2022). We are leaving them here for reference so that future users know how to navigate different versions of the data release as they are issued." ] }, { "cell_type": "markdown", "id": "b5b340e3", "metadata": {}, "source": [ "#### Discovering manifests\n", "\n", "To see all of the manifest files available for this dataset online, run" ] }, { "cell_type": "code", "execution_count": 3, "id": "41cd25c1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['visual-behavior-neuropixels_project_manifest_v0.1.0.json',\n", " 'visual-behavior-neuropixels_project_manifest_v0.2.0.json',\n", " 'visual-behavior-neuropixels_project_manifest_v0.3.0.json']" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cache.list_manifest_file_names()" ] }, { "cell_type": "markdown", "id": "37824cce", "metadata": {}, "source": [ "To see the most up-to-date available manifest, run" ] }, { "cell_type": "code", "execution_count": 4, "id": "4538c01a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'visual-behavior-neuropixels_project_manifest_v0.3.0.json'" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cache.latest_manifest_file()" ] }, { "cell_type": "markdown", "id": "c6803645", "metadata": {}, "source": [ "To see the name of the most up-to-date manifest that you have already downloaded to your system run (note: this just means that the manifest file has been downloaded; it does not necessarily mean that any data has been downloaded)" ] }, { "cell_type": "code", "execution_count": 5, "id": "0a846392", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'visual-behavior-neuropixels_project_manifest_v0.3.0.json'" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cache.latest_downloaded_manifest_file()" ] }, { "cell_type": "markdown", "id": "7a2a8b2e", "metadata": {}, "source": [ "You can list all of the manifest files currently downloaded to your system with" ] }, { "cell_type": "code", "execution_count": 6, "id": "0a6053d8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['visual-behavior-neuropixels_project_manifest_v0.3.0.json']" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cache.list_all_downloaded_manifests()" ] }, { "cell_type": "markdown", "id": "08ea42d5", "metadata": {}, "source": [ "#### Loading manifests/dataset versions\n", "\n", "The `VisualBehaviorNeuropixelsProjectCache` determines which version of the dataset to use by loading one of these manifests. By default, the `VisualBehaviorNeuropixelsProjectCache` loads either\n", "\n", "- the most up-to-date available data manifest, if you are instaniating it on an empty `cache_dir`\n", "\n", "- the data manifest you were last using, if you are instantiating it on a pre-existing `cache_dir` (in this case, the `VisualBehaviorNeuropixelsProjectCache` will emit a warning if a more up-to-data data manifest exists online letting you know that you can, if you choose, move to the more up-to-date data manifest)\n", "\n", "To see the manifest that you currently have loaded, run" ] }, { "cell_type": "code", "execution_count": 7, "id": "88d47216", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'visual-behavior-neuropixels_project_manifest_v0.3.0.json'" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cache.current_manifest()" ] }, { "cell_type": "markdown", "id": "5cc21ace", "metadata": {}, "source": [ "To load a particular data manifest by hand, run (note: because we are intentionally loading an out-of-date manifest, this will emit a warning alerting us to the existence of the most up-to-date manifest)" ] }, { "cell_type": "code", "execution_count": 8, "id": "560f4751", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/adam.amster/AllenSDK/allensdk/api/cloud_cache/cloud_cache.py:466: OutdatedManifestWarning: \n", "\n", "The manifest file you are loading is not the most up to date manifest file available for this dataset. The most up to data manifest file available for this dataset is \n", "\n", "visual-behavior-neuropixels_project_manifest_v0.3.0.json\n", "\n", "To see the differences between these manifests,run\n", "\n", "VisualBehaviorNeuropixelsProjectCache.compare_manifests('visual-behavior-neuropixels_project_manifest_v0.2.0.json', 'visual-behavior-neuropixels_project_manifest_v0.3.0.json')\n", "\n", "To see all of the manifest files currently downloaded onto your local system, run\n", "\n", "self.list_all_downloaded_manifests()\n", "\n", "If you just want to load the latest manifest, run\n", "\n", "self.load_latest_manifest()\n", "\n", "\n", " warnings.warn(msg, OutdatedManifestWarning)\n" ] } ], "source": [ "cache.load_manifest('visual-behavior-neuropixels_project_manifest_v0.2.0.json')" ] }, { "cell_type": "code", "execution_count": 9, "id": "6271893c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'visual-behavior-neuropixels_project_manifest_v0.2.0.json'" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cache.current_manifest()" ] }, { "cell_type": "markdown", "id": "81a1578f", "metadata": {}, "source": [ "As the earlier warning informed us, we can see the difference between an two versions of the dataset by running" ] }, { "cell_type": "code", "execution_count": 10, "id": "66cb1f37", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Changes going from\n", "visual-behavior-neuropixels_project_manifest_v0.1.0.json\n", "to\n", "visual-behavior-neuropixels_project_manifest_v0.2.0.json\n", "\n", "project_metadata/units.csv changed\n", "\n" ] } ], "source": [ "# This cell will not be useful until an updated version of the data release is issued\n", "\n", "msg = cache.compare_manifests('visual-behavior-neuropixels_project_manifest_v0.1.0.json',\n", " 'visual-behavior-neuropixels_project_manifest_v0.2.0.json')\n", "print(msg)" ] }, { "cell_type": "markdown", "id": "3a3f4c95", "metadata": {}, "source": [ "The `VisualBehaviorNeuropixelsProjectCache` is smart enough to know that, if a file has not changed between version `A` and version `B` of the dataset, and you have already downloaded the file while version `A` of the manifest was loaded, when you move to version `B`, it does not need to download the data again. It will simply construct a symlink where version `B` of the data should exist on your system, pointing to version `A` of the file." ] }, { "cell_type": "markdown", "id": "755f8802", "metadata": {}, "source": [ "### Using the AllenSDK to access Visual Behavior Neuropixels metadata" ] }, { "cell_type": "markdown", "id": "8076f8d9", "metadata": {}, "source": [ "#### Ecephys sessions table\n", "\n", "Let's look at the contents of `ecephys_sessions.csv`:" ] }, { "cell_type": "code", "execution_count": 11, "id": "663a4a46", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Total number of ecephys sessions: 103\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
behavior_session_iddate_of_acquisitionequipment_namesession_typemouse_idgenotypesexproject_codeage_in_daysunit_count...channel_countstructure_acronymsimage_setprior_exposures_to_image_setsession_numberexperience_levelprior_exposures_to_omissionsfile_idabnormal_histologyabnormal_activity
ecephys_session_id
105234227710523745212020-09-23 15:34:18.179NP.1EPHYS_1_images_G_3uL_reward530862Vip-IRES-Cre/wt;Ai32(RCL-ChR2(H134R)_EYFP)/wtMNeuropixelVisualBehavior1481696.0...2304.0['APN', 'CA1', 'CA3', 'DG-mo', 'DG-po', 'DG-sg...G32.01Familiar0.00NaNNaN
105115586610521625362020-09-17 15:05:39.665NP.1EPHYS_1_images_H_3uL_reward524760wt/wtFNeuropixelVisualBehavior1801922.0...2304.0['APN', 'CA1', 'CA3', 'DG-mo', 'DG-po', 'DG-sg...H0.02Novel1.01NaNNaN
105253363910525723592020-09-24 15:12:13.229NP.1EPHYS_1_images_H_3uL_reward530862Vip-IRES-Cre/wt;Ai32(RCL-ChR2(H134R)_EYFP)/wtMNeuropixelVisualBehavior1491677.0...2304.0['APN', 'CA1', 'CA3', 'DG-mo', 'DG-po', 'DG-sg...H0.02Novel1.04NaNNaN
105392537810539609842020-10-01 16:07:18.990NP.0EPHYS_1_images_H_3uL_reward532246Vip-IRES-Cre/wt;Ai32(RCL-ChR2(H134R)_EYFP)/wtMNeuropixelVisualBehavior1451823.0...2304.0['APN', 'CA1', 'CA3', 'DG-mo', 'DG-po', 'DG-sg...H0.02Novel1.05NaNNaN
105394148310539609872020-10-01 17:03:58.362NP.1EPHYS_1_images_H_3uL_reward527749Sst-IRES-Cre/wt;Ai32(RCL-ChR2(H134R)_EYFP)/wtMNeuropixelVisualBehavior1801543.0...2304.0['APN', 'CA1', 'CA3', 'DG-mo', 'DG-po', 'DG-sg...H0.02Novel1.06NaNNaN
\n", "

5 rows × 21 columns

\n", "
" ], "text/plain": [ " behavior_session_id date_of_acquisition \\\n", "ecephys_session_id \n", "1052342277 1052374521 2020-09-23 15:34:18.179 \n", "1051155866 1052162536 2020-09-17 15:05:39.665 \n", "1052533639 1052572359 2020-09-24 15:12:13.229 \n", "1053925378 1053960984 2020-10-01 16:07:18.990 \n", "1053941483 1053960987 2020-10-01 17:03:58.362 \n", "\n", " equipment_name session_type mouse_id \\\n", "ecephys_session_id \n", "1052342277 NP.1 EPHYS_1_images_G_3uL_reward 530862 \n", "1051155866 NP.1 EPHYS_1_images_H_3uL_reward 524760 \n", "1052533639 NP.1 EPHYS_1_images_H_3uL_reward 530862 \n", "1053925378 NP.0 EPHYS_1_images_H_3uL_reward 532246 \n", "1053941483 NP.1 EPHYS_1_images_H_3uL_reward 527749 \n", "\n", " genotype sex \\\n", "ecephys_session_id \n", "1052342277 Vip-IRES-Cre/wt;Ai32(RCL-ChR2(H134R)_EYFP)/wt M \n", "1051155866 wt/wt F \n", "1052533639 Vip-IRES-Cre/wt;Ai32(RCL-ChR2(H134R)_EYFP)/wt M \n", "1053925378 Vip-IRES-Cre/wt;Ai32(RCL-ChR2(H134R)_EYFP)/wt M \n", "1053941483 Sst-IRES-Cre/wt;Ai32(RCL-ChR2(H134R)_EYFP)/wt M \n", "\n", " project_code age_in_days unit_count ... \\\n", "ecephys_session_id ... \n", "1052342277 NeuropixelVisualBehavior 148 1696.0 ... \n", "1051155866 NeuropixelVisualBehavior 180 1922.0 ... \n", "1052533639 NeuropixelVisualBehavior 149 1677.0 ... \n", "1053925378 NeuropixelVisualBehavior 145 1823.0 ... \n", "1053941483 NeuropixelVisualBehavior 180 1543.0 ... \n", "\n", " channel_count \\\n", "ecephys_session_id \n", "1052342277 2304.0 \n", "1051155866 2304.0 \n", "1052533639 2304.0 \n", "1053925378 2304.0 \n", "1053941483 2304.0 \n", "\n", " structure_acronyms \\\n", "ecephys_session_id \n", "1052342277 ['APN', 'CA1', 'CA3', 'DG-mo', 'DG-po', 'DG-sg... \n", "1051155866 ['APN', 'CA1', 'CA3', 'DG-mo', 'DG-po', 'DG-sg... \n", "1052533639 ['APN', 'CA1', 'CA3', 'DG-mo', 'DG-po', 'DG-sg... \n", "1053925378 ['APN', 'CA1', 'CA3', 'DG-mo', 'DG-po', 'DG-sg... \n", "1053941483 ['APN', 'CA1', 'CA3', 'DG-mo', 'DG-po', 'DG-sg... \n", "\n", " image_set prior_exposures_to_image_set session_number \\\n", "ecephys_session_id \n", "1052342277 G 32.0 1 \n", "1051155866 H 0.0 2 \n", "1052533639 H 0.0 2 \n", "1053925378 H 0.0 2 \n", "1053941483 H 0.0 2 \n", "\n", " experience_level prior_exposures_to_omissions file_id \\\n", "ecephys_session_id \n", "1052342277 Familiar 0.0 0 \n", "1051155866 Novel 1.0 1 \n", "1052533639 Novel 1.0 4 \n", "1053925378 Novel 1.0 5 \n", "1053941483 Novel 1.0 6 \n", "\n", " abnormal_histology abnormal_activity \n", "ecephys_session_id \n", "1052342277 NaN NaN \n", "1051155866 NaN NaN \n", "1052533639 NaN NaN \n", "1053925378 NaN NaN \n", "1053941483 NaN NaN \n", "\n", "[5 rows x 21 columns]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ecephys_sessions = cache.get_ecephys_session_table()\n", "\n", "print(f\"Total number of ecephys sessions: {len(ecephys_sessions)}\")\n", "\n", "ecephys_sessions.head()" ] }, { "cell_type": "markdown", "id": "be96dfe8", "metadata": {}, "source": [ "The `ecephys_session_table` DataFrame provides a high-level overview for ecephys sessions in the Visual Behavior Neurpoixels dataset. The index column (ecephys_session_id) is a unique ID, which serves as a key for access behavior data for each session. To get additional information about this data table (and other tables) please visit [this example notebook](https://allensdk.readthedocs.io/en/latest/_static/examples/nb/visual_behavior_neuropixels_quickstart.html).\n", "\n", "Sharp eyed readers may be wondering why the number of behavior session (103) in this table does not match up with the number of NWB files in the data release (153). Some of the session being released had obvious abnormalities in either electrophysiological activity or histology. By default `get_ecephys_session_table()` does not return the metadata for these abnormal sessions. To see all 153 sessions, run `get_ecephys_session_table(filter_abnormalities=False)`\n" ] }, { "cell_type": "markdown", "id": "d2016732", "metadata": {}, "source": [ "#### Behavior sessions table\n", "\n", "Let's look at the contents of `behavior_sessions.csv`:" ] }, { "cell_type": "code", "execution_count": 12, "id": "b82d40c1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Total number of behavior sessions: 3424\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
equipment_namegenotypemouse_idsexage_in_dayssession_numberprior_exposures_to_session_typeprior_exposures_to_image_setprior_exposures_to_omissionsecephys_session_iddate_of_acquisitionsession_typeimage_set
behavior_session_id
1051333618BEH.G-Box2Vip-IRES-Cre/wt;Ai32(RCL-ChR2(H134R)_EYFP)/wt540536M8510NaN0.0NaN2020-09-18 10:02:30.869000TRAINING_0_gratings_autorewards_15min_0uL_rewardNaN
1052301754BEH.G-Box2Vip-IRES-Cre/wt;Ai32(RCL-ChR2(H134R)_EYFP)/wt540536M9042NaN0.0NaN2020-09-23 09:43:25.595000TRAINING_1_gratings_10uL_rewardNaN
1052374521NP.1Vip-IRES-Cre/wt;Ai32(RCL-ChR2(H134R)_EYFP)/wt530862M14844032.00.01.052342e+092020-09-23 15:34:18.179000EPHYS_1_images_G_3uL_rewardG
1051860415BEH.G-Box4wt/wt533539F127903.00.0NaN2020-09-21 09:57:23.650000TRAINING_4_images_G_training_7uL_rewardG
1052132182BEH.F-Box5Vip-IRES-Cre/wt;Ai32(RCL-ChR2(H134R)_EYFP)/wt536480M112811.00.0NaN2020-09-22 12:04:46.304000TRAINING_3_images_G_10uL_rewardG
\n", "
" ], "text/plain": [ " equipment_name \\\n", "behavior_session_id \n", "1051333618 BEH.G-Box2 \n", "1052301754 BEH.G-Box2 \n", "1052374521 NP.1 \n", "1051860415 BEH.G-Box4 \n", "1052132182 BEH.F-Box5 \n", "\n", " genotype mouse_id \\\n", "behavior_session_id \n", "1051333618 Vip-IRES-Cre/wt;Ai32(RCL-ChR2(H134R)_EYFP)/wt 540536 \n", "1052301754 Vip-IRES-Cre/wt;Ai32(RCL-ChR2(H134R)_EYFP)/wt 540536 \n", "1052374521 Vip-IRES-Cre/wt;Ai32(RCL-ChR2(H134R)_EYFP)/wt 530862 \n", "1051860415 wt/wt 533539 \n", "1052132182 Vip-IRES-Cre/wt;Ai32(RCL-ChR2(H134R)_EYFP)/wt 536480 \n", "\n", " sex age_in_days session_number \\\n", "behavior_session_id \n", "1051333618 M 85 1 \n", "1052301754 M 90 4 \n", "1052374521 M 148 44 \n", "1051860415 F 127 9 \n", "1052132182 M 112 8 \n", "\n", " prior_exposures_to_session_type \\\n", "behavior_session_id \n", "1051333618 0 \n", "1052301754 2 \n", "1052374521 0 \n", "1051860415 0 \n", "1052132182 1 \n", "\n", " prior_exposures_to_image_set \\\n", "behavior_session_id \n", "1051333618 NaN \n", "1052301754 NaN \n", "1052374521 32.0 \n", "1051860415 3.0 \n", "1052132182 1.0 \n", "\n", " prior_exposures_to_omissions ecephys_session_id \\\n", "behavior_session_id \n", "1051333618 0.0 NaN \n", "1052301754 0.0 NaN \n", "1052374521 0.0 1.052342e+09 \n", "1051860415 0.0 NaN \n", "1052132182 0.0 NaN \n", "\n", " date_of_acquisition \\\n", "behavior_session_id \n", "1051333618 2020-09-18 10:02:30.869000 \n", "1052301754 2020-09-23 09:43:25.595000 \n", "1052374521 2020-09-23 15:34:18.179000 \n", "1051860415 2020-09-21 09:57:23.650000 \n", "1052132182 2020-09-22 12:04:46.304000 \n", "\n", " session_type \\\n", "behavior_session_id \n", "1051333618 TRAINING_0_gratings_autorewards_15min_0uL_reward \n", "1052301754 TRAINING_1_gratings_10uL_reward \n", "1052374521 EPHYS_1_images_G_3uL_reward \n", "1051860415 TRAINING_4_images_G_training_7uL_reward \n", "1052132182 TRAINING_3_images_G_10uL_reward \n", "\n", " image_set \n", "behavior_session_id \n", "1051333618 NaN \n", "1052301754 NaN \n", "1052374521 G \n", "1051860415 G \n", "1052132182 G " ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "behavior_sessions = cache.get_behavior_session_table()\n", "\n", "print(f\"Total number of behavior sessions: {len(behavior_sessions)}\")\n", "\n", "behavior_sessions.head()" ] }, { "cell_type": "markdown", "id": "405b5888", "metadata": {}, "source": [ "This file contains metadata summarizing every behavior session experienced by the mice in this data release. By filtering on the `mouse_id` column, it can be used to reconstruct the history of any given mouse as it passed through our experimental apparatus." ] }, { "cell_type": "markdown", "id": "acb4f7a9", "metadata": {}, "source": [ "#### Probes table\n", "\n", "Let's look at the contents of `probes.csv`:" ] }, { "cell_type": "code", "execution_count": 13, "id": "c8ccfb5a", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Total number of probes: 905\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ecephys_session_idnamesampling_ratelfp_sampling_ratephasehas_lfp_dataunit_countchannel_countstructure_acronyms
ecephys_probe_id
10445069331044385384probeB30000.1784022500.0148671.0True701384['CA1', 'DG', 'LP', 'POL', 'PoT', 'VISpm', 'ro...
10445069341044385384probeC30000.0498522500.0041541.0True307384['MB', 'MRN', 'POST', 'SCig', 'VISp', 'root']
10445069351044385384probeD30000.0291152500.0024261.0True521384['CA1', 'CA3', 'DG', 'LGv', 'MB', 'TH', 'VISl'...
10445069361044385384probeE30000.0758512500.0063211.0True282384['CA1', 'DG', 'MB', 'MGd', 'MGm', 'MRN', 'SGN'...
10445069371044385384probeF29999.9595782499.9966311.0True368384['CA1', 'DG', 'LP', 'MRN', 'POL', 'PoT', 'SGN'...
\n", "
" ], "text/plain": [ " ecephys_session_id name sampling_rate \\\n", "ecephys_probe_id \n", "1044506933 1044385384 probeB 30000.178402 \n", "1044506934 1044385384 probeC 30000.049852 \n", "1044506935 1044385384 probeD 30000.029115 \n", "1044506936 1044385384 probeE 30000.075851 \n", "1044506937 1044385384 probeF 29999.959578 \n", "\n", " lfp_sampling_rate phase has_lfp_data unit_count \\\n", "ecephys_probe_id \n", "1044506933 2500.014867 1.0 True 701 \n", "1044506934 2500.004154 1.0 True 307 \n", "1044506935 2500.002426 1.0 True 521 \n", "1044506936 2500.006321 1.0 True 282 \n", "1044506937 2499.996631 1.0 True 368 \n", "\n", " channel_count \\\n", "ecephys_probe_id \n", "1044506933 384 \n", "1044506934 384 \n", "1044506935 384 \n", "1044506936 384 \n", "1044506937 384 \n", "\n", " structure_acronyms \n", "ecephys_probe_id \n", "1044506933 ['CA1', 'DG', 'LP', 'POL', 'PoT', 'VISpm', 'ro... \n", "1044506934 ['MB', 'MRN', 'POST', 'SCig', 'VISp', 'root'] \n", "1044506935 ['CA1', 'CA3', 'DG', 'LGv', 'MB', 'TH', 'VISl'... \n", "1044506936 ['CA1', 'DG', 'MB', 'MGd', 'MGm', 'MRN', 'SGN'... \n", "1044506937 ['CA1', 'DG', 'LP', 'MRN', 'POL', 'PoT', 'SGN'... " ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "probes = cache.get_probe_table()\n", "\n", "print(f\"Total number of probes: {len(probes)}\")\n", "\n", "probes.head()" ] }, { "cell_type": "markdown", "id": "62aa07a9", "metadata": {}, "source": [ "This table records metadata for every neuropixels probe encompassed in this data release. Probes are identified by a unique ID (`ecephys_probe_id`). They can be associated with ecephys sessions via the `ecephys_session_id` column." ] }, { "cell_type": "markdown", "id": "9307992e", "metadata": {}, "source": [ "#### Channels table\n", "\n", "Let's look at the contents of `channels.csv`:" ] }, { "cell_type": "code", "execution_count": 14, "id": "34929cef", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Total number of channels: 347520\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ecephys_probe_idecephys_session_idprobe_channel_numberprobe_vertical_positionprobe_horizontal_positionanterior_posterior_ccf_coordinatedorsal_ventral_ccf_coordinateleft_right_ccf_coordinatestructure_acronymunit_countvalid_data
ecephys_channel_id
104936550910480899111047969464020.043.08445.04013.06753.0MRN0True
104936551110480899111047969464120.011.08443.04005.06755.0MRN5True
104936551210480899111047969464240.059.08441.03997.06757.0MRN0True
104936551310480899111047969464340.027.08439.03989.06759.0MRN5True
104936551410480899111047969464460.043.08438.03981.06761.0MRN7True
\n", "
" ], "text/plain": [ " ecephys_probe_id ecephys_session_id \\\n", "ecephys_channel_id \n", "1049365509 1048089911 1047969464 \n", "1049365511 1048089911 1047969464 \n", "1049365512 1048089911 1047969464 \n", "1049365513 1048089911 1047969464 \n", "1049365514 1048089911 1047969464 \n", "\n", " probe_channel_number probe_vertical_position \\\n", "ecephys_channel_id \n", "1049365509 0 20.0 \n", "1049365511 1 20.0 \n", "1049365512 2 40.0 \n", "1049365513 3 40.0 \n", "1049365514 4 60.0 \n", "\n", " probe_horizontal_position \\\n", "ecephys_channel_id \n", "1049365509 43.0 \n", "1049365511 11.0 \n", "1049365512 59.0 \n", "1049365513 27.0 \n", "1049365514 43.0 \n", "\n", " anterior_posterior_ccf_coordinate \\\n", "ecephys_channel_id \n", "1049365509 8445.0 \n", "1049365511 8443.0 \n", "1049365512 8441.0 \n", "1049365513 8439.0 \n", "1049365514 8438.0 \n", "\n", " dorsal_ventral_ccf_coordinate left_right_ccf_coordinate \\\n", "ecephys_channel_id \n", "1049365509 4013.0 6753.0 \n", "1049365511 4005.0 6755.0 \n", "1049365512 3997.0 6757.0 \n", "1049365513 3989.0 6759.0 \n", "1049365514 3981.0 6761.0 \n", "\n", " structure_acronym unit_count valid_data \n", "ecephys_channel_id \n", "1049365509 MRN 0 True \n", "1049365511 MRN 5 True \n", "1049365512 MRN 0 True \n", "1049365513 MRN 5 True \n", "1049365514 MRN 7 True " ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "channels = cache.get_channel_table()\n", "\n", "print(f\"Total number of channels: {len(channels)}\")\n", "\n", "channels.head()" ] }, { "cell_type": "markdown", "id": "a3a3aa5b", "metadata": {}, "source": [ "This table records metadata for each individual channel on the neuropixels probes encompassed in this release. Channels are identified by a unique identifier (`ecephys_channel_id`) and can be linked to probes via the `ecephys_probe_id` column and to sessiosn via the `ecephys_session_id` column." ] }, { "cell_type": "markdown", "id": "a8da4a21", "metadata": {}, "source": [ "#### Units table\n", "\n", "Let's look at the contents of `units.csv`:" ] }, { "cell_type": "code", "execution_count": 15, "id": "d52fc4a9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Total number of units: 319013\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ecephys_channel_idecephys_probe_idecephys_session_idamplitude_cutoffanterior_posterior_ccf_coordinatedorsal_ventral_ccf_coordinateleft_right_ccf_coordinatecumulative_driftd_primestructure_acronym...valid_dataamplitudewaveform_durationwaveform_halfwidthPT_ratiorecovery_sloperepolarization_slopespreadvelocity_abovevelocity_below
unit_id
11570058561157001834104646992510461663690.5000008453.03353.06719.0140.326.088133MB...True286.1326650.1510890.0961470.310791-0.2277260.96131320.0-0.457845NaN
11570058531157001834104646992510461663690.3239278453.03353.06719.0239.764.635583MB...True181.4188350.3571190.1922950.531490-0.1505220.73274130.02.060302-2.060302
11570057201157001786104646992510461663690.0441338575.03842.06590.0263.325.691955MRN...True180.8662050.5219430.1785590.612217-0.0242390.53968780.00.0000000.863364
11570060741157001929104646992510461663690.0005838212.02477.06992.0154.646.049284NOT...True574.9842150.3433840.1922950.470194-0.3566702.25864940.01.3735340.000000
11570060721157001929104646992510461663690.5000008212.02477.06992.0242.584.745499NOT...True315.7941150.3296480.1648240.488276-0.2100101.32027070.00.4120600.343384
\n", "

5 rows × 34 columns

\n", "
" ], "text/plain": [ " ecephys_channel_id ecephys_probe_id ecephys_session_id \\\n", "unit_id \n", "1157005856 1157001834 1046469925 1046166369 \n", "1157005853 1157001834 1046469925 1046166369 \n", "1157005720 1157001786 1046469925 1046166369 \n", "1157006074 1157001929 1046469925 1046166369 \n", "1157006072 1157001929 1046469925 1046166369 \n", "\n", " amplitude_cutoff anterior_posterior_ccf_coordinate \\\n", "unit_id \n", "1157005856 0.500000 8453.0 \n", "1157005853 0.323927 8453.0 \n", "1157005720 0.044133 8575.0 \n", "1157006074 0.000583 8212.0 \n", "1157006072 0.500000 8212.0 \n", "\n", " dorsal_ventral_ccf_coordinate left_right_ccf_coordinate \\\n", "unit_id \n", "1157005856 3353.0 6719.0 \n", "1157005853 3353.0 6719.0 \n", "1157005720 3842.0 6590.0 \n", "1157006074 2477.0 6992.0 \n", "1157006072 2477.0 6992.0 \n", "\n", " cumulative_drift d_prime structure_acronym ... valid_data \\\n", "unit_id ... \n", "1157005856 140.32 6.088133 MB ... True \n", "1157005853 239.76 4.635583 MB ... True \n", "1157005720 263.32 5.691955 MRN ... True \n", "1157006074 154.64 6.049284 NOT ... True \n", "1157006072 242.58 4.745499 NOT ... True \n", "\n", " amplitude waveform_duration waveform_halfwidth PT_ratio \\\n", "unit_id \n", "1157005856 286.132665 0.151089 0.096147 0.310791 \n", "1157005853 181.418835 0.357119 0.192295 0.531490 \n", "1157005720 180.866205 0.521943 0.178559 0.612217 \n", "1157006074 574.984215 0.343384 0.192295 0.470194 \n", "1157006072 315.794115 0.329648 0.164824 0.488276 \n", "\n", " recovery_slope repolarization_slope spread velocity_above \\\n", "unit_id \n", "1157005856 -0.227726 0.961313 20.0 -0.457845 \n", "1157005853 -0.150522 0.732741 30.0 2.060302 \n", "1157005720 -0.024239 0.539687 80.0 0.000000 \n", "1157006074 -0.356670 2.258649 40.0 1.373534 \n", "1157006072 -0.210010 1.320270 70.0 0.412060 \n", "\n", " velocity_below \n", "unit_id \n", "1157005856 NaN \n", "1157005853 -2.060302 \n", "1157005720 0.863364 \n", "1157006074 0.000000 \n", "1157006072 0.343384 \n", "\n", "[5 rows x 34 columns]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "units = cache.get_unit_table()\n", "\n", "print(f\"Total number of units: {len(units)}\")\n", "\n", "units.head()" ] }, { "cell_type": "markdown", "id": "deafdedb", "metadata": {}, "source": [ "This table provides metadata on the units identified in this data release. Quoting the [Visual Coding Neuropixels documentation](https://allensdk.readthedocs.io/en/latest/visual_coding_neuropixels.html)\n", "\n", "\n", ">Throughout the SDK, we refer to neurons as “units,” because we cannot guarantee that all the spikes assigned to one unit actually originate from a single cell. Unlike in two-photon imaging, where you can visualize each neuron throughout the entire experiment, with electrophysiology we can only “see” a neuron when it fires a spike. If a neuron moves relative to the probe, or if it’s far away from the probe, some of its spikes may get mixed together with those from other neurons. Because of this inherent ambiguity, we provide a variety of quality metrics to allow you to find the right units for your analysis. Even highly contaminated units contain potentially valuable information about brain states, so we didn’t want to leave them out of the dataset. But certain types of analysis require more stringent quality thresholds, to ensure that all of the included units are well isolated from their neighbors.\n", "\n", "Units are identified by a unique `unit_id` and can be associated to channels, probes, and sessions via `ecephys_channel_id`, `ecephys_probe_id` and `ecephys_session_id`." ] }, { "cell_type": "markdown", "id": "7c1fd9aa", "metadata": {}, "source": [ "### Using the AllenSDK to access Visual Behavior Neuropixels data\n", "\n", "After looking through the metadata for the data release, let's say you want to access information about a specific ecephys session (ecephys_session_id=1052533639)\n", "\n", "The following command will download the NWB file associated with a specific `ecephys_session_id` (unless it has been previously downloaded into this cache) and load it into a python object for manipulation and inspection.\n", "\n", "**Note:** each NWB file associated with an ecephys esssion is approximately 2GB in size." ] }, { "cell_type": "code", "execution_count": 16, "id": "316205f8", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "ecephys_session_1052533639.nwb: 100%|██████████████████████████████████████████████████████████████████████████████████████████████| 2.31G/2.31G [05:34<00:00, 6.92MMB/s]\n", "/opt/anaconda3/envs/allensdk/lib/python3.8/site-packages/hdmf/spec/namespace.py:532: UserWarning: Ignoring cached namespace 'hdmf-common' version 1.5.1 because version 1.5.0 is already loaded.\n", " warn(\"Ignoring cached namespace '%s' version %s because version %s is already loaded.\"\n", "/opt/anaconda3/envs/allensdk/lib/python3.8/site-packages/hdmf/spec/namespace.py:532: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.2.0 because version 0.1.0 is already loaded.\n", " warn(\"Ignoring cached namespace '%s' version %s because version %s is already loaded.\"\n" ] } ], "source": [ "ecephys_session = cache.get_ecephys_session(ecephys_session_id=1052533639)" ] }, { "cell_type": "code", "execution_count": 17, "id": "3b1e8c57", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['behavior_data_class', 'behavior_session_id', 'eye_tracking', 'eye_tracking_rig_geometry', 'get_channels', 'get_performance_metrics', 'get_reward_rate', 'get_rolling_performance_df', 'get_units', 'licks', 'mean_waveforms', 'metadata', 'optotagging_table', 'probes', 'raw_running_speed', 'rewards', 'running_speed', 'spike_amplitudes', 'spike_times', 'stimulus_presentations', 'stimulus_templates', 'stimulus_timestamps', 'task_parameters', 'trials']\n" ] } ], "source": [ "# List methods of the session that can be used to get data\n", "print(ecephys_session.list_data_attributes_and_methods())" ] }, { "cell_type": "markdown", "id": "2f600c35", "metadata": {}, "source": [ "Let's try viewing one of the visual stimuli presented to the mouse during the behavior session we downloaded:" ] }, { "cell_type": "code", "execution_count": 18, "id": "04fa8cec", "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
unwarpedwarped
image_name
im104_r[[nan, nan, nan, nan, nan, nan, nan, nan, nan,...[[136, 138, 140, 141, 141, 141, 140, 140, 140,...
im114_r[[nan, nan, nan, nan, nan, nan, nan, nan, nan,...[[193, 190, 192, 194, 190, 182, 175, 173, 174,...
im083_r[[nan, nan, nan, nan, nan, nan, nan, nan, nan,...[[6, 9, 2, 0, 0, 0, 7, 5, 0, 0, 0, 2, 7, 6, 2,...
im005_r[[nan, nan, nan, nan, nan, nan, nan, nan, nan,...[[81, 82, 80, 76, 76, 80, 83, 82, 80, 78, 78, ...
im087_r[[nan, nan, nan, nan, nan, nan, nan, nan, nan,...[[38, 39, 34, 28, 28, 35, 41, 39, 34, 31, 33, ...
im024_r[[nan, nan, nan, nan, nan, nan, nan, nan, nan,...[[19, 21, 15, 8, 8, 17, 23, 22, 15, 11, 14, 19...
im111_r[[nan, nan, nan, nan, nan, nan, nan, nan, nan,...[[53, 55, 50, 44, 45, 51, 56, 56, 52, 49, 50, ...
im034_r[[nan, nan, nan, nan, nan, nan, nan, nan, nan,...[[124, 126, 128, 128, 129, 129, 129, 129, 127,...
\n", "
" ], "text/plain": [ " unwarped \\\n", "image_name \n", "im104_r [[nan, nan, nan, nan, nan, nan, nan, nan, nan,... \n", "im114_r [[nan, nan, nan, nan, nan, nan, nan, nan, nan,... \n", "im083_r [[nan, nan, nan, nan, nan, nan, nan, nan, nan,... \n", "im005_r [[nan, nan, nan, nan, nan, nan, nan, nan, nan,... \n", "im087_r [[nan, nan, nan, nan, nan, nan, nan, nan, nan,... \n", "im024_r [[nan, nan, nan, nan, nan, nan, nan, nan, nan,... \n", "im111_r [[nan, nan, nan, nan, nan, nan, nan, nan, nan,... \n", "im034_r [[nan, nan, nan, nan, nan, nan, nan, nan, nan,... \n", "\n", " warped \n", "image_name \n", "im104_r [[136, 138, 140, 141, 141, 141, 140, 140, 140,... \n", "im114_r [[193, 190, 192, 194, 190, 182, 175, 173, 174,... \n", "im083_r [[6, 9, 2, 0, 0, 0, 7, 5, 0, 0, 0, 2, 7, 6, 2,... \n", "im005_r [[81, 82, 80, 76, 76, 80, 83, 82, 80, 78, 78, ... \n", "im087_r [[38, 39, 34, 28, 28, 35, 41, 39, 34, 31, 33, ... \n", "im024_r [[19, 21, 15, 8, 8, 17, 23, 22, 15, 11, 14, 19... \n", "im111_r [[53, 55, 50, 44, 45, 51, 56, 56, 52, 49, 50, ... \n", "im034_r [[124, 126, 128, 128, 129, 129, 129, 129, 127,... " ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Listing the different stimuli templates\n", "ecephys_session.stimulus_templates" ] }, { "cell_type": "code", "execution_count": 19, "id": "32dde8ff", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Visualizing a particular stimulus\n", "plt.imshow(ecephys_session.stimulus_templates['warped']['im104_r'], cmap='gray')" ] }, { "cell_type": "markdown", "id": "1a0831ef", "metadata": {}, "source": [ "As you can see, the `ecephy_session` object has a lot of attributes and methods that can be used to access underlying data in the NWB file. Most of these will be touched on in other tutorials for [this data release](http://portal.brain-map.org/explore/circuits/visual-behavior-neuropixels).\n", "\n", "Now let's see how to get data for a particular ecephys session:" ] }, { "cell_type": "markdown", "id": "4fcbd1bd", "metadata": {}, "source": [ "#### Downloading the complete dataset with AllenSDK\n", "\n", "Analyzing one session or experiment at a time is nice, but in some cases you'll want to be able to perform an analysis across the whole dataset. To fill your cache with all available data, you can use a for loop like the one below.\n", "\n", "Before running this code, please make sure that you have enough space available in your cache directory. You'll need around 524 GB for to contain all of the NWB files." ] }, { "cell_type": "code", "execution_count": null, "id": "cb91c928", "metadata": {}, "outputs": [], "source": [ "# Remove rows from the behavior sessions table which don't correspond to a behavior session NWB file\n", "filtered_ecephys_sessions = ecephys_sessions.dropna(subset=[\"file_id\"])\n", "\n", "for ecephys_session_id, _ in filtered_ecephys_sessions.iterrows():\n", " cache.get_ecephys_session(ecephys_session_id=ecephys_session_id)\n" ] }, { "cell_type": "markdown", "id": "11d58792", "metadata": {}, "source": [ "## Direct download of data from S3\n", "\n", "If you do not wish to obtain data via the AllenSDK `VisualBehaviorNeuropixelsProjectCache` class, this section describes how to directly determine an S3 download link for your file or files of interest.\n", "\n", "The S3 bucket that stores all the data for this project's release is: \n", "https://visual-behavior-neuropixels-data.s3.us-west-2.amazonaws.com\n", "\n", "The structure of the S3 bucket looks like:\n", "\n", "```\n", "visual-behavior-neuropixels-2022/\n", "│\n", "├── release_notes.txt\n", "│\n", "├── manifests/\n", "│ ├── visual-behavior-neuropixels_project_manifest_v{a.b.c}.json\n", "│ ├── visual-behavior-neuropixels_project_manifest_v{x.y.z}.json\n", "│ ...\n", "│\n", "├── project_metadata/\n", "│ ├── ecephys_sessions.csv\n", "│ ├── behavior_sessions.csv\n", "│ ├── probes.csv\n", "│ ├── channels.csv\n", "│ ├── units.csv\n", "│\n", "└── ecephys_sessions/\n", " ├── ecephys_session_{abc}.nwb\n", " ├── ecephys_session_{xyz}.nwb\n", " ...\n", "```\n", "\n", "So if for example, you wanted to download a specific `ecephys_session` you could first download the `ecephys_sessions.csv` with:\n", "\n", "https://visual-behavior-neuropixels-data.s3.us-west-2.amazonaws.com/visual-behavior-neuropixels/project_metadata/ecephys_sessions.csv (try clicking me!)\n", "\n", "Then using the table, determine the `ecephys_session_id` you are interested in. Let's say we want `ecephys_session_id = 1043752325`, then the appropriate download link would be:\n", "\n", "https://visual-behavior-neuropixels-data.s3.us-west-2.amazonaws.com/visual-behavior-neuropixels/ecephys_sessions/ecephys_session_1043752325.nwb\n", "\n", "Below are some simple sample functions that will help you efficiently determine download URL links:" ] }, { "cell_type": "code", "execution_count": 23, "id": "c12a4819", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "https://visual-behavior-neuropixels-data.s3.us-west-2.amazonaws.com/visual-behavior-neuropixels/manifests/visual-behavior-neuropixels_project_manifest_v0.1.0.json\n" ] } ], "source": [ "from urllib.parse import urljoin\n", "\n", "def get_manifest_url(manifest_version: str) -> str:\n", " hostname = \"https://visual-behavior-neuropixels-data.s3.us-west-2.amazonaws.com\"\n", " object_key = f\"visual-behavior-neuropixels/manifests/visual-behavior-neuropixels_project_manifest_v{manifest_version}.json\"\n", " return urljoin(hostname, object_key)\n", "\n", "# Example:\n", "print(get_manifest_url(\"0.1.0\"))" ] }, { "cell_type": "code", "execution_count": 21, "id": "685c9cff", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "https://visual-behavior-neuropixels-data.s3.us-west-2.amazonaws.com/visual-behavior-neuropixels/project_metadata/behavior_sessions.csv\n" ] } ], "source": [ "def get_metadata_url(metadata_table_name: str) -> str:\n", " hostname = \"https://visual-behavior-neuropixels-data.s3.us-west-2.amazonaws.com\"\n", " object_key = f\"visual-behavior-neuropixels/project_metadata/{metadata_table_name}.csv\"\n", " return urljoin(hostname, object_key)\n", "\n", "# Example:\n", "print(get_metadata_url(\"behavior_sessions\"))" ] }, { "cell_type": "code", "execution_count": 22, "id": "e1d07772", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "https://visual-behavior-neuropixels-data.s3.us-west-2.amazonaws.com/visual-behavior-neuropixels/ecephys_sessions/ecephys_session_1052533639.nwb\n" ] } ], "source": [ "def get_behavior_session_url(ecephys_session_id: int) -> str:\n", " hostname = \"https://visual-behavior-neuropixels-data.s3.us-west-2.amazonaws.com\"\n", " object_key = f\"visual-behavior-neuropixels/ecephys_sessions/ecephys_session_{ecephys_session_id}.nwb\"\n", " return urljoin(hostname, object_key)\n", "\n", "# Example:\n", "print(get_behavior_session_url(1052533639))" ] }, { "cell_type": "markdown", "id": "bb1d746d", "metadata": {}, "source": [ "## Downloading previous versions of released data from S3\n", "\n", "AllenSDK makes uses of versioned manifest (JSON) files that live in the S3 bucket to keep track of EVERY version of a file for this data release. If a bug/error in the released data is discovered or new data is added to existing NWB files and the updated NWB file is uploaded in the future, a new manifest will be created pointing to the newest version of the file. The existing manifest will continue pointing at the original version allowing reproducibility of analysis results. You can think of each manifest as a snapshot of the state of the S3 bucket when the manifest was created.\n", "\n", "This section describes how to download specific versions of a file in the S3 bucket.\n", "\n", "### Listing and downloading a specific manifest version for the data release\n", "\n", "If you have an AWS account (even a free tier account works) you can log in and access the bucket directly:\n", "\n", "https://s3.console.aws.amazon.com/s3/buckets/visual-behavior-neuropixels-data?prefix=visual-behavior-neuropixels/manifests/\n", "\n", "If you don't have or don't want to use an AWS account you can click the following list to get an XML document:\n", "\n", "https://s3.console.aws.amazon.com/s3/buckets/visual-behavior-neuropixels-data?list-type=2&prefix=visual-behavior-neuropixels/manifests/\n", "\n", "Which will look like:\n", "```\n", "\n", " sfd-cloudcache-test-bucket\n", " visual-behavior-neuropixels/manifests/\n", " 1\n", " 1000\n", " false\n", " \n", " \n", " visual-behavior-neuropixels/manifests/visual-behavior-neuropixels-2022_project_manifest_v0.1.0.json\n", " \n", " 2021-03-22T14:36:31.000Z\n", " \"8d10d6dd87234d4e0a1d400908c5013d\"\n", " 1730897\n", " STANDARD\n", " \n", "\n", "```\n", "The XML document is the result of a query which lists all manifests that currently exist for the data release (denoted with `` ``). To obtain a specific manifest of interest you just take the `Key` for the manifest you're interested in and append it to the name of the S3 bucket. For example:\n", "\n", "https://s3.console.aws.amazon.com/s3/buckets/visual-behavior-neuropixels-data?prefix=visual-behavior-neuropixels/manifests/visual-behavior-neuropixels_project_manifest_v0.1.0.json\n", "\n", "\n", "### Using a versioned manifest to download a specific data version\n", "\n", "Once you've downloaded a manifest, you can use it to obtain download links for the specific version of data files that the manifest tracks. The example function below loads a downloaded manifest and generates download links for *all* the metadata and data files for the specified manifest:" ] }, { "cell_type": "code", "execution_count": null, "id": "a4dff7f9", "metadata": {}, "outputs": [], "source": [ "from typing import List\n", "from urllib.parse import urljoin\n", "import json\n", "\n", "# The location will differ based on where you downloaded the manifest.json!\n", "my_manifest_location = data_storage_directory / 'visual-behavior-neuropixels_project_manifest_v0.3.0.json'\n", "\n", "def generate_all_download_urls_from_manifest(manifest_path: Path) -> List[str]:\n", " with manifest_path.open('r') as fp:\n", " manifest = json.load(fp)\n", " \n", " download_links = []\n", " \n", " # Get download links for specific version of metadata files\n", " for metadata_file_entry in manifest[\"metadata_files\"].values():\n", " base_download_url = metadata_file_entry[\"url\"]\n", " version_query = f\"?versionId={metadata_file_entry['version_id']}\"\n", " full_download_url = urljoin(base_download_url, version_query)\n", " download_links.append(full_download_url)\n", "\n", " # Get download links for specific version of data files\n", " for data_file_entry in manifest[\"data_files\"].values():\n", " base_download_url = data_file_entry[\"url\"]\n", " version_query = f\"?versionId={data_file_entry['version_id']}\"\n", " full_download_url = urljoin(base_download_url, version_query)\n", " download_links.append(full_download_url) \n", "\n", " return download_links\n", "\n", "# Example:\n", "print('\\n'.join(generate_all_download_urls_from_manifest(my_manifest_location)))" ] } ], "metadata": { "interpreter": { "hash": "916dbcbb3f70747c44a77c7bcd40155683ae19c65e1c03b4aa3499c5328201f1" }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.8.0" } }, "nbformat": 4, "nbformat_minor": 5 }