septum-mec/actions/stimulus-lfp-response/data/20_stimulus-lfp-response.ipynb

961 lines
173 KiB
Plaintext
Raw Normal View History

2019-10-17 17:50:46 +00:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%load_ext autoreload\n",
"%autoreload 2"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
2019-12-16 15:16:33 +00:00
"12:50:36 [I] klustakwik KlustaKwik2 version 0.2.6\n"
2019-10-17 17:50:46 +00:00
]
}
],
"source": [
"import os\n",
"import expipe\n",
"import pathlib\n",
"import numpy as np\n",
"import spatial_maps.stats as stats\n",
"import septum_mec\n",
"import septum_mec.analysis.data_processing as dp\n",
"import septum_mec.analysis.registration\n",
"import head_direction.head as head\n",
"import spatial_maps as sp\n",
"import speed_cells.speed as spd\n",
"import re\n",
"import joblib\n",
"import multiprocessing\n",
"import shutil\n",
"import psutil\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib\n",
"from distutils.dir_util import copy_tree\n",
"from neo import SpikeTrain\n",
"import scipy\n",
"import seaborn as sns\n",
2019-12-13 10:43:57 +00:00
"from tqdm.notebook import tqdm_notebook as tqdm\n",
"tqdm.pandas()\n",
2019-10-17 17:50:46 +00:00
"\n",
"from spike_statistics.core import permutation_resampling\n",
"\n",
"from spikewaveform.core import calculate_waveform_features_from_template, cluster_waveform_features\n",
"\n",
2019-12-13 10:43:57 +00:00
"from septum_mec.analysis.plotting import violinplot, despine"
2019-10-17 17:50:46 +00:00
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"plt.rc('axes', titlesize=12)\n",
"plt.rcParams.update({\n",
" 'font.size': 12, \n",
" 'figure.figsize': (6, 4), \n",
" 'figure.dpi': 150\n",
"})\n",
"\n",
"output_path = pathlib.Path(\"output\") / \"stimulus-lfp-response\"\n",
"(output_path / \"statistics\").mkdir(exist_ok=True, parents=True)\n",
"(output_path / \"figures\").mkdir(exist_ok=True, parents=True)\n",
"output_path.mkdir(exist_ok=True)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"data_loader = dp.Data()\n",
"actions = data_loader.actions\n",
"project = data_loader.project"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"identify_neurons = actions['identify-neurons']\n",
"sessions = pd.read_csv(identify_neurons.data_path('sessions'))"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"lfp_action = actions['stimulus-lfp-response']\n",
"lfp_results = pd.read_csv(lfp_action.data_path('results'))"
]
},
{
"cell_type": "code",
2019-12-13 10:43:57 +00:00
"execution_count": 7,
2019-10-17 17:50:46 +00:00
"metadata": {},
"outputs": [],
"source": [
"lfp_results = pd.merge(sessions, lfp_results, how='left')"
]
},
{
"cell_type": "code",
2019-12-13 10:43:57 +00:00
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"lfp_results = lfp_results.query('stim_location!=\"mecl\" and stim_location!=\"mecr\"')"
]
},
{
"cell_type": "code",
"execution_count": 9,
2019-10-17 17:50:46 +00:00
"metadata": {},
"outputs": [],
"source": [
"def action_group(row):\n",
" a = int(row.channel_group in [0,1,2,3])\n",
" return f'{row.action}-{a}'\n",
"lfp_results['action_side_a'] = lfp_results.apply(action_group, axis=1)"
]
},
{
"cell_type": "code",
2019-12-13 10:43:57 +00:00
"execution_count": 10,
2019-10-17 17:50:46 +00:00
"metadata": {},
"outputs": [],
"source": [
"lfp_results['stim_strength'] = lfp_results['stim_p_max'] / lfp_results['theta_energy']"
]
},
{
"cell_type": "code",
2019-12-13 10:43:57 +00:00
"execution_count": 11,
2019-10-17 17:50:46 +00:00
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>action_side_a</th>\n",
" <th>channel_group</th>\n",
" <th>signal_to_noise</th>\n",
" <th>stim_strength</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>68</th>\n",
" <td>1833-010719-1-0</td>\n",
" <td>4</td>\n",
" <td>0.006686</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>66</th>\n",
" <td>1833-010719-1-1</td>\n",
" <td>2</td>\n",
" <td>0.034550</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>694</th>\n",
" <td>1833-010719-2-0</td>\n",
" <td>6</td>\n",
" <td>0.004609</td>\n",
" <td>7.173297</td>\n",
" </tr>\n",
" <tr>\n",
" <th>691</th>\n",
" <td>1833-010719-2-1</td>\n",
" <td>3</td>\n",
" <td>0.003974</td>\n",
" <td>6.446883</td>\n",
" </tr>\n",
" <tr>\n",
" <th>580</th>\n",
" <td>1833-020719-1-0</td>\n",
" <td>4</td>\n",
" <td>0.008427</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" action_side_a channel_group signal_to_noise stim_strength\n",
"68 1833-010719-1-0 4 0.006686 NaN\n",
"66 1833-010719-1-1 2 0.034550 NaN\n",
"694 1833-010719-2-0 6 0.004609 7.173297\n",
"691 1833-010719-2-1 3 0.003974 6.446883\n",
"580 1833-020719-1-0 4 0.008427 NaN"
]
},
2019-12-13 10:43:57 +00:00
"execution_count": 11,
2019-10-17 17:50:46 +00:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lfp_results_hemisphere = lfp_results.sort_values(\n",
" by=['action_side_a', 'stim_strength', 'signal_to_noise'], ascending=[True, False, False]\n",
").drop_duplicates(subset='action_side_a', keep='first')\n",
"lfp_results_hemisphere.loc[:,['action_side_a','channel_group', 'signal_to_noise', 'stim_strength']].head()"
]
},
{
"cell_type": "code",
2019-12-13 10:43:57 +00:00
"execution_count": 12,
2019-10-17 17:50:46 +00:00
"metadata": {},
"outputs": [],
"source": [
"colors = ['#1b9e77','#d95f02','#7570b3','#e7298a']\n",
"labels = ['Baseline I', '11 Hz', 'Baseline II', '30 Hz']\n",
"queries = ['baseline and Hz11', 'frequency==11', 'baseline and Hz30', 'frequency==30']"
]
},
{
"cell_type": "code",
2019-12-16 15:16:33 +00:00
"execution_count": 13,
2019-10-17 17:50:46 +00:00
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
2019-12-13 10:43:57 +00:00
"image/png": "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
2019-10-17 17:50:46 +00:00
"text/plain": [
"<Figure size 525x300 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
2019-12-13 10:43:57 +00:00
"image/png": "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
2019-10-17 17:50:46 +00:00
"text/plain": [
"<Figure size 525x300 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
2019-12-13 10:43:57 +00:00
"image/png": "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
2019-10-17 17:50:46 +00:00
"text/plain": [
"<Figure size 525x300 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
2019-12-13 10:43:57 +00:00
"image/png": "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
2019-10-17 17:50:46 +00:00
"text/plain": [
"<Figure size 525x300 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"\n",
"density = True\n",
"cumulative = True\n",
"histtype = 'step'\n",
"lw = 2\n",
"bins = {\n",
" 'theta_energy': np.arange(0, .7, .03),\n",
" 'theta_peak': np.arange(0, .7, .03),\n",
" 'theta_freq': np.arange(4, 10, .5),\n",
" 'theta_half_width': np.arange(0, 15, .5)\n",
"}\n",
"xlabel = {\n",
" 'theta_energy': 'Theta energy (dB)',\n",
" 'theta_peak': 'Peak PSD (dB/Hz)',\n",
" 'theta_freq': '(Hz)',\n",
" 'theta_half_width': '(Hz)',\n",
"}\n",
"# key = 'theta_energy'\n",
"# key = 'theta_peak'\n",
2019-12-13 10:47:07 +00:00
"results = {}\n",
2019-10-17 17:50:46 +00:00
"for key in bins:\n",
2019-12-13 10:47:07 +00:00
" results[key] = pd.DataFrame()\n",
2019-10-17 17:50:46 +00:00
" fig = plt.figure(figsize=(3.5,2))\n",
" plt.suptitle(key)\n",
" legend_lines = []\n",
" for color, query, label in zip(colors, queries, labels):\n",
2019-12-13 10:47:07 +00:00
" values = lfp_results_hemisphere.query(query)[key]\n",
" results[key] = pd.concat([results[key], values.rename(label).reset_index(drop=True)], axis=1)\n",
" values.hist(\n",
2019-10-17 17:50:46 +00:00
" bins=bins[key], density=density, cumulative=cumulative, lw=lw, \n",
" histtype=histtype, color=color)\n",
" legend_lines.append(matplotlib.lines.Line2D([0], [0], color=color, lw=lw, label=label))\n",
" \n",
" plt.legend(\n",
" handles=legend_lines,\n",
" bbox_to_anchor=(1.04,1), borderaxespad=0, frameon=False)\n",
" plt.tight_layout()\n",
" plt.grid(False)\n",
" plt.xlim(-0.05, bins[key].max() - bins[key].max()*0.025)\n",
2019-12-13 10:43:57 +00:00
" despine()\n",
2019-10-17 17:50:46 +00:00
" plt.xlabel(xlabel[key])\n",
" figname = f'lfp-psd-histogram-{key}'\n",
" fig.savefig(\n",
" output_path / 'figures' / f'{figname}.png', \n",
" bbox_inches='tight', transparent=True)\n",
" fig.savefig(\n",
" output_path / 'figures' / f'{figname}.svg', \n",
" bbox_inches='tight', transparent=True)"
]
},
{
"cell_type": "code",
2019-12-16 15:16:33 +00:00
"execution_count": 14,
2019-10-17 17:50:46 +00:00
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
2019-12-13 10:43:57 +00:00
"image/png": "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
2019-10-17 17:50:46 +00:00
"text/plain": [
"<Figure size 480x300 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
2019-12-13 10:43:57 +00:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAcEAAAFICAYAAAAoBEX4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAXEQAAFxEByibzPwAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nO3deZhcVZ3/8XdIgmFRliCLiWyJfDGKyig6ERziKO4iCjgqMASEcRnHZQTUgWfAcRSV+c04Kg7jCoIo4vCoIzDKJho2EQOy6DeABhREBERFtpD0749zy5RNdXV19+2u6tz363n6uVV9zz11ulPpT517zzl3xtDQEJIkNdF6/W6AJEn9YghKkhrLEJQkNZYhKElqLENQktRYhqAkqbEMQUlSYxmCkqTGMgQlSY1lCEqSGssQlCQ1liEoSWosQ1CS1FiGoCSpsWb1uwGaviLiaZn54w7fPxk4uHq6TWbeMaUNm6CIWAJcVD19X2Z+uE/tWAlsB2Rm7txh/2zgKOAAYFtgNfAr4JDMvGzqWtq7iFgKfKF6+vrM/Mo46vgusCdwS2ZuP0KZdfK9qfoZghqziNgE+Bfg7/E91E+nAa8d9r3HAbf3oS0Dwfemxso3icbj34FD+92IJouInVkbgLcA7wV+DmyWmbf0rWH953tTY2IIajxmdtuZmUuBpVPSkuZ6StvjD47ntGI/ZObJwMmT+BJd35vScA6Mkaanjdoe/7xvrZCmOUNQmp7a/+8+0rdWSNOcp0MbLiICeCvwAmAHyh/Xu4CrgLOA0zPzkarsccCxw44fqh5enJlLqu+dzAgj8NpGPP6/zDwiIl4OvA14JrAxcCvwP8BHM/N31THPAN4NPB94fNW+C4EPZOaKWn4RXVSjMN8CvB54MuX/za3AN4GPdRthGBFzgIOAlwG7AlsAs4HfAtcB3wI+k5l/7LEt36WMjGx3UflnBOD5mfndXurq8hrfA54H3AvMzcw1Hcp8kfJzAeyfmV/rUGYv4DvV05dl5rm9jA6NiE2BNwH7AwuAGcA1wKcy84wR2nwcPbw3Oxy3PXAk8BJgHvB74AbKKdtTMnOo03Fad9gTbLCIeAPwY+DtlGtMGwJzgPnAq4BTgCsjYqtJev2TKCHwEkq4bQAE8E/A9yNio4g4DPgBcCDlj9T6wBOq5z+MiKdPRtvabAP8EPhP4C+BTSinIp8MvAe4JiJ27XRgRPwFcCPwaWAfSvhvVP0MW1E+ePwHsDwi5k3ujzEm36q2mwLPGqHMC9oeLxmhzMuq7X2UDy2jqj7w3AB8mPLBaFPK7/yvgK9ExKnU93drX+AnlA+BOwKPobwP96QE9dkRYUdhHWcINlRELAQ+T/mD/HNKT2cPYDElYFrzzJ4BfKp6fBKlN/O/bVXtWn0dNsYmHEz5tJ/A4cDulJ7Fymr/LsDXgP8Gfk0J6sWUP6zfrso8lhJOk+ntwNOA71Pm4z2X8vu5ptq/JXBaRMxoPygi5gLnUT5QrAY+SwnCxcDLgaMpPVqAJwH/1mN7DqP8vtt7PYez9t/hh73/aCP6VtvjvYbvjIhFlA8iLUtGqKcVgt/JzIdGe9Hqg8DFlA8eQ5Te2Esov/N3UOZAHkh5rww3nvfmJym9zBOr13k+5d+l1St/KfCPo7Vb05ufcprrAMon39WUU2jtw+ovj4ivAt+l/AF6dURsUZ32uyMi7mkVzMyrx/n6W1B6oc/LzN9X37s0IpZTThNC+cO0EnhOZt7ZOjAivg1cDuwG/FVEbJqZ946zHb34OPDOtlNjl0XEmcCVlIBcROkxXdl2zLuAzavHR2Tmx4bVeU5EnAJcT+np7BMRs1qnnkeSmTfBn3pMLTdN4N+h02vcEBE/o/SO9gI+OKzIC6vtKsqp3UUR8fjM/E2rQEQsAHaqnn6zx5f+KGWeI8DfZeZn2/ZdFhFnUD6MPKlDm8fz3nwI+OvMvLTte9+NiAtZ+yHw4KpdWkfZE2yuravtfXSYXJ2Zqyi9jY9T/qBPxnvlmLYAbL3u9ZRTVC3vbw/Aqswa1n7in0G5bjRZbgeOHH5tKDMfpvTuWp467Lh51bF3UHoaj5KZt1E+aEA5DT23hvbW5exquzgiNhq2rxWCp1J6bDN49HXKVi9wdVtdI6quA7bmPZ4/LAAByMxfU84e1OWTwwKw9TqXAz+qnu7sKdF1myHYXD+ttpsAZ0bEk4cXyMzzM/Mdmfmfw4OoBmtYuzTZcLe1Pb5ghDLt7dm4lhZ1dkEVeJ3c2PZ48/YdmXlIZs4D5lUfKEbSPqjmMeNs42RonRJdn7aAqwKh9fxrQGtg0vOHHf/SantZZt7F6F7E2jNTp49UKDMvor4pIed02df6t12P8n9E6yg/4TTXFymj4uZRBsG8qjoFdh5wPuXT+GSeYrwrM+8bYV/79aNf9VBmxghl6vDLLvsebHvc8f9Sa2RlNcJ0O8opxp0o1zwXV9uWQfpQ+l3KWYKNKadEW4HxbMopy0copyYvoQxmWtI6MCI2aHve66nQ9rVRRzuNeSVlJPNETejfVuuGQfpPpymUmb+lnNa6vO3bO1JON50J3BURF0TEAcMHfdTkD70UGu0a2RToqZ10COKI2DAijoiIHwH3U3oX3wY+AfwdJQAfNf1gEFS93/Oqp+2DY1qnQq+sPsS0evOLIuLx1ePnU0b6Qu8h2D4C+e5Ryv66xzpHM+5/W607DMEGy8yfZuZiytD/EyiDNFpmAn9NWaT5vOrTfZ36HW69Gtc8sYjYgTKC9ATKCMVZwMOUQT9nUtb6XEwZ1TioWqdEnxIR21SPWyF40bAtrO39ta4HrsjM7PG12n/Po4VOt9PLY+EcQBmCgsy8IjOPysynUoanHwB8GXigKvIC4Ih+tW+a+jKwsO3xc4GNM3OXzHxtZn6kGoAxfNDJIDmbtUHxwojYkPKBCarwqwb3tK4LLqm2reuBvfYC4c9Pez9+xFLF5qPsl3rmue6Gqnp2AayqRmQCfxpqfjpwejUJ/IeUD0uvAD7Qj7ZONxHxLOA51dOLMvMNXYpvOwVNGpfM/HVE/JAyFWUvymjX2ZQe7SVtRS+kXOf86+ruFjtW3x9LCLafhdiN7vMdn9FlnzQm9gQbKCLWp1x3WQ7810jlMnM5az+hz2nbNZDXsQbIwrbHV41UqFqyq33i9yB+KG2dEn0ha0eFXp6ZD7SVaa0GszNrb2N0F/Co6QddfJu1k9QPGek6dETsQvcQ9L2pMTEEG6ga9NBa03GPiNi3U7mI2JMyehT+fCL4Q21lJnN6wnTVPiXghZ3mmUXE1pRrg+u3fXuQpki0tEJwG+CQ6vHwqS0Xsfa06T9U23Myc3WvL1KFauv66G4MWwcUICIeR1nlqBvfmxqTQfzkqanxfsryXbMoazJ+kXIN6DbKpO09KWsqQhnZeELbse3Xbz5UHbu66jkKllF+R9tQei0XRsQnKTe/3Zzyu30jZdWcdgM3Hy0zfxQRt1OWSZtfffvCYWXuiohrKavntM4YjOVUaMuxlKXlFgDHVmuvfpYyGnQXylqtCyk9xpGupfre1Jg0uicYEd+MiPH8Z532qj8KB1PmQ82inMb6H8qUibOBoyhzxO4BXjNslN83KSuBQPnkfyXw9alp+eDLzAcp66C2Thk+DziD8rs9h/LHfAvKgJL3tB3afqPcQdK+4ssD/Pm0mpb2YHyIteu79qy6k8ZfsXZd1lcC36he7zOUADyHslLNSHxvakwaHYLAgoULF76SciqncV+Z+aXzzz9/zqGHHsqiRYvYeOONmTVrFpttthm77ror73znO7niiis2z8z/G3bc8k9/+tMzd911VzbccEPmzJnDtttuu+0DDzwwBAy9+tWvbt1GiWXLlv2q/dh58+ZtB7DDDjvESO1asmTJy9v+jTqWOf7441u34+GLX/ziRSOVG89XVR8A7373u48fT7nMPP/cc8/dYP/992f+/PnMnj2b2bNns+WWW7L77rvzgQ98gGuuuWanq6666iMbbFBmnzz3uc/9dK+/q8n8+Yd/fepTnzq89VqLFy/eoFoMe4g/1x6CF3VZCKG
2019-10-17 17:50:46 +00:00
"text/plain": [
"<Figure size 480x300 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
2019-12-13 10:43:57 +00:00
"image/png": "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
2019-10-17 17:50:46 +00:00
"text/plain": [
"<Figure size 480x300 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
2019-12-13 10:43:57 +00:00
"image/png": "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
2019-10-17 17:50:46 +00:00
"text/plain": [
"<Figure size 480x300 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"\n",
"density = True\n",
"cumulative = True\n",
"histtype = 'step'\n",
"lw = 2\n",
"bins = {\n",
" 'stim_energy': np.arange(0, .7, .01),\n",
" 'stim_half_width': np.arange(0, 10, .5),\n",
" 'stim_p_max': np.arange(0, 4, .01),\n",
" 'stim_strength': np.arange(0, 160, 1)\n",
"}\n",
"xlabel = {\n",
" 'stim_energy': 'Energy (dB)',\n",
" 'stim_half_width': '(Hz)',\n",
" 'stim_p_max': 'Peak PSD (dB/Hz)',\n",
" 'stim_strength': 'Ratio',\n",
"}\n",
"# key = 'theta_energy'\n",
"# key = 'theta_peak'\n",
"for key in bins:\n",
2019-12-13 10:47:07 +00:00
" results[key] = pd.DataFrame()\n",
2019-10-17 17:50:46 +00:00
" fig = plt.figure(figsize=(3.2,2))\n",
" plt.suptitle(key)\n",
" legend_lines = []\n",
" for color, query, label in zip(colors[1::2], queries[1::2], labels[1::2]):\n",
2019-12-13 10:47:07 +00:00
" values = lfp_results_hemisphere.query(query)[key]\n",
" results[key] = pd.concat([results[key], values.rename(label).reset_index(drop=True)], axis=1)\n",
" values.hist(\n",
2019-10-17 17:50:46 +00:00
" bins=bins[key], density=density, cumulative=cumulative, lw=lw, \n",
" histtype=histtype, color=color)\n",
" legend_lines.append(matplotlib.lines.Line2D([0], [0], color=color, lw=lw, label=label))\n",
" \n",
" plt.legend(\n",
" handles=legend_lines,\n",
" bbox_to_anchor=(1.04,1), borderaxespad=0, frameon=False)\n",
" plt.tight_layout()\n",
" plt.grid(False)\n",
" plt.xlim(-0.05, bins[key].max() - bins[key].max()*0.02)\n",
" despine()\n",
2019-10-17 17:50:46 +00:00
" plt.xlabel(xlabel[key])\n",
" figname = f'lfp-psd-histogram-{key}'\n",
" fig.savefig(\n",
" output_path / 'figures' / f'{figname}.png', \n",
" bbox_inches='tight', transparent=True)\n",
" fig.savefig(\n",
" output_path / 'figures' / f'{figname}.svg', \n",
" bbox_inches='tight', transparent=True)"
]
},
2019-12-13 10:47:07 +00:00
{
"cell_type": "code",
2019-12-16 15:16:33 +00:00
"execution_count": 15,
2019-12-13 10:47:07 +00:00
"metadata": {},
"outputs": [],
"source": [
"def summarize(data):\n",
" return \"{:.2f} ± {:.2f} ({})\".format(data.mean(), data.sem(), sum(~np.isnan(data)))\n",
"\n",
"\n",
"def MWU(df, keys):\n",
" '''\n",
" Mann Whitney U\n",
" '''\n",
" Uvalue, pvalue = scipy.stats.mannwhitneyu(\n",
" df[keys[0]].dropna(), \n",
" df[keys[1]].dropna(),\n",
" alternative='two-sided')\n",
"\n",
" return \"{:.2f}, {:.3f}\".format(Uvalue, pvalue)\n",
"\n",
"\n",
"def PRS(df, keys):\n",
" '''\n",
" Permutation ReSampling\n",
" '''\n",
" pvalue, observed_diff, diffs = permutation_resampling(\n",
" df[keys[0]].dropna(), \n",
" df[keys[1]].dropna(), statistic=np.median)\n",
"\n",
" return \"{:.2f}, {:.3f}\".format(observed_diff, pvalue)\n",
"\n",
"\n",
"def rename(name):\n",
" return name.replace(\"_field\", \"-field\").replace(\"_\", \" \").capitalize()"
]
},
{
"cell_type": "code",
2019-12-16 15:16:33 +00:00
"execution_count": 17,
2019-12-13 10:47:07 +00:00
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Theta energy</th>\n",
" <th>Theta peak</th>\n",
" <th>Theta freq</th>\n",
" <th>Theta half width</th>\n",
" <th>Stim energy</th>\n",
" <th>Stim half width</th>\n",
" <th>Stim p max</th>\n",
" <th>Stim strength</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Baseline I</th>\n",
" <td>0.25 ± 0.02 (48)</td>\n",
" <td>0.18 ± 0.02 (48)</td>\n",
" <td>7.78 ± 0.09 (48)</td>\n",
" <td>1.79 ± 0.33 (46)</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11 Hz</th>\n",
" <td>0.08 ± 0.00 (44)</td>\n",
" <td>0.03 ± 0.00 (44)</td>\n",
" <td>7.55 ± 0.12 (44)</td>\n",
" <td>5.80 ± 0.50 (43)</td>\n",
" <td>0.05 ± 0.00 (44)</td>\n",
" <td>0.16 ± 0.00 (44)</td>\n",
" <td>0.51 ± 0.04 (44)</td>\n",
" <td>7.14 ± 0.81 (44)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Baseline II</th>\n",
" <td>0.24 ± 0.02 (34)</td>\n",
" <td>0.17 ± 0.02 (34)</td>\n",
" <td>7.96 ± 0.09 (34)</td>\n",
" <td>1.23 ± 0.22 (33)</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30 Hz</th>\n",
" <td>0.04 ± 0.00 (34)</td>\n",
" <td>0.02 ± 0.00 (34)</td>\n",
" <td>7.74 ± 0.19 (34)</td>\n",
" <td>5.88 ± 0.64 (31)</td>\n",
" <td>0.16 ± 0.02 (34)</td>\n",
" <td>0.14 ± 0.00 (34)</td>\n",
" <td>1.54 ± 0.16 (34)</td>\n",
" <td>45.30 ± 6.54 (34)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>MWU Baseline I 11 Hz</th>\n",
" <td>2075.00, 0.000</td>\n",
" <td>2102.00, 0.000</td>\n",
" <td>1201.50, 0.256</td>\n",
" <td>253.00, 0.000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>PRS Baseline I 11 Hz</th>\n",
" <td>0.15, 0.000</td>\n",
" <td>0.12, 0.000</td>\n",
2019-12-16 15:16:33 +00:00
" <td>0.05, 0.686</td>\n",
2019-12-13 10:47:07 +00:00
" <td>4.74, 0.000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>MWU Baseline I Baseline II</th>\n",
" <td>860.00, 0.682</td>\n",
" <td>850.00, 0.753</td>\n",
" <td>645.50, 0.108</td>\n",
" <td>805.00, 0.651</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>PRS Baseline I Baseline II</th>\n",
2019-12-16 15:16:33 +00:00
" <td>0.00, 0.955</td>\n",
" <td>0.01, 0.597</td>\n",
" <td>0.30, 0.009</td>\n",
" <td>0.05, 0.584</td>\n",
2019-12-13 10:47:07 +00:00
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>MWU Baseline I 30 Hz</th>\n",
" <td>1629.00, 0.000</td>\n",
" <td>1629.00, 0.000</td>\n",
" <td>781.50, 0.749</td>\n",
" <td>225.00, 0.000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>PRS Baseline I 30 Hz</th>\n",
" <td>0.19, 0.000</td>\n",
" <td>0.13, 0.000</td>\n",
" <td>0.20, 0.416</td>\n",
" <td>4.84, 0.000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>MWU 11 Hz Baseline II</th>\n",
" <td>22.00, 0.000</td>\n",
" <td>10.00, 0.000</td>\n",
" <td>524.50, 0.024</td>\n",
" <td>1328.00, 0.000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>PRS 11 Hz Baseline II</th>\n",
" <td>0.15, 0.000</td>\n",
" <td>0.12, 0.000</td>\n",
2019-12-16 15:16:33 +00:00
" <td>0.35, 0.020</td>\n",
2019-12-13 10:47:07 +00:00
" <td>4.79, 0.000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>MWU 11 Hz 30 Hz</th>\n",
" <td>1299.00, 0.000</td>\n",
" <td>1275.00, 0.000</td>\n",
" <td>657.00, 0.361</td>\n",
" <td>664.00, 0.983</td>\n",
" <td>248.00, 0.000</td>\n",
" <td>1408.00, 0.000</td>\n",
" <td>236.00, 0.000</td>\n",
" <td>202.00, 0.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>PRS 11 Hz 30 Hz</th>\n",
" <td>0.04, 0.000</td>\n",
" <td>0.01, 0.000</td>\n",
2019-12-16 15:16:33 +00:00
" <td>0.25, 0.510</td>\n",
" <td>0.10, 0.909</td>\n",
2019-12-13 10:47:07 +00:00
" <td>0.11, 0.000</td>\n",
" <td>0.02, 0.000</td>\n",
" <td>1.09, 0.000</td>\n",
" <td>31.00, 0.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>MWU Baseline II 30 Hz</th>\n",
" <td>1154.00, 0.000</td>\n",
" <td>1154.00, 0.000</td>\n",
" <td>604.00, 0.754</td>\n",
" <td>108.00, 0.000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>PRS Baseline II 30 Hz</th>\n",
" <td>0.19, 0.000</td>\n",
" <td>0.13, 0.000</td>\n",
2019-12-16 15:16:33 +00:00
" <td>0.10, 0.577</td>\n",
2019-12-13 10:47:07 +00:00
" <td>4.89, 0.000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Theta energy Theta peak \\\n",
"Baseline I 0.25 ± 0.02 (48) 0.18 ± 0.02 (48) \n",
"11 Hz 0.08 ± 0.00 (44) 0.03 ± 0.00 (44) \n",
"Baseline II 0.24 ± 0.02 (34) 0.17 ± 0.02 (34) \n",
"30 Hz 0.04 ± 0.00 (34) 0.02 ± 0.00 (34) \n",
"MWU Baseline I 11 Hz 2075.00, 0.000 2102.00, 0.000 \n",
"PRS Baseline I 11 Hz 0.15, 0.000 0.12, 0.000 \n",
"MWU Baseline I Baseline II 860.00, 0.682 850.00, 0.753 \n",
2019-12-16 15:16:33 +00:00
"PRS Baseline I Baseline II 0.00, 0.955 0.01, 0.597 \n",
2019-12-13 10:47:07 +00:00
"MWU Baseline I 30 Hz 1629.00, 0.000 1629.00, 0.000 \n",
"PRS Baseline I 30 Hz 0.19, 0.000 0.13, 0.000 \n",
"MWU 11 Hz Baseline II 22.00, 0.000 10.00, 0.000 \n",
"PRS 11 Hz Baseline II 0.15, 0.000 0.12, 0.000 \n",
"MWU 11 Hz 30 Hz 1299.00, 0.000 1275.00, 0.000 \n",
"PRS 11 Hz 30 Hz 0.04, 0.000 0.01, 0.000 \n",
"MWU Baseline II 30 Hz 1154.00, 0.000 1154.00, 0.000 \n",
"PRS Baseline II 30 Hz 0.19, 0.000 0.13, 0.000 \n",
"\n",
" Theta freq Theta half width \\\n",
"Baseline I 7.78 ± 0.09 (48) 1.79 ± 0.33 (46) \n",
"11 Hz 7.55 ± 0.12 (44) 5.80 ± 0.50 (43) \n",
"Baseline II 7.96 ± 0.09 (34) 1.23 ± 0.22 (33) \n",
"30 Hz 7.74 ± 0.19 (34) 5.88 ± 0.64 (31) \n",
"MWU Baseline I 11 Hz 1201.50, 0.256 253.00, 0.000 \n",
2019-12-16 15:16:33 +00:00
"PRS Baseline I 11 Hz 0.05, 0.686 4.74, 0.000 \n",
2019-12-13 10:47:07 +00:00
"MWU Baseline I Baseline II 645.50, 0.108 805.00, 0.651 \n",
2019-12-16 15:16:33 +00:00
"PRS Baseline I Baseline II 0.30, 0.009 0.05, 0.584 \n",
2019-12-13 10:47:07 +00:00
"MWU Baseline I 30 Hz 781.50, 0.749 225.00, 0.000 \n",
"PRS Baseline I 30 Hz 0.20, 0.416 4.84, 0.000 \n",
"MWU 11 Hz Baseline II 524.50, 0.024 1328.00, 0.000 \n",
2019-12-16 15:16:33 +00:00
"PRS 11 Hz Baseline II 0.35, 0.020 4.79, 0.000 \n",
2019-12-13 10:47:07 +00:00
"MWU 11 Hz 30 Hz 657.00, 0.361 664.00, 0.983 \n",
2019-12-16 15:16:33 +00:00
"PRS 11 Hz 30 Hz 0.25, 0.510 0.10, 0.909 \n",
2019-12-13 10:47:07 +00:00
"MWU Baseline II 30 Hz 604.00, 0.754 108.00, 0.000 \n",
2019-12-16 15:16:33 +00:00
"PRS Baseline II 30 Hz 0.10, 0.577 4.89, 0.000 \n",
2019-12-13 10:47:07 +00:00
"\n",
" Stim energy Stim half width \\\n",
"Baseline I NaN NaN \n",
"11 Hz 0.05 ± 0.00 (44) 0.16 ± 0.00 (44) \n",
"Baseline II NaN NaN \n",
"30 Hz 0.16 ± 0.02 (34) 0.14 ± 0.00 (34) \n",
"MWU Baseline I 11 Hz NaN NaN \n",
"PRS Baseline I 11 Hz NaN NaN \n",
"MWU Baseline I Baseline II NaN NaN \n",
"PRS Baseline I Baseline II NaN NaN \n",
"MWU Baseline I 30 Hz NaN NaN \n",
"PRS Baseline I 30 Hz NaN NaN \n",
"MWU 11 Hz Baseline II NaN NaN \n",
"PRS 11 Hz Baseline II NaN NaN \n",
"MWU 11 Hz 30 Hz 248.00, 0.000 1408.00, 0.000 \n",
"PRS 11 Hz 30 Hz 0.11, 0.000 0.02, 0.000 \n",
"MWU Baseline II 30 Hz NaN NaN \n",
"PRS Baseline II 30 Hz NaN NaN \n",
"\n",
" Stim p max Stim strength \n",
"Baseline I NaN NaN \n",
"11 Hz 0.51 ± 0.04 (44) 7.14 ± 0.81 (44) \n",
"Baseline II NaN NaN \n",
"30 Hz 1.54 ± 0.16 (34) 45.30 ± 6.54 (34) \n",
"MWU Baseline I 11 Hz NaN NaN \n",
"PRS Baseline I 11 Hz NaN NaN \n",
"MWU Baseline I Baseline II NaN NaN \n",
"PRS Baseline I Baseline II NaN NaN \n",
"MWU Baseline I 30 Hz NaN NaN \n",
"PRS Baseline I 30 Hz NaN NaN \n",
"MWU 11 Hz Baseline II NaN NaN \n",
"PRS 11 Hz Baseline II NaN NaN \n",
"MWU 11 Hz 30 Hz 236.00, 0.000 202.00, 0.000 \n",
"PRS 11 Hz 30 Hz 1.09, 0.000 31.00, 0.000 \n",
"MWU Baseline II 30 Hz NaN NaN \n",
"PRS Baseline II 30 Hz NaN NaN "
]
},
2019-12-16 15:16:33 +00:00
"execution_count": 17,
2019-12-13 10:47:07 +00:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\n",
"\n",
"stat = pd.DataFrame()\n",
"\n",
"for key, df in results.items():\n",
" Key = rename(key)\n",
" stat[Key] = df.agg(summarize)\n",
" stat[Key] = df.agg(summarize)\n",
" \n",
" for i, c1 in enumerate(df.columns):\n",
" for c2 in df.columns[i+1:]:\n",
" stat.loc[f'MWU {c1} {c2}', Key] = MWU(df, [c1, c2])\n",
" stat.loc[f'PRS {c1} {c2}', Key] = PRS(df, [c1, c2])\n",
"\n",
"stat"
]
},
{
"cell_type": "code",
2019-12-16 15:16:33 +00:00
"execution_count": 18,
2019-12-13 10:47:07 +00:00
"metadata": {},
"outputs": [],
"source": [
"stat.to_latex(output_path / \"statistics\" / \"statistics.tex\")\n",
2019-12-16 15:16:33 +00:00
"stat.to_csv(output_path / \"statistics\" / \"statistics.csv\")"
2019-12-13 10:47:07 +00:00
]
},
2019-10-17 17:50:46 +00:00
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Plot PSD"
]
},
{
"cell_type": "code",
2019-12-16 15:16:33 +00:00
"execution_count": 19,
2019-10-17 17:50:46 +00:00
"metadata": {},
"outputs": [],
"source": [
"psd = pd.read_feather(output_path / 'data' / 'psd.feather')\n",
"freqs = pd.read_feather(output_path / 'data' / 'freqs.feather')"
]
},
{
"cell_type": "code",
2019-12-16 15:16:33 +00:00
"execution_count": null,
2019-10-17 17:50:46 +00:00
"metadata": {},
"outputs": [],
"source": [
"from septum_mec.analysis.plotting import plot_bootstrap_timeseries"
]
},
{
"cell_type": "code",
2019-12-16 15:16:33 +00:00
"execution_count": null,
2019-10-17 17:50:46 +00:00
"metadata": {},
"outputs": [],
"source": [
"freq = freqs.T.iloc[0].values\n",
"\n",
2019-12-13 10:43:57 +00:00
"mask = (freq < 49)"
2019-10-17 17:50:46 +00:00
]
},
{
"cell_type": "code",
2019-12-16 15:16:33 +00:00
"execution_count": null,
2019-10-17 17:50:46 +00:00
"metadata": {},
2019-12-16 15:16:33 +00:00
"outputs": [],
2019-10-17 17:50:46 +00:00
"source": [
"\n",
"fig, axs = plt.subplots(1, 2, sharex=True, sharey=True, figsize=(5,2))\n",
"axs = axs.repeat(2)\n",
"for i, (ax, query) in enumerate(zip(axs.ravel(), queries)):\n",
" selection = [\n",
" f'{r.action}_{r.channel_group}' \n",
" for i, r in lfp_results_hemisphere.query(query).iterrows()]\n",
" values = psd.loc[mask, selection].to_numpy()\n",
" values = 10 * np.log10(values)\n",
" plot_bootstrap_timeseries(freq[mask], values, ax=ax, lw=1, label=labels[i], color=colors[i])\n",
"# ax.set_title(titles[i])\n",
" ax.set_xlabel('Frequency Hz')\n",
" ax.legend(frameon=False)\n",
"axs[0].set_ylabel('PSD (dB/Hz)')\n",
2019-12-13 10:47:07 +00:00
"axs[0].set_ylim(-31, 1)\n",
"despine()\n",
2019-10-17 17:50:46 +00:00
"\n",
"figname = 'lfp-psd'\n",
"fig.savefig(\n",
" output_path / 'figures' / f'{figname}.png', \n",
" bbox_inches='tight', transparent=True)\n",
"fig.savefig(\n",
" output_path / 'figures' / f'{figname}.svg', \n",
" bbox_inches='tight', transparent=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Store results in Expipe action"
]
},
{
"cell_type": "code",
2019-12-16 15:16:33 +00:00
"execution_count": null,
2019-10-17 17:50:46 +00:00
"metadata": {},
"outputs": [],
"source": [
"action = project.require_action(\"stimulus-lfp-response\")"
]
},
{
"cell_type": "code",
2019-12-16 15:16:33 +00:00
"execution_count": null,
2019-10-17 17:50:46 +00:00
"metadata": {},
2019-12-16 15:16:33 +00:00
"outputs": [],
2019-10-17 17:50:46 +00:00
"source": [
"copy_tree(output_path, str(action.data_path()))"
]
},
{
"cell_type": "code",
2019-12-16 15:16:33 +00:00
"execution_count": null,
2019-10-17 17:50:46 +00:00
"metadata": {},
"outputs": [],
"source": [
"septum_mec.analysis.registration.store_notebook(action, \"20_stimulus-lfp-response.ipynb\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}