1416 lines
259 KiB
Plaintext
1416 lines
259 KiB
Plaintext
|
{
|
||
|
"cells": [
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 1,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"%load_ext autoreload\n",
|
||
|
"%autoreload 2"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 7,
|
||
|
"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": 8,
|
||
|
"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": 9,
|
||
|
"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-mec\" + 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": 10,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"data_loader = dp.Data()\n",
|
||
|
"actions = data_loader.actions\n",
|
||
|
"project = data_loader.project"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 11,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"identify_neurons = actions['identify-neurons']\n",
|
||
|
"sessions = pd.read_csv(identify_neurons.data_path('sessions'))"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 12,
|
||
|
"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": 13,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"lfp_results = pd.merge(sessions, lfp_results, how='left')"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 14,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"lfp_results = lfp_results.query('stim_location!=\"ms\"')"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 15,
|
||
|
"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": 16,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"lfp_results['stim_strength'] = lfp_results['stim_p_max'] / lfp_results['theta_energy']"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 17,
|
||
|
"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>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",
|
||
|
" <tr>\n",
|
||
|
" <th>579</th>\n",
|
||
|
" <td>1833-020719-1-1</td>\n",
|
||
|
" <td>3</td>\n",
|
||
|
" <td>0.012323</td>\n",
|
||
|
" <td>NaN</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>375</th>\n",
|
||
|
" <td>1833-020719-3-0</td>\n",
|
||
|
" <td>7</td>\n",
|
||
|
" <td>-0.002042</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",
|
||
|
"583 1833-020719-1-0 7 -0.002942 NaN\n",
|
||
|
"579 1833-020719-1-1 3 0.012323 NaN\n",
|
||
|
"375 1833-020719-3-0 7 -0.002042 NaN"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 17,
|
||
|
"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": 18,
|
||
|
"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": 19,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"# prepare pairwise comparison: same animal same side same date different sessions"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 20,
|
||
|
"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": 21,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"lfp_results_hemisphere['entity_date_side'] = lfp_results_hemisphere.apply(make_entity_date_side, axis=1)"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 22,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stderr",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"/home/mikkel/.virtualenvs/expipe/lib/python3.6/site-packages/numpy/lib/histograms.py:898: RuntimeWarning: invalid value encountered in true_divide\n",
|
||
|
" return n/db/n.sum(), bin_edges\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"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": "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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"
|
||
|
}
|
||
|
],
|
||
|
"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": 23,
|
||
|
"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": 24,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"from functools import reduce"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 25,
|
||
|
"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": 26,
|
||
|
"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].dropna()\n",
|
||
|
" if len(dff[keys].dropna()) == 0:\n",
|
||
|
" statistic, pvalue = np.nan, np.nan\n",
|
||
|
" else:\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",
|
||
|
" if len(df[key].dropna()) < 8:\n",
|
||
|
" statistic, pvalue = np.nan, np.nan\n",
|
||
|
" else:\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",
|
||
|
" if len(df[key].dropna()) < 8:\n",
|
||
|
" statistic, pvalue = np.nan, np.nan\n",
|
||
|
" else:\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": 27,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": [
|
||
|
"{'theta_energy': Baseline I 11 Hz Baseline II 30 Hz\n",
|
||
|
" 0 0.003500 NaN NaN NaN\n",
|
||
|
" 1 0.001237 NaN NaN NaN\n",
|
||
|
" 2 0.003269 NaN 0.004628 NaN\n",
|
||
|
" 3 0.001465 NaN 0.002155 NaN\n",
|
||
|
" 4 0.002685 NaN NaN NaN\n",
|
||
|
" 5 0.000772 NaN NaN NaN\n",
|
||
|
" 6 0.002735 NaN 0.002988 NaN\n",
|
||
|
" 7 0.000872 NaN 0.001177 NaN\n",
|
||
|
" 8 0.004156 NaN 0.003132 NaN\n",
|
||
|
" 9 0.001317 NaN 0.001268 NaN\n",
|
||
|
" 10 0.000423 NaN 0.003200 NaN\n",
|
||
|
" 11 0.000957 NaN 0.001153 NaN\n",
|
||
|
" 12 0.002135 NaN 0.001651 NaN\n",
|
||
|
" 13 0.001649 NaN 0.000871 NaN\n",
|
||
|
" 14 0.009256 NaN 0.006838 NaN\n",
|
||
|
" 15 0.003803 NaN 0.003271 NaN\n",
|
||
|
" 16 0.004999 NaN 0.003724 NaN\n",
|
||
|
" 17 0.001193 NaN 0.002239 NaN\n",
|
||
|
" 18 0.004548 0.001780 NaN NaN\n",
|
||
|
" 19 0.004548 0.001093 NaN NaN\n",
|
||
|
" 20 0.002307 0.001479 NaN NaN\n",
|
||
|
" 21 0.002307 0.001122 NaN NaN\n",
|
||
|
" 22 0.002577 NaN 0.002665 NaN\n",
|
||
|
" 23 0.001591 NaN 0.001562 NaN\n",
|
||
|
" 24 0.001850 NaN 0.002546 NaN\n",
|
||
|
" 25 0.001388 NaN 0.001375 NaN\n",
|
||
|
" 26 0.002535 NaN 0.003099 NaN\n",
|
||
|
" 27 0.001129 NaN 0.001638 NaN\n",
|
||
|
" 28 0.001581 NaN 0.001302 NaN\n",
|
||
|
" 29 0.001346 NaN 0.000808 NaN\n",
|
||
|
" 30 0.002590 NaN 0.001583 NaN\n",
|
||
|
" 31 0.001029 NaN 0.000921 NaN\n",
|
||
|
" 32 0.001280 NaN NaN NaN\n",
|
||
|
" 33 0.000644 NaN NaN NaN\n",
|
||
|
" 34 0.002180 NaN NaN NaN\n",
|
||
|
" 35 0.002834 NaN NaN NaN\n",
|
||
|
" 36 0.001891 0.001814 NaN NaN\n",
|
||
|
" 37 0.001891 0.001557 NaN NaN\n",
|
||
|
" 38 0.002443 0.003549 NaN NaN\n",
|
||
|
" 39 0.002443 0.002262 NaN NaN\n",
|
||
|
" 40 0.002762 NaN 0.001113 NaN\n",
|
||
|
" 41 0.002649 NaN 0.003236 NaN\n",
|
||
|
" 42 0.000662 NaN NaN NaN\n",
|
||
|
" 43 0.003067 NaN NaN NaN\n",
|
||
|
" 44 0.001097 NaN 0.000649 NaN\n",
|
||
|
" 45 0.002022 NaN 0.001838 NaN\n",
|
||
|
" 46 0.001199 NaN 0.001475 NaN\n",
|
||
|
" 47 0.004233 NaN 0.001936 NaN\n",
|
||
|
" 48 0.002117 NaN 0.004077 NaN\n",
|
||
|
" 49 0.002906 NaN 0.003994 NaN,\n",
|
||
|
" 'theta_peak': Baseline I 11 Hz Baseline II 30 Hz\n",
|
||
|
" 0 0.003070 NaN NaN NaN\n",
|
||
|
" 1 0.001036 NaN NaN NaN\n",
|
||
|
" 2 0.003435 NaN 0.003384 NaN\n",
|
||
|
" 3 0.001416 NaN 0.001389 NaN\n",
|
||
|
" 4 0.002043 NaN NaN NaN\n",
|
||
|
" 5 0.000472 NaN NaN NaN\n",
|
||
|
" 6 0.002429 NaN 0.003210 NaN\n",
|
||
|
" 7 0.000625 NaN 0.000961 NaN\n",
|
||
|
" 8 0.002038 NaN 0.002704 NaN\n",
|
||
|
" 9 0.000872 NaN 0.001010 NaN\n",
|
||
|
" 10 0.000342 NaN 0.002434 NaN\n",
|
||
|
" 11 0.000640 NaN 0.000825 NaN\n",
|
||
|
" 12 0.001660 NaN 0.001235 NaN\n",
|
||
|
" 13 0.001190 NaN 0.000620 NaN\n",
|
||
|
" 14 0.007286 NaN 0.006490 NaN\n",
|
||
|
" 15 0.002671 NaN 0.002261 NaN\n",
|
||
|
" 16 0.004189 NaN 0.003590 NaN\n",
|
||
|
" 17 0.000846 NaN 0.001383 NaN\n",
|
||
|
" 18 0.003873 0.001374 NaN NaN\n",
|
||
|
" 19 0.003873 0.000699 NaN NaN\n",
|
||
|
" 20 0.001684 0.001046 NaN NaN\n",
|
||
|
" 21 0.001684 0.000645 NaN NaN\n",
|
||
|
" 22 0.002021 NaN 0.001967 NaN\n",
|
||
|
" 23 0.001159 NaN 0.001171 NaN\n",
|
||
|
" 24 0.001540 NaN 0.002067 NaN\n",
|
||
|
" 25 0.001135 NaN 0.001147 NaN\n",
|
||
|
" 26 0.002134 NaN 0.002335 NaN\n",
|
||
|
" 27 0.000959 NaN 0.001139 NaN\n",
|
||
|
" 28 0.001189 NaN 0.000792 NaN\n",
|
||
|
" 29 0.000657 NaN 0.000317 NaN\n",
|
||
|
" 30 0.001134 NaN 0.001158 NaN\n",
|
||
|
" 31 0.000427 NaN 0.000362 NaN\n",
|
||
|
" 32 0.000670 NaN NaN NaN\n",
|
||
|
" 33 0.000301 NaN NaN NaN\n",
|
||
|
" 34 0.001377 NaN NaN NaN\n",
|
||
|
" 35 0.001044 NaN NaN NaN\n",
|
||
|
" 36 0.001698 0.001544 NaN NaN\n",
|
||
|
" 37 0.001698 0.000898 NaN NaN\n",
|
||
|
" 38 0.002605 0.002939 NaN NaN\n",
|
||
|
" 39 0.002605 0.001677 NaN NaN\n",
|
||
|
" 40 0.002632 NaN 0.000722 NaN\n",
|
||
|
" 41 0.002425 NaN 0.003022 NaN\n",
|
||
|
" 42 0.000412 NaN NaN NaN\n",
|
||
|
" 43 0.003115 NaN NaN NaN\n",
|
||
|
" 44 0.000959 NaN 0.000390 NaN\n",
|
||
|
" 45 0.002131 NaN 0.001653 NaN\n",
|
||
|
" 46 0.000515 NaN 0.000891 NaN\n",
|
||
|
" 47 0.002570 NaN 0.001760 NaN\n",
|
||
|
" 48 0.001693 NaN 0.002711 NaN\n",
|
||
|
" 49 0.003029 NaN 0.002933 NaN,\n",
|
||
|
" 'theta_freq': Baseline I 11 Hz Baseline II 30 Hz\n",
|
||
|
" 0 7.4 NaN NaN NaN\n",
|
||
|
" 1 7.4 NaN NaN NaN\n",
|
||
|
" 2 7.8 NaN 7.8 NaN\n",
|
||
|
" 3 7.8 NaN 7.8 NaN\n",
|
||
|
" 4 7.4 NaN NaN NaN\n",
|
||
|
" 5 7.4 NaN NaN NaN\n",
|
||
|
" 6 7.5 NaN 7.8 NaN\n",
|
||
|
" 7 7.5 NaN 7.8 NaN\n",
|
||
|
" 8 7.6 NaN 7.9 NaN\n",
|
||
|
" 9 7.6 NaN 7.9 NaN\n",
|
||
|
" 10 7.4 NaN 7.7 NaN\n",
|
||
|
" 11 7.4 NaN 7.7 NaN\n",
|
||
|
" 12 7.6 NaN 7.6 NaN\n",
|
||
|
" 13 7.5 NaN 7.6 NaN\n",
|
||
|
" 14 8.3 NaN 8.5 NaN\n",
|
||
|
" 15 8.2 NaN 8.5 NaN\n",
|
||
|
" 16 7.9 NaN 8.1 NaN\n",
|
||
|
" 17 7.7 NaN 8.2 NaN\n",
|
||
|
" 18 8.0 8.2 NaN NaN\n",
|
||
|
" 19 8.0 8.2 NaN NaN\n",
|
||
|
" 20 8.0 8.2 NaN NaN\n",
|
||
|
" 21 8.0 8.2 NaN NaN\n",
|
||
|
" 22 8.1 NaN 8.2 NaN\n",
|
||
|
" 23 8.1 NaN 8.2 NaN\n",
|
||
|
" 24 8.0 NaN 8.2 NaN\n",
|
||
|
" 25 8.1 NaN 8.2 NaN\n",
|
||
|
" 26 8.1 NaN 8.2 NaN\n",
|
||
|
" 27 8.1 NaN 8.2 NaN\n",
|
||
|
" 28 8.0 NaN 8.2 NaN\n",
|
||
|
" 29 6.3 NaN 8.3 NaN\n",
|
||
|
" 30 8.2 NaN 8.6 NaN\n",
|
||
|
" 31 6.2 NaN 8.3 NaN\n",
|
||
|
" 32 8.3 NaN NaN NaN\n",
|
||
|
" 33 8.4 NaN NaN NaN\n",
|
||
|
" 34 8.2 NaN NaN NaN\n",
|
||
|
" 35 7.6 NaN NaN NaN\n",
|
||
|
" 36 7.9 7.9 NaN NaN\n",
|
||
|
" 37 7.9 7.9 NaN NaN\n",
|
||
|
" 38 7.9 8.0 NaN NaN\n",
|
||
|
" 39 7.9 7.9 NaN NaN\n",
|
||
|
" 40 7.6 NaN 8.1 NaN\n",
|
||
|
" 41 7.6 NaN 8.1 NaN\n",
|
||
|
" 42 7.4 NaN NaN NaN\n",
|
||
|
" 43 7.6 NaN NaN NaN\n",
|
||
|
" 44 7.7 NaN 7.8 NaN\n",
|
||
|
" 45 7.7 NaN 7.8 NaN\n",
|
||
|
" 46 7.8 NaN 8.0 NaN\n",
|
||
|
" 47 8.0 NaN 8.0 NaN\n",
|
||
|
" 48 7.7 NaN 8.3 NaN\n",
|
||
|
" 49 7.7 NaN 8.0 NaN,\n",
|
||
|
" 'theta_half_width': Baseline I 11 Hz Baseline II 30 Hz\n",
|
||
|
" 0 0.823669 NaN NaN NaN\n",
|
||
|
" 1 0.845791 NaN NaN NaN\n",
|
||
|
" 2 0.577806 NaN 0.959215 NaN\n",
|
||
|
" 3 0.653362 NaN 1.056302 NaN\n",
|
||
|
" 4 1.059779 NaN NaN NaN\n",
|
||
|
" 5 1.147158 NaN NaN NaN\n",
|
||
|
" 6 0.787100 NaN 0.637116 NaN\n",
|
||
|
" 7 0.964045 NaN 0.633677 NaN\n",
|
||
|
" 8 1.285535 NaN 0.760866 NaN\n",
|
||
|
" 9 0.913884 NaN 0.766207 NaN\n",
|
||
|
" 10 0.776057 NaN 0.996439 NaN\n",
|
||
|
" 11 0.928426 NaN 0.941342 NaN\n",
|
||
|
" 12 0.966327 NaN 1.072370 NaN\n",
|
||
|
" 13 0.984655 NaN 1.106900 NaN\n",
|
||
|
" 14 0.960731 NaN 0.738833 NaN\n",
|
||
|
" 15 1.044175 NaN 0.879523 NaN\n",
|
||
|
" 16 0.911633 NaN 0.641326 NaN\n",
|
||
|
" 17 0.953731 NaN 0.744352 NaN\n",
|
||
|
" 18 0.749468 0.930533 NaN NaN\n",
|
||
|
" 19 0.749468 0.935671 NaN NaN\n",
|
||
|
" 20 0.930580 0.969152 NaN NaN\n",
|
||
|
" 21 0.930580 1.049631 NaN NaN\n",
|
||
|
" 22 1.009373 NaN 1.085564 NaN\n",
|
||
|
" 23 1.065057 NaN 0.944394 NaN\n",
|
||
|
" 24 0.831508 NaN 0.910906 NaN\n",
|
||
|
" 25 0.825350 NaN 0.831260 NaN\n",
|
||
|
" 26 0.844569 NaN 0.885471 NaN\n",
|
||
|
" 27 0.720270 NaN 0.915350 NaN\n",
|
||
|
" 28 0.873920 NaN 1.122807 NaN\n",
|
||
|
" 29 NaN NaN 1.657428 NaN\n",
|
||
|
" 30 1.224911 NaN 1.120201 NaN\n",
|
||
|
" 31 6.316287 NaN NaN NaN\n",
|
||
|
" 32 1.015663 NaN NaN NaN\n",
|
||
|
" 33 1.318961 NaN NaN NaN\n",
|
||
|
" 34 1.124338 NaN NaN NaN\n",
|
||
|
" 35 8.080786 NaN NaN NaN\n",
|
||
|
" 36 0.755843 0.620998 NaN NaN\n",
|
||
|
" 37 0.755843 1.215511 NaN NaN\n",
|
||
|
" 38 0.650319 0.620433 NaN NaN\n",
|
||
|
" 39 0.650319 0.745154 NaN NaN\n",
|
||
|
" 40 0.677682 NaN 1.000266 NaN\n",
|
||
|
" 41 0.679729 NaN 0.541226 NaN\n",
|
||
|
" 42 0.945508 NaN NaN NaN\n",
|
||
|
" 43 0.604237 NaN NaN NaN\n",
|
||
|
" 44 0.583246 NaN 0.870935 NaN\n",
|
||
|
" 45 0.560840 NaN 0.754164 NaN\n",
|
||
|
" 46 0.843262 NaN 1.160272 NaN\n",
|
||
|
" 47 0.969953 NaN 0.680846 NaN\n",
|
||
|
" 48 0.823915 NaN 0.979878 NaN\n",
|
||
|
" 49 0.688965 NaN 0.850279 NaN,\n",
|
||
|
" 'stim_energy': 11 Hz 30 Hz\n",
|
||
|
" 0 0.002671 NaN\n",
|
||
|
" 1 0.000532 NaN\n",
|
||
|
" 2 0.000168 NaN\n",
|
||
|
" 3 0.000033 NaN\n",
|
||
|
" 4 0.000513 NaN\n",
|
||
|
" 5 0.002245 NaN\n",
|
||
|
" 6 0.000340 NaN\n",
|
||
|
" 7 0.000240 NaN,\n",
|
||
|
" 'stim_half_width': 11 Hz 30 Hz\n",
|
||
|
" 0 10.318750 NaN\n",
|
||
|
" 1 0.149163 NaN\n",
|
||
|
" 2 0.156917 NaN\n",
|
||
|
" 3 0.271082 NaN\n",
|
||
|
" 4 0.150665 NaN\n",
|
||
|
" 5 6.113351 NaN\n",
|
||
|
" 6 0.655030 NaN\n",
|
||
|
" 7 0.156293 NaN,\n",
|
||
|
" 'stim_p_max': 11 Hz 30 Hz\n",
|
||
|
" 0 0.000105 NaN\n",
|
||
|
" 1 0.004951 NaN\n",
|
||
|
" 2 0.001566 NaN\n",
|
||
|
" 3 0.000206 NaN\n",
|
||
|
" 4 0.004785 NaN\n",
|
||
|
" 5 0.000374 NaN\n",
|
||
|
" 6 0.000814 NaN\n",
|
||
|
" 7 0.002239 NaN,\n",
|
||
|
" 'stim_strength': 11 Hz 30 Hz\n",
|
||
|
" 0 0.059252 NaN\n",
|
||
|
" 1 4.530157 NaN\n",
|
||
|
" 2 1.059344 NaN\n",
|
||
|
" 3 0.183414 NaN\n",
|
||
|
" 4 2.637518 NaN\n",
|
||
|
" 5 0.239875 NaN\n",
|
||
|
" 6 0.229359 NaN\n",
|
||
|
" 7 0.989594 NaN}"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 27,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"results"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 28,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stderr",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"/home/mikkel/.virtualenvs/expipe/lib/python3.6/site-packages/scipy/stats/morestats.py:2863: UserWarning: Sample size too small for normal approximation.\n",
|
||
|
" warnings.warn(\"Sample size too small for normal approximation.\")\n",
|
||
|
"/home/mikkel/.virtualenvs/expipe/lib/python3.6/site-packages/scipy/stats/stats.py:1450: UserWarning: kurtosistest only valid for n>=20 ... continuing anyway, n=8\n",
|
||
|
" \"anyway, n=%i\" % int(n))\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"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>1.8e-03 ± 2.8e-04 (8)</td>\n",
|
||
|
" <td>1.4e-03 ± 2.6e-04 (8)</td>\n",
|
||
|
" <td>8.1e+00 ± 5.3e-02 (8)</td>\n",
|
||
|
" <td>8.9e-01 ± 7.4e-02 (8)</td>\n",
|
||
|
" <td>8.4e-04 ± 3.6e-04 (8)</td>\n",
|
||
|
" <td>2.2e+00 ± 1.4e+00 (8)</td>\n",
|
||
|
" <td>1.9e-03 ± 7.0e-04 (8)</td>\n",
|
||
|
" <td>1.2e+00 ± 5.6e-01 (8)</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>30 Hz</th>\n",
|
||
|
" <td>nan ± nan (0)</td>\n",
|
||
|
" <td>nan ± nan (0)</td>\n",
|
||
|
" <td>nan ± nan (0)</td>\n",
|
||
|
" <td>nan ± nan (0)</td>\n",
|
||
|
" <td>nan ± nan (0)</td>\n",
|
||
|
" <td>nan ± nan (0)</td>\n",
|
||
|
" <td>nan ± nan (0)</td>\n",
|
||
|
" <td>nan ± nan (0)</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>Baseline I</th>\n",
|
||
|
" <td>2.3e-03 ± 2.1e-04 (50)</td>\n",
|
||
|
" <td>1.8e-03 ± 1.8e-04 (50)</td>\n",
|
||
|
" <td>7.8e+00 ± 5.9e-02 (50)</td>\n",
|
||
|
" <td>1.1e+00 ± 1.8e-01 (49)</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>8.13, 0.017</td>\n",
|
||
|
" <td>6.61, 0.037</td>\n",
|
||
|
" <td>6.30, 0.043</td>\n",
|
||
|
" <td>0.23, 0.890</td>\n",
|
||
|
" <td>3.45, 0.178</td>\n",
|
||
|
" <td>7.42, 0.024</td>\n",
|
||
|
" <td>1.81, 0.405</td>\n",
|
||
|
" <td>6.43, 0.040</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>Normality 30 Hz</th>\n",
|
||
|
" <td>nan, nan</td>\n",
|
||
|
" <td>nan, nan</td>\n",
|
||
|
" <td>nan, nan</td>\n",
|
||
|
" <td>nan, nan</td>\n",
|
||
|
" <td>nan, nan</td>\n",
|
||
|
" <td>nan, nan</td>\n",
|
||
|
" <td>nan, nan</td>\n",
|
||
|
" <td>nan, nan</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>Normality Baseline I</th>\n",
|
||
|
" <td>41.72, 0.000</td>\n",
|
||
|
" <td>31.09, 0.000</td>\n",
|
||
|
" <td>29.47, 0.000</td>\n",
|
||
|
" <td>81.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>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>nan, nan, (0)</td>\n",
|
||
|
" <td>nan, nan, (0)</td>\n",
|
||
|
" <td>nan, nan, (0)</td>\n",
|
||
|
" <td>nan, nan, (0)</td>\n",
|
||
|
" <td>nan, nan, (0)</td>\n",
|
||
|
" <td>nan, nan, (0)</td>\n",
|
||
|
" <td>nan, nan, (0)</td>\n",
|
||
|
" <td>nan, nan, (0)</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>Wilcoxon 11 Hz Baseline II</th>\n",
|
||
|
" <td>nan, nan, (0)</td>\n",
|
||
|
" <td>nan, nan, (0)</td>\n",
|
||
|
" <td>nan, nan, (0)</td>\n",
|
||
|
" <td>nan, nan, (0)</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>5.00, 0.069, (8)</td>\n",
|
||
|
" <td>2.00, 0.025, (8)</td>\n",
|
||
|
" <td>0.00, 0.034, (8)</td>\n",
|
||
|
" <td>6.00, 0.093, (8)</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>nan, nan, (0)</td>\n",
|
||
|
" <td>nan, nan, (0)</td>\n",
|
||
|
" <td>nan, nan, (0)</td>\n",
|
||
|
" <td>nan, nan, (0)</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>nan, nan, (0)</td>\n",
|
||
|
" <td>nan, nan, (0)</td>\n",
|
||
|
" <td>nan, nan, (0)</td>\n",
|
||
|
" <td>nan, nan, (0)</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 1.8e-03 ± 2.8e-04 (8) \n",
|
||
|
"30 Hz nan ± nan (0) \n",
|
||
|
"Baseline I 2.3e-03 ± 2.1e-04 (50) \n",
|
||
|
"Baseline II 2.3e-03 ± 2.4e-04 (32) \n",
|
||
|
"Normality 11 Hz 8.13, 0.017 \n",
|
||
|
"Normality 30 Hz nan, nan \n",
|
||
|
"Normality Baseline I 41.72, 0.000 \n",
|
||
|
"Normality Baseline II 13.17, 0.001 \n",
|
||
|
"Wilcoxon 11 Hz 30 Hz nan, nan, (0) \n",
|
||
|
"Wilcoxon 11 Hz Baseline II nan, nan, (0) \n",
|
||
|
"Wilcoxon Baseline I 11 Hz 5.00, 0.069, (8) \n",
|
||
|
"Wilcoxon Baseline I 30 Hz nan, nan, (0) \n",
|
||
|
"Wilcoxon Baseline I Baseline II 264.00, 1.000, (32) \n",
|
||
|
"Wilcoxon Baseline II 30 Hz nan, nan, (0) \n",
|
||
|
"\n",
|
||
|
" Theta peak \\\n",
|
||
|
"11 Hz 1.4e-03 ± 2.6e-04 (8) \n",
|
||
|
"30 Hz nan ± nan (0) \n",
|
||
|
"Baseline I 1.8e-03 ± 1.8e-04 (50) \n",
|
||
|
"Baseline II 1.8e-03 ± 2.3e-04 (32) \n",
|
||
|
"Normality 11 Hz 6.61, 0.037 \n",
|
||
|
"Normality 30 Hz nan, nan \n",
|
||
|
"Normality Baseline I 31.09, 0.000 \n",
|
||
|
"Normality Baseline II 20.78, 0.000 \n",
|
||
|
"Wilcoxon 11 Hz 30 Hz nan, nan, (0) \n",
|
||
|
"Wilcoxon 11 Hz Baseline II nan, nan, (0) \n",
|
||
|
"Wilcoxon Baseline I 11 Hz 2.00, 0.025, (8) \n",
|
||
|
"Wilcoxon Baseline I 30 Hz nan, nan, (0) \n",
|
||
|
"Wilcoxon Baseline I Baseline II 256.00, 0.881, (32) \n",
|
||
|
"Wilcoxon Baseline II 30 Hz nan, nan, (0) \n",
|
||
|
"\n",
|
||
|
" Theta freq \\\n",
|
||
|
"11 Hz 8.1e+00 ± 5.3e-02 (8) \n",
|
||
|
"30 Hz nan ± nan (0) \n",
|
||
|
"Baseline I 7.8e+00 ± 5.9e-02 (50) \n",
|
||
|
"Baseline II 8.1e+00 ± 4.7e-02 (32) \n",
|
||
|
"Normality 11 Hz 6.30, 0.043 \n",
|
||
|
"Normality 30 Hz nan, nan \n",
|
||
|
"Normality Baseline I 29.47, 0.000 \n",
|
||
|
"Normality Baseline II 0.96, 0.618 \n",
|
||
|
"Wilcoxon 11 Hz 30 Hz nan, nan, (0) \n",
|
||
|
"Wilcoxon 11 Hz Baseline II nan, nan, (0) \n",
|
||
|
"Wilcoxon Baseline I 11 Hz 0.00, 0.034, (8) \n",
|
||
|
"Wilcoxon Baseline I 30 Hz nan, nan, (0) \n",
|
||
|
"Wilcoxon Baseline I Baseline II 0.00, 0.000, (32) \n",
|
||
|
"Wilcoxon Baseline II 30 Hz nan, nan, (0) \n",
|
||
|
"\n",
|
||
|
" Theta half width \\\n",
|
||
|
"11 Hz 8.9e-01 ± 7.4e-02 (8) \n",
|
||
|
"30 Hz nan ± nan (0) \n",
|
||
|
"Baseline I 1.1e+00 ± 1.8e-01 (49) \n",
|
||
|
"Baseline II 9.1e-01 ± 3.9e-02 (31) \n",
|
||
|
"Normality 11 Hz 0.23, 0.890 \n",
|
||
|
"Normality 30 Hz nan, nan \n",
|
||
|
"Normality Baseline I 81.74, 0.000 \n",
|
||
|
"Normality Baseline II 13.33, 0.001 \n",
|
||
|
"Wilcoxon 11 Hz 30 Hz nan, nan, (0) \n",
|
||
|
"Wilcoxon 11 Hz Baseline II nan, nan, (0) \n",
|
||
|
"Wilcoxon Baseline I 11 Hz 6.00, 0.093, (8) \n",
|
||
|
"Wilcoxon Baseline I 30 Hz nan, nan, (0) \n",
|
||
|
"Wilcoxon Baseline I Baseline II 203.00, 0.544, (30) \n",
|
||
|
"Wilcoxon Baseline II 30 Hz nan, nan, (0) \n",
|
||
|
"\n",
|
||
|
" Stim energy Stim half width \\\n",
|
||
|
"11 Hz 8.4e-04 ± 3.6e-04 (8) 2.2e+00 ± 1.4e+00 (8) \n",
|
||
|
"30 Hz nan ± nan (0) nan ± nan (0) \n",
|
||
|
"Baseline I NaN NaN \n",
|
||
|
"Baseline II NaN NaN \n",
|
||
|
"Normality 11 Hz 3.45, 0.178 7.42, 0.024 \n",
|
||
|
"Normality 30 Hz nan, nan nan, nan \n",
|
||
|
"Normality Baseline I NaN NaN \n",
|
||
|
"Normality Baseline II NaN NaN \n",
|
||
|
"Wilcoxon 11 Hz 30 Hz nan, nan, (0) nan, nan, (0) \n",
|
||
|
"Wilcoxon 11 Hz Baseline II NaN NaN \n",
|
||
|
"Wilcoxon Baseline I 11 Hz NaN NaN \n",
|
||
|
"Wilcoxon Baseline I 30 Hz NaN NaN \n",
|
||
|
"Wilcoxon Baseline I Baseline II NaN NaN \n",
|
||
|
"Wilcoxon Baseline II 30 Hz NaN NaN \n",
|
||
|
"\n",
|
||
|
" Stim p max Stim strength \n",
|
||
|
"11 Hz 1.9e-03 ± 7.0e-04 (8) 1.2e+00 ± 5.6e-01 (8) \n",
|
||
|
"30 Hz nan ± nan (0) nan ± nan (0) \n",
|
||
|
"Baseline I NaN NaN \n",
|
||
|
"Baseline II NaN NaN \n",
|
||
|
"Normality 11 Hz 1.81, 0.405 6.43, 0.040 \n",
|
||
|
"Normality 30 Hz nan, nan nan, nan \n",
|
||
|
"Normality Baseline I NaN NaN \n",
|
||
|
"Normality Baseline II NaN NaN \n",
|
||
|
"Wilcoxon 11 Hz 30 Hz nan, nan, (0) nan, nan, (0) \n",
|
||
|
"Wilcoxon 11 Hz Baseline II NaN NaN \n",
|
||
|
"Wilcoxon Baseline I 11 Hz NaN NaN \n",
|
||
|
"Wilcoxon Baseline I 30 Hz NaN NaN \n",
|
||
|
"Wilcoxon Baseline I Baseline II NaN NaN \n",
|
||
|
"Wilcoxon Baseline II 30 Hz NaN NaN "
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 28,
|
||
|
"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": 29,
|
||
|
"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": 30,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"psd = pd.read_feather(pathlib.Path(\"output\") / (\"stimulus-lfp-response\" + zscore_str) / 'data' / 'psd.feather')\n",
|
||
|
"freqs = pd.read_feather(pathlib.Path(\"output\") / (\"stimulus-lfp-response\" + zscore_str) / 'data' / 'freqs.feather')"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 31,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"from septum_mec.analysis.plotting import plot_bootstrap_timeseries"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 32,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"freq = freqs.T.iloc[0].values\n",
|
||
|
"\n",
|
||
|
"mask = (freq < 49)"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 33,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stderr",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"/home/mikkel/.virtualenvs/expipe/lib/python3.6/site-packages/numpy/core/fromnumeric.py:3257: RuntimeWarning: Mean of empty slice.\n",
|
||
|
" out=out, **kwargs)\n",
|
||
|
"/home/mikkel/.virtualenvs/expipe/lib/python3.6/site-packages/numpy/core/_methods.py:161: RuntimeWarning: invalid value encountered in double_scalars\n",
|
||
|
" ret = ret.dtype.type(ret / rcount)\n",
|
||
|
"/home/mikkel/.virtualenvs/expipe/lib/python3.6/site-packages/numpy/core/_methods.py:154: RuntimeWarning: invalid value encountered in true_divide\n",
|
||
|
" ret, rcount, out=ret, casting='unsafe', subok=False)\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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
|
||
|
"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": 34,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"action = project.require_action(\"stimulus-lfp-response-mec\" + zscore_str)"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 35,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": [
|
||
|
"['/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec-no-zscore/data/statistics/statistics.tex',\n",
|
||
|
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec-no-zscore/data/statistics/statistics.csv',\n",
|
||
|
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec-no-zscore/data/figures/lfp-psd-histogram-stim_energy.png',\n",
|
||
|
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec-no-zscore/data/figures/lfp-psd-histogram-stim_strength.png',\n",
|
||
|
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec-no-zscore/data/figures/lfp-psd.png',\n",
|
||
|
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec-no-zscore/data/figures/lfp-psd-histogram-theta_peak.svg',\n",
|
||
|
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec-no-zscore/data/figures/lfp-psd-histogram-stim_p_max.png',\n",
|
||
|
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec-no-zscore/data/figures/lfp-psd-histogram-theta_freq.png',\n",
|
||
|
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec-no-zscore/data/figures/lfp-psd-histogram-theta_energy.svg',\n",
|
||
|
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec-no-zscore/data/figures/lfp-psd-histogram-theta_freq.svg',\n",
|
||
|
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec-no-zscore/data/figures/lfp-psd-histogram-stim_half_width.png',\n",
|
||
|
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec-no-zscore/data/figures/lfp-psd-histogram-stim_half_width.svg',\n",
|
||
|
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec-no-zscore/data/figures/lfp-psd-histogram-theta_half_width.svg',\n",
|
||
|
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec-no-zscore/data/figures/lfp-psd-histogram-theta_energy.png',\n",
|
||
|
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec-no-zscore/data/figures/lfp-psd-histogram-theta_peak.png',\n",
|
||
|
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec-no-zscore/data/figures/lfp-psd-histogram-stim_p_max.svg',\n",
|
||
|
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec-no-zscore/data/figures/lfp-psd-histogram-theta_half_width.png',\n",
|
||
|
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec-no-zscore/data/figures/lfp-psd.svg',\n",
|
||
|
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec-no-zscore/data/figures/.ipynb_checkpoints/lfp-psd-histogram-theta_energy-checkpoint.png',\n",
|
||
|
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec-no-zscore/data/figures/lfp-psd-histogram-stim_energy.svg',\n",
|
||
|
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec-no-zscore/data/figures/lfp-psd-histogram-stim_strength.svg']"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 35,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"copy_tree(output_path, str(action.data_path()))"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 48,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"septum_mec.analysis.registration.store_notebook(action, \"20_stimulus-lfp-response-mec.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
|
||
|
}
|