{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Measuring Synaptic Kinetics\n", "\n", "In this notebook we use the [Allen Institute synaptic physiology dataset](https://portal.brain-map.org/explore/connectivity/synaptic-physiology) to measure the kinetic properties of synaptic connections and the relationship to cell subclass.\n", "\n", "For an introduction to the Jupyter Notebook interface interface, try [Codeacademy: How To Use Jupyter Notebooks]( https://www.codecademy.com/articles/how-to-use-jupyter-notebooks) or [Jupyter Notebook Quick Start Guide](https://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/what_is_jupyter.html).\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "from aisynphys.database import SynphysDatabase\n", "from aisynphys.cell_class import CellClass" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Download and cache the sqlite file for the requested database\n", "# (for available versions, see SynphysDatabase.list_versions)\n", "db = SynphysDatabase.load_current('small')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We are going to compare the strength of excitatory connectivity onto the three inhibitory cell subclassess -- Pvalb, Sst, and Vip.\n", "\n", "Begin by defining these subclasses:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "post_classes = {\n", " 'pvalb': CellClass(cre_type='pvalb'),\n", " 'sst': CellClass(cre_type='sst'),\n", " 'vip': CellClass(cre_type='vip'),\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Query the database to get all excitatory synapses with a specific postsynaptic cre type. We also filter here for \"standard multipatch\" experiment types in order to exclude other experiment types as well as filter for \"mouse\" as the species." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "pvalb: 144 synapses\n", "sst: 118 synapses\n", "vip: 30 synapses\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/luke/docs/aisynphys/aisynphys/database/database.py:758: SAWarning: TypeDecorator FloatType() will not produce a cache key because the ``cache_ok`` flag is not set to True. Set this flag to True if this type object's state is safe to use in a cache key, or False to disable this warning.\n", " recs = self.all()\n" ] } ], "source": [ "# query once for each postsynaptic type, building up a Pandas dataframe\n", "\n", "pairs = None\n", "for name, post_class in post_classes.items():\n", " pair_query = db.pair_query(\n", " experiment_type='standard multipatch',\n", " species='mouse',\n", " post_class=post_class,\n", " synapse=True,\n", " synapse_type='ex',\n", " )\n", " pair_query = pair_query.add_columns(\n", " db.Synapse.latency,\n", " db.Synapse.psc_rise_time,\n", " db.Synapse.psc_decay_tau,\n", " db.Synapse.psp_amplitude,\n", " )\n", " df = pair_query.dataframe()\n", " df['post_class'] = name\n", " if pairs is None:\n", " pairs = df\n", " else:\n", " pairs = pairs.append(df)\n", " print(\"%s: %d synapses\" % (name, len(df)))" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | pair.id | \n", "pair.experiment_id | \n", "pair.pre_cell_id | \n", "pair.post_cell_id | \n", "pair.has_synapse | \n", "pair.has_polysynapse | \n", "pair.has_electrical | \n", "pair.crosstalk_artifact | \n", "pair.n_ex_test_spikes | \n", "pair.n_in_test_spikes | \n", "pair.distance | \n", "pair.lateral_distance | \n", "pair.vertical_distance | \n", "pair.reciprocal_id | \n", "pair.meta | \n", "synapse.latency | \n", "synapse.psc_rise_time | \n", "synapse.psc_decay_tau | \n", "synapse.psp_amplitude | \n", "post_class | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "16618 | \n", "355 | \n", "2534 | \n", "2524 | \n", "True | \n", "False | \n", "False | \n", "NaN | \n", "60 | \n", "60 | \n", "0.000071 | \n", "NaN | \n", "NaN | \n", "16574 | \n", "None | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "pvalb | \n", "
1 | \n", "13143 | \n", "274 | \n", "1981 | \n", "1978 | \n", "True | \n", "False | \n", "False | \n", "NaN | \n", "936 | \n", "720 | \n", "0.000076 | \n", "0.000004 | \n", "0.000019 | \n", "13093 | \n", "None | \n", "0.001243 | \n", "0.001220 | \n", "0.002434 | \n", "0.000540 | \n", "pvalb | \n", "
2 | \n", "58864 | \n", "1723 | \n", "10233 | \n", "10220 | \n", "True | \n", "False | \n", "False | \n", "NaN | \n", "384 | \n", "72 | \n", "0.000049 | \n", "0.000004 | \n", "0.000038 | \n", "58700 | \n", "None | \n", "0.000862 | \n", "NaN | \n", "NaN | \n", "0.001326 | \n", "pvalb | \n", "
3 | \n", "13103 | \n", "274 | \n", "1979 | \n", "1978 | \n", "True | \n", "False | \n", "False | \n", "NaN | \n", "531 | \n", "443 | \n", "0.000067 | \n", "0.000049 | \n", "0.000011 | \n", "13090 | \n", "None | \n", "0.001322 | \n", "0.000901 | \n", "0.004337 | \n", "NaN | \n", "pvalb | \n", "
4 | \n", "22127 | \n", "480 | \n", "3384 | \n", "3378 | \n", "True | \n", "False | \n", "False | \n", "NaN | \n", "690 | \n", "690 | \n", "0.000139 | \n", "0.000090 | \n", "0.000072 | \n", "22011 | \n", "None | \n", "0.000836 | \n", "NaN | \n", "NaN | \n", "0.000122 | \n", "pvalb | \n", "