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

1152 lines
264 KiB
Plaintext
Raw Normal View History

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%load_ext autoreload\n",
"%autoreload 2"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"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",
"from tqdm.notebook import tqdm_notebook as tqdm\n",
"tqdm.pandas()\n",
"\n",
"from spike_statistics.core import permutation_resampling_test\n",
"\n",
"from spikewaveform.core import calculate_waveform_features_from_template, cluster_waveform_features\n",
"\n",
"from septum_mec.analysis.plotting import violinplot, despine"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"#############################\n",
"\n",
"perform_zscore = False\n",
"\n",
"if not perform_zscore:\n",
" zscore_str = \"-no-zscore\"\n",
"else:\n",
" zscore_str = \"\"\n",
"\n",
"#################################"
]
},
{
"cell_type": "code",
"execution_count": 7,
"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\" + zscore_str)\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": 8,
"metadata": {},
"outputs": [],
"source": [
"data_loader = dp.Data()\n",
"actions = data_loader.actions\n",
"project = data_loader.project"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"identify_neurons = actions['identify-neurons']\n",
"sessions = pd.read_csv(identify_neurons.data_path('sessions'))"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"lfp_action = actions['stimulus-lfp-response' + zscore_str]\n",
"lfp_results = pd.read_csv(lfp_action.data_path('results'))"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"lfp_results = pd.merge(sessions, lfp_results, how='left')"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"lfp_results = lfp_results.query('stim_location!=\"mecl\" and stim_location!=\"mecr\"')"
]
},
{
"cell_type": "code",
"execution_count": 13,
"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",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"lfp_results['stim_strength'] = lfp_results['stim_p_max'] / lfp_results['theta_energy']"
]
},
{
"cell_type": "code",
"execution_count": 15,
"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>71</th>\n",
" <td>1833-010719-1-0</td>\n",
" <td>7</td>\n",
" <td>0.001902</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>67</th>\n",
" <td>1833-010719-1-1</td>\n",
" <td>3</td>\n",
" <td>0.003522</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>695</th>\n",
" <td>1833-010719-2-0</td>\n",
" <td>7</td>\n",
" <td>0.004280</td>\n",
" <td>2.260538</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>583</th>\n",
" <td>1833-020719-1-0</td>\n",
" <td>7</td>\n",
" <td>-0.002942</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",
"71 1833-010719-1-0 7 0.001902 NaN\n",
"67 1833-010719-1-1 3 0.003522 NaN\n",
"695 1833-010719-2-0 7 0.004280 2.260538\n",
"691 1833-010719-2-1 3 0.003974 6.446883\n",
"583 1833-020719-1-0 7 -0.002942 NaN"
]
},
"execution_count": 15,
"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",
"lfp_results_hemisphere = lfp_results.sort_values(\n",
" by=['action_side_a', 'channel_group'], ascending=[True, 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",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"colors = ['#1b9e77','#d95f02','#7570b3','#e7298a']\n",
"labels = ['Baseline I', '11 Hz', 'Baseline II', '30 Hz']\n",
"# Hz11 means that the baseline session was indeed before an 11 Hz session\n",
"queries = ['baseline and i and Hz11', 'frequency==11', 'baseline and ii and Hz30', 'frequency==30']"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"# prepare pairwise comparison: same animal same side same date different sessions"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"def make_entity_date_side(row):\n",
" s = row.action_side_a.split('-')\n",
" del s[2]\n",
" return '-'.join(s)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"lfp_results_hemisphere['entity_date_side'] = lfp_results_hemisphere.apply(make_entity_date_side, axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 525x300 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 525x300 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAewAAAFICAYAAACSp82YAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAXEQAAFxEByibzPwAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nO3deZwcVbn/8c/MZF/IymbCmsBDCItcBeECEhERZRfivUiQsATZXFBAfoCIKJt4wStEEFCCoEZAlCW4ICJcQBAxrNEnYQsQwJCV7MnM9O+Pc9rpmenu6Znp7uqa+b5fr3lVd9WpqqeHME+fU2epy2QyiIiISG2rTzoAERER6ZgStoiISAooYYuIiKSAEraIiEgKKGGLiIikgBK2iIhICihhi4iIpIAStoiISAooYYuIiKSAEraIiEgKKGGLiIikgBK2iIhICihhi4iIpIAStoiISAr0SToAkWoxs13c/fk2+2YAx8e3m7v7u1UPLEe+GGuNmW0HXAxMAkYDS4E57r5/gmGJ9HhK2NLjmdkw4BLgDGr037yZbQZ8D9gb2CbhcAoyszHAk8DInN2bAv9IJiKR3qMm/3iJlNnVwIlJB9GBnwH7A/OTDqQDX6QlWd8FXA+sBVYnFpFIL6GELb1BQ9IBlCANMQJMjNsNwPHurkQtUiXqdCYinTE4bhcqWYtUlxK2iHRG9m9GY6JRiPRCdZlMJukYRCrCzC4Gvlng8CPuPqltL3FgAHAOcBAwBngfmAPMAG5194L/w5hZX2AqMBnYhfCsdxnwHOF57y3uvr7NObn3b+tWd5/apvymwDTg44DFezQCi4GngZnAr4rF2VlmtjXwWpEi891961g2e9+zgFnAdcA+hCb0l4Hz3P2POdfu9O8sT3wfJ3Qo/BCwCbAAuAe4nPC7WRqLnuDuMzr+xCK1STVskRZHEXo7nw5sC/QHNgb2A24BZplZ3n4fZjaekGRuBD5B6DndN55/AHAD8JyZWVeDM7PjCYnz24QhVZvHGAcDW8b47wTuMbOkn4lvATwOHAgMAoYB/0FI2kD3f2dm1sfMbgT+CBxJ+B0MAMYBXwWeJXypEekRlLClJ7sB2A24L2ffbvHn5DzlrwPqgOmEGvbHgAuAVfH4pwiJoJU4JOv/gAnA+nj+wcAewOHArUATsAPwsJltnnP6RTGeZ+L7d3JivCjnHvsTavkDgSWEYWqfAvYkJOrp8d4Ahxb4fF31dk5M+eL8dJ5zvkIYo/1dYF9CDfoyd389fp7u/M6yvkdobYDQu/5UYC/gM8AfCC0kd3btI4vUHvUSlx4rToLyrpktydn3bJFT1gH7u/sTOfv+bGZ/Av4S3x9PSEK5bgA2IzSfH+DuT7c5fq+Z3QXcS6gVXwP8d4znDeANM1sZy64vEOMlcdsIfNLd/9bm+N1m9jtavpxMBn5U5LOWLDZJPwtQQpxZ9YQEfUHOvrtyXnf5dxbj2AU4M76dA+zr7ktyzv+1mX0f+HIJH1EkFVTDFmlxXZtkDYC7Pwn8Pb7dIbdZ3My2Bw6Lby/Nk3iy17ifUGsEmGxmHyg1KDMbRGj6XgLclydZ595jWXw7ptTrV9D1+XaW6Xd2Ai1D4U5rk6yzzgZe6nTUIjVKCVukxQNFjs2L23rC89isTxOa0QEeLPH69YRn0CVx99Xuvru7jwKO7qB4dmrV/qVev0IWuPtbBY6V43d2SNy+6e6P5jvR3RuBmzoOVSQd1CQu0qJQgoEwm1dW7v83u+W8/nsn+pRtW2rBXO7eDGBmgwlTmI4jPOfdldAbe4tYNOkv428WOdat31nsUJf9/RVrlgdo12IiklZK2CItVpRYri7n9egu3mtEZ08ws7HA1wjNyYUSfjPJJ2sIz6YL6e7vbDQtn3FRB+e83cV7idQcJWyRFl0Zu5z7/9AehPHGpXivMzcxs4MInbYG5+xeQRiG9hJhDPYfgV/TMn1okor9Lrv7O2vO2VeXr2COomO4RdJECVuke3I7Oy1w97LX6OIQqJmEZL2BMCHILwBvO0GKmQ0p9/0roLu/s6WEIV8NhIlSiul0S4ZIrVLCFumeF3Ne7wncXaigmX2E0HHqdeDxIp2y2ppCS0e377j7JfkKmVl/wuQjta5bvzN3bzSz5wnPwj9kZvXZZ/t5fLA8IYskrxaedYlUWqE/5uXw+5zXp3VQ9irgCkJtue0z6GIxjs95/UzBUmEClQHxdS1/GS/H7+z+uN2Ulh7j+Xy+09GJ1CglbOkN1mVflLvJOI6Jzg4rOsDMzs9Xzsy+RpjxC0LP5v8rEGO++HI7Vn2qwPX3AK7N2ZX0sK6CyvQ7u56WNbinm9lWec4/kTB7mkiPUMvfwkXK5Z2c15eZ2U+BJnefXabrnwz8DdgIuNTM9gN+TJgu8wPAsYTpMiF0gjolz+Ic2RhHmdn/I4xPXu3ucwidzc4ndLA6PU6k8itCIh9DmMrzGMI83FkbmVldORcBKbNu/c7c/R0zO4Mwx/tY4Bkzu5Iwf/lgwqxoJ1Tps4hURa+uYZvZvWZ2b9JxSMXdS+ikBPBFQo/q35Tr4u4+j7BAyOtx14HAL4EnCc9njyIk26XA4QVm9sp9jntZjPH6eP1ngQvjsTpCIro/Xv9XhGbfvoRJRrIThfSjdVN6TSnH7yyuvHU6oSPeKMKUsY8T5hE/kTC07OoKfgyRqurVCRsYN378+EMJQ1D000N/3H32jTfe2LDbbrsxaNAgBgwYwJZbbrnlmjVrMkceeeTx2X8Mjz322DuFrtFROXef/fzzz2990UUXsffeezN69Gj69u3L4MGDmThxImeccQZPPPHECHf/bYEY77vyyiuZMGECAwcOZNCgQeyyyy4fzTl+6S233ML+++/P6NGj6dOnDwMHDmTLLbfkoIMO4sYbb8TdPz1jxozsYhh85StfmdvN311FxS8iEwhLYz4I/IuQfFcQntVfAuzg7r8rco3rgZ2Bm4E3CLXxBYR51HemZQ54kdSr6HrYZvYFwiT/09z95i6cP4pQszic0Oy1lPAN+rtxfufuxvfS+PHjd5w1a1Z3LyXSE3U0xrnmmdnRtKzYpfWwJdUqVsM2s90JPTy7ev6mwFOEZfo2BZ4nfOs/EngsdigRERHpFSqSsM1sEmHoxtBuXOaXhHmSHwTGuvuHCZ1RziNMmHCDmU3oZqgiIiKpUNZe4mY2gJBQL6Rl6buuXGcSoUPKSuBz7r4U/r3wwZVmthNhMokL4lZE8njvvfdYtKij6bbzO+KII/496UgHa1+LSBWULWGb2XjgT4TVgpoISXsasFUXLjc1bu9x93x/bW4gJOojzGygu6/pwj1EeryZM2dy3XXXdfX03GFvqX+eLZJ25WwSH0tI1k8CH3H3S7txrb3i9rECx/8KNBLGW364G/cRERFJhXI2ib8FHOzuD3RYsggzq6dlCsJX8pVx9w1mtoBQe9+e9rNGSS/RnGlm6brVHRfMkWnOsGZ1qQtEdV2mqYnMuwsrfp9iDvvo/hz20f27dO5Wu05Mfa3a3e9CrQPSQ5QtYbv7y8DLZbjUCFriKrYE4WJCwu7q2rrSAyxdt5pdf/GdTp3Tv7EPR83Zs0IRtRi4vpHTHp5X8ftUzJxaWKVTRLJqcWrSQTmv1xYpl31uPahIGSCMty5waFypQYmIiCSpFhN2U8dFWqn4jEwiIpVgZlsDrxU4nCFMFvUG8FvgGncv1upYk8xsKmHO9wXuPjZn/58Jo4EudfcL85+dLDObARwPPOLuk5KNpjYT9sqc1wMKloKBcdvhA0x3z9u2F2veO5YemohIxbwILM9534fwiHAnwrre08xsf3d/IYngJHm1mrDXEZYHHFWkXPbZdbK9eqTmPHzkVxk5oPCTktUr13PtnCda7TvprN0ZNKhvgTO6pnnBO9DmGfbaaz5M3WablPU+0mN80d3/3HZnnKL5VsJSoXeZ2YQ4J0XafZ7wSLNrEwX0QjWXsN292cwc2AXYOl8ZM+tLmPUMYG6VQpOUGDlgEKMGFF72un/junb7xowczpAh5V1Cev2qVSxps+8DO4yn31ZblPU+0rO
"text/plain": [
"<Figure size 525x300 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"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",
"if perform_zscore:\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",
"else:\n",
" bins = {\n",
" 'theta_energy': np.arange(0, .008, .0003),\n",
" 'theta_peak': np.arange(0, .007, .0003),\n",
" 'theta_freq': np.arange(4, 12, .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",
"results = {}\n",
"for key in bins:\n",
" results[key] = list()\n",
" 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",
" values = lfp_results_hemisphere.query(query).loc[:,['entity_date_side', key]]\n",
" results[key].append(values.rename({key: label}, axis=1))\n",
" values[key].hist(\n",
" 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(right=bins[key].max() - bins[key].max()*0.025)\n",
" despine()\n",
" 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",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 480x300 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 480x300 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 480x300 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"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",
"if perform_zscore:\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",
"else:\n",
" bins = {\n",
" 'stim_energy': np.arange(0, .008, .0001),\n",
" 'stim_half_width': np.arange(0, 0.5, .001),\n",
" 'stim_p_max': np.arange(0, .06, .0001),\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",
" results[key] = list()\n",
" 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",
" values = lfp_results_hemisphere.query(query).loc[:,['entity_date_side', key]]\n",
" results[key].append(values.rename({key: label}, axis=1))\n",
" values[key].hist(\n",
" 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(right=bins[key].max() - bins[key].max()*0.025)\n",
" despine()\n",
" 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",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"from functools import reduce"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"for key, val in results.items():\n",
" df = reduce(lambda left,right: pd.merge(left, right, on='entity_date_side', how='outer'), val)\n",
" results[key] = df.drop('entity_date_side',axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"def summarize(data):\n",
" return \"{:.1e} ± {:.1e} ({})\".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 wilcoxon(df, keys):\n",
" dff = df.loc[:,[keys[0], keys[1]]].dropna()\n",
" statistic, pvalue = scipy.stats.wilcoxon(\n",
" dff[keys[0]], \n",
" dff[keys[1]],\n",
" alternative='two-sided')\n",
"\n",
" return \"{:.2f}, {:.3f}, ({})\".format(statistic, pvalue, len(dff))\n",
"\n",
"\n",
"def paired_t(df, keys):\n",
" dff = df.loc[:,[keys[0], keys[1]]].dropna()\n",
" statistic, pvalue = scipy.stats.ttest_rel(\n",
" dff[keys[0]], \n",
" dff[keys[1]])\n",
"\n",
" return \"{:.2f}, {:.3f}\".format(statistic, pvalue)\n",
"\n",
" \n",
"def normality(df, key):\n",
" statistic, pvalue = scipy.stats.normaltest(\n",
" df[key].dropna())\n",
"\n",
" return \"{:.2f}, {:.3f}\".format(statistic, pvalue)\n",
"\n",
"\n",
"def shapiro(df, key):\n",
" statistic, pvalue = scipy.stats.shapiro(\n",
" df[key].dropna())\n",
"\n",
" return \"{:.2f}, {:.3f}\".format(statistic, pvalue)\n",
"\n",
"def rename(name):\n",
" return name.replace(\"_field\", \"-field\").replace(\"_\", \" \").capitalize()"
]
},
{
"cell_type": "code",
"execution_count": 25,
"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>11 Hz</th>\n",
" <td>9.1e-04 ± 9.0e-05 (44)</td>\n",
" <td>3.9e-04 ± 5.1e-05 (44)</td>\n",
" <td>7.5e+00 ± 1.5e-01 (44)</td>\n",
" <td>5.5e+00 ± 5.6e-01 (42)</td>\n",
" <td>4.3e-04 ± 4.7e-05 (44)</td>\n",
" <td>1.8e-01 ± 1.3e-02 (44)</td>\n",
" <td>3.9e-03 ± 4.5e-04 (44)</td>\n",
" <td>5.8e+00 ± 7.3e-01 (44)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30 Hz</th>\n",
" <td>5.7e-04 ± 7.0e-05 (34)</td>\n",
" <td>2.5e-04 ± 4.3e-05 (34)</td>\n",
" <td>7.7e+00 ± 2.1e-01 (34)</td>\n",
" <td>6.7e+00 ± 8.4e-01 (29)</td>\n",
" <td>1.0e-03 ± 2.1e-04 (34)</td>\n",
" <td>1.5e-01 ± 1.6e-03 (34)</td>\n",
" <td>1.0e-02 ± 2.0e-03 (34)</td>\n",
" <td>2.2e+01 ± 4.5e+00 (34)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Baseline I</th>\n",
" <td>2.3e-03 ± 2.2e-04 (46)</td>\n",
" <td>1.8e-03 ± 1.9e-04 (46)</td>\n",
" <td>7.7e+00 ± 6.3e-02 (46)</td>\n",
" <td>1.2e+00 ± 2.0e-01 (45)</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Baseline II</th>\n",
" <td>2.3e-03 ± 2.4e-04 (32)</td>\n",
" <td>1.8e-03 ± 2.3e-04 (32)</td>\n",
" <td>8.1e+00 ± 4.7e-02 (32)</td>\n",
" <td>9.1e-01 ± 3.9e-02 (31)</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Normality 11 Hz</th>\n",
" <td>27.15, 0.000</td>\n",
" <td>57.06, 0.000</td>\n",
" <td>1.61, 0.447</td>\n",
" <td>11.89, 0.003</td>\n",
" <td>16.86, 0.000</td>\n",
" <td>82.50, 0.000</td>\n",
" <td>14.96, 0.001</td>\n",
" <td>15.95, 0.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Normality 30 Hz</th>\n",
" <td>30.23, 0.000</td>\n",
" <td>43.50, 0.000</td>\n",
" <td>4.85, 0.088</td>\n",
" <td>5.64, 0.060</td>\n",
" <td>19.73, 0.000</td>\n",
" <td>9.69, 0.008</td>\n",
" <td>19.72, 0.000</td>\n",
" <td>25.38, 0.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Normality Baseline I</th>\n",
" <td>41.33, 0.000</td>\n",
" <td>32.43, 0.000</td>\n",
" <td>25.20, 0.000</td>\n",
" <td>74.91, 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>Normality Baseline II</th>\n",
" <td>13.17, 0.001</td>\n",
" <td>20.78, 0.000</td>\n",
" <td>0.96, 0.618</td>\n",
" <td>13.33, 0.001</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Wilcoxon 11 Hz 30 Hz</th>\n",
" <td>118.00, 0.006, (32)</td>\n",
" <td>134.00, 0.015, (32)</td>\n",
" <td>164.00, 0.247, (32)</td>\n",
" <td>143.00, 0.269, (27)</td>\n",
" <td>173.00, 0.089, (32)</td>\n",
" <td>25.00, 0.000, (32)</td>\n",
" <td>157.00, 0.045, (32)</td>\n",
" <td>105.00, 0.003, (32)</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Wilcoxon 11 Hz Baseline II</th>\n",
" <td>11.00, 0.000, (32)</td>\n",
" <td>5.00, 0.000, (32)</td>\n",
" <td>60.00, 0.000, (32)</td>\n",
" <td>3.00, 0.000, (30)</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Wilcoxon Baseline I 11 Hz</th>\n",
" <td>42.00, 0.000, (44)</td>\n",
" <td>16.00, 0.000, (44)</td>\n",
" <td>329.50, 0.190, (44)</td>\n",
" <td>14.00, 0.000, (41)</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Wilcoxon Baseline I 30 Hz</th>\n",
" <td>12.00, 0.000, (32)</td>\n",
" <td>5.00, 0.000, (32)</td>\n",
" <td>221.50, 0.427, (32)</td>\n",
" <td>8.00, 0.000, (27)</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Wilcoxon Baseline I Baseline II</th>\n",
" <td>264.00, 1.000, (32)</td>\n",
" <td>256.00, 0.881, (32)</td>\n",
" <td>0.00, 0.000, (32)</td>\n",
" <td>203.00, 0.544, (30)</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Wilcoxon Baseline II 30 Hz</th>\n",
" <td>17.00, 0.000, (32)</td>\n",
" <td>9.00, 0.000, (32)</td>\n",
" <td>129.50, 0.020, (32)</td>\n",
" <td>11.00, 0.000, (27)</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 \\\n",
"11 Hz 9.1e-04 ± 9.0e-05 (44) \n",
"30 Hz 5.7e-04 ± 7.0e-05 (34) \n",
"Baseline I 2.3e-03 ± 2.2e-04 (46) \n",
"Baseline II 2.3e-03 ± 2.4e-04 (32) \n",
"Normality 11 Hz 27.15, 0.000 \n",
"Normality 30 Hz 30.23, 0.000 \n",
"Normality Baseline I 41.33, 0.000 \n",
"Normality Baseline II 13.17, 0.001 \n",
"Wilcoxon 11 Hz 30 Hz 118.00, 0.006, (32) \n",
"Wilcoxon 11 Hz Baseline II 11.00, 0.000, (32) \n",
"Wilcoxon Baseline I 11 Hz 42.00, 0.000, (44) \n",
"Wilcoxon Baseline I 30 Hz 12.00, 0.000, (32) \n",
"Wilcoxon Baseline I Baseline II 264.00, 1.000, (32) \n",
"Wilcoxon Baseline II 30 Hz 17.00, 0.000, (32) \n",
"\n",
" Theta peak \\\n",
"11 Hz 3.9e-04 ± 5.1e-05 (44) \n",
"30 Hz 2.5e-04 ± 4.3e-05 (34) \n",
"Baseline I 1.8e-03 ± 1.9e-04 (46) \n",
"Baseline II 1.8e-03 ± 2.3e-04 (32) \n",
"Normality 11 Hz 57.06, 0.000 \n",
"Normality 30 Hz 43.50, 0.000 \n",
"Normality Baseline I 32.43, 0.000 \n",
"Normality Baseline II 20.78, 0.000 \n",
"Wilcoxon 11 Hz 30 Hz 134.00, 0.015, (32) \n",
"Wilcoxon 11 Hz Baseline II 5.00, 0.000, (32) \n",
"Wilcoxon Baseline I 11 Hz 16.00, 0.000, (44) \n",
"Wilcoxon Baseline I 30 Hz 5.00, 0.000, (32) \n",
"Wilcoxon Baseline I Baseline II 256.00, 0.881, (32) \n",
"Wilcoxon Baseline II 30 Hz 9.00, 0.000, (32) \n",
"\n",
" Theta freq \\\n",
"11 Hz 7.5e+00 ± 1.5e-01 (44) \n",
"30 Hz 7.7e+00 ± 2.1e-01 (34) \n",
"Baseline I 7.7e+00 ± 6.3e-02 (46) \n",
"Baseline II 8.1e+00 ± 4.7e-02 (32) \n",
"Normality 11 Hz 1.61, 0.447 \n",
"Normality 30 Hz 4.85, 0.088 \n",
"Normality Baseline I 25.20, 0.000 \n",
"Normality Baseline II 0.96, 0.618 \n",
"Wilcoxon 11 Hz 30 Hz 164.00, 0.247, (32) \n",
"Wilcoxon 11 Hz Baseline II 60.00, 0.000, (32) \n",
"Wilcoxon Baseline I 11 Hz 329.50, 0.190, (44) \n",
"Wilcoxon Baseline I 30 Hz 221.50, 0.427, (32) \n",
"Wilcoxon Baseline I Baseline II 0.00, 0.000, (32) \n",
"Wilcoxon Baseline II 30 Hz 129.50, 0.020, (32) \n",
"\n",
" Theta half width \\\n",
"11 Hz 5.5e+00 ± 5.6e-01 (42) \n",
"30 Hz 6.7e+00 ± 8.4e-01 (29) \n",
"Baseline I 1.2e+00 ± 2.0e-01 (45) \n",
"Baseline II 9.1e-01 ± 3.9e-02 (31) \n",
"Normality 11 Hz 11.89, 0.003 \n",
"Normality 30 Hz 5.64, 0.060 \n",
"Normality Baseline I 74.91, 0.000 \n",
"Normality Baseline II 13.33, 0.001 \n",
"Wilcoxon 11 Hz 30 Hz 143.00, 0.269, (27) \n",
"Wilcoxon 11 Hz Baseline II 3.00, 0.000, (30) \n",
"Wilcoxon Baseline I 11 Hz 14.00, 0.000, (41) \n",
"Wilcoxon Baseline I 30 Hz 8.00, 0.000, (27) \n",
"Wilcoxon Baseline I Baseline II 203.00, 0.544, (30) \n",
"Wilcoxon Baseline II 30 Hz 11.00, 0.000, (27) \n",
"\n",
" Stim energy \\\n",
"11 Hz 4.3e-04 ± 4.7e-05 (44) \n",
"30 Hz 1.0e-03 ± 2.1e-04 (34) \n",
"Baseline I NaN \n",
"Baseline II NaN \n",
"Normality 11 Hz 16.86, 0.000 \n",
"Normality 30 Hz 19.73, 0.000 \n",
"Normality Baseline I NaN \n",
"Normality Baseline II NaN \n",
"Wilcoxon 11 Hz 30 Hz 173.00, 0.089, (32) \n",
"Wilcoxon 11 Hz Baseline II NaN \n",
"Wilcoxon Baseline I 11 Hz NaN \n",
"Wilcoxon Baseline I 30 Hz NaN \n",
"Wilcoxon Baseline I Baseline II NaN \n",
"Wilcoxon Baseline II 30 Hz NaN \n",
"\n",
" Stim half width \\\n",
"11 Hz 1.8e-01 ± 1.3e-02 (44) \n",
"30 Hz 1.5e-01 ± 1.6e-03 (34) \n",
"Baseline I NaN \n",
"Baseline II NaN \n",
"Normality 11 Hz 82.50, 0.000 \n",
"Normality 30 Hz 9.69, 0.008 \n",
"Normality Baseline I NaN \n",
"Normality Baseline II NaN \n",
"Wilcoxon 11 Hz 30 Hz 25.00, 0.000, (32) \n",
"Wilcoxon 11 Hz Baseline II NaN \n",
"Wilcoxon Baseline I 11 Hz NaN \n",
"Wilcoxon Baseline I 30 Hz NaN \n",
"Wilcoxon Baseline I Baseline II NaN \n",
"Wilcoxon Baseline II 30 Hz NaN \n",
"\n",
" Stim p max \\\n",
"11 Hz 3.9e-03 ± 4.5e-04 (44) \n",
"30 Hz 1.0e-02 ± 2.0e-03 (34) \n",
"Baseline I NaN \n",
"Baseline II NaN \n",
"Normality 11 Hz 14.96, 0.001 \n",
"Normality 30 Hz 19.72, 0.000 \n",
"Normality Baseline I NaN \n",
"Normality Baseline II NaN \n",
"Wilcoxon 11 Hz 30 Hz 157.00, 0.045, (32) \n",
"Wilcoxon 11 Hz Baseline II NaN \n",
"Wilcoxon Baseline I 11 Hz NaN \n",
"Wilcoxon Baseline I 30 Hz NaN \n",
"Wilcoxon Baseline I Baseline II NaN \n",
"Wilcoxon Baseline II 30 Hz NaN \n",
"\n",
" Stim strength \n",
"11 Hz 5.8e+00 ± 7.3e-01 (44) \n",
"30 Hz 2.2e+01 ± 4.5e+00 (34) \n",
"Baseline I NaN \n",
"Baseline II NaN \n",
"Normality 11 Hz 15.95, 0.000 \n",
"Normality 30 Hz 25.38, 0.000 \n",
"Normality Baseline I NaN \n",
"Normality Baseline II NaN \n",
"Wilcoxon 11 Hz 30 Hz 105.00, 0.003, (32) \n",
"Wilcoxon 11 Hz Baseline II NaN \n",
"Wilcoxon Baseline I 11 Hz NaN \n",
"Wilcoxon Baseline I 30 Hz NaN \n",
"Wilcoxon Baseline I Baseline II NaN \n",
"Wilcoxon Baseline II 30 Hz NaN "
]
},
"execution_count": 25,
"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",
" stat.loc[f'Normality {c1}', Key] = normality(df, c1)\n",
"# stat.loc[f'Shapiro {c1}', Key] = shapiro(df, c1)\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",
" stat.loc[f'Wilcoxon {c1} {c2}', Key] = wilcoxon(df, [c1, c2])\n",
"# stat.loc[f'Paired T {c1} {c2}', Key] = paired_t(df, [c1, c2])\n",
"\n",
"stat.sort_index()"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"stat.to_latex(output_path / \"statistics\" / \"statistics.tex\")\n",
"stat.to_csv(output_path / \"statistics\" / \"statistics.csv\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Plot PSD"
]
},
{
"cell_type": "code",
"execution_count": 27,
"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",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"from septum_mec.analysis.plotting import plot_bootstrap_timeseries"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"freq = freqs.T.iloc[0].values\n",
"\n",
"mask = (freq < 49)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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8uTJzJo1i6qqqqEeihBikA36eW2QJqrJeW1wSLArhANVVlZy0EEHAbBx48YhHo0QQvTf4J7XpCuDk0gZgxAOZRgGAMXFxV0+9uKLL/LXv/6Vjz76iJaWFrxeL+PHj+e4447jkksuYebMmZ32W7ZsGY8//jgffvgh4XCYkpIS5syZw+c+9znOP/98/H5/p32i0SgPP/wwf//736mpqcGyLKZNm8bpp5/OxRdfTFlZWa9ez4UXXsjKlSu58soruf766wF7YsuCBQsYO3Ysy5cv5+mnn+bJJ59k06ZNgF3/95WvfIVzzz0Xl6vzJclCjU0IMTgG8rz2gfkPIqQo2RJkziWvcebChXJecwgJdsWwYlkWCSM91MMoiJDX1+WJaDBs27aNjRs34na7OeWUU/IeSyaTXHHFFaxYsQKAKVOmMGfOHBobG6murqa6upqlS5fy+OOPM3fu3Pb9HnnkEW699VYAxo8fz8EHH0xzczMrV65k5cqV/PWvf+Whhx7C4/G077N582Yuv/xydu7cicfjYdq0aQSDQTZt2sRvf/tbnnvuOR544AFmzZrVr9drWRY/+MEPeP755ykrK2PmzJls376dVatWsWrVKrZu3cr3vve9vH0Ga2xCWJZFWjeHehgF4fN7HHteG0sRsxlD2J3m3ffe49333pPzmkNIsCuGDcuyOOf/7uO9upqhHkpBHDt+OksWXjlobwymaRIOh/nggw+44447yGQyXHnllUyZMiVvuwceeIAVK1ZQWVnJ/fffz2GHHdb+2OrVq7n66qupr6/nvvvu49e//jUA4XCYO++8E4C77rqLz3/+8+37LF++nGuuuaY94G17LB6Pc9VVV7Fz504WLFjAT37yEyZMmABAfX09N910E2+88QZXX301zz//PMFgcL9fe2NjIy+++CI//OEP+cY3voHH4yGVSnHTTTfxwgsv8Ic//IFLL720vS5uMMcmRjfLsvjdr9+hprp5qIdSEDNmVnLVtSc68rx29PfXAeCZXsmG/zeb7yz6dzmvOYTU7IphRTq99N5FF12U149y7ty5HH/88Vx11VVUV1dz+eWXc91113Xa75133sHtdvOd73wn7w0B4LDDDuPrX/86AB9//HH7/Vu3biWVSlFeXs7ChQvz9jn55JO54oorOOOMM/D5fO33P/XUU9TU1HDooYdyzz33tJ90AcaNG8fdd9/NlClTqK6uZsmSJf3+/7jgggu46KKL2jMwgUCAG2+8EZfLhWEYrF69esjGJka3IUqEjkjD5bx20vEnyHnNQSSzK4YNl8vFkoVXdipjSGx9l/jav1Ny9DkEJh8yRKPru4EuY+jYjzKTyRCLxaipqUHXdR566CESiQQ33nhj3iW4P/3pT6TT6W7HFgqFAPuyYJupU6fi9XppbW1l8eLFXHLJJRx88MHtj19zzTWdnueVV14BYOHChXnHbxMMBjnjjDN48MEHef3117ngggv6+D+Qb/78+Z3uq6yspKqqisbGRsLh8JCNTYxeLpeLq649UcoYemkoz2tftFzMdo2xH7TkvOYkEuyKYcXlclHky58MEP/oFUJAZtVSiqYfPjQDG4a660ep6zrPPvss//Vf/8Vjjz2GaZrcfPPNedv4fD5aW1tZtWoV1dXVbN++nerqatavX09DQwNgv8m0GTNmDJdddhn
"text/plain": [
"<Figure size 750x300 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"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",
"# axs[0].set_ylim(-31, 1)\n",
"despine()\n",
"\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",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"action = project.require_action(\"stimulus-lfp-response\" + zscore_str)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-no-zscore/data/statistics/statistics.tex',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-no-zscore/data/statistics/statistics.csv',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-no-zscore/data/data/psd.feather',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-no-zscore/data/data/freqs.feather',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-no-zscore/data/figures/lfp-psd-histogram-stim_energy.png',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-no-zscore/data/figures/lfp-psd-histogram-stim_strength.png',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-no-zscore/data/figures/lfp-psd.png',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-no-zscore/data/figures/lfp-psd-histogram-theta_peak.svg',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-no-zscore/data/figures/lfp-psd-histogram-stim_p_max.png',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-no-zscore/data/figures/lfp-psd-histogram-theta_freq.png',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-no-zscore/data/figures/lfp-psd-histogram-theta_energy.svg',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-no-zscore/data/figures/lfp-psd-histogram-theta_freq.svg',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-no-zscore/data/figures/lfp-psd-histogram-stim_half_width.png',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-no-zscore/data/figures/lfp-psd-histogram-stim_half_width.svg',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-no-zscore/data/figures/lfp-psd-histogram-theta_half_width.svg',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-no-zscore/data/figures/lfp-psd-histogram-theta_energy.png',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-no-zscore/data/figures/lfp-psd-histogram-theta_peak.png',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-no-zscore/data/figures/lfp-psd-histogram-stim_p_max.svg',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-no-zscore/data/figures/lfp-psd-histogram-theta_half_width.png',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-no-zscore/data/figures/lfp-psd.svg',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-no-zscore/data/figures/.ipynb_checkpoints/lfp-psd-histogram-theta_energy-checkpoint.png',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-no-zscore/data/figures/lfp-psd-histogram-stim_energy.svg',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-no-zscore/data/figures/lfp-psd-histogram-stim_strength.svg']"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"copy_tree(output_path, str(action.data_path()))"
]
},
{
"cell_type": "code",
"execution_count": 30,
"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": 4
}