{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Time domain averages (wide)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Read and check the epochs"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/turbach/miniconda3/envs/mckonda_spudtr_dev/lib/python3.6/site-packages/pyarrow/pandas_compat.py:752: FutureWarning: .labels was deprecated in version 0.24.0. Use .codes instead.\n",
" labels, = index.labels\n"
]
},
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" epoch_id | \n",
" time_ms | \n",
" sub_id | \n",
" eeg_artifact | \n",
" dblock_path | \n",
" log_evcodes | \n",
" log_ccodes | \n",
" dblock_srate | \n",
" ccode | \n",
" instrument | \n",
" ... | \n",
" RMOc | \n",
" LLTe | \n",
" RLTe | \n",
" LLOc | \n",
" RLOc | \n",
" MiOc | \n",
" A2 | \n",
" HEOG | \n",
" rle | \n",
" rhz | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0 | \n",
" -748 | \n",
" sub000 | \n",
" 0 | \n",
" sub000/dblock_0 | \n",
" 0 | \n",
" 0 | \n",
" 250.0 | \n",
" 1 | \n",
" eeg | \n",
" ... | \n",
" -25.093750 | \n",
" -0.753906 | \n",
" 1.480469 | \n",
" -13.414062 | \n",
" -18.937500 | \n",
" -17.734375 | \n",
" 5.660156 | \n",
" 98.875000 | \n",
" -39.500000 | \n",
" 38.375000 | \n",
"
\n",
" \n",
" 1 | \n",
" 0 | \n",
" -744 | \n",
" sub000 | \n",
" 0 | \n",
" sub000/dblock_0 | \n",
" 0 | \n",
" 0 | \n",
" 250.0 | \n",
" 1 | \n",
" eeg | \n",
" ... | \n",
" -24.593750 | \n",
" 0.502441 | \n",
" -2.466797 | \n",
" -17.640625 | \n",
" -17.468750 | \n",
" -15.304688 | \n",
" 1.968750 | \n",
" 104.750000 | \n",
" -38.031250 | \n",
" 41.281250 | \n",
"
\n",
" \n",
" 2 | \n",
" 0 | \n",
" -740 | \n",
" sub000 | \n",
" 0 | \n",
" sub000/dblock_0 | \n",
" 0 | \n",
" 0 | \n",
" 250.0 | \n",
" 1 | \n",
" eeg | \n",
" ... | \n",
" -16.484375 | \n",
" -1.507812 | \n",
" 3.947266 | \n",
" -15.648438 | \n",
" -10.085938 | \n",
" -11.171875 | \n",
" 8.367188 | \n",
" 102.062500 | \n",
" -33.656250 | \n",
" 43.718750 | \n",
"
\n",
" \n",
" 3 | \n",
" 0 | \n",
" -736 | \n",
" sub000 | \n",
" 0 | \n",
" sub000/dblock_0 | \n",
" 0 | \n",
" 0 | \n",
" 250.0 | \n",
" 1 | \n",
" eeg | \n",
" ... | \n",
" -11.804688 | \n",
" -15.070312 | \n",
" 9.867188 | \n",
" -14.906250 | \n",
" -7.378906 | \n",
" -8.742188 | \n",
" 9.351562 | \n",
" 100.562500 | \n",
" -42.906250 | \n",
" 37.406250 | \n",
"
\n",
" \n",
" 4 | \n",
" 0 | \n",
" -732 | \n",
" sub000 | \n",
" 0 | \n",
" sub000/dblock_0 | \n",
" 0 | \n",
" 0 | \n",
" 250.0 | \n",
" 1 | \n",
" eeg | \n",
" ... | \n",
" -6.394531 | \n",
" -4.019531 | \n",
" 9.125000 | \n",
" -10.679688 | \n",
" -6.886719 | \n",
" -8.015625 | \n",
" 8.125000 | \n",
" 98.375000 | \n",
" -43.875000 | \n",
" 37.906250 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 224995 | \n",
" 600 | \n",
" 732 | \n",
" sub000 | \n",
" 0 | \n",
" sub000/dblock_4 | \n",
" 0 | \n",
" 0 | \n",
" 250.0 | \n",
" 0 | \n",
" cal | \n",
" ... | \n",
" -4.671875 | \n",
" -3.517578 | \n",
" -4.441406 | \n",
" -4.718750 | \n",
" -4.671875 | \n",
" -3.400391 | \n",
" -4.429688 | \n",
" -4.406250 | \n",
" -3.900391 | \n",
" -4.371094 | \n",
"
\n",
" \n",
" 224996 | \n",
" 600 | \n",
" 736 | \n",
" sub000 | \n",
" 0 | \n",
" sub000/dblock_4 | \n",
" 0 | \n",
" 0 | \n",
" 250.0 | \n",
" 0 | \n",
" cal | \n",
" ... | \n",
" -4.179688 | \n",
" -4.019531 | \n",
" -4.195312 | \n",
" -4.222656 | \n",
" -4.425781 | \n",
" -3.644531 | \n",
" -4.429688 | \n",
" -4.160156 | \n",
" -3.412109 | \n",
" -4.371094 | \n",
"
\n",
" \n",
" 224997 | \n",
" 600 | \n",
" 740 | \n",
" sub000 | \n",
" 0 | \n",
" sub000/dblock_4 | \n",
" 0 | \n",
" 0 | \n",
" 250.0 | \n",
" 0 | \n",
" cal | \n",
" ... | \n",
" -4.425781 | \n",
" -3.767578 | \n",
" -4.441406 | \n",
" -3.974609 | \n",
" -4.425781 | \n",
" -3.400391 | \n",
" -4.429688 | \n",
" -4.160156 | \n",
" -3.900391 | \n",
" -4.859375 | \n",
"
\n",
" \n",
" 224998 | \n",
" 600 | \n",
" 744 | \n",
" sub000 | \n",
" 0 | \n",
" sub000/dblock_4 | \n",
" 0 | \n",
" 0 | \n",
" 250.0 | \n",
" 0 | \n",
" cal | \n",
" ... | \n",
" -4.425781 | \n",
" -4.269531 | \n",
" -4.195312 | \n",
" -4.222656 | \n",
" -4.425781 | \n",
" -3.886719 | \n",
" -4.429688 | \n",
" -4.406250 | \n",
" -3.900391 | \n",
" -4.371094 | \n",
"
\n",
" \n",
" 224999 | \n",
" 600 | \n",
" 748 | \n",
" sub000 | \n",
" 0 | \n",
" sub000/dblock_4 | \n",
" 0 | \n",
" 0 | \n",
" 250.0 | \n",
" 0 | \n",
" cal | \n",
" ... | \n",
" -4.179688 | \n",
" -4.019531 | \n",
" -3.947266 | \n",
" -4.222656 | \n",
" -4.179688 | \n",
" -3.400391 | \n",
" -4.183594 | \n",
" -4.406250 | \n",
" -3.412109 | \n",
" -4.371094 | \n",
"
\n",
" \n",
"
\n",
"
225000 rows × 47 columns
\n",
"
"
],
"text/plain": [
" epoch_id time_ms sub_id eeg_artifact dblock_path log_evcodes \\\n",
"0 0 -748 sub000 0 sub000/dblock_0 0 \n",
"1 0 -744 sub000 0 sub000/dblock_0 0 \n",
"2 0 -740 sub000 0 sub000/dblock_0 0 \n",
"3 0 -736 sub000 0 sub000/dblock_0 0 \n",
"4 0 -732 sub000 0 sub000/dblock_0 0 \n",
"... ... ... ... ... ... ... \n",
"224995 600 732 sub000 0 sub000/dblock_4 0 \n",
"224996 600 736 sub000 0 sub000/dblock_4 0 \n",
"224997 600 740 sub000 0 sub000/dblock_4 0 \n",
"224998 600 744 sub000 0 sub000/dblock_4 0 \n",
"224999 600 748 sub000 0 sub000/dblock_4 0 \n",
"\n",
" log_ccodes dblock_srate ccode instrument ... RMOc LLTe \\\n",
"0 0 250.0 1 eeg ... -25.093750 -0.753906 \n",
"1 0 250.0 1 eeg ... -24.593750 0.502441 \n",
"2 0 250.0 1 eeg ... -16.484375 -1.507812 \n",
"3 0 250.0 1 eeg ... -11.804688 -15.070312 \n",
"4 0 250.0 1 eeg ... -6.394531 -4.019531 \n",
"... ... ... ... ... ... ... ... \n",
"224995 0 250.0 0 cal ... -4.671875 -3.517578 \n",
"224996 0 250.0 0 cal ... -4.179688 -4.019531 \n",
"224997 0 250.0 0 cal ... -4.425781 -3.767578 \n",
"224998 0 250.0 0 cal ... -4.425781 -4.269531 \n",
"224999 0 250.0 0 cal ... -4.179688 -4.019531 \n",
"\n",
" RLTe LLOc RLOc MiOc A2 HEOG \\\n",
"0 1.480469 -13.414062 -18.937500 -17.734375 5.660156 98.875000 \n",
"1 -2.466797 -17.640625 -17.468750 -15.304688 1.968750 104.750000 \n",
"2 3.947266 -15.648438 -10.085938 -11.171875 8.367188 102.062500 \n",
"3 9.867188 -14.906250 -7.378906 -8.742188 9.351562 100.562500 \n",
"4 9.125000 -10.679688 -6.886719 -8.015625 8.125000 98.375000 \n",
"... ... ... ... ... ... ... \n",
"224995 -4.441406 -4.718750 -4.671875 -3.400391 -4.429688 -4.406250 \n",
"224996 -4.195312 -4.222656 -4.425781 -3.644531 -4.429688 -4.160156 \n",
"224997 -4.441406 -3.974609 -4.425781 -3.400391 -4.429688 -4.160156 \n",
"224998 -4.195312 -4.222656 -4.425781 -3.886719 -4.429688 -4.406250 \n",
"224999 -3.947266 -4.222656 -4.179688 -3.400391 -4.183594 -4.406250 \n",
"\n",
" rle rhz \n",
"0 -39.500000 38.375000 \n",
"1 -38.031250 41.281250 \n",
"2 -33.656250 43.718750 \n",
"3 -42.906250 37.406250 \n",
"4 -43.875000 37.906250 \n",
"... ... ... \n",
"224995 -3.900391 -4.371094 \n",
"224996 -3.412109 -4.371094 \n",
"224997 -3.900391 -4.859375 \n",
"224998 -3.900391 -4.371094 \n",
"224999 -3.412109 -4.371094 \n",
"\n",
"[225000 rows x 47 columns]"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"from spudtr import epf\n",
"from spudtr import get_demo_df, DATA_DIR, P3_1500_FEATHER\n",
"\n",
"epochs_df = get_demo_df(P3_1500_FEATHER)\n",
"eeg_channels = ['MiPf', 'MiCe', 'MiPa', 'MiOc']\n",
"\n",
"epf.check_epochs(epochs_df, eeg_channels, epoch_id=\"epoch_id\", time=\"time_ms\")\n",
"epochs_df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Group by `time` to compute the time-domain average of all epochs and select columns of interest"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" channel | \n",
" MiPf | \n",
" MiCe | \n",
" MiPa | \n",
" MiOc | \n",
"
\n",
" \n",
" time_ms | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" -748 | \n",
" -0.647500 | \n",
" -0.818429 | \n",
" -0.650280 | \n",
" -1.128954 | \n",
"
\n",
" \n",
" -744 | \n",
" -0.590833 | \n",
" -0.838763 | \n",
" -0.648749 | \n",
" -1.025912 | \n",
"
\n",
" \n",
" -740 | \n",
" -0.569167 | \n",
" -0.987738 | \n",
" -0.715166 | \n",
" -1.047582 | \n",
"
\n",
" \n",
" -736 | \n",
" -0.600000 | \n",
" -1.013976 | \n",
" -0.672859 | \n",
" -0.980162 | \n",
"
\n",
" \n",
" -732 | \n",
" -0.767500 | \n",
" -1.069512 | \n",
" -0.705796 | \n",
" -0.867579 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 732 | \n",
" 1.345833 | \n",
" -0.855422 | \n",
" -1.573245 | \n",
" -1.943028 | \n",
"
\n",
" \n",
" 736 | \n",
" 1.138333 | \n",
" -0.999023 | \n",
" -1.762801 | \n",
" -2.063682 | \n",
"
\n",
" \n",
" 740 | \n",
" 0.985000 | \n",
" -1.031177 | \n",
" -1.794903 | \n",
" -2.081421 | \n",
"
\n",
" \n",
" 744 | \n",
" 0.877500 | \n",
" -1.011374 | \n",
" -1.770285 | \n",
" -2.010948 | \n",
"
\n",
" \n",
" 748 | \n",
" 0.866667 | \n",
" -0.863825 | \n",
" -1.608073 | \n",
" -1.863831 | \n",
"
\n",
" \n",
"
\n",
"
375 rows × 4 columns
\n",
"
"
],
"text/plain": [
"channel MiPf MiCe MiPa MiOc\n",
"time_ms \n",
"-748 -0.647500 -0.818429 -0.650280 -1.128954\n",
"-744 -0.590833 -0.838763 -0.648749 -1.025912\n",
"-740 -0.569167 -0.987738 -0.715166 -1.047582\n",
"-736 -0.600000 -1.013976 -0.672859 -0.980162\n",
"-732 -0.767500 -1.069512 -0.705796 -0.867579\n",
"... ... ... ... ...\n",
" 732 1.345833 -0.855422 -1.573245 -1.943028\n",
" 736 1.138333 -0.999023 -1.762801 -2.063682\n",
" 740 0.985000 -1.031177 -1.794903 -2.081421\n",
" 744 0.877500 -1.011374 -1.770285 -2.010948\n",
" 748 0.866667 -0.863825 -1.608073 -1.863831\n",
"\n",
"[375 rows x 4 columns]"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grand_wide = epochs_df.groupby(['time_ms']).mean()[eeg_channels]\n",
"grand_wide.columns.name = 'channel'\n",
"grand_wide"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Group by `time` and other columns to compute the average of subsets of epochs"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" channel | \n",
" MiPf | \n",
" MiCe | \n",
" MiPa | \n",
" MiOc | \n",
"
\n",
" \n",
" time_ms | \n",
" stim | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" -748 | \n",
" cal | \n",
" -4.317307 | \n",
" -3.857553 | \n",
" -4.073911 | \n",
" -4.143690 | \n",
"
\n",
" \n",
" standard | \n",
" 1.419520 | \n",
" 0.651240 | \n",
" 0.729152 | \n",
" 0.773548 | \n",
"
\n",
" \n",
" target | \n",
" 0.950000 | \n",
" 1.211514 | \n",
" 2.442932 | \n",
" -0.413608 | \n",
"
\n",
" \n",
" -744 | \n",
" cal | \n",
" -4.329327 | \n",
" -3.851473 | \n",
" -4.114043 | \n",
" -4.118098 | \n",
"
\n",
" \n",
" standard | \n",
" 1.493151 | \n",
" 0.686627 | \n",
" 0.894989 | \n",
" 1.060941 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 744 | \n",
" standard | \n",
" -1.669520 | \n",
" 0.564905 | \n",
" -2.007408 | \n",
" -2.380829 | \n",
"
\n",
" \n",
" target | \n",
" 19.059999 | \n",
" 0.232344 | \n",
" 3.668494 | \n",
" 3.395762 | \n",
"
\n",
" \n",
" 748 | \n",
" cal | \n",
" -4.305288 | \n",
" -3.828247 | \n",
" -4.077405 | \n",
" -4.089811 | \n",
"
\n",
" \n",
" standard | \n",
" -1.566781 | \n",
" 0.687771 | \n",
" -1.867695 | \n",
" -2.206024 | \n",
"
\n",
" \n",
" target | \n",
" 18.730000 | \n",
" 0.771514 | \n",
" 4.286233 | \n",
" 3.765410 | \n",
"
\n",
" \n",
"
\n",
"
1125 rows × 4 columns
\n",
"
"
],
"text/plain": [
"channel MiPf MiCe MiPa MiOc\n",
"time_ms stim \n",
"-748 cal -4.317307 -3.857553 -4.073911 -4.143690\n",
" standard 1.419520 0.651240 0.729152 0.773548\n",
" target 0.950000 1.211514 2.442932 -0.413608\n",
"-744 cal -4.329327 -3.851473 -4.114043 -4.118098\n",
" standard 1.493151 0.686627 0.894989 1.060941\n",
"... ... ... ... ...\n",
" 744 standard -1.669520 0.564905 -2.007408 -2.380829\n",
" target 19.059999 0.232344 3.668494 3.395762\n",
" 748 cal -4.305288 -3.828247 -4.077405 -4.089811\n",
" standard -1.566781 0.687771 -1.867695 -2.206024\n",
" target 18.730000 0.771514 4.286233 3.765410\n",
"\n",
"[1125 rows x 4 columns]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"subsets_wide = epochs_df.groupby([\"time_ms\", \"stim\"]).mean()[eeg_channels]\n",
"subsets_wide.columns.name = \"channel\"\n",
"subsets_wide"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Time-domain averages (long)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" | \n",
" | \n",
" microvolts | \n",
"
\n",
" \n",
" time_ms | \n",
" stim | \n",
" channel | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" -748 | \n",
" cal | \n",
" MiPf | \n",
" -4.317307 | \n",
"
\n",
" \n",
" MiCe | \n",
" -3.857553 | \n",
"
\n",
" \n",
" MiPa | \n",
" -4.073911 | \n",
"
\n",
" \n",
" MiOc | \n",
" -4.143690 | \n",
"
\n",
" \n",
" standard | \n",
" MiPf | \n",
" 1.419520 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 748 | \n",
" standard | \n",
" MiOc | \n",
" -2.206024 | \n",
"
\n",
" \n",
" target | \n",
" MiPf | \n",
" 18.730000 | \n",
"
\n",
" \n",
" MiCe | \n",
" 0.771514 | \n",
"
\n",
" \n",
" MiPa | \n",
" 4.286233 | \n",
"
\n",
" \n",
" MiOc | \n",
" 3.765410 | \n",
"
\n",
" \n",
"
\n",
"
4500 rows × 1 columns
\n",
"
"
],
"text/plain": [
" microvolts\n",
"time_ms stim channel \n",
"-748 cal MiPf -4.317307\n",
" MiCe -3.857553\n",
" MiPa -4.073911\n",
" MiOc -4.143690\n",
" standard MiPf 1.419520\n",
"... ...\n",
" 748 standard MiOc -2.206024\n",
" target MiPf 18.730000\n",
" MiCe 0.771514\n",
" MiPa 4.286233\n",
" MiOc 3.765410\n",
"\n",
"[4500 rows x 1 columns]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"subsets_long = subsets_wide.stack() # pivot the channel columns into one long column\n",
"subsets_long.name = \"microvolts\"\n",
"pd.DataFrame(subsets_long)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Time interval measurments\n",
"\n",
"Interval measurments use the \"slice-groupby-apply\" pattern. \n",
"\n",
"* slice the time interval rows\n",
"\n",
"* group by epoch_id and other tags\n",
"\n",
"* apply the measurment function to the data, e.g., pandas built-in or user-defined\n",
"\n",
"\n",
"Start by doing the steps separately to verify.\n",
"\n",
"When the steps are right, chain them for compact expression.\n",
"\n",
"Example: single trial mean amplitude"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1. Load the epochs"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" epoch_id | \n",
" time_ms | \n",
" sub_id | \n",
" eeg_artifact | \n",
" dblock_path | \n",
" log_evcodes | \n",
" log_ccodes | \n",
" dblock_srate | \n",
" ccode | \n",
" instrument | \n",
" ... | \n",
" RMOc | \n",
" LLTe | \n",
" RLTe | \n",
" LLOc | \n",
" RLOc | \n",
" MiOc | \n",
" A2 | \n",
" HEOG | \n",
" rle | \n",
" rhz | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0 | \n",
" -748 | \n",
" sub000 | \n",
" 0 | \n",
" sub000/dblock_0 | \n",
" 0 | \n",
" 0 | \n",
" 250.0 | \n",
" 1 | \n",
" eeg | \n",
" ... | \n",
" -25.093750 | \n",
" -0.753906 | \n",
" 1.480469 | \n",
" -13.414062 | \n",
" -18.937500 | \n",
" -17.734375 | \n",
" 5.660156 | \n",
" 98.875000 | \n",
" -39.500000 | \n",
" 38.375000 | \n",
"
\n",
" \n",
" 1 | \n",
" 0 | \n",
" -744 | \n",
" sub000 | \n",
" 0 | \n",
" sub000/dblock_0 | \n",
" 0 | \n",
" 0 | \n",
" 250.0 | \n",
" 1 | \n",
" eeg | \n",
" ... | \n",
" -24.593750 | \n",
" 0.502441 | \n",
" -2.466797 | \n",
" -17.640625 | \n",
" -17.468750 | \n",
" -15.304688 | \n",
" 1.968750 | \n",
" 104.750000 | \n",
" -38.031250 | \n",
" 41.281250 | \n",
"
\n",
" \n",
" 2 | \n",
" 0 | \n",
" -740 | \n",
" sub000 | \n",
" 0 | \n",
" sub000/dblock_0 | \n",
" 0 | \n",
" 0 | \n",
" 250.0 | \n",
" 1 | \n",
" eeg | \n",
" ... | \n",
" -16.484375 | \n",
" -1.507812 | \n",
" 3.947266 | \n",
" -15.648438 | \n",
" -10.085938 | \n",
" -11.171875 | \n",
" 8.367188 | \n",
" 102.062500 | \n",
" -33.656250 | \n",
" 43.718750 | \n",
"
\n",
" \n",
" 3 | \n",
" 0 | \n",
" -736 | \n",
" sub000 | \n",
" 0 | \n",
" sub000/dblock_0 | \n",
" 0 | \n",
" 0 | \n",
" 250.0 | \n",
" 1 | \n",
" eeg | \n",
" ... | \n",
" -11.804688 | \n",
" -15.070312 | \n",
" 9.867188 | \n",
" -14.906250 | \n",
" -7.378906 | \n",
" -8.742188 | \n",
" 9.351562 | \n",
" 100.562500 | \n",
" -42.906250 | \n",
" 37.406250 | \n",
"
\n",
" \n",
" 4 | \n",
" 0 | \n",
" -732 | \n",
" sub000 | \n",
" 0 | \n",
" sub000/dblock_0 | \n",
" 0 | \n",
" 0 | \n",
" 250.0 | \n",
" 1 | \n",
" eeg | \n",
" ... | \n",
" -6.394531 | \n",
" -4.019531 | \n",
" 9.125000 | \n",
" -10.679688 | \n",
" -6.886719 | \n",
" -8.015625 | \n",
" 8.125000 | \n",
" 98.375000 | \n",
" -43.875000 | \n",
" 37.906250 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 146995 | \n",
" 391 | \n",
" 732 | \n",
" sub000 | \n",
" 0 | \n",
" sub000/dblock_3 | \n",
" 0 | \n",
" 0 | \n",
" 250.0 | \n",
" 1 | \n",
" eeg | \n",
" ... | \n",
" 9.593750 | \n",
" 10.804688 | \n",
" 0.000000 | \n",
" 4.472656 | \n",
" 1.967773 | \n",
" 4.617188 | \n",
" -3.937500 | \n",
" -9.296875 | \n",
" -10.242188 | \n",
" -2.429688 | \n",
"
\n",
" \n",
" 146996 | \n",
" 391 | \n",
" 736 | \n",
" sub000 | \n",
" 0 | \n",
" sub000/dblock_3 | \n",
" 0 | \n",
" 0 | \n",
" 250.0 | \n",
" 1 | \n",
" eeg | \n",
" ... | \n",
" 15.250000 | \n",
" 15.578125 | \n",
" 8.632812 | \n",
" 10.429688 | \n",
" 8.609375 | \n",
" 10.929688 | \n",
" -0.246094 | \n",
" -7.343750 | \n",
" -7.800781 | \n",
" 2.914062 | \n",
"
\n",
" \n",
" 146997 | \n",
" 391 | \n",
" 740 | \n",
" sub000 | \n",
" 0 | \n",
" sub000/dblock_3 | \n",
" 0 | \n",
" 0 | \n",
" 250.0 | \n",
" 1 | \n",
" eeg | \n",
" ... | \n",
" 11.070312 | \n",
" 11.554688 | \n",
" 4.195312 | \n",
" 7.203125 | \n",
" 6.886719 | \n",
" 7.773438 | \n",
" -4.429688 | \n",
" -7.832031 | \n",
" -13.648438 | \n",
" -2.429688 | \n",
"
\n",
" \n",
" 146998 | \n",
" 391 | \n",
" 744 | \n",
" sub000 | \n",
" 0 | \n",
" sub000/dblock_3 | \n",
" 0 | \n",
" 0 | \n",
" 250.0 | \n",
" 1 | \n",
" eeg | \n",
" ... | \n",
" 13.039062 | \n",
" 6.781250 | \n",
" 6.414062 | \n",
" 9.187500 | \n",
" 10.578125 | \n",
" 10.445312 | \n",
" 0.246094 | \n",
" -8.320312 | \n",
" -8.773438 | \n",
" -1.457031 | \n",
"
\n",
" \n",
" 146999 | \n",
" 391 | \n",
" 748 | \n",
" sub000 | \n",
" 0 | \n",
" sub000/dblock_3 | \n",
" 0 | \n",
" 0 | \n",
" 250.0 | \n",
" 1 | \n",
" eeg | \n",
" ... | \n",
" 13.531250 | \n",
" 8.539062 | \n",
" 10.359375 | \n",
" 11.671875 | \n",
" 13.531250 | \n",
" 11.906250 | \n",
" 3.937500 | \n",
" -8.320312 | \n",
" -10.242188 | \n",
" 0.485840 | \n",
"
\n",
" \n",
"
\n",
"
147000 rows × 47 columns
\n",
"
"
],
"text/plain": [
" epoch_id time_ms sub_id eeg_artifact dblock_path log_evcodes \\\n",
"0 0 -748 sub000 0 sub000/dblock_0 0 \n",
"1 0 -744 sub000 0 sub000/dblock_0 0 \n",
"2 0 -740 sub000 0 sub000/dblock_0 0 \n",
"3 0 -736 sub000 0 sub000/dblock_0 0 \n",
"4 0 -732 sub000 0 sub000/dblock_0 0 \n",
"... ... ... ... ... ... ... \n",
"146995 391 732 sub000 0 sub000/dblock_3 0 \n",
"146996 391 736 sub000 0 sub000/dblock_3 0 \n",
"146997 391 740 sub000 0 sub000/dblock_3 0 \n",
"146998 391 744 sub000 0 sub000/dblock_3 0 \n",
"146999 391 748 sub000 0 sub000/dblock_3 0 \n",
"\n",
" log_ccodes dblock_srate ccode instrument ... RMOc LLTe \\\n",
"0 0 250.0 1 eeg ... -25.093750 -0.753906 \n",
"1 0 250.0 1 eeg ... -24.593750 0.502441 \n",
"2 0 250.0 1 eeg ... -16.484375 -1.507812 \n",
"3 0 250.0 1 eeg ... -11.804688 -15.070312 \n",
"4 0 250.0 1 eeg ... -6.394531 -4.019531 \n",
"... ... ... ... ... ... ... ... \n",
"146995 0 250.0 1 eeg ... 9.593750 10.804688 \n",
"146996 0 250.0 1 eeg ... 15.250000 15.578125 \n",
"146997 0 250.0 1 eeg ... 11.070312 11.554688 \n",
"146998 0 250.0 1 eeg ... 13.039062 6.781250 \n",
"146999 0 250.0 1 eeg ... 13.531250 8.539062 \n",
"\n",
" RLTe LLOc RLOc MiOc A2 HEOG \\\n",
"0 1.480469 -13.414062 -18.937500 -17.734375 5.660156 98.875000 \n",
"1 -2.466797 -17.640625 -17.468750 -15.304688 1.968750 104.750000 \n",
"2 3.947266 -15.648438 -10.085938 -11.171875 8.367188 102.062500 \n",
"3 9.867188 -14.906250 -7.378906 -8.742188 9.351562 100.562500 \n",
"4 9.125000 -10.679688 -6.886719 -8.015625 8.125000 98.375000 \n",
"... ... ... ... ... ... ... \n",
"146995 0.000000 4.472656 1.967773 4.617188 -3.937500 -9.296875 \n",
"146996 8.632812 10.429688 8.609375 10.929688 -0.246094 -7.343750 \n",
"146997 4.195312 7.203125 6.886719 7.773438 -4.429688 -7.832031 \n",
"146998 6.414062 9.187500 10.578125 10.445312 0.246094 -8.320312 \n",
"146999 10.359375 11.671875 13.531250 11.906250 3.937500 -8.320312 \n",
"\n",
" rle rhz \n",
"0 -39.500000 38.375000 \n",
"1 -38.031250 41.281250 \n",
"2 -33.656250 43.718750 \n",
"3 -42.906250 37.406250 \n",
"4 -43.875000 37.906250 \n",
"... ... ... \n",
"146995 -10.242188 -2.429688 \n",
"146996 -7.800781 2.914062 \n",
"146997 -13.648438 -2.429688 \n",
"146998 -8.773438 -1.457031 \n",
"146999 -10.242188 0.485840 \n",
"\n",
"[147000 rows x 47 columns]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"eeg_channels = [\"MiPf\", \"MiCe\", \"MiPa\", \"MiOc\"]\n",
"\n",
"epochs_df = get_demo_df(P3_1500_FEATHER).query('stim in [\"target\", \"standard\"]')\n",
"epf.check_epochs(epochs_df, eeg_channels, epoch_id=\"epoch_id\", time=\"time_ms\")\n",
"epochs_df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"2. (optional) select the data columns of interest or skip this and use them all."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" epoch_id | \n",
" time_ms | \n",
" stim | \n",
" MiPf | \n",
" MiCe | \n",
" MiPa | \n",
" MiOc | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0 | \n",
" -748 | \n",
" target | \n",
" -54.5 | \n",
" 2.781250 | \n",
" -8.828125 | \n",
" -17.734375 | \n",
"
\n",
" \n",
" 1 | \n",
" 0 | \n",
" -744 | \n",
" target | \n",
" -56.5 | \n",
" -4.046875 | \n",
" -11.929688 | \n",
" -15.304688 | \n",
"
\n",
" \n",
" 2 | \n",
" 0 | \n",
" -740 | \n",
" target | \n",
" -55.5 | \n",
" -3.289062 | \n",
" -4.769531 | \n",
" -11.171875 | \n",
"
\n",
" \n",
" 3 | \n",
" 0 | \n",
" -736 | \n",
" target | \n",
" -60.5 | \n",
" -2.529297 | \n",
" 0.954102 | \n",
" -8.742188 | \n",
"
\n",
" \n",
" 4 | \n",
" 0 | \n",
" -732 | \n",
" target | \n",
" -57.0 | \n",
" 4.046875 | \n",
" 9.781250 | \n",
" -8.015625 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" epoch_id time_ms stim MiPf MiCe MiPa MiOc\n",
"0 0 -748 target -54.5 2.781250 -8.828125 -17.734375\n",
"1 0 -744 target -56.5 -4.046875 -11.929688 -15.304688\n",
"2 0 -740 target -55.5 -3.289062 -4.769531 -11.171875\n",
"3 0 -736 target -60.5 -2.529297 0.954102 -8.742188\n",
"4 0 -732 target -57.0 4.046875 9.781250 -8.015625"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" epoch_id | \n",
" time_ms | \n",
" stim | \n",
" MiPf | \n",
" MiCe | \n",
" MiPa | \n",
" MiOc | \n",
"
\n",
" \n",
" \n",
" \n",
" 146995 | \n",
" 391 | \n",
" 732 | \n",
" standard | \n",
" 9.5 | \n",
" 3.289062 | \n",
" 15.265625 | \n",
" 4.617188 | \n",
"
\n",
" \n",
" 146996 | \n",
" 391 | \n",
" 736 | \n",
" standard | \n",
" 15.5 | \n",
" 9.359375 | \n",
" 21.234375 | \n",
" 10.929688 | \n",
"
\n",
" \n",
" 146997 | \n",
" 391 | \n",
" 740 | \n",
" standard | \n",
" 9.0 | \n",
" 3.792969 | \n",
" 15.507812 | \n",
" 7.773438 | \n",
"
\n",
" \n",
" 146998 | \n",
" 391 | \n",
" 744 | \n",
" standard | \n",
" 7.5 | \n",
" 4.300781 | \n",
" 15.507812 | \n",
" 10.445312 | \n",
"
\n",
" \n",
" 146999 | \n",
" 391 | \n",
" 748 | \n",
" standard | \n",
" 6.0 | \n",
" 4.554688 | \n",
" 14.789062 | \n",
" 11.906250 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" epoch_id time_ms stim MiPf MiCe MiPa MiOc\n",
"146995 391 732 standard 9.5 3.289062 15.265625 4.617188\n",
"146996 391 736 standard 15.5 9.359375 21.234375 10.929688\n",
"146997 391 740 standard 9.0 3.792969 15.507812 7.773438\n",
"146998 391 744 standard 7.5 4.300781 15.507812 10.445312\n",
"146999 391 748 standard 6.0 4.554688 14.789062 11.906250"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"coi = [\"epoch_id\", \"time_ms\", \"stim\", \"MiPf\", \"MiCe\", \"MiPa\", \"MiOc\"]\n",
"mid = epochs_df[coi] # select columns of interest\n",
"\n",
"display(mid.head())\n",
"display(mid.tail())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"3. Slice the time interval data sample (rows) to measure and verify by inspection"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" epoch_id | \n",
" time_ms | \n",
" stim | \n",
" MiPf | \n",
" MiCe | \n",
" MiPa | \n",
" MiOc | \n",
"
\n",
" \n",
" \n",
" \n",
" 262 | \n",
" 0 | \n",
" 300 | \n",
" target | \n",
" -46.0 | \n",
" 69.5625 | \n",
" 77.5000 | \n",
" 29.640625 | \n",
"
\n",
" \n",
" 263 | \n",
" 0 | \n",
" 304 | \n",
" target | \n",
" -41.5 | \n",
" 78.4375 | \n",
" 82.7500 | \n",
" 33.531250 | \n",
"
\n",
" \n",
" 264 | \n",
" 0 | \n",
" 308 | \n",
" target | \n",
" -39.0 | \n",
" 83.1875 | \n",
" 84.4375 | \n",
" 33.031250 | \n",
"
\n",
" \n",
" 265 | \n",
" 0 | \n",
" 312 | \n",
" target | \n",
" -39.5 | \n",
" 81.9375 | \n",
" 82.3125 | \n",
" 29.875000 | \n",
"
\n",
" \n",
" 266 | \n",
" 0 | \n",
" 316 | \n",
" target | \n",
" -36.5 | \n",
" 82.6875 | \n",
" 83.2500 | \n",
" 31.828125 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" epoch_id time_ms stim MiPf MiCe MiPa MiOc\n",
"262 0 300 target -46.0 69.5625 77.5000 29.640625\n",
"263 0 304 target -41.5 78.4375 82.7500 33.531250\n",
"264 0 308 target -39.0 83.1875 84.4375 33.031250\n",
"265 0 312 target -39.5 81.9375 82.3125 29.875000\n",
"266 0 316 target -36.5 82.6875 83.2500 31.828125"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" epoch_id | \n",
" time_ms | \n",
" stim | \n",
" MiPf | \n",
" MiCe | \n",
" MiPa | \n",
" MiOc | \n",
"
\n",
" \n",
" \n",
" \n",
" 146933 | \n",
" 391 | \n",
" 484 | \n",
" standard | \n",
" 14.5 | \n",
" 3.541016 | \n",
" 5.726562 | \n",
" 5.585938 | \n",
"
\n",
" \n",
" 146934 | \n",
" 391 | \n",
" 488 | \n",
" standard | \n",
" 13.0 | \n",
" -4.300781 | \n",
" -5.484375 | \n",
" -1.943359 | \n",
"
\n",
" \n",
" 146935 | \n",
" 391 | \n",
" 492 | \n",
" standard | \n",
" 8.5 | \n",
" -6.578125 | \n",
" -10.015625 | \n",
" -1.214844 | \n",
"
\n",
" \n",
" 146936 | \n",
" 391 | \n",
" 496 | \n",
" standard | \n",
" 6.5 | \n",
" -11.382812 | \n",
" -14.789062 | \n",
" -0.971680 | \n",
"
\n",
" \n",
" 146937 | \n",
" 391 | \n",
" 500 | \n",
" standard | \n",
" -1.5 | \n",
" -21.250000 | \n",
" -21.937500 | \n",
" -2.429688 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" epoch_id time_ms stim MiPf MiCe MiPa MiOc\n",
"146933 391 484 standard 14.5 3.541016 5.726562 5.585938\n",
"146934 391 488 standard 13.0 -4.300781 -5.484375 -1.943359\n",
"146935 391 492 standard 8.5 -6.578125 -10.015625 -1.214844\n",
"146936 391 496 standard 6.5 -11.382812 -14.789062 -0.971680\n",
"146937 391 500 standard -1.5 -21.250000 -21.937500 -2.429688"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"300"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"500"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"mid_300_500 = mid.query(\"time_ms >= 300 and time_ms <= 500\")\n",
"\n",
"display(mid_300_500.head())\n",
"display(mid_300_500.tail())\n",
"display(mid_300_500[\"time_ms\"].min(), mid_300_500[\"time_ms\"].max())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"4. **Group by** epoch_id, i.e., single trial, and other column labels to preserve them, and **apply** the built-in `mean()` function.\n",
"\n",
"**Note** the `time_ms` timestamps is just another column of data and also averaged in the interval.\n",
" \n",
"**Note** `pandas.Dataframe` has dozens of [built-in stats functions](https://pandas.pydata.org/pandas-docs/stable/reference/frame.html?highlight=dataframe%20methods#computations-descriptive-stats) besides mean: `max()`, `min()`, `std()`, `var()`, ...\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" | \n",
" time_ms | \n",
" MiPf | \n",
" MiCe | \n",
" MiPa | \n",
" MiOc | \n",
"
\n",
" \n",
" epoch_id | \n",
" stim | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" target | \n",
" 400 | \n",
" -42.176472 | \n",
" 42.853859 | \n",
" 52.521751 | \n",
" 12.860375 | \n",
"
\n",
" \n",
" 1 | \n",
" target | \n",
" 400 | \n",
" -14.617647 | \n",
" 41.024815 | \n",
" 42.625919 | \n",
" 6.120811 | \n",
"
\n",
" \n",
" 2 | \n",
" target | \n",
" 400 | \n",
" -7.186275 | \n",
" 24.073071 | \n",
" 31.395679 | \n",
" 13.836741 | \n",
"
\n",
" \n",
" 3 | \n",
" target | \n",
" 400 | \n",
" -16.911764 | \n",
" 20.560892 | \n",
" 26.349571 | \n",
" 16.461147 | \n",
"
\n",
" \n",
" 4 | \n",
" target | \n",
" 400 | \n",
" 13.039216 | \n",
" 27.078394 | \n",
" 22.416552 | \n",
" 5.758588 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" time_ms MiPf MiCe MiPa MiOc\n",
"epoch_id stim \n",
"0 target 400 -42.176472 42.853859 52.521751 12.860375\n",
"1 target 400 -14.617647 41.024815 42.625919 6.120811\n",
"2 target 400 -7.186275 24.073071 31.395679 13.836741\n",
"3 target 400 -16.911764 20.560892 26.349571 16.461147\n",
"4 target 400 13.039216 27.078394 22.416552 5.758588"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" | \n",
" time_ms | \n",
" MiPf | \n",
" MiCe | \n",
" MiPa | \n",
" MiOc | \n",
"
\n",
" \n",
" epoch_id | \n",
" stim | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 387 | \n",
" standard | \n",
" 400 | \n",
" 13.911765 | \n",
" 20.714920 | \n",
" 22.612095 | \n",
" 4.010857 | \n",
"
\n",
" \n",
" 388 | \n",
" standard | \n",
" 400 | \n",
" 24.696079 | \n",
" -4.259727 | \n",
" 0.098336 | \n",
" -2.500594 | \n",
"
\n",
" \n",
" 389 | \n",
" standard | \n",
" 400 | \n",
" 27.578432 | \n",
" 11.336646 | \n",
" 14.499387 | \n",
" 6.349677 | \n",
"
\n",
" \n",
" 390 | \n",
" standard | \n",
" 400 | \n",
" 36.323528 | \n",
" -0.446557 | \n",
" 3.442656 | \n",
" -0.209578 | \n",
"
\n",
" \n",
" 391 | \n",
" standard | \n",
" 400 | \n",
" 11.490196 | \n",
" -12.447074 | \n",
" -6.483092 | \n",
" -2.429051 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" time_ms MiPf MiCe MiPa MiOc\n",
"epoch_id stim \n",
"387 standard 400 13.911765 20.714920 22.612095 4.010857\n",
"388 standard 400 24.696079 -4.259727 0.098336 -2.500594\n",
"389 standard 400 27.578432 11.336646 14.499387 6.349677\n",
"390 standard 400 36.323528 -0.446557 3.442656 -0.209578\n",
"391 standard 400 11.490196 -12.447074 -6.483092 -2.429051"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"mid_300_500_mna = mid_300_500.groupby([\"epoch_id\", \"stim\"]).mean()\n",
"\n",
"display(mid_300_500_mna.head(), mid_300_500_mna.tail())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"5. The epoch interval measurements are new data, re-label them appropriately."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" | \n",
" MiPf | \n",
" MiCe | \n",
" MiPa | \n",
" MiOc | \n",
" measure | \n",
" interval | \n",
"
\n",
" \n",
" epoch_id | \n",
" stim | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" target | \n",
" -42.176472 | \n",
" 42.853859 | \n",
" 52.521751 | \n",
" 12.860375 | \n",
" mna | \n",
" 300_500 | \n",
"
\n",
" \n",
" 1 | \n",
" target | \n",
" -14.617647 | \n",
" 41.024815 | \n",
" 42.625919 | \n",
" 6.120811 | \n",
" mna | \n",
" 300_500 | \n",
"
\n",
" \n",
" 2 | \n",
" target | \n",
" -7.186275 | \n",
" 24.073071 | \n",
" 31.395679 | \n",
" 13.836741 | \n",
" mna | \n",
" 300_500 | \n",
"
\n",
" \n",
" 3 | \n",
" target | \n",
" -16.911764 | \n",
" 20.560892 | \n",
" 26.349571 | \n",
" 16.461147 | \n",
" mna | \n",
" 300_500 | \n",
"
\n",
" \n",
" 4 | \n",
" target | \n",
" 13.039216 | \n",
" 27.078394 | \n",
" 22.416552 | \n",
" 5.758588 | \n",
" mna | \n",
" 300_500 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" MiPf MiCe MiPa MiOc measure interval\n",
"epoch_id stim \n",
"0 target -42.176472 42.853859 52.521751 12.860375 mna 300_500\n",
"1 target -14.617647 41.024815 42.625919 6.120811 mna 300_500\n",
"2 target -7.186275 24.073071 31.395679 13.836741 mna 300_500\n",
"3 target -16.911764 20.560892 26.349571 16.461147 mna 300_500\n",
"4 target 13.039216 27.078394 22.416552 5.758588 mna 300_500"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" | \n",
" MiPf | \n",
" MiCe | \n",
" MiPa | \n",
" MiOc | \n",
" measure | \n",
" interval | \n",
"
\n",
" \n",
" epoch_id | \n",
" stim | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 387 | \n",
" standard | \n",
" 13.911765 | \n",
" 20.714920 | \n",
" 22.612095 | \n",
" 4.010857 | \n",
" mna | \n",
" 300_500 | \n",
"
\n",
" \n",
" 388 | \n",
" standard | \n",
" 24.696079 | \n",
" -4.259727 | \n",
" 0.098336 | \n",
" -2.500594 | \n",
" mna | \n",
" 300_500 | \n",
"
\n",
" \n",
" 389 | \n",
" standard | \n",
" 27.578432 | \n",
" 11.336646 | \n",
" 14.499387 | \n",
" 6.349677 | \n",
" mna | \n",
" 300_500 | \n",
"
\n",
" \n",
" 390 | \n",
" standard | \n",
" 36.323528 | \n",
" -0.446557 | \n",
" 3.442656 | \n",
" -0.209578 | \n",
" mna | \n",
" 300_500 | \n",
"
\n",
" \n",
" 391 | \n",
" standard | \n",
" 11.490196 | \n",
" -12.447074 | \n",
" -6.483092 | \n",
" -2.429051 | \n",
" mna | \n",
" 300_500 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" MiPf MiCe MiPa MiOc measure interval\n",
"epoch_id stim \n",
"387 standard 13.911765 20.714920 22.612095 4.010857 mna 300_500\n",
"388 standard 24.696079 -4.259727 0.098336 -2.500594 mna 300_500\n",
"389 standard 27.578432 11.336646 14.499387 6.349677 mna 300_500\n",
"390 standard 36.323528 -0.446557 3.442656 -0.209578 mna 300_500\n",
"391 standard 11.490196 -12.447074 -6.483092 -2.429051 mna 300_500"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# drop the no longer meaningful time_ms column\n",
"mid_300_500_mna = mid_300_500_mna.drop(\"time_ms\", axis=1)\n",
"\n",
"# describe the type of measurment and interval\n",
"mid_300_500_mna[\"measure\"] = \"mna\"\n",
"mid_300_500_mna[\"interval\"] = \"300_500\"\n",
"\n",
"display(mid_300_500_mna.head(), mid_300_500_mna.tail())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"6. (optional) Export the measurements data"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"mid_300_500_mna.reset_index().to_feather(DATA_DIR / \"p3_mid_mna_300_500.feather\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"7. Chaining: All of the above, simplified by chaining. The results are verifiably identical."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"coi = [\"epoch_id\", \"time_ms\", \"stim\", \"MiPf\", \"MiCe\", \"MiPa\", \"MiOc\"]\n",
"\n",
"# slice-groupby-apply\n",
"mid_300_500_mna_c = (\n",
" epochs_df[coi]\n",
" .query(\"time_ms >= 300 and time_ms <= 500\")\n",
" .groupby([\"epoch_id\", \"stim\"])\n",
" .mean()\n",
" .drop(\"time_ms\", axis=1)\n",
")\n",
"\n",
"# describe the type of measurment and interval\n",
"mid_300_500_mna_c[\"measure\"] = \"mna\"\n",
"mid_300_500_mna_c[\"interval\"] = \"300_500\"\n",
"\n",
"# verify steps and chained agree\n",
"assert all(mid_300_500_mna_c == mid_300_500_mna)\n",
"\n",
"# export\n",
"mid_300_500_mna_c.reset_index().to_feather(DATA_DIR / \"p3_mid_mna_300_500.feather\")"
]
}
],
"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.10"
}
},
"nbformat": 4,
"nbformat_minor": 4
}