{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%load_ext autoreload\n",
"%autoreload 2"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"19:21:26 [I] klustakwik KlustaKwik2 version 0.2.6\n",
"/home/mikkel/.virtualenvs/expipe/lib/python3.6/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n",
" return f(*args, **kwds)\n",
"/home/mikkel/.virtualenvs/expipe/lib/python3.6/importlib/_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject\n",
" return f(*args, **kwds)\n"
]
}
],
"source": [
"import os\n",
"import pathlib\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import re\n",
"import shutil\n",
"import pandas as pd\n",
"import scipy.stats\n",
"\n",
"import exdir\n",
"import expipe\n",
"from distutils.dir_util import copy_tree\n",
"import septum_mec\n",
"import spatial_maps as sp\n",
"import head_direction.head as head\n",
"import septum_mec.analysis.data_processing as dp\n",
"import septum_mec.analysis.registration\n",
"from septum_mec.analysis.plotting import violinplot\n",
"\n",
"from spike_statistics.core import permutation_resampling"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"project_path = dp.project_path()\n",
"project = expipe.get_project(project_path)\n",
"actions = project.actions\n",
"\n",
"output_path = pathlib.Path(\"output\") / \"comparisons-gridcells\"\n",
"(output_path / \"statistics\").mkdir(exist_ok=True, parents=True)\n",
"(output_path / \"figures\").mkdir(exist_ok=True, parents=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Load cell statistics and shuffling quantiles"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" action | \n",
" baseline | \n",
" entity | \n",
" frequency | \n",
" i | \n",
" ii | \n",
" session | \n",
" stim_location | \n",
" stimulated | \n",
" tag | \n",
" ... | \n",
" burst_event_ratio | \n",
" bursty_spike_ratio | \n",
" gridness | \n",
" border_score | \n",
" information_rate | \n",
" information_specificity | \n",
" head_mean_ang | \n",
" head_mean_vec_len | \n",
" spacing | \n",
" orientation | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1849-060319-3 | \n",
" True | \n",
" 1849 | \n",
" NaN | \n",
" False | \n",
" True | \n",
" 3 | \n",
" NaN | \n",
" False | \n",
" baseline ii | \n",
" ... | \n",
" 0.397921 | \n",
" 0.676486 | \n",
" -0.459487 | \n",
" 0.078474 | \n",
" 0.965845 | \n",
" 0.309723 | \n",
" 5.788704 | \n",
" 0.043321 | \n",
" 0.624971 | \n",
" 22.067900 | \n",
"
\n",
" \n",
" 1 | \n",
" 1849-060319-3 | \n",
" True | \n",
" 1849 | \n",
" NaN | \n",
" False | \n",
" True | \n",
" 3 | \n",
" NaN | \n",
" False | \n",
" baseline ii | \n",
" ... | \n",
" 0.146481 | \n",
" 0.277121 | \n",
" -0.615405 | \n",
" 0.311180 | \n",
" 0.191375 | \n",
" 0.032266 | \n",
" 1.821598 | \n",
" 0.014624 | \n",
" 0.753333 | \n",
" 0.000000 | \n",
"
\n",
" \n",
" 2 | \n",
" 1849-060319-3 | \n",
" True | \n",
" 1849 | \n",
" NaN | \n",
" False | \n",
" True | \n",
" 3 | \n",
" NaN | \n",
" False | \n",
" baseline ii | \n",
" ... | \n",
" 0.373466 | \n",
" 0.658748 | \n",
" -0.527711 | \n",
" 0.131660 | \n",
" 3.833587 | \n",
" 0.336590 | \n",
" 4.407614 | \n",
" 0.121115 | \n",
" 0.542877 | \n",
" 27.758541 | \n",
"
\n",
" \n",
" 3 | \n",
" 1849-060319-3 | \n",
" True | \n",
" 1849 | \n",
" NaN | \n",
" False | \n",
" True | \n",
" 3 | \n",
" NaN | \n",
" False | \n",
" baseline ii | \n",
" ... | \n",
" 0.097464 | \n",
" 0.196189 | \n",
" -0.641543 | \n",
" 0.274989 | \n",
" 0.153740 | \n",
" 0.068626 | \n",
" 6.128601 | \n",
" 0.099223 | \n",
" 0.484916 | \n",
" 11.309932 | \n",
"
\n",
" \n",
" 4 | \n",
" 1849-060319-3 | \n",
" True | \n",
" 1849 | \n",
" NaN | \n",
" False | \n",
" True | \n",
" 3 | \n",
" NaN | \n",
" False | \n",
" baseline ii | \n",
" ... | \n",
" 0.248036 | \n",
" 0.461250 | \n",
" -0.085292 | \n",
" 0.198676 | \n",
" 0.526720 | \n",
" 0.033667 | \n",
" 1.602362 | \n",
" 0.051825 | \n",
" 0.646571 | \n",
" 0.000000 | \n",
"
\n",
" \n",
"
\n",
"
5 rows × 39 columns
\n",
"
"
],
"text/plain": [
" action baseline entity frequency i ii session \\\n",
"0 1849-060319-3 True 1849 NaN False True 3 \n",
"1 1849-060319-3 True 1849 NaN False True 3 \n",
"2 1849-060319-3 True 1849 NaN False True 3 \n",
"3 1849-060319-3 True 1849 NaN False True 3 \n",
"4 1849-060319-3 True 1849 NaN False True 3 \n",
"\n",
" stim_location stimulated tag ... burst_event_ratio \\\n",
"0 NaN False baseline ii ... 0.397921 \n",
"1 NaN False baseline ii ... 0.146481 \n",
"2 NaN False baseline ii ... 0.373466 \n",
"3 NaN False baseline ii ... 0.097464 \n",
"4 NaN False baseline ii ... 0.248036 \n",
"\n",
" bursty_spike_ratio gridness border_score information_rate \\\n",
"0 0.676486 -0.459487 0.078474 0.965845 \n",
"1 0.277121 -0.615405 0.311180 0.191375 \n",
"2 0.658748 -0.527711 0.131660 3.833587 \n",
"3 0.196189 -0.641543 0.274989 0.153740 \n",
"4 0.461250 -0.085292 0.198676 0.526720 \n",
"\n",
" information_specificity head_mean_ang head_mean_vec_len spacing \\\n",
"0 0.309723 5.788704 0.043321 0.624971 \n",
"1 0.032266 1.821598 0.014624 0.753333 \n",
"2 0.336590 4.407614 0.121115 0.542877 \n",
"3 0.068626 6.128601 0.099223 0.484916 \n",
"4 0.033667 1.602362 0.051825 0.646571 \n",
"\n",
" orientation \n",
"0 22.067900 \n",
"1 0.000000 \n",
"2 27.758541 \n",
"3 11.309932 \n",
"4 0.000000 \n",
"\n",
"[5 rows x 39 columns]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"statistics_action = actions['calculate-statistics']\n",
"identification_action = actions['identify-neurons']\n",
"sessions = pd.read_csv(identification_action.data_path('sessions'))\n",
"units = pd.read_csv(identification_action.data_path('units'))\n",
"session_units = pd.merge(sessions, units, on='action')\n",
"statistics_results = pd.read_csv(statistics_action.data_path('results'))\n",
"statistics = pd.merge(session_units, statistics_results, how='left')\n",
"statistics.head()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" border_score | \n",
" gridness | \n",
" head_mean_ang | \n",
" head_mean_vec_len | \n",
" information_rate | \n",
" speed_score | \n",
" action | \n",
" channel_group | \n",
" unit_name | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0.348023 | \n",
" 0.275109 | \n",
" 3.012689 | \n",
" 0.086792 | \n",
" 0.707197 | \n",
" 0.149071 | \n",
" 1833-010719-1 | \n",
" 0.0 | \n",
" 127.0 | \n",
"
\n",
" \n",
" 1 | \n",
" 0.362380 | \n",
" 0.166475 | \n",
" 3.133138 | \n",
" 0.037271 | \n",
" 0.482486 | \n",
" 0.132212 | \n",
" 1833-010719-1 | \n",
" 0.0 | \n",
" 161.0 | \n",
"
\n",
" \n",
" 2 | \n",
" 0.367498 | \n",
" 0.266865 | \n",
" 5.586395 | \n",
" 0.182843 | \n",
" 0.271188 | \n",
" 0.062821 | \n",
" 1833-010719-1 | \n",
" 0.0 | \n",
" 191.0 | \n",
"
\n",
" \n",
" 3 | \n",
" 0.331942 | \n",
" 0.312155 | \n",
" 5.955767 | \n",
" 0.090786 | \n",
" 0.354018 | \n",
" 0.052009 | \n",
" 1833-010719-1 | \n",
" 0.0 | \n",
" 223.0 | \n",
"
\n",
" \n",
" 4 | \n",
" 0.325842 | \n",
" 0.180495 | \n",
" 5.262721 | \n",
" 0.103584 | \n",
" 0.210427 | \n",
" 0.094041 | \n",
" 1833-010719-1 | \n",
" 0.0 | \n",
" 225.0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" border_score gridness head_mean_ang head_mean_vec_len information_rate \\\n",
"0 0.348023 0.275109 3.012689 0.086792 0.707197 \n",
"1 0.362380 0.166475 3.133138 0.037271 0.482486 \n",
"2 0.367498 0.266865 5.586395 0.182843 0.271188 \n",
"3 0.331942 0.312155 5.955767 0.090786 0.354018 \n",
"4 0.325842 0.180495 5.262721 0.103584 0.210427 \n",
"\n",
" speed_score action channel_group unit_name \n",
"0 0.149071 1833-010719-1 0.0 127.0 \n",
"1 0.132212 1833-010719-1 0.0 161.0 \n",
"2 0.062821 1833-010719-1 0.0 191.0 \n",
"3 0.052009 1833-010719-1 0.0 223.0 \n",
"4 0.094041 1833-010719-1 0.0 225.0 "
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"shuffling = actions['shuffling']\n",
"quantiles_95 = pd.read_csv(shuffling.data_path('quantiles_95'))\n",
"quantiles_95.head()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" action | \n",
" baseline | \n",
" entity | \n",
" frequency | \n",
" i | \n",
" ii | \n",
" session | \n",
" stim_location | \n",
" stimulated | \n",
" tag | \n",
" ... | \n",
" head_mean_vec_len | \n",
" spacing | \n",
" orientation | \n",
" border_score_threshold | \n",
" gridness_threshold | \n",
" head_mean_ang_threshold | \n",
" head_mean_vec_len_threshold | \n",
" information_rate_threshold | \n",
" speed_score_threshold | \n",
" specificity | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1849-060319-3 | \n",
" True | \n",
" 1849 | \n",
" NaN | \n",
" False | \n",
" True | \n",
" 3 | \n",
" NaN | \n",
" False | \n",
" baseline ii | \n",
" ... | \n",
" 0.043321 | \n",
" 0.624971 | \n",
" 22.067900 | \n",
" 0.332548 | \n",
" 0.229073 | \n",
" 6.029431 | \n",
" 0.205362 | \n",
" 1.115825 | \n",
" 0.066736 | \n",
" 0.445206 | \n",
"
\n",
" \n",
" 1 | \n",
" 1849-060319-3 | \n",
" True | \n",
" 1849 | \n",
" NaN | \n",
" False | \n",
" True | \n",
" 3 | \n",
" NaN | \n",
" False | \n",
" baseline ii | \n",
" ... | \n",
" 0.014624 | \n",
" 0.753333 | \n",
" 0.000000 | \n",
" 0.354830 | \n",
" 0.089333 | \n",
" 6.120055 | \n",
" 0.073566 | \n",
" 0.223237 | \n",
" 0.052594 | \n",
" 0.097485 | \n",
"
\n",
" \n",
" 2 | \n",
" 1849-060319-3 | \n",
" True | \n",
" 1849 | \n",
" NaN | \n",
" False | \n",
" True | \n",
" 3 | \n",
" NaN | \n",
" False | \n",
" baseline ii | \n",
" ... | \n",
" 0.121115 | \n",
" 0.542877 | \n",
" 27.758541 | \n",
" 0.264610 | \n",
" -0.121081 | \n",
" 5.759406 | \n",
" 0.150827 | \n",
" 4.964984 | \n",
" 0.027120 | \n",
" 0.393687 | \n",
"
\n",
" \n",
" 3 | \n",
" 1849-060319-3 | \n",
" True | \n",
" 1849 | \n",
" NaN | \n",
" False | \n",
" True | \n",
" 3 | \n",
" NaN | \n",
" False | \n",
" baseline ii | \n",
" ... | \n",
" 0.099223 | \n",
" 0.484916 | \n",
" 11.309932 | \n",
" 0.344280 | \n",
" 0.215829 | \n",
" 6.033364 | \n",
" 0.110495 | \n",
" 0.239996 | \n",
" 0.054074 | \n",
" 0.262612 | \n",
"
\n",
" \n",
" 4 | \n",
" 1849-060319-3 | \n",
" True | \n",
" 1849 | \n",
" NaN | \n",
" False | \n",
" True | \n",
" 3 | \n",
" NaN | \n",
" False | \n",
" baseline ii | \n",
" ... | \n",
" 0.051825 | \n",
" 0.646571 | \n",
" 0.000000 | \n",
" 0.342799 | \n",
" 0.218967 | \n",
" 5.768170 | \n",
" 0.054762 | \n",
" 0.524990 | \n",
" 0.144702 | \n",
" 0.133677 | \n",
"
\n",
" \n",
"
\n",
"
5 rows × 46 columns
\n",
"
"
],
"text/plain": [
" action baseline entity frequency i ii session \\\n",
"0 1849-060319-3 True 1849 NaN False True 3 \n",
"1 1849-060319-3 True 1849 NaN False True 3 \n",
"2 1849-060319-3 True 1849 NaN False True 3 \n",
"3 1849-060319-3 True 1849 NaN False True 3 \n",
"4 1849-060319-3 True 1849 NaN False True 3 \n",
"\n",
" stim_location stimulated tag ... head_mean_vec_len spacing \\\n",
"0 NaN False baseline ii ... 0.043321 0.624971 \n",
"1 NaN False baseline ii ... 0.014624 0.753333 \n",
"2 NaN False baseline ii ... 0.121115 0.542877 \n",
"3 NaN False baseline ii ... 0.099223 0.484916 \n",
"4 NaN False baseline ii ... 0.051825 0.646571 \n",
"\n",
" orientation border_score_threshold gridness_threshold \\\n",
"0 22.067900 0.332548 0.229073 \n",
"1 0.000000 0.354830 0.089333 \n",
"2 27.758541 0.264610 -0.121081 \n",
"3 11.309932 0.344280 0.215829 \n",
"4 0.000000 0.342799 0.218967 \n",
"\n",
" head_mean_ang_threshold head_mean_vec_len_threshold \\\n",
"0 6.029431 0.205362 \n",
"1 6.120055 0.073566 \n",
"2 5.759406 0.150827 \n",
"3 6.033364 0.110495 \n",
"4 5.768170 0.054762 \n",
"\n",
" information_rate_threshold speed_score_threshold specificity \n",
"0 1.115825 0.066736 0.445206 \n",
"1 0.223237 0.052594 0.097485 \n",
"2 4.964984 0.027120 0.393687 \n",
"3 0.239996 0.054074 0.262612 \n",
"4 0.524990 0.144702 0.133677 \n",
"\n",
"[5 rows x 46 columns]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"action_columns = ['action', 'channel_group', 'unit_name']\n",
"data = pd.merge(statistics, quantiles_95, on=action_columns, suffixes=(\"\", \"_threshold\"))\n",
"\n",
"data['specificity'] = np.log10(data['in_field_mean_rate'] / data['out_field_mean_rate'])\n",
"\n",
"data.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Statistics about all cell-sessions"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"stimulated\n",
"False 624\n",
"True 660\n",
"Name: action, dtype: int64"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.groupby('stimulated').count()['action']"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"data['unit_day'] = data.apply(lambda x: str(x.unit_idnum) + '_' + x.action.split('-')[1], axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Find all cells with gridness above threshold"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of gridcells 225\n",
"Number of animals 4\n"
]
}
],
"source": [
"query = 'gridness > gridness_threshold and information_rate > information_rate_threshold'\n",
"sessions_above_threshold = data.query(query)\n",
"print(\"Number of gridcells\", len(sessions_above_threshold))\n",
"print(\"Number of animals\", len(sessions_above_threshold.groupby(['entity'])))"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"gridcell_sessions = data[data.unit_day.isin(sessions_above_threshold.unit_day.values)]"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of gridcells in baseline i sessions 76\n",
"Number of gridcells in stimulated 11Hz ms sessions 68\n",
"Number of gridcells in baseline ii sessions 64\n",
"Number of gridcells in stimulated 30Hz ms sessions 52\n"
]
}
],
"source": [
"baseline_i = gridcell_sessions.query('baseline and Hz11')\n",
"stimulated_11 = gridcell_sessions.query('frequency==11 and stim_location==\"ms\"')\n",
"\n",
"baseline_ii = gridcell_sessions.query('baseline and Hz30')\n",
"stimulated_30 = gridcell_sessions.query('frequency==30 and stim_location==\"ms\"')\n",
"\n",
"print(\"Number of gridcells in baseline i sessions\", len(baseline_i))\n",
"print(\"Number of gridcells in stimulated 11Hz ms sessions\", len(stimulated_11))\n",
"\n",
"print(\"Number of gridcells in baseline ii sessions\", len(baseline_ii))\n",
"print(\"Number of gridcells in stimulated 30Hz ms sessions\", len(stimulated_30))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# slice unique units"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"baseline_i = baseline_i.drop_duplicates('unit_id')\n",
"stimulated_11 = stimulated_11.drop_duplicates('unit_id')\n",
"baseline_ii = baseline_ii.drop_duplicates('unit_id')\n",
"stimulated_30 = stimulated_30.drop_duplicates('unit_id')"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of gridcells in baseline i sessions 70\n",
"Number of gridcells in stimulated 11Hz ms sessions 65\n",
"Number of gridcells in baseline ii sessions 61\n",
"Number of gridcells in stimulated 30Hz ms sessions 49\n"
]
}
],
"source": [
"print(\"Number of gridcells in baseline i sessions\", len(baseline_i))\n",
"print(\"Number of gridcells in stimulated 11Hz ms sessions\", len(stimulated_11))\n",
"\n",
"print(\"Number of gridcells in baseline ii sessions\", len(baseline_ii))\n",
"print(\"Number of gridcells in stimulated 30Hz ms sessions\", len(stimulated_30))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Calculate statistics"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"columns = [\n",
" 'average_rate', 'gridness', 'sparsity', 'selectivity', 'information_specificity',\n",
" 'max_rate', 'information_rate', 'interspike_interval_cv', \n",
" 'in_field_mean_rate', 'out_field_mean_rate', \n",
" 'burst_event_ratio', 'specificity', 'speed_score'\n",
"]"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" average_rate | \n",
" gridness | \n",
" sparsity | \n",
" selectivity | \n",
" information_specificity | \n",
" max_rate | \n",
" information_rate | \n",
" interspike_interval_cv | \n",
" in_field_mean_rate | \n",
" out_field_mean_rate | \n",
" burst_event_ratio | \n",
" specificity | \n",
" speed_score | \n",
"
\n",
" \n",
" stimulated | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" False | \n",
" 10.046219 | \n",
" 0.537204 | \n",
" 0.656641 | \n",
" 5.347833 | \n",
" 0.205817 | \n",
" 37.735779 | \n",
" 1.175931 | \n",
" 2.344483 | \n",
" 15.790391 | \n",
" 7.405761 | \n",
" 0.219892 | \n",
" 0.445701 | \n",
" 0.132422 | \n",
"
\n",
" \n",
" True | \n",
" 9.814609 | \n",
" 0.433530 | \n",
" 0.692547 | \n",
" 5.280295 | \n",
" 0.182564 | \n",
" 34.650917 | \n",
" 0.933478 | \n",
" 2.247505 | \n",
" 14.455320 | \n",
" 7.429762 | \n",
" 0.213281 | \n",
" 0.419822 | \n",
" 0.111848 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" average_rate gridness sparsity selectivity \\\n",
"stimulated \n",
"False 10.046219 0.537204 0.656641 5.347833 \n",
"True 9.814609 0.433530 0.692547 5.280295 \n",
"\n",
" information_specificity max_rate information_rate \\\n",
"stimulated \n",
"False 0.205817 37.735779 1.175931 \n",
"True 0.182564 34.650917 0.933478 \n",
"\n",
" interspike_interval_cv in_field_mean_rate out_field_mean_rate \\\n",
"stimulated \n",
"False 2.344483 15.790391 7.405761 \n",
"True 2.247505 14.455320 7.429762 \n",
"\n",
" burst_event_ratio specificity speed_score \n",
"stimulated \n",
"False 0.219892 0.445701 0.132422 \n",
"True 0.213281 0.419822 0.111848 "
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gridcell_sessions.groupby('stimulated')[columns].mean()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" average_rate | \n",
" gridness | \n",
" sparsity | \n",
" selectivity | \n",
" information_specificity | \n",
" max_rate | \n",
" information_rate | \n",
" interspike_interval_cv | \n",
" in_field_mean_rate | \n",
" out_field_mean_rate | \n",
" burst_event_ratio | \n",
" specificity | \n",
" speed_score | \n",
"
\n",
" \n",
" \n",
" \n",
" count | \n",
" 147.000000 | \n",
" 147.000000 | \n",
" 147.000000 | \n",
" 147.000000 | \n",
" 147.000000 | \n",
" 147.000000 | \n",
" 147.000000 | \n",
" 147.000000 | \n",
" 147.000000 | \n",
" 147.000000 | \n",
" 147.000000 | \n",
" 147.000000 | \n",
" 147.000000 | \n",
"
\n",
" \n",
" mean | \n",
" 10.046219 | \n",
" 0.537204 | \n",
" 0.656641 | \n",
" 5.347833 | \n",
" 0.205817 | \n",
" 37.735779 | \n",
" 1.175931 | \n",
" 2.344483 | \n",
" 15.790391 | \n",
" 7.405761 | \n",
" 0.219892 | \n",
" 0.445701 | \n",
" 0.132422 | \n",
"
\n",
" \n",
" std | \n",
" 7.913344 | \n",
" 0.372942 | \n",
" 0.190573 | \n",
" 2.938819 | \n",
" 0.192815 | \n",
" 16.976912 | \n",
" 0.582747 | \n",
" 0.748791 | \n",
" 9.952409 | \n",
" 6.971963 | \n",
" 0.083408 | \n",
" 0.211635 | \n",
" 0.075334 | \n",
"
\n",
" \n",
" min | \n",
" 0.516375 | \n",
" -0.599569 | \n",
" 0.220235 | \n",
" 1.762785 | \n",
" 0.005947 | \n",
" 3.013150 | \n",
" 0.102101 | \n",
" 1.067244 | \n",
" 0.993877 | \n",
" 0.185332 | \n",
" 0.027228 | \n",
" 0.072063 | \n",
" -0.023795 | \n",
"
\n",
" \n",
" 25% | \n",
" 3.811514 | \n",
" 0.324174 | \n",
" 0.515183 | \n",
" 3.107181 | \n",
" 0.071747 | \n",
" 25.148584 | \n",
" 0.737153 | \n",
" 1.749688 | \n",
" 7.628858 | \n",
" 1.800796 | \n",
" 0.162830 | \n",
" 0.289405 | \n",
" 0.078827 | \n",
"
\n",
" \n",
" 50% | \n",
" 7.129568 | \n",
" 0.579600 | \n",
" 0.698596 | \n",
" 4.675862 | \n",
" 0.141391 | \n",
" 34.348592 | \n",
" 1.055340 | \n",
" 2.173263 | \n",
" 13.000207 | \n",
" 4.835608 | \n",
" 0.213831 | \n",
" 0.390758 | \n",
" 0.124640 | \n",
"
\n",
" \n",
" 75% | \n",
" 15.685084 | \n",
" 0.798542 | \n",
" 0.823981 | \n",
" 6.646175 | \n",
" 0.265521 | \n",
" 47.346567 | \n",
" 1.570106 | \n",
" 2.691555 | \n",
" 22.415152 | \n",
" 10.981344 | \n",
" 0.282480 | \n",
" 0.572782 | \n",
" 0.183005 | \n",
"
\n",
" \n",
" max | \n",
" 35.560173 | \n",
" 1.174288 | \n",
" 0.980148 | \n",
" 17.011330 | \n",
" 1.202862 | \n",
" 90.839266 | \n",
" 3.540663 | \n",
" 5.240845 | \n",
" 45.349506 | \n",
" 32.997789 | \n",
" 0.400014 | \n",
" 0.975050 | \n",
" 0.333463 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" average_rate gridness sparsity selectivity \\\n",
"count 147.000000 147.000000 147.000000 147.000000 \n",
"mean 10.046219 0.537204 0.656641 5.347833 \n",
"std 7.913344 0.372942 0.190573 2.938819 \n",
"min 0.516375 -0.599569 0.220235 1.762785 \n",
"25% 3.811514 0.324174 0.515183 3.107181 \n",
"50% 7.129568 0.579600 0.698596 4.675862 \n",
"75% 15.685084 0.798542 0.823981 6.646175 \n",
"max 35.560173 1.174288 0.980148 17.011330 \n",
"\n",
" information_specificity max_rate information_rate \\\n",
"count 147.000000 147.000000 147.000000 \n",
"mean 0.205817 37.735779 1.175931 \n",
"std 0.192815 16.976912 0.582747 \n",
"min 0.005947 3.013150 0.102101 \n",
"25% 0.071747 25.148584 0.737153 \n",
"50% 0.141391 34.348592 1.055340 \n",
"75% 0.265521 47.346567 1.570106 \n",
"max 1.202862 90.839266 3.540663 \n",
"\n",
" interspike_interval_cv in_field_mean_rate out_field_mean_rate \\\n",
"count 147.000000 147.000000 147.000000 \n",
"mean 2.344483 15.790391 7.405761 \n",
"std 0.748791 9.952409 6.971963 \n",
"min 1.067244 0.993877 0.185332 \n",
"25% 1.749688 7.628858 1.800796 \n",
"50% 2.173263 13.000207 4.835608 \n",
"75% 2.691555 22.415152 10.981344 \n",
"max 5.240845 45.349506 32.997789 \n",
"\n",
" burst_event_ratio specificity speed_score \n",
"count 147.000000 147.000000 147.000000 \n",
"mean 0.219892 0.445701 0.132422 \n",
"std 0.083408 0.211635 0.075334 \n",
"min 0.027228 0.072063 -0.023795 \n",
"25% 0.162830 0.289405 0.078827 \n",
"50% 0.213831 0.390758 0.124640 \n",
"75% 0.282480 0.572782 0.183005 \n",
"max 0.400014 0.975050 0.333463 "
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gridcell_sessions.query('baseline')[columns].describe()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" average_rate | \n",
" gridness | \n",
" sparsity | \n",
" selectivity | \n",
" information_specificity | \n",
" max_rate | \n",
" information_rate | \n",
" interspike_interval_cv | \n",
" in_field_mean_rate | \n",
" out_field_mean_rate | \n",
" burst_event_ratio | \n",
" specificity | \n",
" speed_score | \n",
"
\n",
" \n",
" \n",
" \n",
" count | \n",
" 124.000000 | \n",
" 124.000000 | \n",
" 124.000000 | \n",
" 124.000000 | \n",
" 124.000000 | \n",
" 124.000000 | \n",
" 124.000000 | \n",
" 124.000000 | \n",
" 124.000000 | \n",
" 124.000000 | \n",
" 124.000000 | \n",
" 124.000000 | \n",
" 124.000000 | \n",
"
\n",
" \n",
" mean | \n",
" 9.814609 | \n",
" 0.433530 | \n",
" 0.692547 | \n",
" 5.280295 | \n",
" 0.182564 | \n",
" 34.650917 | \n",
" 0.933478 | \n",
" 2.247505 | \n",
" 14.455320 | \n",
" 7.429762 | \n",
" 0.213281 | \n",
" 0.419822 | \n",
" 0.111848 | \n",
"
\n",
" \n",
" std | \n",
" 7.676536 | \n",
" 0.387343 | \n",
" 0.197445 | \n",
" 3.520949 | \n",
" 0.208775 | \n",
" 14.511629 | \n",
" 0.492383 | \n",
" 0.750923 | \n",
" 8.796338 | \n",
" 6.881408 | \n",
" 0.077978 | \n",
" 0.231655 | \n",
" 0.076247 | \n",
"
\n",
" \n",
" min | \n",
" 0.571675 | \n",
" -0.509346 | \n",
" 0.161197 | \n",
" 1.502176 | \n",
" 0.005851 | \n",
" 8.703201 | \n",
" 0.096607 | \n",
" 1.060662 | \n",
" 2.327366 | \n",
" 0.212979 | \n",
" 0.041561 | \n",
" 0.075519 | \n",
" -0.073931 | \n",
"
\n",
" \n",
" 25% | \n",
" 3.835569 | \n",
" 0.194332 | \n",
" 0.552817 | \n",
" 2.819310 | \n",
" 0.062615 | \n",
" 24.286536 | \n",
" 0.552133 | \n",
" 1.671374 | \n",
" 8.097415 | \n",
" 2.038374 | \n",
" 0.160874 | \n",
" 0.243125 | \n",
" 0.065039 | \n",
"
\n",
" \n",
" 50% | \n",
" 7.690325 | \n",
" 0.413583 | \n",
" 0.733832 | \n",
" 4.446917 | \n",
" 0.109036 | \n",
" 32.040628 | \n",
" 0.879876 | \n",
" 2.098479 | \n",
" 12.325347 | \n",
" 5.718993 | \n",
" 0.204469 | \n",
" 0.361016 | \n",
" 0.105714 | \n",
"
\n",
" \n",
" 75% | \n",
" 14.035706 | \n",
" 0.723850 | \n",
" 0.861439 | \n",
" 6.438574 | \n",
" 0.219362 | \n",
" 42.320860 | \n",
" 1.196084 | \n",
" 2.651945 | \n",
" 19.237536 | \n",
" 10.972856 | \n",
" 0.266557 | \n",
" 0.561412 | \n",
" 0.159393 | \n",
"
\n",
" \n",
" max | \n",
" 34.844930 | \n",
" 1.230658 | \n",
" 0.983263 | \n",
" 25.599598 | \n",
" 1.296616 | \n",
" 76.146357 | \n",
" 2.918984 | \n",
" 5.324055 | \n",
" 42.803943 | \n",
" 31.519482 | \n",
" 0.406678 | \n",
" 1.077313 | \n",
" 0.349283 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" average_rate gridness sparsity selectivity \\\n",
"count 124.000000 124.000000 124.000000 124.000000 \n",
"mean 9.814609 0.433530 0.692547 5.280295 \n",
"std 7.676536 0.387343 0.197445 3.520949 \n",
"min 0.571675 -0.509346 0.161197 1.502176 \n",
"25% 3.835569 0.194332 0.552817 2.819310 \n",
"50% 7.690325 0.413583 0.733832 4.446917 \n",
"75% 14.035706 0.723850 0.861439 6.438574 \n",
"max 34.844930 1.230658 0.983263 25.599598 \n",
"\n",
" information_specificity max_rate information_rate \\\n",
"count 124.000000 124.000000 124.000000 \n",
"mean 0.182564 34.650917 0.933478 \n",
"std 0.208775 14.511629 0.492383 \n",
"min 0.005851 8.703201 0.096607 \n",
"25% 0.062615 24.286536 0.552133 \n",
"50% 0.109036 32.040628 0.879876 \n",
"75% 0.219362 42.320860 1.196084 \n",
"max 1.296616 76.146357 2.918984 \n",
"\n",
" interspike_interval_cv in_field_mean_rate out_field_mean_rate \\\n",
"count 124.000000 124.000000 124.000000 \n",
"mean 2.247505 14.455320 7.429762 \n",
"std 0.750923 8.796338 6.881408 \n",
"min 1.060662 2.327366 0.212979 \n",
"25% 1.671374 8.097415 2.038374 \n",
"50% 2.098479 12.325347 5.718993 \n",
"75% 2.651945 19.237536 10.972856 \n",
"max 5.324055 42.803943 31.519482 \n",
"\n",
" burst_event_ratio specificity speed_score \n",
"count 124.000000 124.000000 124.000000 \n",
"mean 0.213281 0.419822 0.111848 \n",
"std 0.077978 0.231655 0.076247 \n",
"min 0.041561 0.075519 -0.073931 \n",
"25% 0.160874 0.243125 0.065039 \n",
"50% 0.204469 0.361016 0.105714 \n",
"75% 0.266557 0.561412 0.159393 \n",
"max 0.406678 1.077313 0.349283 "
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gridcell_sessions.query(\"stimulated\")[columns].describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Create nice table"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"def summarize(data):\n",
" return \"{:.2f} ± {:.2f} ({})\".format(data.mean(), data.sem(), sum(~np.isnan(data)))\n",
"\n",
"\n",
"def MWU(column, stim, base):\n",
" '''\n",
" Mann Whitney U\n",
" '''\n",
" Uvalue, pvalue = scipy.stats.mannwhitneyu(\n",
" stim[column].dropna(), \n",
" base[column].dropna(),\n",
" alternative='two-sided')\n",
"\n",
" return \"{:.2f}, {:.3f}\".format(Uvalue, pvalue)\n",
"\n",
"\n",
"def PRS(column, stim, base):\n",
" '''\n",
" Permutation ReSampling\n",
" '''\n",
" pvalue, observed_diff, diffs = permutation_resampling(\n",
" stim[column].dropna(), \n",
" base[column].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",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Baseline | \n",
" Stimulated | \n",
" MWU | \n",
" PRS | \n",
"
\n",
" \n",
" \n",
" \n",
" Average rate | \n",
" 10.05 ± 0.65 (147) | \n",
" 9.81 ± 0.69 (124) | \n",
" 9040.00, 0.909 | \n",
" 0.56, 0.717 | \n",
"
\n",
" \n",
" Gridness | \n",
" 0.54 ± 0.03 (147) | \n",
" 0.43 ± 0.03 (124) | \n",
" 7516.00, 0.013 | \n",
" 0.17, 0.004 | \n",
"
\n",
" \n",
" Sparsity | \n",
" 0.66 ± 0.02 (147) | \n",
" 0.69 ± 0.02 (124) | \n",
" 10275.00, 0.071 | \n",
" 0.04, 0.161 | \n",
"
\n",
" \n",
" Selectivity | \n",
" 5.35 ± 0.24 (147) | \n",
" 5.28 ± 0.32 (124) | \n",
" 8488.00, 0.330 | \n",
" 0.23, 0.450 | \n",
"
\n",
" \n",
" Information specificity | \n",
" 0.21 ± 0.02 (147) | \n",
" 0.18 ± 0.02 (124) | \n",
" 7883.00, 0.056 | \n",
" 0.03, 0.103 | \n",
"
\n",
" \n",
" Max rate | \n",
" 37.74 ± 1.40 (147) | \n",
" 34.65 ± 1.30 (124) | \n",
" 8165.00, 0.140 | \n",
" 2.31, 0.108 | \n",
"
\n",
" \n",
" Information rate | \n",
" 1.18 ± 0.05 (147) | \n",
" 0.93 ± 0.04 (124) | \n",
" 6772.00, 0.000 | \n",
" 0.18, 0.008 | \n",
"
\n",
" \n",
" Interspike interval cv | \n",
" 2.34 ± 0.06 (147) | \n",
" 2.25 ± 0.07 (124) | \n",
" 8361.00, 0.242 | \n",
" 0.07, 0.500 | \n",
"
\n",
" \n",
" In-field mean rate | \n",
" 15.79 ± 0.82 (147) | \n",
" 14.46 ± 0.79 (124) | \n",
" 8526.00, 0.361 | \n",
" 0.67, 0.638 | \n",
"
\n",
" \n",
" Out-field mean rate | \n",
" 7.41 ± 0.58 (147) | \n",
" 7.43 ± 0.62 (124) | \n",
" 9193.00, 0.903 | \n",
" 0.88, 0.456 | \n",
"
\n",
" \n",
" Burst event ratio | \n",
" 0.22 ± 0.01 (147) | \n",
" 0.21 ± 0.01 (124) | \n",
" 8548.00, 0.379 | \n",
" 0.01, 0.370 | \n",
"
\n",
" \n",
" Specificity | \n",
" 0.45 ± 0.02 (147) | \n",
" 0.42 ± 0.02 (124) | \n",
" 8221.00, 0.165 | \n",
" 0.03, 0.167 | \n",
"
\n",
" \n",
" Speed score | \n",
" 0.13 ± 0.01 (147) | \n",
" 0.11 ± 0.01 (124) | \n",
" 7793.00, 0.040 | \n",
" 0.02, 0.046 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Baseline Stimulated \\\n",
"Average rate 10.05 ± 0.65 (147) 9.81 ± 0.69 (124) \n",
"Gridness 0.54 ± 0.03 (147) 0.43 ± 0.03 (124) \n",
"Sparsity 0.66 ± 0.02 (147) 0.69 ± 0.02 (124) \n",
"Selectivity 5.35 ± 0.24 (147) 5.28 ± 0.32 (124) \n",
"Information specificity 0.21 ± 0.02 (147) 0.18 ± 0.02 (124) \n",
"Max rate 37.74 ± 1.40 (147) 34.65 ± 1.30 (124) \n",
"Information rate 1.18 ± 0.05 (147) 0.93 ± 0.04 (124) \n",
"Interspike interval cv 2.34 ± 0.06 (147) 2.25 ± 0.07 (124) \n",
"In-field mean rate 15.79 ± 0.82 (147) 14.46 ± 0.79 (124) \n",
"Out-field mean rate 7.41 ± 0.58 (147) 7.43 ± 0.62 (124) \n",
"Burst event ratio 0.22 ± 0.01 (147) 0.21 ± 0.01 (124) \n",
"Specificity 0.45 ± 0.02 (147) 0.42 ± 0.02 (124) \n",
"Speed score 0.13 ± 0.01 (147) 0.11 ± 0.01 (124) \n",
"\n",
" MWU PRS \n",
"Average rate 9040.00, 0.909 0.56, 0.717 \n",
"Gridness 7516.00, 0.013 0.17, 0.004 \n",
"Sparsity 10275.00, 0.071 0.04, 0.161 \n",
"Selectivity 8488.00, 0.330 0.23, 0.450 \n",
"Information specificity 7883.00, 0.056 0.03, 0.103 \n",
"Max rate 8165.00, 0.140 2.31, 0.108 \n",
"Information rate 6772.00, 0.000 0.18, 0.008 \n",
"Interspike interval cv 8361.00, 0.242 0.07, 0.500 \n",
"In-field mean rate 8526.00, 0.361 0.67, 0.638 \n",
"Out-field mean rate 9193.00, 0.903 0.88, 0.456 \n",
"Burst event ratio 8548.00, 0.379 0.01, 0.370 \n",
"Specificity 8221.00, 0.165 0.03, 0.167 \n",
"Speed score 7793.00, 0.040 0.02, 0.046 "
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"_stim_data = gridcell_sessions.query('stimulated')\n",
"_base_data = gridcell_sessions.query('baseline')\n",
"\n",
"result = pd.DataFrame()\n",
"\n",
"result['Baseline'] = _base_data[columns].agg(summarize)\n",
"result['Stimulated'] = _stim_data[columns].agg(summarize)\n",
"\n",
"\n",
"result.index = map(rename, result.index)\n",
"\n",
"result['MWU'] = list(map(lambda x: MWU(x, _stim_data, _base_data), columns))\n",
"result['PRS'] = list(map(lambda x: PRS(x, _stim_data, _base_data), columns))\n",
"\n",
"result.to_latex(output_path / \"statistics\" / \"statistics.tex\")\n",
"result.to_latex(output_path / \"statistics\" / \"statistics.csv\")\n",
"result"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Baseline | \n",
" 11 Hz | \n",
" MWU | \n",
" PRS | \n",
"
\n",
" \n",
" \n",
" \n",
" Average rate | \n",
" 9.82 ± 0.91 (70) | \n",
" 9.28 ± 0.90 (65) | \n",
" 2175.00, 0.661 | \n",
" 0.18, 0.933 | \n",
"
\n",
" \n",
" Gridness | \n",
" 0.54 ± 0.05 (70) | \n",
" 0.42 ± 0.05 (65) | \n",
" 1822.00, 0.046 | \n",
" 0.17, 0.052 | \n",
"
\n",
" \n",
" Sparsity | \n",
" 0.65 ± 0.02 (70) | \n",
" 0.69 ± 0.02 (65) | \n",
" 2578.00, 0.183 | \n",
" 0.06, 0.147 | \n",
"
\n",
" \n",
" Selectivity | \n",
" 5.25 ± 0.35 (70) | \n",
" 5.43 ± 0.48 (65) | \n",
" 2214.00, 0.790 | \n",
" 0.05, 0.961 | \n",
"
\n",
" \n",
" Information specificity | \n",
" 0.22 ± 0.03 (70) | \n",
" 0.19 ± 0.03 (65) | \n",
" 1888.00, 0.089 | \n",
" 0.05, 0.020 | \n",
"
\n",
" \n",
" Max rate | \n",
" 36.77 ± 1.96 (70) | \n",
" 33.16 ± 1.79 (65) | \n",
" 1971.00, 0.181 | \n",
" 3.18, 0.250 | \n",
"
\n",
" \n",
" Information rate | \n",
" 1.22 ± 0.06 (70) | \n",
" 0.89 ± 0.06 (65) | \n",
" 1431.00, 0.000 | \n",
" 0.20, 0.006 | \n",
"
\n",
" \n",
" Interspike interval cv | \n",
" 2.37 ± 0.09 (70) | \n",
" 2.24 ± 0.09 (65) | \n",
" 2022.00, 0.266 | \n",
" 0.12, 0.520 | \n",
"
\n",
" \n",
" In-field mean rate | \n",
" 15.52 ± 1.15 (70) | \n",
" 13.80 ± 1.06 (65) | \n",
" 2064.00, 0.354 | \n",
" 0.63, 0.738 | \n",
"
\n",
" \n",
" Out-field mean rate | \n",
" 7.09 ± 0.77 (70) | \n",
" 7.00 ± 0.80 (65) | \n",
" 2236.00, 0.865 | \n",
" 0.01, 0.979 | \n",
"
\n",
" \n",
" Burst event ratio | \n",
" 0.23 ± 0.01 (70) | \n",
" 0.23 ± 0.01 (65) | \n",
" 2307.00, 0.890 | \n",
" 0.01, 0.732 | \n",
"
\n",
" \n",
" Specificity | \n",
" 0.45 ± 0.03 (70) | \n",
" 0.42 ± 0.03 (65) | \n",
" 2049.00, 0.321 | \n",
" 0.01, 0.476 | \n",
"
\n",
" \n",
" Speed score | \n",
" 0.14 ± 0.01 (70) | \n",
" 0.12 ± 0.01 (65) | \n",
" 1939.00, 0.140 | \n",
" 0.03, 0.069 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Baseline 11 Hz MWU \\\n",
"Average rate 9.82 ± 0.91 (70) 9.28 ± 0.90 (65) 2175.00, 0.661 \n",
"Gridness 0.54 ± 0.05 (70) 0.42 ± 0.05 (65) 1822.00, 0.046 \n",
"Sparsity 0.65 ± 0.02 (70) 0.69 ± 0.02 (65) 2578.00, 0.183 \n",
"Selectivity 5.25 ± 0.35 (70) 5.43 ± 0.48 (65) 2214.00, 0.790 \n",
"Information specificity 0.22 ± 0.03 (70) 0.19 ± 0.03 (65) 1888.00, 0.089 \n",
"Max rate 36.77 ± 1.96 (70) 33.16 ± 1.79 (65) 1971.00, 0.181 \n",
"Information rate 1.22 ± 0.06 (70) 0.89 ± 0.06 (65) 1431.00, 0.000 \n",
"Interspike interval cv 2.37 ± 0.09 (70) 2.24 ± 0.09 (65) 2022.00, 0.266 \n",
"In-field mean rate 15.52 ± 1.15 (70) 13.80 ± 1.06 (65) 2064.00, 0.354 \n",
"Out-field mean rate 7.09 ± 0.77 (70) 7.00 ± 0.80 (65) 2236.00, 0.865 \n",
"Burst event ratio 0.23 ± 0.01 (70) 0.23 ± 0.01 (65) 2307.00, 0.890 \n",
"Specificity 0.45 ± 0.03 (70) 0.42 ± 0.03 (65) 2049.00, 0.321 \n",
"Speed score 0.14 ± 0.01 (70) 0.12 ± 0.01 (65) 1939.00, 0.140 \n",
"\n",
" PRS \n",
"Average rate 0.18, 0.933 \n",
"Gridness 0.17, 0.052 \n",
"Sparsity 0.06, 0.147 \n",
"Selectivity 0.05, 0.961 \n",
"Information specificity 0.05, 0.020 \n",
"Max rate 3.18, 0.250 \n",
"Information rate 0.20, 0.006 \n",
"Interspike interval cv 0.12, 0.520 \n",
"In-field mean rate 0.63, 0.738 \n",
"Out-field mean rate 0.01, 0.979 \n",
"Burst event ratio 0.01, 0.732 \n",
"Specificity 0.01, 0.476 \n",
"Speed score 0.03, 0.069 "
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"_stim_data = stimulated_11\n",
"_base_data = baseline_i\n",
"\n",
"result = pd.DataFrame()\n",
"\n",
"result['Baseline'] = _base_data[columns].agg(summarize)\n",
"result['11 Hz'] = _stim_data[columns].agg(summarize)\n",
"\n",
"\n",
"result.index = map(rename, result.index)\n",
"\n",
"result['MWU'] = list(map(lambda x: MWU(x, _stim_data, _base_data), columns))\n",
"result['PRS'] = list(map(lambda x: PRS(x, _stim_data, _base_data), columns))\n",
"\n",
"\n",
"result.to_latex(output_path / \"statistics\" / \"statistics_11.tex\")\n",
"result.to_latex(output_path / \"statistics\" / \"statistics_11.csv\")\n",
"result"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Baseline | \n",
" 30 Hz | \n",
" MWU | \n",
" PRS | \n",
"
\n",
" \n",
" \n",
" \n",
" Average rate | \n",
" 10.08 ± 1.05 (61) | \n",
" 9.94 ± 1.17 (49) | \n",
" 1491.00, 0.986 | \n",
" 0.24, 0.763 | \n",
"
\n",
" \n",
" Gridness | \n",
" 0.53 ± 0.05 (61) | \n",
" 0.46 ± 0.06 (49) | \n",
" 1342.00, 0.361 | \n",
" 0.08, 0.289 | \n",
"
\n",
" \n",
" Sparsity | \n",
" 0.67 ± 0.02 (61) | \n",
" 0.69 ± 0.03 (49) | \n",
" 1622.00, 0.445 | \n",
" 0.03, 0.466 | \n",
"
\n",
" \n",
" Selectivity | \n",
" 5.34 ± 0.38 (61) | \n",
" 5.21 ± 0.46 (49) | \n",
" 1372.00, 0.463 | \n",
" 0.37, 0.420 | \n",
"
\n",
" \n",
" Information specificity | \n",
" 0.19 ± 0.02 (61) | \n",
" 0.18 ± 0.03 (49) | \n",
" 1380.00, 0.493 | \n",
" 0.01, 0.725 | \n",
"
\n",
" \n",
" Max rate | \n",
" 37.61 ± 2.31 (61) | \n",
" 34.42 ± 1.99 (49) | \n",
" 1342.00, 0.361 | \n",
" 2.37, 0.351 | \n",
"
\n",
" \n",
" Information rate | \n",
" 1.08 ± 0.08 (61) | \n",
" 0.95 ± 0.07 (49) | \n",
" 1321.00, 0.298 | \n",
" 0.14, 0.413 | \n",
"
\n",
" \n",
" Interspike interval cv | \n",
" 2.28 ± 0.09 (61) | \n",
" 2.24 ± 0.11 (49) | \n",
" 1419.00, 0.652 | \n",
" 0.06, 0.740 | \n",
"
\n",
" \n",
" In-field mean rate | \n",
" 15.61 ± 1.32 (61) | \n",
" 14.54 ± 1.29 (49) | \n",
" 1418.00, 0.648 | \n",
" 0.64, 0.675 | \n",
"
\n",
" \n",
" Out-field mean rate | \n",
" 7.65 ± 0.96 (61) | \n",
" 7.54 ± 1.06 (49) | \n",
" 1487.00, 0.966 | \n",
" 0.37, 0.789 | \n",
"
\n",
" \n",
" Burst event ratio | \n",
" 0.21 ± 0.01 (61) | \n",
" 0.19 ± 0.01 (49) | \n",
" 1241.00, 0.128 | \n",
" 0.04, 0.037 | \n",
"
\n",
" \n",
" Specificity | \n",
" 0.42 ± 0.03 (61) | \n",
" 0.42 ± 0.03 (49) | \n",
" 1429.00, 0.696 | \n",
" 0.03, 0.495 | \n",
"
\n",
" \n",
" Speed score | \n",
" 0.12 ± 0.01 (61) | \n",
" 0.11 ± 0.01 (49) | \n",
" 1335.00, 0.339 | \n",
" 0.01, 0.545 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Baseline 30 Hz MWU \\\n",
"Average rate 10.08 ± 1.05 (61) 9.94 ± 1.17 (49) 1491.00, 0.986 \n",
"Gridness 0.53 ± 0.05 (61) 0.46 ± 0.06 (49) 1342.00, 0.361 \n",
"Sparsity 0.67 ± 0.02 (61) 0.69 ± 0.03 (49) 1622.00, 0.445 \n",
"Selectivity 5.34 ± 0.38 (61) 5.21 ± 0.46 (49) 1372.00, 0.463 \n",
"Information specificity 0.19 ± 0.02 (61) 0.18 ± 0.03 (49) 1380.00, 0.493 \n",
"Max rate 37.61 ± 2.31 (61) 34.42 ± 1.99 (49) 1342.00, 0.361 \n",
"Information rate 1.08 ± 0.08 (61) 0.95 ± 0.07 (49) 1321.00, 0.298 \n",
"Interspike interval cv 2.28 ± 0.09 (61) 2.24 ± 0.11 (49) 1419.00, 0.652 \n",
"In-field mean rate 15.61 ± 1.32 (61) 14.54 ± 1.29 (49) 1418.00, 0.648 \n",
"Out-field mean rate 7.65 ± 0.96 (61) 7.54 ± 1.06 (49) 1487.00, 0.966 \n",
"Burst event ratio 0.21 ± 0.01 (61) 0.19 ± 0.01 (49) 1241.00, 0.128 \n",
"Specificity 0.42 ± 0.03 (61) 0.42 ± 0.03 (49) 1429.00, 0.696 \n",
"Speed score 0.12 ± 0.01 (61) 0.11 ± 0.01 (49) 1335.00, 0.339 \n",
"\n",
" PRS \n",
"Average rate 0.24, 0.763 \n",
"Gridness 0.08, 0.289 \n",
"Sparsity 0.03, 0.466 \n",
"Selectivity 0.37, 0.420 \n",
"Information specificity 0.01, 0.725 \n",
"Max rate 2.37, 0.351 \n",
"Information rate 0.14, 0.413 \n",
"Interspike interval cv 0.06, 0.740 \n",
"In-field mean rate 0.64, 0.675 \n",
"Out-field mean rate 0.37, 0.789 \n",
"Burst event ratio 0.04, 0.037 \n",
"Specificity 0.03, 0.495 \n",
"Speed score 0.01, 0.545 "
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"_stim_data = stimulated_30\n",
"_base_data = baseline_ii\n",
"\n",
"result = pd.DataFrame()\n",
"\n",
"result['Baseline'] = _base_data[columns].agg(summarize)\n",
"result['30 Hz'] = _stim_data[columns].agg(summarize)\n",
"\n",
"result.index = map(rename, result.index)\n",
"\n",
"result['MWU'] = list(map(lambda x: MWU(x, _stim_data, _base_data), columns))\n",
"result['PRS'] = list(map(lambda x: PRS(x, _stim_data, _base_data), columns))\n",
"\n",
"\n",
"result.to_latex(output_path / \"statistics\" / \"statistics_30.tex\")\n",
"result.to_latex(output_path / \"statistics\" / \"statistics_30.csv\")\n",
"result"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" 11 Hz | \n",
" 30 Hz | \n",
" MWU | \n",
" PRS | \n",
"
\n",
" \n",
" \n",
" \n",
" Average rate | \n",
" 9.28 ± 0.90 (65) | \n",
" 9.94 ± 1.17 (49) | \n",
" 1641.00, 0.784 | \n",
" 0.09, 0.925 | \n",
"
\n",
" \n",
" Gridness | \n",
" 0.42 ± 0.05 (65) | \n",
" 0.46 ± 0.06 (49) | \n",
" 1739.00, 0.403 | \n",
" 0.09, 0.420 | \n",
"
\n",
" \n",
" Sparsity | \n",
" 0.69 ± 0.02 (65) | \n",
" 0.69 ± 0.03 (49) | \n",
" 1618.00, 0.886 | \n",
" 0.01, 0.660 | \n",
"
\n",
" \n",
" Selectivity | \n",
" 5.43 ± 0.48 (65) | \n",
" 5.21 ± 0.46 (49) | \n",
" 1548.00, 0.801 | \n",
" 0.17, 0.835 | \n",
"
\n",
" \n",
" Information specificity | \n",
" 0.19 ± 0.03 (65) | \n",
" 0.18 ± 0.03 (49) | \n",
" 1569.00, 0.895 | \n",
" 0.01, 0.783 | \n",
"
\n",
" \n",
" Max rate | \n",
" 33.16 ± 1.79 (65) | \n",
" 34.42 ± 1.99 (49) | \n",
" 1681.00, 0.614 | \n",
" 1.38, 0.740 | \n",
"
\n",
" \n",
" Information rate | \n",
" 0.89 ± 0.06 (65) | \n",
" 0.95 ± 0.07 (49) | \n",
" 1701.00, 0.536 | \n",
" 0.07, 0.480 | \n",
"
\n",
" \n",
" Interspike interval cv | \n",
" 2.24 ± 0.09 (65) | \n",
" 2.24 ± 0.11 (49) | \n",
" 1583.00, 0.959 | \n",
" 0.05, 0.814 | \n",
"
\n",
" \n",
" In-field mean rate | \n",
" 13.80 ± 1.06 (65) | \n",
" 14.54 ± 1.29 (49) | \n",
" 1658.00, 0.710 | \n",
" 0.88, 0.678 | \n",
"
\n",
" \n",
" Out-field mean rate | \n",
" 7.00 ± 0.80 (65) | \n",
" 7.54 ± 1.06 (49) | \n",
" 1631.00, 0.828 | \n",
" 0.38, 0.923 | \n",
"
\n",
" \n",
" Burst event ratio | \n",
" 0.23 ± 0.01 (65) | \n",
" 0.19 ± 0.01 (49) | \n",
" 1093.00, 0.004 | \n",
" 0.05, 0.004 | \n",
"
\n",
" \n",
" Specificity | \n",
" 0.42 ± 0.03 (65) | \n",
" 0.42 ± 0.03 (49) | \n",
" 1559.00, 0.850 | \n",
" 0.01, 0.597 | \n",
"
\n",
" \n",
" Speed score | \n",
" 0.12 ± 0.01 (65) | \n",
" 0.11 ± 0.01 (49) | \n",
" 1459.00, 0.446 | \n",
" 0.01, 0.397 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 11 Hz 30 Hz MWU \\\n",
"Average rate 9.28 ± 0.90 (65) 9.94 ± 1.17 (49) 1641.00, 0.784 \n",
"Gridness 0.42 ± 0.05 (65) 0.46 ± 0.06 (49) 1739.00, 0.403 \n",
"Sparsity 0.69 ± 0.02 (65) 0.69 ± 0.03 (49) 1618.00, 0.886 \n",
"Selectivity 5.43 ± 0.48 (65) 5.21 ± 0.46 (49) 1548.00, 0.801 \n",
"Information specificity 0.19 ± 0.03 (65) 0.18 ± 0.03 (49) 1569.00, 0.895 \n",
"Max rate 33.16 ± 1.79 (65) 34.42 ± 1.99 (49) 1681.00, 0.614 \n",
"Information rate 0.89 ± 0.06 (65) 0.95 ± 0.07 (49) 1701.00, 0.536 \n",
"Interspike interval cv 2.24 ± 0.09 (65) 2.24 ± 0.11 (49) 1583.00, 0.959 \n",
"In-field mean rate 13.80 ± 1.06 (65) 14.54 ± 1.29 (49) 1658.00, 0.710 \n",
"Out-field mean rate 7.00 ± 0.80 (65) 7.54 ± 1.06 (49) 1631.00, 0.828 \n",
"Burst event ratio 0.23 ± 0.01 (65) 0.19 ± 0.01 (49) 1093.00, 0.004 \n",
"Specificity 0.42 ± 0.03 (65) 0.42 ± 0.03 (49) 1559.00, 0.850 \n",
"Speed score 0.12 ± 0.01 (65) 0.11 ± 0.01 (49) 1459.00, 0.446 \n",
"\n",
" PRS \n",
"Average rate 0.09, 0.925 \n",
"Gridness 0.09, 0.420 \n",
"Sparsity 0.01, 0.660 \n",
"Selectivity 0.17, 0.835 \n",
"Information specificity 0.01, 0.783 \n",
"Max rate 1.38, 0.740 \n",
"Information rate 0.07, 0.480 \n",
"Interspike interval cv 0.05, 0.814 \n",
"In-field mean rate 0.88, 0.678 \n",
"Out-field mean rate 0.38, 0.923 \n",
"Burst event ratio 0.05, 0.004 \n",
"Specificity 0.01, 0.597 \n",
"Speed score 0.01, 0.397 "
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"_stim_data = stimulated_30\n",
"_base_data = stimulated_11\n",
"\n",
"result = pd.DataFrame()\n",
"\n",
"result['11 Hz'] = _base_data[columns].agg(summarize)\n",
"result['30 Hz'] = _stim_data[columns].agg(summarize)\n",
"\n",
"\n",
"result.index = map(rename, result.index)\n",
"\n",
"result['MWU'] = list(map(lambda x: MWU(x, _stim_data, _base_data), columns))\n",
"result['PRS'] = list(map(lambda x: PRS(x, _stim_data, _base_data), columns))\n",
"\n",
"\n",
"result.to_latex(output_path / \"statistics\" / \"statistics_11_vs_30.tex\")\n",
"result.to_latex(output_path / \"statistics\" / \"statistics_11_vs_30.csv\")\n",
"result"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Baseline I | \n",
" Baseline II | \n",
" MWU | \n",
" PRS | \n",
"
\n",
" \n",
" \n",
" \n",
" Average rate | \n",
" 9.82 ± 0.91 (70) | \n",
" 10.08 ± 1.05 (61) | \n",
" 2166.00, 0.888 | \n",
" 0.15, 0.852 | \n",
"
\n",
" \n",
" Gridness | \n",
" 0.54 ± 0.05 (70) | \n",
" 0.53 ± 0.05 (61) | \n",
" 2158.00, 0.917 | \n",
" 0.00, 0.983 | \n",
"
\n",
" \n",
" Sparsity | \n",
" 0.65 ± 0.02 (70) | \n",
" 0.67 ± 0.02 (61) | \n",
" 2001.00, 0.538 | \n",
" 0.04, 0.361 | \n",
"
\n",
" \n",
" Selectivity | \n",
" 5.25 ± 0.35 (70) | \n",
" 5.34 ± 0.38 (61) | \n",
" 2062.00, 0.738 | \n",
" 0.25, 0.594 | \n",
"
\n",
" \n",
" Information specificity | \n",
" 0.22 ± 0.03 (70) | \n",
" 0.19 ± 0.02 (61) | \n",
" 2329.00, 0.372 | \n",
" 0.05, 0.143 | \n",
"
\n",
" \n",
" Max rate | \n",
" 36.77 ± 1.96 (70) | \n",
" 37.61 ± 2.31 (61) | \n",
" 2088.00, 0.830 | \n",
" 0.58, 0.784 | \n",
"
\n",
" \n",
" Information rate | \n",
" 1.22 ± 0.06 (70) | \n",
" 1.08 ± 0.08 (61) | \n",
" 2501.00, 0.092 | \n",
" 0.14, 0.151 | \n",
"
\n",
" \n",
" Interspike interval cv | \n",
" 2.37 ± 0.09 (70) | \n",
" 2.28 ± 0.09 (61) | \n",
" 2257.00, 0.575 | \n",
" 0.01, 0.928 | \n",
"
\n",
" \n",
" In-field mean rate | \n",
" 15.52 ± 1.15 (70) | \n",
" 15.61 ± 1.32 (61) | \n",
" 2162.00, 0.903 | \n",
" 0.87, 0.724 | \n",
"
\n",
" \n",
" Out-field mean rate | \n",
" 7.09 ± 0.77 (70) | \n",
" 7.65 ± 0.96 (61) | \n",
" 2115.00, 0.928 | \n",
" 0.02, 0.986 | \n",
"
\n",
" \n",
" Burst event ratio | \n",
" 0.23 ± 0.01 (70) | \n",
" 0.21 ± 0.01 (61) | \n",
" 2299.00, 0.451 | \n",
" 0.00, 0.830 | \n",
"
\n",
" \n",
" Specificity | \n",
" 0.45 ± 0.03 (70) | \n",
" 0.42 ± 0.03 (61) | \n",
" 2245.00, 0.613 | \n",
" 0.01, 0.921 | \n",
"
\n",
" \n",
" Speed score | \n",
" 0.14 ± 0.01 (70) | \n",
" 0.12 ± 0.01 (61) | \n",
" 2423.00, 0.185 | \n",
" 0.04, 0.042 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Baseline I Baseline II MWU \\\n",
"Average rate 9.82 ± 0.91 (70) 10.08 ± 1.05 (61) 2166.00, 0.888 \n",
"Gridness 0.54 ± 0.05 (70) 0.53 ± 0.05 (61) 2158.00, 0.917 \n",
"Sparsity 0.65 ± 0.02 (70) 0.67 ± 0.02 (61) 2001.00, 0.538 \n",
"Selectivity 5.25 ± 0.35 (70) 5.34 ± 0.38 (61) 2062.00, 0.738 \n",
"Information specificity 0.22 ± 0.03 (70) 0.19 ± 0.02 (61) 2329.00, 0.372 \n",
"Max rate 36.77 ± 1.96 (70) 37.61 ± 2.31 (61) 2088.00, 0.830 \n",
"Information rate 1.22 ± 0.06 (70) 1.08 ± 0.08 (61) 2501.00, 0.092 \n",
"Interspike interval cv 2.37 ± 0.09 (70) 2.28 ± 0.09 (61) 2257.00, 0.575 \n",
"In-field mean rate 15.52 ± 1.15 (70) 15.61 ± 1.32 (61) 2162.00, 0.903 \n",
"Out-field mean rate 7.09 ± 0.77 (70) 7.65 ± 0.96 (61) 2115.00, 0.928 \n",
"Burst event ratio 0.23 ± 0.01 (70) 0.21 ± 0.01 (61) 2299.00, 0.451 \n",
"Specificity 0.45 ± 0.03 (70) 0.42 ± 0.03 (61) 2245.00, 0.613 \n",
"Speed score 0.14 ± 0.01 (70) 0.12 ± 0.01 (61) 2423.00, 0.185 \n",
"\n",
" PRS \n",
"Average rate 0.15, 0.852 \n",
"Gridness 0.00, 0.983 \n",
"Sparsity 0.04, 0.361 \n",
"Selectivity 0.25, 0.594 \n",
"Information specificity 0.05, 0.143 \n",
"Max rate 0.58, 0.784 \n",
"Information rate 0.14, 0.151 \n",
"Interspike interval cv 0.01, 0.928 \n",
"In-field mean rate 0.87, 0.724 \n",
"Out-field mean rate 0.02, 0.986 \n",
"Burst event ratio 0.00, 0.830 \n",
"Specificity 0.01, 0.921 \n",
"Speed score 0.04, 0.042 "
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"_stim_data = baseline_i\n",
"_base_data = baseline_ii\n",
"\n",
"result = pd.DataFrame()\n",
"\n",
"result['Baseline I'] = _stim_data[columns].agg(summarize)\n",
"result['Baseline II'] = _base_data[columns].agg(summarize)\n",
"\n",
"result.index = map(rename, result.index)\n",
"\n",
"result['MWU'] = list(map(lambda x: MWU(x, _stim_data, _base_data), columns))\n",
"result['PRS'] = list(map(lambda x: PRS(x, _stim_data, _base_data), columns))\n",
"\n",
"\n",
"result.to_latex(output_path / \"statistics\" / \"statistics_base_i_vs_base_ii.tex\")\n",
"result.to_latex(output_path / \"statistics\" / \"statistics_base_i_vs_base_ii.csv\")\n",
"result"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Violinplot"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"plt.rc('axes', titlesize=12)\n",
"plt.rcParams.update({\n",
" 'font.size': 12, \n",
" 'figure.figsize': (1.7, 3), \n",
" 'figure.dpi': 150\n",
"})"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [],
"source": [
"stuff = {\n",
" '': {\n",
" 'base': gridcell_sessions.query('baseline'),\n",
" 'stim': gridcell_sessions.query('stimulated')\n",
" },\n",
" '_11': {\n",
" 'base': baseline_i,\n",
" 'stim': stimulated_11\n",
" },\n",
" '_30': {\n",
" 'base': baseline_ii,\n",
" 'stim': stimulated_30\n",
" }\n",
"}\n",
"\n",
"label = {\n",
" '': ['Baseline ', ' Stimulated'],\n",
" '_11': ['Baseline I ', ' 11 Hz'],\n",
" '_30': ['Baseline II ', ' 30 Hz']\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Information rate"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"U-test: U value 10345.0 p value 0.0555771740141912\n",
"_11\n",
"U-test: U value 2662.0 p value 0.08875139162540739\n",
"_30\n",
"U-test: U value 1609.0 p value 0.49296516393290757\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"