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

1032 lines
242 KiB
Plaintext
Raw Normal View History

2019-12-13 10:43:57 +00:00
{
"cells": [
{
"cell_type": "code",
2019-12-16 11:50:03 +00:00
"execution_count": 1,
2019-12-13 10:43:57 +00:00
"metadata": {},
2019-12-16 11:50:03 +00:00
"outputs": [],
2019-12-13 10:43:57 +00:00
"source": [
"%load_ext autoreload\n",
"%autoreload 2"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
2019-12-16 11:50:03 +00:00
"12:47:23 [I] klustakwik KlustaKwik2 version 0.2.6\n"
2019-12-13 10:43:57 +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",
"from tqdm.notebook import tqdm_notebook as tqdm\n",
"tqdm.pandas()\n",
"\n",
"from spike_statistics.core import permutation_resampling\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": 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-mec\"\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",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"lfp_results = pd.merge(sessions, lfp_results, how='left')"
]
},
{
"cell_type": "code",
"execution_count": 8,
"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": 9,
"metadata": {},
"outputs": [],
"source": [
"lfp_results['stim_strength'] = lfp_results['stim_p_max'] / lfp_results['theta_energy']"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"lfp_results = lfp_results.query('stim_location!=\"ms\"')"
]
},
{
"cell_type": "code",
"execution_count": 11,
"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>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",
" <tr>\n",
" <th>578</th>\n",
" <td>1833-020719-1-1</td>\n",
" <td>2</td>\n",
" <td>0.019033</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>372</th>\n",
" <td>1833-020719-3-0</td>\n",
" <td>4</td>\n",
" <td>0.001076</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",
"580 1833-020719-1-0 4 0.008427 NaN\n",
"578 1833-020719-1-1 2 0.019033 NaN\n",
"372 1833-020719-3-0 4 0.001076 NaN"
]
},
"execution_count": 11,
"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",
"execution_count": 12,
"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 11:50:03 +00:00
"execution_count": 13,
2019-12-13 10:43:57 +00:00
"metadata": {
"scrolled": false
},
"outputs": [
2019-12-16 11:50:03 +00:00
{
"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"
]
},
2019-12-13 10:43:57 +00:00
{
"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",
"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-12-13 10:43:57 +00:00
"for key in bins:\n",
2019-12-13 10:47:07 +00:00
" results[key] = pd.DataFrame()\n",
2019-12-13 10:43:57 +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-12-13 10:43:57 +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",
" 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",
2019-12-16 11:50:03 +00:00
"execution_count": 14,
2019-12-13 10:43:57 +00:00
"metadata": {
"scrolled": false
},
"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": "iVBORw0KGgoAAAANSUhEUgAAAcEAAAFICAYAAAAoBEX4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAXEQAAFxEByibzPwAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nO3df9yc053/8VdyJyQkiBDRJBJJ5ENaRas0i5Utq7pVquiW+BGWolXb7qKUb8W2qB+7X4o2VkvQpkibon61flQ0CKWJHyGfxI+gqSARKiRIcu8f54yMMT/umbnmnrnv834+HvfjmpnrXGfOTCbznuu6zjlXj/b2dkRERFLUs9kNEBERaRaFoIiIJEshKCIiyVIIiohIshSCIiKSLIWgiIgkSyEoIiLJUgiKiEiyFIIiIpIshaCIiCRLISgiIslSCIqISLIUgiIikiyFoIiIJEshKJ3OzD5Z4vEpZtYe/wZ3drtaRan3J1Vmto6ZbV3k8RF5n5fJzWibdH0KQek0ZrahmV0M/KXZbWlFZjbazG4HftzstrQKM9sTeBz4WrPbIt1Tr2Y3QJLyP8BRzW5EC/s9MBKY0eyGtAIzGwbc2ex2SPemEJTO1FZupbtPBCZ2SktaU9n3J0F6P6ThdDhURESSpRAUEZFk9Whvb292G6QLMjMDvgHsAWxJ+EG1BHgUmA5MdfdVsewk4MwSVc1w9/Gx3BTgiPj45u6+OO/5FgLDgf9295PM7IvACcCngX7Ai8BvgPPd/c24zfbAfwL/BGwa23cP8AN3n1/nW1CSme1BOPf5D8DHgPeAxcBM4Gp3v7eg/L3A7iWqO8vdJ8VyCwnvwcXAucAlwN5AD2AhcK67T82rtwfwVeAQYEdgE+At4GngJmCyuy8v8RpyXwzfcfeLzOwrwNHAp4ABwCvAH4GL3H12hffjS8CxwE7AhnHbO4Hz3H2+ma0E1i14reW+mP7J3e81sxHA8/Gxy4HjgcMIh9S3A9YDFgF3xHY+U66dkibtCUrVzOwQQo+9E4GPE75s+gBDgf2Aq4E/m9lmDXr+ycAthADYFOgLGPA94E9mtr6ZHQ08DBwKDAHWIQTSocAjZrZdg9p2KXAXIXhGxOftB4wmfDn/0cyuNbN6zsdvANwHHAT0j/V/gvCFn2vHIOBPwHXAvoTXvg4wENgVuABwMxtX4bnazOyXhB8YXwA2i/UMAw4nvJfHFNvQzHqa2f8CNwNfJPxb5bY9CnjMzA6o9sWX0J8QrFcTfvRsTPhMjgK+Ccw2s89n9FzSjSgEpSpmNhq4kvBl9jzh1/euwDhCwDwYi24P/CTengzsAPwur6od4t/RVTbhCMJehQPHALsQfv0vjOu3BX5N2DN4hRDU44B/IfS+hPCFeXGVz1uRmR1G+MKF0MPzYGBnwl7eiYS9VQjv0/F5mx5NeC9ejvcfZe37U2z82xHAGODnse59gUvcfUZsx/qEvbRdgHbgF8D+hD2xLxD2IFcSgvEPZvbxMi/rJEKgPw18HfhsrOP6uL4ncImZbVFk24sJ/0YAz+Ztvy8hVPsAvyJ8lgrtQAjOnMtZ+548UqT8IYSjEo8T3s9dCHvBf4zr+wHXmFn/Mq9VEqTeoVKtCYRDV6sJh6VeyFs3y8xuAO4lHArc38w2iYc1F5vZ67mC7j6nxuffhPBFt5u7/z0+9oCZzQaejPf3JoTizu7+am5DM/s9MAv4DPCPZraRu79RYzuKyQ3/eArYy93fy1t3n5n9NrZ9ACEQLgHIHaYzs1z55RXen56Ew835PyDyf2CcDYwFVgH7u/stBdvfYWbXEIK6HyFMP1viuQYDdwP7uPvKgjqWAccRPg8HA+flVprZDoTD5RD2yPd097fy22tm/wlcWOxJ3X2OmeX/2yzuwGdmOnBw/vtuZr8GbiUE9yDCZ2NahXokIdoTlGrlZnJZDvytcKW7v084//dj4Ds05jN2Rl4A5p53LmFvJees/ACMZdawNix6EA6VZSn33rxQEIC55/8r8H3gfMLeU486nuunxR40s41Yu/d1RZEAzLXlkdgOgJ3NbOcyz3ViQQDmXJ53u/Dw8rcI//btwBEFAZhrw38TAjYL7wJfL3zf3b2dD79Xn8jo+aSb0J6gVGteXG4ITDOz09w9P3xw97sI58UaYQ1rD3EVWgRsE2+X+nLND8Z+WTUqmgdsDextZmcDFxcJ4kszeJ5VFD8kCDCecI4WKg80vw2YFG/vATxUpMwid3+qxPbP5t3+4DCjmfVk7aHMB919HqVdHp+7Xg+7+9IS6xbk3d44g+eSbkQhKNW6BjiZ0NlkP2A/M3uO8IV7F3BXxocYCy0p1aORsDeQ83IHytSzJ1bMhcA+hP9X3wNONbO/EN6XO4GZxfYQa7CkxJ4ZhHNmOdNDJ94OGVni8YVltsn/d8j/LtmccOgRSod1TrHgrcVfy6zLf6/0nScfosOhUhV3XwbsSTi3ljOS0FllGrDEzO42swl1Hu4r5SOH1YrJDc/oTO5+P6EDSu4LuSdhaMKphD3TpWZ2nZntWudT/b3Muk1qrHNAicdL/eDIHWrMyf+3zu8VvKTC875aYX1HdehzQfY/fKSLUwhK1dx9nruPI3SmuACYm7e6DfgcoUfinWbWN+On7/Rwq0Y8BzeS0APySvKGLRAOv/4rYRjHOXU8TbkxdPl7Ol9mbY/KSn8n1dGeQvm9PSt9x2Q1UFkDnqUmOjQgNXP3hwiHs06Jlz76HOFw4JcJY/f2IHy5/qBpjWyC2Dnod/GPeBmgPQnvy+cIeyOnmdlt7j4z46d/Pe/2a3X0wq1H/t7fphXK1rrnKpIJhaBUJe7ZGfB+7JEJQBwGMRWYGrvHP0LYC9iHRELQzDYmdIx53t0/OCcZO4bMAy41sxNZO0bxS4RZZLL0ZN7tzwIPlGnvGMKA+4WEjiULSpWt0nOEQ7YbEGaYKefTGT2nSE10OFQ6zMzWAZYCsynRRR8gTqOVC4E+eavWNK51zRXP8y0F7ufDA+EL3ZZ3u0/Buizen7tZe8j4aDPrXabsGcAPCYeuK80c02FxKErudX7WzMoNRTmizLpu+3mR1qEQlA6LPRv/EO/uWmrKKzPbndB7FODPeavezSuT9fCEZnuYtZ08Togz6xQzIe/2nwvW5d6fmt+bvD1yCMNFio5HNLOD8tqymOwHkF9MOE/XA7jKzNYrLBBn2PlKmTrye/J2t8+LtAgdDpVqnUUYA9YLuC7OPHIroQPIQMI0XrmZQt4hdJzJyR+2cE7cdnWlCZi7And/z8x+QJgFZgDwsJldQjhn+jphirIDWXuF9HmsnXos52XC4dTt4tync4Bl7v4s1clNGj6M0Gt3ezP7CWGquUGETjsTWTuY/Th3X1Hlc5Tl7rPM7HLCjDK7AY+a2YWEw7UDCB2ECvcCCzu3LAHeB3oDB5vZncAbwAJ3fx2RDCS9J2hmN5vZzc1uR1cSA+sIwtirXoSpwn5DGDJxK3AK4Vf768BX3N3zNr+ZMN0ahBlF/gzc2Dkt7xSXEWbKgfBF/33Ce/Ig4T06mLBn9BSwd+xAk296XPYCriC8P9+vthHuvgT4R+Cx+NDOhImlZxH+DY6Oz7ECONLdb6r2OTroW8AN8fbWwM9iG24nhPDbfPj15e/54e6rY3sh/Ii4I26/X4PaKwlKfU9w1OjRo8ei7tVVcXdeeuklpk6dyqxZs3jxxRdZuXIl/fv3Z8SIEey+++4cfPDBG2+00UZ3FG43Y8YMfvrTn+LurFmzhkGDBm2xYsWK9r59+7L//vvz29/+FoCZM2d+aLD7kCFDWLRoEVtuuaVR4t9r/Pjx3Hvvvbm7Rcuce+65nHbaaQBcc801pWaeqUku7x955BGmTZvGnDlzeOWVV1i1ahUDBgxg6623Zq+99mL//fcf26tXr4WF28+bN4+rrrqKadOmsWjRItZZZx3GjRt3OOFqDR16D/Lbsnr1am655RbuuOMOnnzySZYtW0avXr0YNmwYu+yyCxMmTOg7bNiwKcCUUvXsuuuuny/zXGXH3MWxmv9qZtcB/0aYs3UjwsTmtxPmOM0
"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-12-13 10:43:57 +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-12-13 10:43:57 +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",
" 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 11:50:03 +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 11:50:03 +00:00
"execution_count": 16,
2019-12-13 10:47:07 +00:00
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/mikkel/.virtualenvs/expipe/lib/python3.6/site-packages/scipy/stats/stats.py:5700: RuntimeWarning: divide by zero encountered in double_scalars\n",
" z = (bigu - meanrank) / sd\n",
2019-12-16 11:50:03 +00:00
"/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",
2019-12-13 10:47:07 +00:00
"/home/mikkel/apps/expipe-project/spike-statistics/spike_statistics/core.py:401: RuntimeWarning: invalid value encountered in less\n",
" pval = np.sum(diffs > observed_diff) / float(num_samples)\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>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.20 ± 0.02 (8)</td>\n",
" <td>0.14 ± 0.02 (8)</td>\n",
" <td>7.99 ± 0.06 (8)</td>\n",
" <td>0.99 ± 0.10 (8)</td>\n",
" <td>0.15 ± 0.05 (8)</td>\n",
" <td>2.42 ± 1.36 (8)</td>\n",
" <td>0.40 ± 0.19 (8)</td>\n",
" <td>3.09 ± 2.06 (8)</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>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>MWU Baseline I 11 Hz</th>\n",
" <td>248.00, 0.194</td>\n",
" <td>225.00, 0.447</td>\n",
" <td>141.50, 0.240</td>\n",
" <td>192.00, 0.855</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",
2019-12-16 11:50:03 +00:00
" <td>0.04, 0.374</td>\n",
" <td>0.01, 0.821</td>\n",
" <td>0.20, 0.260</td>\n",
" <td>0.06, 0.666</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 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",
" <td>0.00, 0.955</td>\n",
2019-12-16 11:50:03 +00:00
" <td>0.01, 0.598</td>\n",
" <td>0.30, 0.010</td>\n",
" <td>0.05, 0.573</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>0.00, 0.000</td>\n",
" <td>0.00, 0.000</td>\n",
" <td>0.00, 0.000</td>\n",
" <td>0.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>nan, 0.000</td>\n",
" <td>nan, 0.000</td>\n",
" <td>nan, 0.000</td>\n",
" <td>nan, 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>100.00, 0.255</td>\n",
" <td>121.00, 0.642</td>\n",
" <td>141.00, 0.885</td>\n",
" <td>128.00, 0.908</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",
2019-12-16 11:50:03 +00:00
" <td>0.04, 0.355</td>\n",
" <td>0.00, 0.986</td>\n",
" <td>0.10, 0.495</td>\n",
" <td>0.11, 0.463</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 11 Hz 30 Hz</th>\n",
" <td>0.00, 0.000</td>\n",
" <td>0.00, 0.000</td>\n",
" <td>0.00, 0.000</td>\n",
" <td>0.00, 0.000</td>\n",
" <td>0.00, 0.000</td>\n",
" <td>0.00, 0.000</td>\n",
" <td>0.00, 0.000</td>\n",
" <td>0.00, 0.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>PRS 11 Hz 30 Hz</th>\n",
" <td>nan, 0.000</td>\n",
" <td>nan, 0.000</td>\n",
" <td>nan, 0.000</td>\n",
" <td>nan, 0.000</td>\n",
" <td>nan, 0.000</td>\n",
" <td>nan, 0.000</td>\n",
" <td>nan, 0.000</td>\n",
" <td>nan, 0.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>MWU Baseline II 30 Hz</th>\n",
" <td>0.00, 0.000</td>\n",
" <td>0.00, 0.000</td>\n",
" <td>0.00, 0.000</td>\n",
" <td>0.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>nan, 0.000</td>\n",
" <td>nan, 0.000</td>\n",
" <td>nan, 0.000</td>\n",
" <td>nan, 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.20 ± 0.02 (8) 0.14 ± 0.02 (8) \n",
"Baseline II 0.24 ± 0.02 (34) 0.17 ± 0.02 (34) \n",
"30 Hz nan ± nan (0) nan ± nan (0) \n",
"MWU Baseline I 11 Hz 248.00, 0.194 225.00, 0.447 \n",
2019-12-16 11:50:03 +00:00
"PRS Baseline I 11 Hz 0.04, 0.374 0.01, 0.821 \n",
2019-12-13 10:47:07 +00:00
"MWU Baseline I Baseline II 860.00, 0.682 850.00, 0.753 \n",
2019-12-16 11:50:03 +00:00
"PRS Baseline I Baseline II 0.00, 0.955 0.01, 0.598 \n",
2019-12-13 10:47:07 +00:00
"MWU Baseline I 30 Hz 0.00, 0.000 0.00, 0.000 \n",
"PRS Baseline I 30 Hz nan, 0.000 nan, 0.000 \n",
"MWU 11 Hz Baseline II 100.00, 0.255 121.00, 0.642 \n",
2019-12-16 11:50:03 +00:00
"PRS 11 Hz Baseline II 0.04, 0.355 0.00, 0.986 \n",
2019-12-13 10:47:07 +00:00
"MWU 11 Hz 30 Hz 0.00, 0.000 0.00, 0.000 \n",
"PRS 11 Hz 30 Hz nan, 0.000 nan, 0.000 \n",
"MWU Baseline II 30 Hz 0.00, 0.000 0.00, 0.000 \n",
"PRS Baseline II 30 Hz nan, 0.000 nan, 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.99 ± 0.06 (8) 0.99 ± 0.10 (8) \n",
"Baseline II 7.96 ± 0.09 (34) 1.23 ± 0.22 (33) \n",
"30 Hz nan ± nan (0) nan ± nan (0) \n",
"MWU Baseline I 11 Hz 141.50, 0.240 192.00, 0.855 \n",
2019-12-16 11:50:03 +00:00
"PRS Baseline I 11 Hz 0.20, 0.260 0.06, 0.666 \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 11:50:03 +00:00
"PRS Baseline I Baseline II 0.30, 0.010 0.05, 0.573 \n",
2019-12-13 10:47:07 +00:00
"MWU Baseline I 30 Hz 0.00, 0.000 0.00, 0.000 \n",
"PRS Baseline I 30 Hz nan, 0.000 nan, 0.000 \n",
"MWU 11 Hz Baseline II 141.00, 0.885 128.00, 0.908 \n",
2019-12-16 11:50:03 +00:00
"PRS 11 Hz Baseline II 0.10, 0.495 0.11, 0.463 \n",
2019-12-13 10:47:07 +00:00
"MWU 11 Hz 30 Hz 0.00, 0.000 0.00, 0.000 \n",
"PRS 11 Hz 30 Hz nan, 0.000 nan, 0.000 \n",
"MWU Baseline II 30 Hz 0.00, 0.000 0.00, 0.000 \n",
"PRS Baseline II 30 Hz nan, 0.000 nan, 0.000 \n",
"\n",
" Stim energy Stim half width Stim p max \\\n",
"Baseline I NaN NaN NaN \n",
"11 Hz 0.15 ± 0.05 (8) 2.42 ± 1.36 (8) 0.40 ± 0.19 (8) \n",
"Baseline II NaN NaN NaN \n",
"30 Hz nan ± nan (0) nan ± nan (0) nan ± nan (0) \n",
"MWU Baseline I 11 Hz NaN NaN NaN \n",
"PRS Baseline I 11 Hz NaN NaN NaN \n",
"MWU Baseline I Baseline II NaN NaN NaN \n",
"PRS Baseline I Baseline II NaN NaN NaN \n",
"MWU Baseline I 30 Hz NaN NaN NaN \n",
"PRS Baseline I 30 Hz NaN NaN NaN \n",
"MWU 11 Hz Baseline II NaN NaN NaN \n",
"PRS 11 Hz Baseline II NaN NaN NaN \n",
"MWU 11 Hz 30 Hz 0.00, 0.000 0.00, 0.000 0.00, 0.000 \n",
"PRS 11 Hz 30 Hz nan, 0.000 nan, 0.000 nan, 0.000 \n",
"MWU Baseline II 30 Hz NaN NaN NaN \n",
"PRS Baseline II 30 Hz NaN NaN NaN \n",
"\n",
" Stim strength \n",
"Baseline I NaN \n",
"11 Hz 3.09 ± 2.06 (8) \n",
"Baseline II NaN \n",
"30 Hz nan ± nan (0) \n",
"MWU Baseline I 11 Hz NaN \n",
"PRS Baseline I 11 Hz NaN \n",
"MWU Baseline I Baseline II NaN \n",
"PRS Baseline I Baseline II NaN \n",
"MWU Baseline I 30 Hz NaN \n",
"PRS Baseline I 30 Hz NaN \n",
"MWU 11 Hz Baseline II NaN \n",
"PRS 11 Hz Baseline II NaN \n",
"MWU 11 Hz 30 Hz 0.00, 0.000 \n",
"PRS 11 Hz 30 Hz nan, 0.000 \n",
"MWU Baseline II 30 Hz NaN \n",
"PRS Baseline II 30 Hz NaN "
]
},
2019-12-16 11:50:03 +00:00
"execution_count": 16,
2019-12-13 10:47:07 +00:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"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 11:50:03 +00:00
"execution_count": 17,
2019-12-13 10:47:07 +00:00
"metadata": {},
"outputs": [],
"source": [
"stat.to_latex(output_path / \"statistics\" / \"statistics.tex\")\n",
2019-12-16 11:50:03 +00:00
"stat.to_csv(output_path / \"statistics\" / \"statistics.csv\")"
2019-12-13 10:47:07 +00:00
]
},
2019-12-13 10:43:57 +00:00
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Plot PSD"
]
},
{
"cell_type": "code",
2019-12-16 11:50:03 +00:00
"execution_count": 18,
2019-12-13 10:43:57 +00:00
"metadata": {},
"outputs": [],
"source": [
"psd = pd.read_feather(pathlib.Path(\"output\") / \"stimulus-lfp-response\" / 'data' / 'psd.feather')\n",
"freqs = pd.read_feather(pathlib.Path(\"output\") / \"stimulus-lfp-response\" / 'data' / 'freqs.feather')"
]
},
{
"cell_type": "code",
2019-12-16 11:50:03 +00:00
"execution_count": 19,
2019-12-13 10:43:57 +00:00
"metadata": {},
"outputs": [],
"source": [
"from septum_mec.analysis.plotting import plot_bootstrap_timeseries"
]
},
{
"cell_type": "code",
2019-12-16 11:50:03 +00:00
"execution_count": 20,
2019-12-13 10:43:57 +00:00
"metadata": {},
"outputs": [],
"source": [
"freq = freqs.T.iloc[0].values\n",
"\n",
2019-12-13 10:47:07 +00:00
"mask = (freq < 49)"
2019-12-13 10:43:57 +00:00
]
},
{
"cell_type": "code",
2019-12-16 11:50:03 +00:00
"execution_count": 21,
2019-12-13 10:43:57 +00:00
"metadata": {},
"outputs": [
2019-12-16 11:50:03 +00:00
{
"name": "stderr",
"output_type": "stream",
"text": [
"/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"
]
},
2019-12-13 10:43:57 +00:00
{
"data": {
2019-12-16 11:50:03 +00:00
"image/png": "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
2019-12-13 10:43:57 +00:00
"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",
2019-12-13 10:47:07 +00:00
"axs[0].set_ylim(-31, 1)\n",
2019-12-13 10:43:57 +00:00
"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",
2019-12-16 11:50:03 +00:00
"execution_count": 35,
2019-12-13 10:43:57 +00:00
"metadata": {},
"outputs": [],
"source": [
"action = project.require_action(\"stimulus-lfp-response-mec\")"
]
},
{
"cell_type": "code",
2019-12-16 11:50:03 +00:00
"execution_count": 36,
2019-12-13 10:43:57 +00:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2019-12-16 11:50:03 +00:00
"['/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec/data/statistics/statistics.tex',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec/data/statistics/statistics.csv',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec/data/figures/lfp-psd-histogram-stim_energy.png',\n",
2019-12-13 10:43:57 +00:00
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec/data/figures/lfp-psd-histogram-stim_strength.png',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec/data/figures/lfp-psd.png',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec/data/figures/lfp-psd-histogram-theta_peak.svg',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec/data/figures/lfp-psd-histogram-stim_p_max.png',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec/data/figures/lfp-psd-histogram-theta_freq.png',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec/data/figures/lfp-psd-histogram-theta_energy.svg',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec/data/figures/lfp-psd-histogram-theta_freq.svg',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec/data/figures/lfp-psd-histogram-stim_half_width.png',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec/data/figures/lfp-psd-histogram-stim_half_width.svg',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec/data/figures/lfp-psd-histogram-theta_half_width.svg',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec/data/figures/lfp-psd-histogram-theta_energy.png',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec/data/figures/lfp-psd-histogram-theta_peak.png',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec/data/figures/lfp-psd-histogram-stim_p_max.svg',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec/data/figures/lfp-psd-histogram-theta_half_width.png',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec/data/figures/lfp-psd.svg',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec/data/figures/lfp-psd-histogram-stim_energy.svg',\n",
" '/media/storage/expipe/septum-mec/actions/stimulus-lfp-response-mec/data/figures/lfp-psd-histogram-stim_strength.svg']"
]
},
2019-12-16 11:50:03 +00:00
"execution_count": 36,
2019-12-13 10:43:57 +00:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"copy_tree(output_path, str(action.data_path()))"
]
},
{
"cell_type": "code",
2019-12-16 11:50:03 +00:00
"execution_count": 37,
2019-12-13 10:43:57 +00:00
"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": 2
}