{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Cell Types Database\n", "\n", "This notebook demonstrates most of the features of the AllenSDK that help manipulate data in the Cell Types Database. The main entry point will be through the `CellTypesCache` class.\n", "\n", "`CellTypesCache` is responsible for downloading Cell Types Database data to a standard directory structure on your hard drive. If you use this class, you will not have to keep track of where your data lives, other than a root directory.\n", "\n", "Download this file in .ipynb format here." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/local1/anaconda3/envs/py2/lib/python2.7/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n", " from ._conv import register_converters as _register_converters\n" ] } ], "source": [ "from allensdk.core.cell_types_cache import CellTypesCache\n", "\n", "# Instantiate the CellTypesCache instance. The manifest_file argument\n", "# tells it where to store the manifest, which is a JSON file that tracks\n", "# file paths. If you supply a relative path it will go into your\n", "# current working directory\n", "ctc = CellTypesCache()\n", "\n", "# this saves the NWB file to 'cell_types/specimen_464212183/ephys.nwb'\n", "cell_specimen_id = 464212183\n", "data_set = ctc.get_ephys_data(cell_specimen_id)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `data_set` variable is an `NwbDataSet` instance, which has some methods we can use to access the injected current stimulus waveform and the voltage response waveform for all experimental sweeps. Let's pull one sweep out and plot it." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "sweep_number = 30\n", "sweep_data = data_set.get_sweep(sweep_number)\n", "\n", "index_range = sweep_data[\"index_range\"]\n", "i = sweep_data[\"stimulus\"][0:index_range[1]+1] # in A\n", "v = sweep_data[\"response\"][0:index_range[1]+1] # in V\n", "i *= 1e12 # to pA\n", "v *= 1e3 # to mV\n", "\n", "sampling_rate = sweep_data[\"sampling_rate\"] # in Hz\n", "t = np.arange(0, len(v)) * (1.0 / sampling_rate)\n", "\n", "plt.style.use('ggplot')\n", "fig, axes = plt.subplots(2, 1, sharex=True)\n", "axes[0].plot(t, v, color='black')\n", "axes[1].plot(t, i, color='gray')\n", "axes[0].set_ylabel(\"mV\")\n", "axes[1].set_ylabel(\"pA\")\n", "axes[1].set_xlabel(\"seconds\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Filtering Cells via Metadata\n", "\n", "Cell records in the Cell Types Database come with a large amount of metadata. We have exposed the most commonly used of these are arguments to CellTypesCache.get_cells. " ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Total cells: 2333\n", "Mouse cells: 1920\n", "Human cells: 413\n", "Cells with reconstructions: 667\n", "Cre-positive cells: 1815\n", "Cre-negative cells with reconstructions: 38\n" ] } ], "source": [ "from allensdk.core.cell_types_cache import CellTypesCache\n", "from allensdk.api.queries.cell_types_api import CellTypesApi\n", "from allensdk.core.cell_types_cache import ReporterStatus as RS\n", "\n", "# download all cells\n", "cells = ctc.get_cells()\n", "print(\"Total cells: %d\" % len(cells))\n", "\n", "# mouse cells\n", "cells = ctc.get_cells(species=[CellTypesApi.MOUSE])\n", "print(\"Mouse cells: %d\" % len(cells))\n", "\n", "# human cells\n", "cells = ctc.get_cells(species=[CellTypesApi.HUMAN])\n", "print(\"Human cells: %d\" % len(cells))\n", "\n", "# cells with reconstructions\n", "cells = ctc.get_cells(require_reconstruction = True)\n", "print(\"Cells with reconstructions: %d\" % len(cells))\n", "\n", "# all cre positive cells\n", "cells = ctc.get_cells(reporter_status = RS.POSITIVE)\n", "print(\"Cre-positive cells: %d\" % len(cells))\n", "\n", "# cre negative cells with reconstructions\n", "cells = ctc.get_cells(require_reconstruction = True, \n", " reporter_status = RS.NEGATIVE)\n", "print(\"Cre-negative cells with reconstructions: %d\" % len(cells))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Cell Morphology Reconstructions\n", "\n", "The Cell Types Database also contains 3D reconstructions of neuronal morphologies. The data are presented in the SWC format. We'll download a particular cell's reconstrution here.\n", "\n", "The AllenSDK contains a module that makes it easier to work with the SWC files. We'll see how the data is contained in the file by looking at the first node." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'children': [1,\n", " 1763,\n", " 2012,\n", " 2089,\n", " 2421,\n", " 2604,\n", " 2821,\n", " 3147,\n", " 3440,\n", " 3491,\n", " 3552,\n", " 4015],\n", " 'id': 0,\n", " 'parent': -1,\n", " 'radius': 7.6078,\n", " 'tree_id': 0,\n", " 'type': 1,\n", " 'x': 444.3296,\n", " 'y': 503.0168,\n", " 'z': 31.92}\n" ] } ], "source": [ "import pprint\n", "\n", "# download and open an SWC file\n", "cell_id = 480114344\n", "morphology = ctc.get_reconstruction(cell_id) \n", "\n", "# the compartment list has all of the nodes in the file\n", "pprint.pprint(morphology.compartment_list[0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that the `type` field refers to the type of neuronal compartment. The values can be 1 for the soma, 2 for the axon, 3 for dendrites, and 4 for apical dendrites (if present).\n", "\n", "Morphologies now also come with marker files, which contains points of interest in the reconstruction. The marker file contains locations where dendrites have been truncated due to slicing and when axons were not reconstructed. The `name` field indicates the type of marker (10 for dendrite truncation, 20 for no reconstruction)." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'name': 10, 'x': 527.5029999999999, 'y': 496.4319, 'z': 12.4555}\n" ] } ], "source": [ "# download and open a marker file\n", "markers = ctc.get_reconstruction_markers(cell_id) \n", "pprint.pprint(markers[0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use this data to draw lines between each node and all its children to get a drawing of the cell. We'll do it looking at it from the front and from the side." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from allensdk.core.swc import Marker\n", "fig, axes = plt.subplots(1, 2, sharey=True, sharex=True)\n", "axes[0].set_aspect('equal', 'box-forced')\n", "axes[1].set_aspect('equal', 'box-forced')\n", "\n", "# Make a line drawing of x-y and y-z views\n", "for n in morphology.compartment_list:\n", " for c in morphology.children_of(n):\n", " axes[0].plot([n['x'], c['x']], [n['y'], c['y']], color='black')\n", " axes[1].plot([n['z'], c['z']], [n['y'], c['y']], color='black')\n", "\n", "# cut dendrite markers\n", "dm = [ m for m in markers if m['name'] == Marker.CUT_DENDRITE ]\n", "\n", "axes[0].scatter([m['x'] for m in dm], [m['y'] for m in dm], color='#3333ff')\n", "axes[1].scatter([m['z'] for m in dm], [m['y'] for m in dm], color='#3333ff')\n", "\n", "# no reconstruction markers\n", "nm = [ m for m in markers if m['name'] == Marker.NO_RECONSTRUCTION ]\n", "\n", "axes[0].scatter([m['x'] for m in nm], [m['y'] for m in nm], color='#333333')\n", "axes[1].scatter([m['z'] for m in nm], [m['y'] for m in nm], color='#333333')\n", "\n", "axes[0].set_ylabel('y')\n", "axes[0].set_xlabel('x')\n", "axes[1].set_xlabel('z')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Electrophysiology Features\n", "\n", "The Cell Types Database contains a set of features that have already been computed, which could serve as good starting points for analysis. We can query the database using the SDK to get these features." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/local1/git/allensdk/allensdk/api/cache.py:382: FutureWarning: from_csv is deprecated. Please use read_csv(...) instead. Note that some of the default arguments are different, so please refer to the documentation for from_csv when changing your function calls\n", " 'reader': lambda f: pd.DataFrame.from_csv(f).to_dict('records')\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Ephys. features available for 2333 cells\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", "
adaptationavg_isielectrode_0_paf_i_curve_slopefast_trough_t_long_squarefast_trough_t_rampfast_trough_t_short_squarefast_trough_v_long_squarefast_trough_v_rampfast_trough_v_short_square...trough_t_ramptrough_t_short_squaretrough_v_long_squaretrough_v_ramptrough_v_short_squareupstroke_downstroke_ratio_long_squareupstroke_downstroke_ratio_rampupstroke_downstroke_ratio_short_squarevm_for_sagvrest
11290.0106650.912222-73.0906170.3859911.2435753.8726151.025798-58.406254-56.364585-61.026044...3.872971.273295-58.59375-56.635419-65.7291681.9156842.0455411.821178-90.46875-65.771713
\n", "

1 rows × 55 columns

\n", "
" ], "text/plain": [ " adaptation avg_isi electrode_0_pa f_i_curve_slope \\\n", "1129 0.01066 50.912222 -73.090617 0.385991 \n", "\n", " fast_trough_t_long_square fast_trough_t_ramp \\\n", "1129 1.243575 3.872615 \n", "\n", " fast_trough_t_short_square fast_trough_v_long_square \\\n", "1129 1.025798 -58.406254 \n", "\n", " fast_trough_v_ramp fast_trough_v_short_square ... \\\n", "1129 -56.364585 -61.026044 ... \n", "\n", " trough_t_ramp trough_t_short_square trough_v_long_square \\\n", "1129 3.87297 1.273295 -58.59375 \n", "\n", " trough_v_ramp trough_v_short_square \\\n", "1129 -56.635419 -65.729168 \n", "\n", " upstroke_downstroke_ratio_long_square upstroke_downstroke_ratio_ramp \\\n", "1129 1.915684 2.045541 \n", "\n", " upstroke_downstroke_ratio_short_square vm_for_sag vrest \n", "1129 1.821178 -90.46875 -65.771713 \n", "\n", "[1 rows x 55 columns]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "# download all electrophysiology features for all cells\n", "ephys_features = ctc.get_ephys_features()\n", "ef_df = pd.DataFrame(ephys_features)\n", "\n", "print(\"Ephys. features available for %d cells\" % len(ef_df))\n", "\n", "# filter down to a specific cell\n", "specimen_id = 464212183\n", "cell_ephys_features = ef_df[ef_df['specimen_id']== specimen_id]\n", "cell_ephys_features" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "That's how to get all the ephys features for a given specimen - what if we want a particular feature for all cells?" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.scatter(ef_df['fast_trough_v_long_square'], \n", " ef_df['upstroke_downstroke_ratio_long_square'], color='#2ca25f')\n", "plt.ylabel(\"upstroke-downstroke ratio\")\n", "plt.xlabel(\"fast trough depth (mV)\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's use numpy to fit a regression line to these data and plot it." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "First 5 rows of A:\n", "[[-56.37500381 1. ]\n", " [-54. 1. ]\n", " [-59.5 1. ]\n", " [-47.53125 1. ]\n", " [-48.43750381 1. ]]\n", "('m', 0.10468807187601809, 'c', 8.355078903861308)\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "A = np.vstack([ef_df['fast_trough_v_long_square'], \n", " np.ones_like(ef_df['upstroke_downstroke_ratio_long_square'])]).T\n", "\n", "print(\"First 5 rows of A:\")\n", "print(A[:5, :])\n", "\n", "m, c = np.linalg.lstsq(A, ef_df['upstroke_downstroke_ratio_long_square'], rcond=None)[0]\n", "print(\"m\", m, \"c\", c)\n", "\n", "plt.figure()\n", "plt.scatter(ef_df['fast_trough_v_long_square'], \n", " ef_df['upstroke_downstroke_ratio_long_square'], \n", " color='#2ca25f')\n", "plt.plot(ef_df['fast_trough_v_long_square'],\n", " m * ef_df['fast_trough_v_long_square'] + c, c='gray')\n", "plt.ylabel(\"upstroke-downstroke ratio\")\n", "plt.xlabel(\"fast trough depth (mV)\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It looks like there may be roughly two clusters in the data above. Maybe they relate to whether the cells are presumably excitatory (spiny) cells or inhibitory (aspiny) cells. Let's query the API and split up the two sets to see." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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MZuaWu+w7nnppZfS3NxMNBrlsssu4/Of/zxXXXUV77zzDpIksW7dOq644grOP/98jj76aP785z8TDAa55ZZbWLp0KRs3buSdd97hxhtv5Jvf/CbV1dW8/fbbdHR08L3vfY+1a9eyfv161q5dy5lnngnA1772Nc4++2zOOOOMkfhY0ozmPmk9sGFA6bMTuGQU31swxZkKvm2nzzgV1E893VEefvBDeroHdSWtLSHOu+DwYU0At9xyC3V1dfT397NmzRqOOeYYWltbefbZZ5Pv29OTPre/v59HH32UV199lauuuip9TiZtbW088sgjbN++nUsuuYS1a9dy4YUXcuedd3LmmWfS29vLG2+8wW233TbkMdsxasZf07Q/A8eN1vsJBCPNZFktTwX108svNWcZfoCe7hgvv9TM6rWHDvm+d999N5s3bwagubmZWCxGU1MT//qv/8onP/nJdKVPSDZnATjxxBPp6+vLmhhSfOpTn0KWZY444gg6OjoAWL58Od/73vc4cOAATzzxBGeddVZZ4hkiw1cgcEA5moOMFVNB/RQKxks67oSXX36ZF198kccee4wtW7bwkY98hFgsxjPPPMPy5cv5r//6L66++ur0+bnlna3KPadKPQNkxl8/+9nP8vDDD6NpWtmKvjmeTlRVPRz4PDAH2A88oGnaB2UZlUAwzphMq+WpkNlb5XeXdNwJfX191NTUUFFRwfbt23nzzTfp6urCMAzWrFnD/PnzufLKK9PnP/roo3z84x/nT3/6E4FAIN38xQmqqrJmzRqmT5/O4sWLhzzmQjgy/qqqfhrYADwO7AEWA6+rqvoFTdMeLcvIBIJxxGRaLU+FzN6TVsymtSWU5fqpqfVw0orZQ77naaedxm9/+1tWrVrFwoULOfbYY9NVOQ0jOZ1+5zvfSZ9fW1vL2WefnQ74lkJjYyOHH354OuhbDpyu/H8MnKNp2nOpA6qqngb8AhDGXzDpmUyr5amgfqqp9XLeBYePqNrH6/Vy33335R2//PLLLc8/66yzsiYDgHXr1qXdOLlB3A8/HKzH1N/fz65du9ItIsuBU+M/F3gx59hLA8cFgklPodXyRAwETwX1U02td1jB3bHihRde4KqrruKKK64oyVVUKk6N/5+Bq4CfZBz71sBxgWDSY7daBia9bFJQOg899NCQrz3llFN4/fXXR3A01jg1/v8E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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cells = ctc.get_cells()\n", "\n", "# we want to add dendrite type as a column to the ephys. features dataframe\n", "# first build an index on cell specimen ID, then create array of dendrite types\n", "cell_index = { c['id']: c for c in cells }\n", "dendrite_types = [ cell_index[cid]['dendrite_type'] for cid in ef_df['specimen_id'] ]\n", "\n", "# now add the new column\n", "ef_df['dendrite_type'] = pd.Series(dendrite_types, index=ef_df.index)\n", "\n", "fig = plt.figure()\n", "\n", "for d_type, color in [ [\"spiny\", \"#d95f02\"], [\"aspiny\", \"#7570b3\"] ]:\n", " df = ef_df[ef_df['dendrite_type'] == d_type]\n", " plt.scatter(df['fast_trough_v_long_square'], \n", " df['upstroke_downstroke_ratio_long_square'], \n", " color=color, label=d_type)\n", "\n", " plt.ylabel(\"upstroke-downstroke ratio\")\n", " plt.xlabel(\"fast trough depth (mV)\")\n", " plt.legend(loc='best')\n", " \n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Morphology Features\n", "\n", "The Cell Types Database contains a set of precomputed morphological features for cells that have reconstructions. You can access morphology features by themselves, or combined with the electrophysiology features." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "All features available for 670 cells\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", "
adaptationaverage_bifurcation_angle_localaverage_bifurcation_angle_remoteaverage_contractionaverage_diameteraverage_fragmentationaverage_parent_daughter_ratioavg_isielectrode_0_paf_i_curve_slope...trough_t_ramptrough_t_short_squaretrough_v_long_squaretrough_v_ramptrough_v_short_squareupstroke_downstroke_ratio_long_squareupstroke_downstroke_ratio_rampupstroke_downstroke_ratio_short_squarevm_for_sagvrest
0NaN72.604110NaN0.8505610.52721375.1339290.966709134.70000022.6974988.335459e-02...13.2956801.13478-56.593754-57.739586-74.1437533.0296953.0616462.969821-80.468750-73.553391
1NaN68.499396NaN0.9340720.61413361.1724140.892380NaN-24.887498-3.913630e-19...20.6507351.16094-55.406254-55.242191-73.5000002.4418952.2456532.231575-84.406258-73.056595
20.04482577.679949NaN0.8956640.48886548.0277780.92851091.322222-46.7618762.238637e-01...3.8620071.80651-50.875000-50.989586-76.7916692.9927932.8178562.706951-96.906250-75.320374
30.00230373.926537NaN0.8962270.21638462.2826090.9939278.756140-33.7874976.366711e-01...16.7535401.29864-61.031254-65.000005-79.6250030.9872041.1917621.294996-85.593750-79.520042
40.09349289.985385NaN0.8211160.28954954.0000001.000000112.2450003.0150001.500000e-01...5.4839531.22590-51.406254-59.552087-81.8750082.1998722.2200312.235442-95.843758-81.065971
\n", "

5 rows × 83 columns

\n", "
" ], "text/plain": [ " adaptation average_bifurcation_angle_local \\\n", "0 NaN 72.604110 \n", "1 NaN 68.499396 \n", "2 0.044825 77.679949 \n", "3 0.002303 73.926537 \n", "4 0.093492 89.985385 \n", "\n", " average_bifurcation_angle_remote average_contraction average_diameter \\\n", "0 NaN 0.850561 0.527213 \n", "1 NaN 0.934072 0.614133 \n", "2 NaN 0.895664 0.488865 \n", "3 NaN 0.896227 0.216384 \n", "4 NaN 0.821116 0.289549 \n", "\n", " average_fragmentation average_parent_daughter_ratio avg_isi \\\n", "0 75.133929 0.966709 134.700000 \n", "1 61.172414 0.892380 NaN \n", "2 48.027778 0.928510 91.322222 \n", "3 62.282609 0.993927 8.756140 \n", "4 54.000000 1.000000 112.245000 \n", "\n", " electrode_0_pa f_i_curve_slope ... trough_t_ramp \\\n", "0 22.697498 8.335459e-02 ... 13.295680 \n", "1 -24.887498 -3.913630e-19 ... 20.650735 \n", "2 -46.761876 2.238637e-01 ... 3.862007 \n", "3 -33.787497 6.366711e-01 ... 16.753540 \n", "4 3.015000 1.500000e-01 ... 5.483953 \n", "\n", " trough_t_short_square trough_v_long_square trough_v_ramp \\\n", "0 1.13478 -56.593754 -57.739586 \n", "1 1.16094 -55.406254 -55.242191 \n", "2 1.80651 -50.875000 -50.989586 \n", "3 1.29864 -61.031254 -65.000005 \n", "4 1.22590 -51.406254 -59.552087 \n", "\n", " trough_v_short_square upstroke_downstroke_ratio_long_square \\\n", "0 -74.143753 3.029695 \n", "1 -73.500000 2.441895 \n", "2 -76.791669 2.992793 \n", "3 -79.625003 0.987204 \n", "4 -81.875008 2.199872 \n", "\n", " upstroke_downstroke_ratio_ramp upstroke_downstroke_ratio_short_square \\\n", "0 3.061646 2.969821 \n", "1 2.245653 2.231575 \n", "2 2.817856 2.706951 \n", "3 1.191762 1.294996 \n", "4 2.220031 2.235442 \n", "\n", " vm_for_sag vrest \n", "0 -80.468750 -73.553391 \n", "1 -84.406258 -73.056595 \n", "2 -96.906250 -75.320374 \n", "3 -85.593750 -79.520042 \n", "4 -95.843758 -81.065971 \n", "\n", "[5 rows x 83 columns]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "# download all morphology features for cells with reconstructions\n", "morphology_features = ctc.get_morphology_features()\n", "\n", "# or download both morphology and ephys features\n", "all_features = ctc.get_all_features(require_reconstruction=True)\n", "\n", "# convert to a pandas DataFrame\n", "all_features = pd.DataFrame(all_features)\n", "print(\"All features available for %d cells\" % len(all_features))\n", "\n", "all_features.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Computing Electrophysiology Features\n", "\n", "The AllenSDK contains the code used to compute the electrophysiology features you accessed above. You can run it yourself like this." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Avg spike threshold: -35.5 mV\n", "Avg spike width: 0.94 ms\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/local1/git/allensdk/allensdk/ephys/ephys_features.py:470: RuntimeWarning: invalid value encountered in less\n", " thresh_to_peak_levels[width_levels < v[spike_indexes]]\n" ] } ], "source": [ "from allensdk.ephys.ephys_extractor import EphysSweepFeatureExtractor\n", "\n", "sweep_number = 35\n", "sweep_data = data_set.get_sweep(sweep_number)\n", "\n", "index_range = sweep_data[\"index_range\"]\n", "i = sweep_data[\"stimulus\"][0:index_range[1]+1] # in A\n", "v = sweep_data[\"response\"][0:index_range[1]+1] # in V\n", "i *= 1e12 # to pA\n", "v *= 1e3 # to mV\n", "\n", "sampling_rate = sweep_data[\"sampling_rate\"] # in Hz\n", "t = np.arange(0, len(v)) * (1.0 / sampling_rate)\n", "\n", "sweep_ext = EphysSweepFeatureExtractor(t=t, v=v, i=i, start=1.02, end=2.02)\n", "sweep_ext.process_spikes()\n", "\n", "print(\"Avg spike threshold: %.01f mV\" % sweep_ext.spike_feature(\"threshold_v\").mean())\n", "print(\"Avg spike width: %.02f ms\" % (1e3 * np.nanmean(sweep_ext.spike_feature(\"width\"))))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The method `spike_feature()` returns a NumPy array of features for each spike. You pass it the name of the feature that you want. Features that can't be calculated for a given spike are set to `NaN`. We can take a look at all the properties calculated for each spike by the extractor:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['threshold_index',\n", " 'clipped',\n", " 'threshold_t',\n", " 'threshold_v',\n", " 'threshold_i',\n", " 'peak_index',\n", " 'peak_t',\n", " 'peak_v',\n", " 'peak_i',\n", " 'trough_index',\n", " 'trough_t',\n", " 'trough_v',\n", " 'trough_i',\n", " 'downstroke_index',\n", " 'downstroke',\n", " 'downstroke_t',\n", " 'downstroke_v',\n", " 'upstroke_index',\n", " 'upstroke',\n", " 'upstroke_t',\n", " 'upstroke_v',\n", " 'isi_type',\n", " 'fast_trough_index',\n", " 'fast_trough_t',\n", " 'fast_trough_v',\n", " 'fast_trough_i',\n", " 'slow_trough_index',\n", " 'slow_trough_t',\n", " 'slow_trough_v',\n", " 'slow_trough_i',\n", " 'adp_index',\n", " 'adp_t',\n", " 'adp_v',\n", " 'adp_i',\n", " 'width',\n", " 'upstroke_downstroke_ratio']" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sweep_ext.spike_feature_keys()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can look at when the spikes occur by looking at the `threshold_t` property (i.e., time of spike threshold)." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1.02811 1.040935 1.053675 1.068645 1.082835]\n" ] } ], "source": [ "spike_times = sweep_ext.spike_feature(\"threshold_t\")\n", "\n", "print(spike_times[:5]) # print just the first 5 spike times" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see that the first spikes happen just after the stimulus step begins at 1.02 sec. Let's plot the voltage trace and then put a dot at the time of each spike detected by the extractor." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.9, 1.2)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure()\n", "p = plt.plot(t, v, color='black')\n", "\n", "min_v = v.min()\n", "\n", "v_level = min_v - 5\n", "\n", "plt.scatter(spike_times, np.ones(len(spike_times)) * min_v, c='firebrick')\n", "plt.xlim(0.9, 1.2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We could also get the threshold voltages from the extractor and put dots where the extractor thinks the spikes begin (zooming in a little more to see better):" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1.015, 1.08)" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure()\n", "plt.plot(t, v, color='black')\n", "\n", "threshold_v = sweep_ext.spike_feature(\"threshold_v\")\n", "\n", "# setting zorder puts the dots on top of the trace\n", "plt.scatter(spike_times, threshold_v, s=50, c='firebrick', zorder=20)\n", "plt.xlim(1.015, 1.08)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.14" } }, "nbformat": 4, "nbformat_minor": 1 }