{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Correlating spike trains\n", "\n", "Recall that our research questions for this data set were:\n", "- Does stimulation with a sine wave grating increase functional connectivity between neurons?\n", "- If so, are increases in functional connectivity specific to the orientation of the stimulus?\n", "\n", "We hypothesized that the answer to both questions would be \"yes\". Here we compute functional connectivity (correlation) between each pair of neurons in the data set, to answer these questions.\n", "\n", "In functional connectivity, we are typically interested in how similar (correlated) the patterns of activity of neurons are over time. That is, if two neurons show increases in spike probabilities at similar times, relative to the presentation of the stimulus, they ware said to be more strongly functionally connected than two neurons that do not show similar response patterns. Because the PSTH characterizes the response of a neuron over time, averaged across many trials, these are what we use as input to the functional connectivity analysis. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Import packages\n", "\n", "We previously talked about SciPy as the library that provided a function for importing Matlab files. The SciPy library has many useful routines for general-purpose scientific work, including many statistical and machine learning functions. Here we import `scipy.stats` so that we can use its correlation functions. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import scipy.io\n", "from collections import defaultdict\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "import scipy.stats as sc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Read Data" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "psth = pd.read_csv('data/array_psth.csv', index_col=['orientation', 'channel'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Compute correlation matrix \n", "\n", "pandas has a `.corr()` method that computes a correlation matrix from a DataFrame. It correlates the *columns*, which is not what we want here, because in `psth`, each *row* is a histogram for a channel. So we chain the `.T` method with `.corr()`, which [**transposes**](https://en.wikipedia.org/wiki/Transpose) the matrix (i.e., turns rows into columns).\n", "\n", "Below shows the result of doing this, selecting only for the 90 deg orientation condition using `.loc[]`" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
channel | \n", "1.0 | \n", "2.0 | \n", "3.0 | \n", "4.0 | \n", "5.0 | \n", "6.0 | \n", "7.0 | \n", "8.0 | \n", "9.0 | \n", "10.0 | \n", "... | \n", "87.0 | \n", "88.0 | \n", "89.0 | \n", "90.0 | \n", "91.0 | \n", "92.0 | \n", "93.0 | \n", "94.0 | \n", "95.0 | \n", "96.0 | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
channel | \n", "\n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " |
1.0 | \n", "1.000000 | \n", "0.238563 | \n", "0.423488 | \n", "0.128975 | \n", "0.269791 | \n", "0.479225 | \n", "0.248945 | \n", "-0.219806 | \n", "0.512869 | \n", "0.432926 | \n", "... | \n", "0.463790 | \n", "0.473022 | \n", "-0.145650 | \n", "0.273202 | \n", "0.110040 | \n", "0.251273 | \n", "-0.048002 | \n", "0.105124 | \n", "0.054993 | \n", "0.515555 | \n", "
2.0 | \n", "0.238563 | \n", "1.000000 | \n", "0.025632 | \n", "0.456420 | \n", "0.587844 | \n", "0.473608 | \n", "-0.024363 | \n", "-0.093321 | \n", "0.025971 | \n", "0.328144 | \n", "... | \n", "0.130844 | \n", "0.453307 | \n", "0.066870 | \n", "0.468894 | \n", "0.211208 | \n", "0.499714 | \n", "-0.116305 | \n", "0.248561 | \n", "0.092954 | \n", "-0.029692 | \n", "
3.0 | \n", "0.423488 | \n", "0.025632 | \n", "1.000000 | \n", "0.010262 | \n", "0.066449 | \n", "0.238800 | \n", "0.276581 | \n", "-0.497510 | \n", "0.687241 | \n", "0.205504 | \n", "... | \n", "0.464852 | \n", "0.371010 | \n", "-0.137143 | \n", "0.073834 | \n", "-0.088170 | \n", "0.166111 | \n", "0.093238 | \n", "0.062264 | \n", "0.032608 | \n", "0.659222 | \n", "
4.0 | \n", "0.128975 | \n", "0.456420 | \n", "0.010262 | \n", "1.000000 | \n", "0.712863 | \n", "0.183854 | \n", "-0.104642 | \n", "-0.022657 | \n", "-0.082394 | \n", "0.254798 | \n", "... | \n", "-0.071817 | \n", "0.242038 | \n", "0.058670 | \n", "0.265128 | \n", "0.212288 | \n", "0.801012 | \n", "-0.146054 | \n", "0.227241 | \n", "-0.028776 | \n", "-0.110741 | \n", "
5.0 | \n", "0.269791 | \n", "0.587844 | \n", "0.066449 | \n", "0.712863 | \n", "1.000000 | \n", "0.466423 | \n", "-0.022484 | \n", "-0.203097 | \n", "0.085330 | \n", "0.384352 | \n", "... | \n", "0.178379 | \n", "0.525944 | \n", "0.033639 | \n", "0.466034 | \n", "0.342811 | \n", "0.750051 | \n", "-0.236529 | \n", "0.238580 | \n", "0.109951 | \n", "-0.000521 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
92.0 | \n", "0.251273 | \n", "0.499714 | \n", "0.166111 | \n", "0.801012 | \n", "0.750051 | \n", "0.370030 | \n", "0.009153 | \n", "-0.213115 | \n", "0.120801 | \n", "0.355121 | \n", "... | \n", "0.155579 | \n", "0.474052 | \n", "0.021922 | \n", "0.420295 | \n", "0.277063 | \n", "1.000000 | \n", "-0.205899 | \n", "0.323322 | \n", "-0.000208 | \n", "0.057672 | \n", "
93.0 | \n", "-0.048002 | \n", "-0.116305 | \n", "0.093238 | \n", "-0.146054 | \n", "-0.236529 | \n", "-0.279180 | \n", "-0.027830 | \n", "0.119022 | \n", "0.006674 | \n", "-0.134009 | \n", "... | \n", "-0.162546 | \n", "-0.227484 | \n", "0.303400 | \n", "-0.257258 | \n", "-0.287259 | \n", "-0.205899 | \n", "1.000000 | \n", "-0.099424 | \n", "0.029799 | \n", "0.056857 | \n", "
94.0 | \n", "0.105124 | \n", "0.248561 | \n", "0.062264 | \n", "0.227241 | \n", "0.238580 | \n", "0.206190 | \n", "0.047246 | \n", "-0.101033 | \n", "0.066926 | \n", "0.077246 | \n", "... | \n", "0.083598 | \n", "0.186342 | \n", "0.039010 | \n", "0.182056 | \n", "0.078205 | \n", "0.323322 | \n", "-0.099424 | \n", "1.000000 | \n", "0.103832 | \n", "0.050617 | \n", "
95.0 | \n", "0.054993 | \n", "0.092954 | \n", "0.032608 | \n", "-0.028776 | \n", "0.109951 | \n", "0.164668 | \n", "0.086572 | \n", "-0.097742 | \n", "0.035517 | \n", "0.053873 | \n", "... | \n", "0.052596 | \n", "0.105293 | \n", "0.069994 | \n", "0.039868 | \n", "0.168862 | \n", "-0.000208 | \n", "0.029799 | \n", "0.103832 | \n", "1.000000 | \n", "0.034018 | \n", "
96.0 | \n", "0.515555 | \n", "-0.029692 | \n", "0.659222 | \n", "-0.110741 | \n", "-0.000521 | \n", "0.232531 | \n", "0.347079 | \n", "-0.673635 | \n", "0.818708 | \n", "0.280648 | \n", "... | \n", "0.705097 | \n", "0.485106 | \n", "-0.306863 | \n", "0.142991 | \n", "-0.026874 | \n", "0.057672 | \n", "0.056857 | \n", "0.050617 | \n", "0.034018 | \n", "1.000000 | \n", "
91 rows × 91 columns
\n", "\n", " | \n", " | 19 | \n", "20 | \n", "21 | \n", "22 | \n", "23 | \n", "24 | \n", "25 | \n", "26 | \n", "27 | \n", "28 | \n", "... | \n", "259 | \n", "260 | \n", "261 | \n", "262 | \n", "263 | \n", "264 | \n", "265 | \n", "266 | \n", "267 | \n", "268 | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
orientation | \n", "channel | \n", "\n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " |
0.0 | \n", "1.0 | \n", "22 | \n", "33 | \n", "29 | \n", "27 | \n", "27 | \n", "19 | \n", "35 | \n", "24 | \n", "48 | \n", "62 | \n", "... | \n", "19 | \n", "12 | \n", "12 | \n", "13 | \n", "16 | \n", "16 | \n", "15 | \n", "19 | \n", "21 | \n", "11 | \n", "
90.0 | \n", "1.0 | \n", "27 | \n", "26 | \n", "29 | \n", "30 | \n", "30 | \n", "19 | \n", "31 | \n", "41 | \n", "68 | \n", "69 | \n", "... | \n", "15 | \n", "17 | \n", "22 | \n", "14 | \n", "27 | \n", "21 | \n", "19 | \n", "21 | \n", "18 | \n", "17 | \n", "
0.0 | \n", "2.0 | \n", "1 | \n", "0 | \n", "4 | \n", "2 | \n", "5 | \n", "1 | \n", "3 | \n", "14 | \n", "12 | \n", "24 | \n", "... | \n", "1 | \n", "1 | \n", "1 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "2 | \n", "0 | \n", "0 | \n", "
90.0 | \n", "2.0 | \n", "2 | \n", "1 | \n", "5 | \n", "1 | \n", "1 | \n", "3 | \n", "3 | \n", "8 | \n", "18 | \n", "12 | \n", "... | \n", "3 | \n", "2 | \n", "1 | \n", "0 | \n", "2 | \n", "2 | \n", "3 | \n", "1 | \n", "2 | \n", "0 | \n", "
0.0 | \n", "3.0 | \n", "0 | \n", "2 | \n", "0 | \n", "0 | \n", "1 | \n", "3 | \n", "0 | \n", "6 | \n", "7 | \n", "7 | \n", "... | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "1 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "0 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
90.0 | \n", "92.0 | \n", "2 | \n", "3 | \n", "3 | \n", "0 | \n", "2 | \n", "4 | \n", "26 | \n", "63 | \n", "43 | \n", "19 | \n", "... | \n", "1 | \n", "3 | \n", "1 | \n", "3 | \n", "4 | \n", "2 | \n", "3 | \n", "1 | \n", "3 | \n", "0 | \n", "
0.0 | \n", "93.0 | \n", "26 | \n", "23 | \n", "32 | \n", "36 | \n", "22 | \n", "19 | \n", "11 | \n", "6 | \n", "11 | \n", "6 | \n", "... | \n", "29 | \n", "29 | \n", "27 | \n", "34 | \n", "29 | \n", "31 | \n", "27 | \n", "28 | \n", "23 | \n", "17 | \n", "
90.0 | \n", "93.0 | \n", "24 | \n", "27 | \n", "32 | \n", "26 | \n", "24 | \n", "14 | \n", "7 | \n", "13 | \n", "7 | \n", "4 | \n", "... | \n", "32 | \n", "24 | \n", "40 | \n", "37 | \n", "41 | \n", "35 | \n", "35 | \n", "27 | \n", "44 | \n", "30 | \n", "
0.0 | \n", "96.0 | \n", "7 | \n", "9 | \n", "8 | \n", "13 | \n", "8 | \n", "11 | \n", "11 | \n", "16 | \n", "18 | \n", "17 | \n", "... | \n", "13 | \n", "8 | \n", "17 | \n", "8 | \n", "16 | \n", "5 | \n", "21 | \n", "9 | \n", "10 | \n", "5 | \n", "
90.0 | \n", "96.0 | \n", "12 | \n", "6 | \n", "13 | \n", "6 | \n", "9 | \n", "11 | \n", "10 | \n", "11 | \n", "12 | \n", "16 | \n", "... | \n", "12 | \n", "11 | \n", "8 | \n", "11 | \n", "13 | \n", "8 | \n", "10 | \n", "14 | \n", "13 | \n", "10 | \n", "
152 rows × 250 columns
\n", "