rapids/calculatingfeatures/usage_examples.ipynb

6113 lines
442 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Usage examples"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from calculatingfeatures.CalculatingFeatures.calculate_features import calculateFeatures, calculateFeatures, convertInputInto2d, convertInputInto2dTime\n",
"from calculatingfeatures.CalculatingFeatures.helper_functions import gsrFeatureNames, frequencyFeatureNames, hrvFeatureNames, genericFeatureNames, accelerometerFeatureNames, gyroscopeFeatureNames\n",
"import CalculatingFeatures.feature_functions as functions\n",
"import random\n",
"import numpy as np\n",
"import time as t\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import pickle\n",
"from calculatingfeatures.CalculatingFeatures.calculate_hrv_peaks import peak_detector\n",
"%matplotlib notebook"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Calculate HRV and frequency features with calculateFeatures() from empatica file"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1008/1008 [02:07<00:00, 7.89it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" ibi_X meanHr_X numRR_X pnn20_X pnn50_X rmssd_X \\\n",
"0 0.863281 69.502262 4.0 66.666667 66.666667 0.170449 \n",
"1 0.720313 83.297180 10.0 66.666667 33.333333 0.050765 \n",
"2 0.679688 88.275862 8.0 85.714286 28.571429 0.045363 \n",
"3 0.723437 82.937365 10.0 77.777778 55.555556 0.103382 \n",
"4 0.800347 74.967462 9.0 62.500000 37.500000 0.057675 \n",
"... ... ... ... ... ... ... \n",
"1003 1.097656 54.661922 4.0 33.333333 33.333333 0.045999 \n",
"1004 0.805804 74.459834 7.0 83.333333 83.333333 0.137701 \n",
"1005 0.911458 65.828571 6.0 100.000000 80.000000 0.098326 \n",
"1006 NaN NaN 3.0 NaN NaN NaN \n",
"1007 1.515625 39.587629 4.0 100.000000 100.000000 0.138878 \n",
"\n",
" sd1/sd2_X sd2_X sd_X sdnn_X sdsd_X \n",
"0 0.523417 0.120684 0.063168 0.089333 0.096319 \n",
"1 1.405853 0.025695 0.036124 0.051087 0.031346 \n",
"2 NaN NaN 0.030758 0.043498 0.016096 \n",
"3 0.668476 0.077188 0.051598 0.072971 0.065652 \n",
"4 0.684488 0.042214 0.028895 0.040863 0.036172 \n",
"... ... ... ... ... ... \n",
"1003 0.496161 0.042761 0.021216 0.030004 0.033754 \n",
"1004 1.001993 0.057706 0.057821 0.081771 0.057763 \n",
"1005 1.544265 0.034477 0.053242 0.075296 0.044852 \n",
"1006 NaN NaN NaN NaN NaN \n",
"1007 0.968519 0.049066 0.047522 0.067206 0.048300 \n",
"\n",
"[1008 rows x 11 columns]\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"from calculatingfeatures.CalculatingFeatures.helper_functions import convert1DEmpaticaToArray\n",
"\n",
"pathToHrvCsv = \"example_data/S2_E4_Data/BVP.csv\"\n",
"windowLength = 500\n",
"\n",
"#np.seterr(all='raise')\n",
"\n",
"# get an array of values from HRV empatica file\n",
"hrv_data, startTimeStamp, sampleRate = convert1DEmpaticaToArray(pathToHrvCsv)\n",
"\n",
"# Convert the HRV data into 2D array\n",
"hrv_data_2D = convertInputInto2d(hrv_data, windowLength)\n",
"\n",
"# Create a list with feature names\n",
"featureNames = []\n",
"featureNames.extend(hrvFeatureNames)\n",
"featureNames.extend(frequencyFeatureNames)\n",
"\n",
"pd.set_option('display.max_columns', None)\n",
"#pd.set_option('display.max_rows', None)\n",
"\n",
"# Calculate features\n",
"calculatedFeatures = calculateFeatures(hrv_data_2D, fs=int(sampleRate), featureNames=featureNames)\n",
"print(calculatedFeatures)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Calculate ACC features with calculateFeatures() from empatica file"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 504/504 [03:46<00:00, 2.23it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" absoluteAreaAllBand absoluteArea_XBand absoluteArea_YBand \\\n",
"0 312.592555 72.500968 -16.538178 \n",
"1 864.715960 72.220023 -21.781158 \n",
"2 3616.215615 74.042112 -77.602245 \n",
"3 4165.495456 105.191655 -79.146730 \n",
"4 8033.196394 95.132686 -124.754418 \n",
".. ... ... ... \n",
"499 384.671068 88.880824 -121.088645 \n",
"500 611.899981 90.148744 -125.571337 \n",
"501 1307.327021 98.014717 -123.718204 \n",
"502 778.281403 102.766032 -118.941814 \n",
"503 898.820043 37.005843 -49.001318 \n",
"\n",
" absoluteArea_ZBand absoluteMean_XBand absoluteMean_YBand \\\n",
"0 137.499998 0.145002 -0.033076 \n",
"1 137.184763 0.144440 -0.043562 \n",
"2 32.381332 0.148084 -0.155204 \n",
"3 27.225527 0.210383 -0.158293 \n",
"4 2.235905 0.190265 -0.249509 \n",
".. ... ... ... \n",
"499 42.304659 0.177762 -0.242177 \n",
"500 41.328719 0.180297 -0.251143 \n",
"501 8.405056 0.196029 -0.247436 \n",
"502 -0.946992 0.205532 -0.237884 \n",
"503 0.000397 0.074012 -0.098003 \n",
"\n",
" absoluteMean_ZBand amplitude_XBand amplitude_YBand amplitude_ZBand \\\n",
"0 2.750000e-01 29.284433 6.386696 55.229196 \n",
"1 2.743695e-01 44.658625 15.583131 62.157114 \n",
"2 6.476266e-02 45.327413 26.308157 71.081348 \n",
"3 5.445105e-02 42.572756 23.106671 20.137936 \n",
"4 4.471811e-03 72.576962 40.377516 55.010798 \n",
".. ... ... ... ... \n",
"499 8.460932e-02 35.718442 49.655967 17.649243 \n",
"500 8.265744e-02 39.161026 50.804928 19.970953 \n",
"501 1.681011e-02 42.835779 62.312165 17.508028 \n",
"502 -1.893985e-03 50.837576 51.201160 14.531671 \n",
"503 7.939179e-07 51.448326 54.050552 9.273581 \n",
"\n",
" areaUnderAccelerationMagnitude area_XLow area_YLow area_ZLow \\\n",
"0 5330.383914 14420.999440 -3350.641321 27557.000001 \n",
"1 5357.677382 10865.253056 -3033.252188 27902.323548 \n",
"2 5430.496677 15722.297711 -14156.396220 15642.774418 \n",
"3 4335.662961 22389.054964 -13963.007308 2435.697567 \n",
"4 5395.581186 19409.122939 -14484.885912 180.145873 \n",
".. ... ... ... ... \n",
"499 5350.702140 17583.763049 -24380.273741 8308.160445 \n",
"500 5337.171768 17261.897541 -24409.269350 8664.655729 \n",
"501 5471.304292 18922.657077 -23201.084064 5627.731332 \n",
"502 5391.568437 20860.878551 -23277.757290 -715.703219 \n",
"503 5236.681184 19686.330067 -20534.332597 3487.999778 \n",
"\n",
" averageVectorLength averageVectorLengthPower \\\n",
"0 62.571636 3915.209631 \n",
"1 62.828208 3947.383684 \n",
"2 65.670379 4312.598665 \n",
"3 66.911456 4477.142892 \n",
"4 73.431020 5392.114734 \n",
".. ... ... \n",
"499 62.381792 3891.487998 \n",
"500 62.447365 3899.673343 \n",
"501 62.910131 3957.684586 \n",
"502 62.841575 3949.063506 \n",
"503 58.941575 3474.109225 \n",
"\n",
" coefficientOfVariation_XBand coefficientOfVariation_YBand \\\n",
"0 1.541025 0.771037 \n",
"1 0.708974 0.585220 \n",
"2 0.386066 0.391320 \n",
"3 0.347936 0.349965 \n",
"4 0.330193 0.341132 \n",
".. ... ... \n",
"499 1.519349 1.736730 \n",
"500 0.951674 1.209954 \n",
"501 0.505862 0.831018 \n",
"502 0.804625 1.001523 \n",
"503 0.716975 0.902984 \n",
"\n",
" coefficientOfVariation_ZBand correlation_X_YBand correlation_X_ZBand \\\n",
"0 1.915226 0.999748 0.999992 \n",
"1 0.995279 0.999936 0.999982 \n",
"2 0.443334 0.999991 0.999988 \n",
"3 0.333548 0.999992 0.999992 \n",
"4 0.326846 0.999993 0.999992 \n",
".. ... ... ... \n",
"499 1.007314 0.999484 0.999985 \n",
"500 0.699102 0.999787 0.999988 \n",
"501 0.408757 0.999932 0.999987 \n",
"502 0.576986 0.999861 0.999947 \n",
"503 0.482851 0.999889 0.999968 \n",
"\n",
" correlation_Y_ZBand dominantFrequencyEnergy_XBand \\\n",
"0 0.999657 0.008964 \n",
"1 0.999909 0.018750 \n",
"2 0.999984 0.020694 \n",
"3 0.999992 0.015335 \n",
"4 0.999991 0.027059 \n",
".. ... ... \n",
"499 0.999638 0.009092 \n",
"500 0.999841 0.012191 \n",
"501 0.999948 0.015881 \n",
"502 0.999944 0.012228 \n",
"503 0.999951 0.016684 \n",
"\n",
" dominantFrequencyEnergy_YBand dominantFrequencyEnergy_ZBand \\\n",
"0 0.009608 0.009000 \n",
"1 0.024015 0.011299 \n",
"2 0.029685 0.019629 \n",
"3 0.029545 0.019664 \n",
"4 0.038101 0.021032 \n",
".. ... ... \n",
"499 0.008966 0.009465 \n",
"500 0.011666 0.015069 \n",
"501 0.012706 0.022372 \n",
"502 0.011949 0.014030 \n",
"503 0.013070 0.024085 \n",
"\n",
" entropy_XBand entropy_YBand entropy_ZBand fqAbsMean_X fqAbsMean_Y \\\n",
"0 7.803281 7.764458 7.798979 28.842 6.706 \n",
"1 7.592033 7.170297 7.763982 26.618 9.336 \n",
"2 7.428787 7.183324 7.549577 32.040 29.518 \n",
"3 7.531214 7.127566 7.475685 45.778 34.176 \n",
"4 7.416095 7.166612 7.373007 43.710 34.224 \n",
".. ... ... ... ... ... \n",
"499 7.796856 7.799046 7.791035 35.172 48.756 \n",
"500 7.748183 7.773281 7.696858 34.530 48.842 \n",
"501 7.643179 7.758942 7.449880 37.878 46.368 \n",
"502 7.717640 7.756327 7.483432 41.712 46.562 \n",
"503 7.629066 7.769570 6.972002 39.200 40.840 \n",
"\n",
" fqAbsMean_Z fqEnergyFeat_X fqEnergyFeat_Y fqEnergyFeat_Z \\\n",
"0 55.114 416147.0 22687.0 1518857.0 \n",
"1 55.804 370169.0 47400.0 1564792.0 \n",
"2 36.648 662796.0 660597.0 923012.0 \n",
"3 18.330 1304769.0 815064.0 254347.0 \n",
"4 31.546 1358605.0 862102.0 748213.0 \n",
".. ... ... ... ... \n",
"499 16.616 618810.0 1188766.0 138268.0 \n",
"500 17.328 601149.0 1195095.0 154722.0 \n",
"501 11.712 785687.0 1115182.0 91322.0 \n",
"502 2.338 884896.0 1091337.0 8025.0 \n",
"503 7.004 848456.0 965204.0 38318.0 \n",
"\n",
" fqEntropyFeat_X fqEntropyFeat_Y fqEntropyFeat_Z fqHighestPeak1_X \\\n",
"0 2.056371 4.227074 1.091003 0.659914 \n",
"1 4.954203 5.151731 3.852122 1586.457564 \n",
"2 5.650713 5.174951 5.356747 190.676281 \n",
"3 5.673421 5.136240 5.765772 613.304285 \n",
"4 5.783132 5.565740 5.760390 878.499446 \n",
".. ... ... ... ... \n",
"499 2.155353 1.477249 3.158663 0.075611 \n",
"500 3.715911 2.901126 4.330129 0.062029 \n",
"501 5.028585 4.208921 5.484010 299.897572 \n",
"502 4.861145 4.051993 5.942058 0.365282 \n",
"503 4.721612 4.266797 5.192156 0.837968 \n",
"\n",
" fqHighestPeak1_Y fqHighestPeak1_Z fqHighestPeak2_X fqHighestPeak2_Y \\\n",
"0 0.329848 0.062427 0.214743 0.142434 \n",
"1 244.301350 21.022571 844.302348 125.356487 \n",
"2 605.220870 660.676570 176.340483 559.722940 \n",
"3 3404.162602 1654.679747 511.048051 2426.512293 \n",
"4 617.961281 2966.643517 696.645541 510.218120 \n",
".. ... ... ... ... \n",
"499 0.066151 0.152542 0.064141 0.045393 \n",
"500 0.109477 0.294831 0.059480 0.071158 \n",
"501 217.027649 59.428941 158.318483 105.919777 \n",
"502 0.393256 0.331209 0.185996 0.225281 \n",
"503 0.537947 3.181930 0.836692 0.526419 \n",
"\n",
" fqHighestPeak2_Z fqHighestPeak3_X fqHighestPeak3_Y fqHighestPeak3_Z \\\n",
"0 0.056354 0.201488 0.121684 0.044537 \n",
"1 10.221185 239.346016 47.646533 9.525602 \n",
"2 408.824249 159.845333 323.797473 388.611398 \n",
"3 282.492840 345.468368 953.173254 237.514909 \n",
"4 1258.914443 690.811103 347.967190 581.366504 \n",
".. ... ... ... ... \n",
"499 0.146578 0.059236 0.040802 0.143887 \n",
"500 0.152252 0.048268 0.053454 0.089385 \n",
"501 58.678460 55.928570 35.348018 40.291161 \n",
"502 0.163962 0.136052 0.136601 0.156347 \n",
"503 3.038781 0.786312 0.431989 0.911122 \n",
"\n",
" fqHighestPeakFreq1_X fqHighestPeakFreq1_Y fqHighestPeakFreq1_Z \\\n",
"0 0.125 0.125 0.125 \n",
"1 0.125 0.125 0.125 \n",
"2 0.125 0.125 0.125 \n",
"3 0.250 0.250 0.125 \n",
"4 0.875 0.125 0.125 \n",
".. ... ... ... \n",
"499 4.625 4.250 0.250 \n",
"500 1.875 0.125 0.125 \n",
"501 0.125 0.125 0.250 \n",
"502 0.125 0.125 0.125 \n",
"503 0.250 1.000 0.125 \n",
"\n",
" fqHighestPeakFreq2_X fqHighestPeakFreq2_Y fqHighestPeakFreq2_Z \\\n",
"0 0.000 7.625 5.750 \n",
"1 0.250 0.250 2.000 \n",
"2 0.750 0.250 0.250 \n",
"3 0.125 0.125 0.250 \n",
"4 1.500 0.500 0.250 \n",
".. ... ... ... \n",
"499 4.250 4.375 3.625 \n",
"500 3.000 1.875 3.500 \n",
"501 0.250 0.250 0.125 \n",
"502 0.000 0.000 0.250 \n",
"503 1.000 1.250 0.250 \n",
"\n",
" fqHighestPeakFreq3_X fqHighestPeakFreq3_Y fqHighestPeakFreq3_Z \\\n",
"0 0.250 0.250 5.875 \n",
"1 0.375 0.375 1.875 \n",
"2 3.500 0.375 0.375 \n",
"3 0.375 0.375 0.500 \n",
"4 0.750 1.500 1.250 \n",
".. ... ... ... \n",
"499 4.500 3.875 4.000 \n",
"500 2.875 0.250 0.250 \n",
"501 0.375 0.375 0.375 \n",
"502 0.250 1.125 0.750 \n",
"503 1.750 1.375 0.375 \n",
"\n",
" fqHistogramBin10_X fqHistogramBin10_Y fqHistogramBin10_Z \\\n",
"0 0.059330 0.389456 0.753217 \n",
"1 0.000061 0.000015 0.051873 \n",
"2 0.025240 0.000251 0.005582 \n",
"3 0.018200 0.000005 0.000702 \n",
"4 0.049420 0.005158 0.002619 \n",
".. ... ... ... \n",
"499 0.185922 0.043815 0.065751 \n",
"500 0.170029 0.096525 0.052775 \n",
"501 0.000928 0.000214 0.006905 \n",
"502 0.033254 0.015588 0.042798 \n",
"503 0.158842 0.020134 0.002435 \n",
"\n",
" fqHistogramBin1_X fqHistogramBin1_Y fqHistogramBin1_Z \\\n",
"0 0.917365 0.501879 0.145201 \n",
"1 0.996411 0.960550 0.354704 \n",
"2 0.343415 0.920326 0.845095 \n",
"3 0.716864 0.992726 0.989875 \n",
"4 0.194959 0.712702 0.878294 \n",
".. ... ... ... \n",
"499 0.048028 0.141320 0.193154 \n",
"500 0.115791 0.465422 0.576209 \n",
"501 0.980711 0.968692 0.874908 \n",
"502 0.832916 0.823695 0.627951 \n",
"503 0.248169 0.072066 0.966204 \n",
"\n",
" fqHistogramBin2_X fqHistogramBin2_Y fqHistogramBin2_Z \\\n",
"0 0.000904 0.007043 0.041231 \n",
"1 0.002688 0.025178 0.043965 \n",
"2 0.187601 0.013045 0.076190 \n",
"3 0.074381 0.006033 0.006555 \n",
"4 0.455763 0.079752 0.031283 \n",
".. ... ... ... \n",
"499 0.015525 0.069480 0.036488 \n",
"500 0.012550 0.014091 0.008415 \n",
"501 0.003834 0.017005 0.002335 \n",
"502 0.053437 0.093162 0.268378 \n",
"503 0.220826 0.303537 0.018221 \n",
"\n",
" fqHistogramBin3_X fqHistogramBin3_Y fqHistogramBin3_Z \\\n",
"0 0.012913 0.003186 0.028656 \n",
"1 0.000209 0.007173 0.172133 \n",
"2 0.038983 0.046723 0.022851 \n",
"3 0.123416 0.000264 0.000817 \n",
"4 0.190181 0.146581 0.060788 \n",
".. ... ... ... \n",
"499 0.061261 0.021545 0.015547 \n",
"500 0.069835 0.080216 0.027630 \n",
"501 0.005995 0.003567 0.008486 \n",
"502 0.036650 0.050618 0.017483 \n",
"503 0.139805 0.432839 0.004041 \n",
"\n",
" fqHistogramBin4_X fqHistogramBin4_Y fqHistogramBin4_Z \\\n",
"0 0.001133 0.004548 0.001605 \n",
"1 0.000137 0.004941 0.209779 \n",
"2 0.059610 0.007699 0.019253 \n",
"3 0.039071 0.000808 0.001340 \n",
"4 0.023405 0.013695 0.005697 \n",
".. ... ... ... \n",
"499 0.018228 0.115281 0.030084 \n",
"500 0.192815 0.165997 0.024964 \n",
"501 0.000197 0.007786 0.097574 \n",
"502 0.012061 0.011319 0.008113 \n",
"503 0.083092 0.057813 0.002771 \n",
"\n",
" fqHistogramBin5_X fqHistogramBin5_Y fqHistogramBin5_Z \\\n",
"0 0.000133 0.004992 0.008487 \n",
"1 0.000304 0.001234 0.087198 \n",
"2 0.109452 0.009152 0.015953 \n",
"3 0.014320 0.000140 0.000244 \n",
"4 0.053001 0.030390 0.005559 \n",
".. ... ... ... \n",
"499 0.030837 0.012466 0.042601 \n",
"500 0.213722 0.010250 0.016697 \n",
"501 0.000435 0.002103 0.007861 \n",
"502 0.003046 0.000400 0.004838 \n",
"503 0.003842 0.042695 0.000124 \n",
"\n",
" fqHistogramBin6_X fqHistogramBin6_Y fqHistogramBin6_Z \\\n",
"0 0.002641 0.002711 0.004863 \n",
"1 0.000101 0.000490 0.041666 \n",
"2 0.201867 0.001369 0.005122 \n",
"3 0.005846 0.000012 0.000312 \n",
"4 0.010443 0.008340 0.010087 \n",
".. ... ... ... \n",
"499 0.057460 0.021705 0.165463 \n",
"500 0.103490 0.103651 0.203756 \n",
"501 0.005911 0.000510 0.000915 \n",
"502 0.008047 0.002567 0.006263 \n",
"503 0.012732 0.036009 0.000879 \n",
"\n",
" fqHistogramBin7_X fqHistogramBin7_Y fqHistogramBin7_Z \\\n",
"0 0.001861 0.007453 0.002807 \n",
"1 0.000028 0.000260 0.015986 \n",
"2 0.021811 0.000078 0.007235 \n",
"3 0.002830 0.000002 0.000080 \n",
"4 0.009787 0.000881 0.001366 \n",
".. ... ... ... \n",
"499 0.197672 0.376762 0.276174 \n",
"500 0.057769 0.033303 0.054540 \n",
"501 0.000476 0.000048 0.000353 \n",
"502 0.013900 0.000432 0.010065 \n",
"503 0.025386 0.023334 0.003946 \n",
"\n",
" fqHistogramBin8_X fqHistogramBin8_Y fqHistogramBin8_Z \\\n",
"0 0.001955 0.064559 0.007588 \n",
"1 0.000034 0.000109 0.011734 \n",
"2 0.010835 0.000937 0.001323 \n",
"3 0.002280 0.000002 0.000067 \n",
"4 0.010018 0.000904 0.003826 \n",
".. ... ... ... \n",
"499 0.291858 0.129554 0.073230 \n",
"500 0.008201 0.018185 0.004613 \n",
"501 0.001449 0.000075 0.000293 \n",
"502 0.002615 0.001125 0.010125 \n",
"503 0.103507 0.008222 0.001323 \n",
"\n",
" fqHistogramBin9_X fqHistogramBin9_Y fqHistogramBin9_Z fqInterquart_X \\\n",
"0 0.001764 1.417175e-02 0.006344 1.0 \n",
"1 0.000028 4.913791e-05 0.010962 2.0 \n",
"2 0.001186 4.205692e-04 0.001395 19.0 \n",
"3 0.002791 6.951576e-06 0.000008 33.0 \n",
"4 0.003023 1.596709e-03 0.000482 45.0 \n",
".. ... ... ... ... \n",
"499 0.093209 6.807324e-02 0.101508 1.0 \n",
"500 0.055798 1.235906e-02 0.030399 0.0 \n",
"501 0.000064 2.846989e-07 0.000369 17.0 \n",
"502 0.004074 1.095070e-03 0.003987 0.0 \n",
"503 0.003799 3.350736e-03 0.000056 3.0 \n",
"\n",
" fqInterquart_Y fqInterquart_Z fqKurtosis_X fqKurtosis_Y fqKurtosis_Z \\\n",
"0 1.00 0.0 82.921957 37.277378 6.172148 \n",
"1 3.00 1.0 76.273672 71.165185 15.416382 \n",
"2 35.00 45.0 6.878412 37.918868 31.087918 \n",
"3 44.25 29.0 22.193253 59.206577 109.082455 \n",
"4 38.50 55.0 14.428181 21.579397 68.114033 \n",
".. ... ... ... ... ... \n",
"499 1.00 1.0 3.493950 6.700808 7.553704 \n",
"500 0.25 1.0 6.446087 22.380162 45.749892 \n",
"501 14.25 8.0 73.117153 75.619776 29.411194 \n",
"502 1.00 1.0 55.401241 51.909021 31.568406 \n",
"503 4.25 3.0 3.812462 8.022810 52.037962 \n",
"\n",
" fqSkewness_X fqSkewness_Y fqSkewness_Z \\\n",
"0 8.685933 5.237774 2.194513 \n",
"1 8.554455 8.103869 3.253087 \n",
"2 2.634778 6.003941 5.233903 \n",
"3 4.341981 7.604222 10.282016 \n",
"4 3.633590 4.341104 7.689533 \n",
".. ... ... ... \n",
"499 1.894942 2.466336 2.691462 \n",
"500 2.245002 4.119326 6.033663 \n",
"501 8.293539 8.386964 5.246583 \n",
"502 6.920554 6.770191 5.179224 \n",
"503 2.074293 2.809057 7.181060 \n",
"\n",
" interQuartileRangeMagnitudesBand interQuartileRange_XBand \\\n",
"0 0.116283 0.108442 \n",
"1 0.515822 0.245962 \n",
"2 7.383329 2.079383 \n",
"3 4.620823 4.435474 \n",
"4 7.758987 9.680704 \n",
".. ... ... \n",
"499 0.140573 0.070322 \n",
"500 0.356938 0.083357 \n",
"501 1.881589 0.645332 \n",
"502 0.720664 0.200399 \n",
"503 1.160543 0.326100 \n",
"\n",
" interQuartileRange_YBand interQuartileRange_ZBand kurtosis_XBand \\\n",
"0 0.081722 0.065099 230.852565 \n",
"1 0.251985 0.266026 60.605795 \n",
"2 1.559643 1.743397 2.674175 \n",
"3 3.394423 3.348774 0.775528 \n",
"4 6.326923 8.676731 0.356543 \n",
".. ... ... ... \n",
"499 0.074261 0.176276 225.023923 \n",
"500 0.123523 0.143614 177.722773 \n",
"501 0.435514 0.552009 55.645718 \n",
"502 0.154690 0.196822 120.080582 \n",
"503 0.281286 0.224567 78.167856 \n",
"\n",
" kurtosis_YBand kurtosis_ZBand manipulationLow meanCrossingRate_XBand \\\n",
"0 164.957757 229.058361 0.018765 13.0 \n",
"1 18.028431 181.277262 0.018541 23.0 \n",
"2 0.970036 19.627766 0.023965 41.0 \n",
"3 0.244360 0.024724 0.026066 59.0 \n",
"4 1.039344 -0.283146 0.026051 80.0 \n",
".. ... ... ... ... \n",
"499 222.308079 211.547373 0.028112 19.0 \n",
"500 200.121968 120.912006 0.027962 16.0 \n",
"501 162.283176 5.298307 0.030719 49.0 \n",
"502 170.359071 41.987689 0.034514 31.0 \n",
"503 180.353197 6.524585 16.298247 27.0 \n",
"\n",
" meanCrossingRate_YBand meanCrossingRate_ZBand meanKineticEnergy_XBand \\\n",
"0 26.0 1.0 25623.466885 \n",
"1 28.0 17.0 25623.457823 \n",
"2 35.0 31.0 25623.470198 \n",
"3 42.0 80.0 19042.431778 \n",
"4 46.0 61.0 67303.477598 \n",
".. ... ... ... \n",
"499 10.0 37.0 37323.124131 \n",
"500 8.0 24.0 39486.339334 \n",
"501 22.0 39.0 37323.128222 \n",
"502 24.0 34.0 53745.297878 \n",
"503 14.0 24.0 41710.499213 \n",
"\n",
" meanKineticEnergy_YBand meanKineticEnergy_ZBand mean_XLow mean_YLow \\\n",
"0 1096.843008 9.216527e+04 28.841999 -6.701283 \n",
"1 1492.924665 9.216527e+04 21.730506 -6.066504 \n",
"2 3046.793625 9.216521e+04 31.444595 -28.312792 \n",
"3 2467.903796 1.949942e+03 44.778110 -27.926015 \n",
"4 20596.274067 3.317945e+04 38.818246 -28.969772 \n",
".. ... ... ... ... \n",
"499 73153.322291 8.805210e+03 35.167526 -48.760547 \n",
"500 70197.942449 8.805211e+03 34.523795 -48.818539 \n",
"501 88844.250780 3.046786e+03 37.845314 -46.402168 \n",
"502 67303.493481 1.218714e+02 41.721757 -46.555515 \n",
"503 73153.306037 7.324061e-08 39.372660 -41.068665 \n",
"\n",
" mean_ZLow peaksAmplitudeAvgLow peaksCountLow peaksPeakAvgLow \\\n",
"0 55.114000 0.000000 0.0 0.000000 \n",
"1 55.804647 0.025651 14.0 66.347089 \n",
"2 31.285549 0.003297 40.0 71.749715 \n",
"3 4.871395 0.195948 81.0 68.373870 \n",
"4 0.360292 0.014893 76.0 74.287445 \n",
".. ... ... ... ... \n",
"499 16.616321 0.052488 4.0 63.068346 \n",
"500 17.329311 0.348241 12.0 63.974253 \n",
"501 11.255463 0.003551 35.0 65.307378 \n",
"502 -1.431406 0.029812 16.0 65.606093 \n",
"503 6.976000 0.047245 20.0 65.067478 \n",
"\n",
" peaksSumLow pitchAvgLow pitchPeak0 pitchPeak1 pitchPeak2 pitchPeak3 \\\n",
"0 0.000000 0.000938 0.0 0.000000 0.000000 0.000000 \n",
"1 928.859251 0.015892 0.0 0.000000 0.000000 0.000000 \n",
"2 2869.988603 0.132808 0.0 0.000000 0.000000 0.000000 \n",
"3 5538.283465 1.441479 0.0 0.000000 0.000000 0.000000 \n",
"4 5645.845839 1.611968 4.0 -0.489273 -0.122318 0.012606 \n",
".. ... ... ... ... ... ... \n",
"499 252.273386 0.002021 0.0 0.000000 0.000000 0.000000 \n",
"500 767.691038 0.011532 0.0 0.000000 0.000000 0.000000 \n",
"501 2285.758227 0.059133 0.0 0.000000 0.000000 0.000000 \n",
"502 1049.697496 0.052483 0.0 0.000000 0.000000 0.000000 \n",
"503 1301.349551 1.560049 0.0 0.000000 0.000000 0.000000 \n",
"\n",
" pitchStdDevLow postureDistance_XLow postureDistance_YLow \\\n",
"0 0.000217 35.543282 -26.272001 \n",
"1 0.004891 27.797010 -34.074141 \n",
"2 0.016102 59.757388 0.159047 \n",
"3 0.103448 72.704125 39.906715 \n",
"4 0.206093 67.788018 38.457954 \n",
".. ... ... ... \n",
"499 0.000332 83.928074 18.551205 \n",
"500 0.001512 83.342334 17.194484 \n",
"501 0.014748 84.247482 26.589851 \n",
"502 0.004246 88.277272 43.153164 \n",
"503 0.336867 80.441325 32.396661 \n",
"\n",
" postureDistance_ZLow quartilesMagnitudes_XBand \\\n",
"0 -61.815283 0.061738 \n",
"1 -61.871151 0.145435 \n",
"2 -59.598341 0.281532 \n",
"3 -32.797410 2.869744 \n",
"4 -29.330064 6.280481 \n",
".. ... ... \n",
"499 -65.376868 0.086797 \n",
"500 -66.147850 0.054171 \n",
"501 -57.657631 0.188673 \n",
"502 -45.124108 0.103420 \n",
"503 -48.044665 0.103100 \n",
"\n",
" quartilesMagnitudes_YBand quartilesMagnitudes_ZBand quartilesQ1_XBand \\\n",
"0 0.118949 0.178021 -0.054443 \n",
"1 0.260237 0.661256 -0.086167 \n",
"2 3.402929 7.664861 -1.268853 \n",
"3 4.702810 7.490567 -2.200263 \n",
"4 9.396958 14.039468 -4.611741 \n",
".. ... ... ... \n",
"499 0.145225 0.227369 -0.017104 \n",
"500 0.152417 0.411110 -0.035056 \n",
"501 0.795689 2.070261 -0.347386 \n",
"502 0.191260 0.824083 -0.074998 \n",
"503 0.332578 1.263642 -0.120617 \n",
"\n",
" quartilesQ1_YBand quartilesQ1_ZBand quartilesQ2_XBand \\\n",
"0 -0.032033 -0.039487 -0.009518 \n",
"1 -0.135954 -0.136618 0.013514 \n",
"2 -1.243138 -1.259616 -0.007098 \n",
"3 -2.005430 -1.505724 0.084118 \n",
"4 -3.234598 -4.618432 0.041283 \n",
".. ... ... ... \n",
"499 -0.035340 -0.078979 0.003914 \n",
"500 -0.090815 -0.069541 0.000288 \n",
"501 -0.245273 -0.317599 -0.000426 \n",
"502 -0.084686 -0.089356 0.000005 \n",
"503 -0.173414 -0.101217 -0.000454 \n",
"\n",
" quartilesQ2_YBand quartilesQ2_ZBand quartilesQ3_XBand \\\n",
"0 1.454335e-02 2.479075e-07 0.053999 \n",
"1 4.007931e-04 2.578741e-03 0.159795 \n",
"2 -5.021189e-02 3.661978e-06 0.810530 \n",
"3 -1.789399e-01 2.803538e-02 2.235211 \n",
"4 3.167752e-01 -6.475688e-02 5.068963 \n",
".. ... ... ... \n",
"499 -2.528229e-06 -8.867480e-03 0.053218 \n",
"500 -1.020861e-04 7.748469e-12 0.048301 \n",
"501 -1.606221e-04 -3.735316e-03 0.297946 \n",
"502 3.517538e-04 2.042814e-04 0.125401 \n",
"503 -1.027010e-09 -1.098812e-03 0.205484 \n",
"\n",
" quartilesQ3_YBand quartilesQ3_ZBand rollAvgLow rollMotionAmountLow \\\n",
"0 0.049688 0.025612 0.029061 0.008021 \n",
"1 0.116031 0.129407 0.541524 0.085935 \n",
"2 0.316505 0.483781 6.280891 1.447569 \n",
"3 1.388993 1.843050 6.271116 2.250457 \n",
"4 3.092325 4.058300 6.265128 2.342195 \n",
".. ... ... ... ... \n",
"499 0.038921 0.097297 0.071320 0.007932 \n",
"500 0.032708 0.074073 0.372438 0.031162 \n",
"501 0.190241 0.234410 6.278076 0.962455 \n",
"502 0.070004 0.107466 6.281475 1.129232 \n",
"503 0.107873 0.123350 1.133865 0.133845 \n",
"\n",
" rollMotionRegularityLow rollPeak0 rollPeak1 rollPeak2 rollPeak3 \\\n",
"0 1.000 0.0 0.000000 0.000000 0.000000 \n",
"1 1.000 0.0 0.000000 0.000000 0.000000 \n",
"2 1.000 9.0 21.707206 2.411912 0.002484 \n",
"3 0.988 11.0 28.398787 2.581708 0.025052 \n",
"4 0.998 27.0 57.342009 2.123778 0.000035 \n",
".. ... ... ... ... ... \n",
"499 1.000 0.0 0.000000 0.000000 0.000000 \n",
"500 1.000 0.0 0.000000 0.000000 0.000000 \n",
"501 1.000 4.0 12.485143 3.121286 0.003238 \n",
"502 1.000 3.0 9.145478 3.048493 2.092086 \n",
"503 1.000 0.0 0.000000 0.000000 0.000000 \n",
"\n",
" rollPitchCorrelation rollStdDevLow skewness_XBand skewness_YBand \\\n",
"0 1.000000 0.008562 14.436898 -11.494984 \n",
"1 0.999999 0.123100 2.807118 -1.100507 \n",
"2 0.999997 1.958079 -0.633833 -1.197336 \n",
"3 0.999995 2.397779 -0.833540 -1.348253 \n",
"4 0.999985 2.419125 -1.132133 -1.665492 \n",
".. ... ... ... ... \n",
"499 1.000000 0.009974 14.222786 -14.169953 \n",
"500 1.000000 0.054444 11.853592 -13.132488 \n",
"501 0.999998 1.701608 4.491024 -11.201286 \n",
"502 0.999999 1.866030 8.739616 -11.817088 \n",
"503 0.999986 0.215263 4.777859 -12.139106 \n",
"\n",
" skewness_ZBand squareSumOfComponent squareSumOfComponent_X \\\n",
"0 14.424527 1.619926e+07 867.287775 \n",
"1 12.046715 1.630370e+07 865.242225 \n",
"2 1.684239 1.654691e+07 870.233406 \n",
"3 -1.359373 6.736924e+05 661.235510 \n",
"4 -1.256109 1.680410e+07 2273.525442 \n",
".. ... ... ... \n",
"499 13.535020 1.630266e+07 1263.693630 \n",
"500 8.691259 1.608824e+07 1335.055131 \n",
"501 -0.771061 1.905301e+07 1266.701486 \n",
"502 2.300305 1.681807e+07 1819.059819 \n",
"503 -0.432671 1.504212e+07 1414.613179 \n",
"\n",
" squareSumOfComponent_Y squareSumOfComponent_Z sumOfSquareComponents \\\n",
"0 37.266065 3120.276758 1.048970e+07 \n",
"1 51.060403 3121.481343 1.049490e+07 \n",
"2 109.430560 3088.125621 1.030580e+07 \n",
"3 90.891793 68.660385 4.502080e+05 \n",
"4 704.049839 1121.705691 6.922828e+06 \n",
".. ... ... ... \n",
"499 2476.085590 297.876317 7.816652e+06 \n",
"500 2377.699120 298.260456 7.524785e+06 \n",
"501 2994.586208 103.687125 1.058283e+07 \n",
"502 2277.777042 4.147205 8.497264e+06 \n",
"503 2463.791439 0.011977 8.071399e+06 \n",
"\n",
" sumPerComponent_XBand sumPerComponent_YBand sumPerComponent_ZBand \\\n",
"0 29.002355 6.001318 55.003283 \n",
"1 29.009274 7.006492 55.008412 \n",
"2 29.038915 10.034777 55.036378 \n",
"3 25.052536 9.039004 8.037320 \n",
"4 47.093516 26.066646 33.087563 \n",
".. ... ... ... \n",
"499 35.002929 49.003488 17.002448 \n",
"500 36.005837 48.005767 17.004361 \n",
"501 35.015515 54.010908 10.011338 \n",
"502 42.009258 47.007507 2.004713 \n",
"503 37.010612 49.008707 0.006081 \n",
"\n",
" totalAbsoluteAreaBand totalEnergy_XBand totalEnergy_YBand \\\n",
"0 312.592555 1290.394581 60.611492 \n",
"1 864.715960 2537.180818 677.832377 \n",
"2 3616.215615 9218.952240 6770.834825 \n",
"3 4165.495456 12493.455174 6106.239879 \n",
"4 8033.196394 33021.472511 16683.117998 \n",
".. ... ... ... \n",
"499 384.671068 1908.638778 3729.334512 \n",
"500 611.899981 2211.472549 3700.438879 \n",
"501 1307.327021 3237.943851 5051.325838 \n",
"502 778.281403 3591.558470 3805.375198 \n",
"503 898.820043 3413.563386 4090.414372 \n",
"\n",
" totalEnergy_ZBand totalKineticEnergyBand totalMagnitudeBand \\\n",
"0 4694.902256 3.782695e+09 78.088845 \n",
"1 5132.819023 3.795297e+09 91.657431 \n",
"2 11785.651118 3.844737e+09 166.747125 \n",
"3 5277.603869 7.464573e+08 154.645146 \n",
"4 26879.848539 3.852492e+09 276.840101 \n",
".. ... ... ... \n",
"499 455.208874 3.795297e+09 78.389786 \n",
"500 572.202692 3.770092e+09 80.859842 \n",
"501 895.466940 4.111329e+09 96.114795 \n",
"502 341.436881 3.855401e+09 88.266159 \n",
"503 365.728609 3.654731e+09 88.770283 \n",
"\n",
" totalMeanLow variance_XBand variance_YBand variance_ZBand \\\n",
"0 12875.786040 2.586383 0.137999 9.396457 \n",
"1 11911.441472 5.334184 1.579538 10.411239 \n",
"2 5736.225303 24.202143 19.306809 29.209739 \n",
"3 3620.581741 35.239450 19.355604 16.080099 \n",
"4 1701.460966 100.726696 54.227260 85.860586 \n",
".. ... ... ... ... \n",
"499 503.883251 3.825507 7.779741 0.922262 \n",
"500 505.761307 4.495299 7.917488 1.197929 \n",
"501 449.768115 7.228331 11.218333 2.322136 \n",
"502 -1044.193986 7.407112 8.274669 0.777455 \n",
"503 879.999083 7.290436 8.752011 0.882940 \n",
"\n",
" velocity_XBand velocity_YBand velocity_ZBand \n",
"0 29.001359 -6.000329 5.500258e+01 \n",
"1 29.001351 -7.000462 5.500257e+01 \n",
"2 29.001408 -10.002113 5.499929e+01 \n",
"3 25.002506 -9.002192 8.000601e+00 \n",
"4 47.001504 -26.003086 3.299904e+01 \n",
".. ... ... ... \n",
"499 35.001684 -49.002253 1.700079e+01 \n",
"500 36.001692 -48.002424 1.700076e+01 \n",
"501 35.001969 -54.002179 9.999950e+00 \n",
"502 42.001899 -47.002248 -1.999967e+00 \n",
"503 37.000000 -49.000000 1.240497e-08 \n",
"\n",
"[504 rows x 169 columns]\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"from calculatingfeatures.CalculatingFeatures.helper_functions import convert3DEmpaticaToArray\n",
"\n",
"pathToAccCsv = \"example_data/S2_E4_Data/ACC.csv\"\n",
"windowLength = 500\n",
"\n",
"#np.seterr(all='raise')\n",
"\n",
"# get an array of values from ACC empatica file\n",
"data, startTimeStamp, sampleRate = convert3DEmpaticaToArray(pathToAccCsv)\n",
"\n",
"# Convert the ACC data into 2D array\n",
"x_2D = convertInputInto2d(data[0], windowLength)\n",
"y_2D = convertInputInto2d(data[1], windowLength)\n",
"z_2D = convertInputInto2d(data[2], windowLength)\n",
"\n",
"# Create a list with feature names\n",
"featureNames = []\n",
"featureNames.extend(accelerometerFeatureNames)\n",
"featureNames.extend(frequencyFeatureNames)\n",
"\n",
"pd.set_option('display.max_columns', None)\n",
"\n",
"# Calculate features\n",
"calculatedFeatures = calculateFeatures(x_2D, y_2D, z_2D, fs=int(sampleRate), featureNames=featureNames)\n",
"print(calculatedFeatures)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## convertInputInto2dTime"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[10, 150, 1100, 1150], [1200, 1300], [1400, 1500], [1600]]\n",
"[[0, 50, 100, 150], [200, 300], [400, 500], [600]]\n"
]
}
],
"source": [
"df = pd.DataFrame()\n",
"df[\"data\"] = [10, 150, 1100, 1150, 1200, 1300, 1400, 1500, 1600]\n",
"df[\"time\"] = [0, 50, 100, 150, 200, 300, 400, 500, 600]\n",
"\n",
"outData, outTime = convertInputInto2dTime(df, 200)\n",
"print(outData)\n",
"print(outTime)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Calculate all features"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
" 24%|██▎ | 4/17 [00:03<00:11, 1.12it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Bad signal. Too little RRs detected. 1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 29%|██▉ | 5/17 [00:04<00:11, 1.08it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Bad signal. Too little RRs detected. 1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 35%|███▌ | 6/17 [00:05<00:10, 1.09it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Bad signal. Too little RRs detected. 1\n",
"Bad signal. Too little RRs detected. 1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 53%|█████▎ | 9/17 [00:08<00:07, 1.06it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Bad signal. Too little RRs detected. 1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\r",
" 59%|█████▉ | 10/17 [00:09<00:06, 1.07it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Bad signal. Too little RRs detected. 1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 71%|███████ | 12/17 [00:11<00:04, 1.12it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Bad signal. Too little RRs detected. 1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
" 88%|████████▊ | 15/17 [00:13<00:01, 1.06it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Bad signal. Too little RRs detected. 1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 17/17 [00:15<00:00, 1.09it/s]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Bad signal. Too little RRs detected. 1\n",
"Bad signal. Too little RRs detected. 1\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" absEnergy_X absEnergy_Y absEnergy_Z absoluteAreaAllBand \\\n",
"0 9757.282156 10849.028553 9811.741631 930.324637 \n",
"1 9448.079674 8899.975693 9956.680101 880.255964 \n",
"2 9669.760737 9184.529987 9121.402956 889.394563 \n",
"3 10026.356290 9801.236188 9982.377726 920.462589 \n",
"4 9709.603922 10691.230186 9662.734156 906.331468 \n",
"5 10233.693555 10371.886729 10563.612304 922.999063 \n",
"6 9482.841316 10326.075806 10154.052192 891.241288 \n",
"7 9520.121266 10241.641412 10387.903719 889.958466 \n",
"8 10395.792313 10179.629166 10107.379246 899.898502 \n",
"9 11026.931493 9834.741763 10120.339487 937.539507 \n",
"10 9574.581294 8891.577695 9480.013849 853.098151 \n",
"11 10266.304113 9524.407888 9519.015587 894.370062 \n",
"12 9639.580580 9683.493055 10251.534492 912.690717 \n",
"13 10149.017500 9632.893918 9966.713340 896.978822 \n",
"14 9190.474376 10330.498873 10536.313374 904.039012 \n",
"15 10890.487664 10640.928635 10044.509683 949.133312 \n",
"16 6484.122156 6140.316953 7010.804341 618.770314 \n",
"\n",
" absoluteArea_XBand absoluteArea_YBand absoluteArea_ZBand \\\n",
"0 9.802377 -3.995068 4.135917 \n",
"1 11.552164 -11.852706 6.764970 \n",
"2 -6.075127 -14.974184 -3.550690 \n",
"3 13.940072 -1.208619 -5.439318 \n",
"4 -0.778795 -8.573990 9.118902 \n",
"5 -5.432606 -2.345853 -5.366276 \n",
"6 -10.268284 1.608141 -2.508280 \n",
"7 7.573499 -3.973162 9.895818 \n",
"8 2.323463 -7.297003 5.956317 \n",
"9 0.066851 11.319004 4.828713 \n",
"10 -5.535852 -3.323174 9.748395 \n",
"11 -7.277916 -9.262661 6.302632 \n",
"12 -4.434544 -4.278268 6.222900 \n",
"13 -7.436684 3.024444 -5.008479 \n",
"14 4.340700 2.523212 7.274647 \n",
"15 -0.108792 -12.711790 11.993602 \n",
"16 6.800276 8.102356 9.725532 \n",
"\n",
" absoluteMean_XBand absoluteMean_YBand absoluteMean_ZBand \\\n",
"0 0.032675 -0.013317 0.013786 \n",
"1 0.038507 -0.039509 0.022550 \n",
"2 -0.020250 -0.049914 -0.011836 \n",
"3 0.046467 -0.004029 -0.018131 \n",
"4 -0.002596 -0.028580 0.030396 \n",
"5 -0.018109 -0.007820 -0.017888 \n",
"6 -0.034228 0.005360 -0.008361 \n",
"7 0.025245 -0.013244 0.032986 \n",
"8 0.007745 -0.024323 0.019854 \n",
"9 0.000223 0.037730 0.016096 \n",
"10 -0.018453 -0.011077 0.032495 \n",
"11 -0.024260 -0.030876 0.021009 \n",
"12 -0.014782 -0.014261 0.020743 \n",
"13 -0.024789 0.010081 -0.016695 \n",
"14 0.014469 0.008411 0.024249 \n",
"15 -0.000363 -0.042373 0.039979 \n",
"16 0.022668 0.027008 0.032418 \n",
"\n",
" amplitude_XBand amplitude_XLow amplitude_YBand amplitude_YLow \\\n",
"0 11.840441 15.367655 5.561830 13.599581 \n",
"1 10.842231 13.185562 11.954154 15.408985 \n",
"2 12.065636 15.300944 12.504229 15.425589 \n",
"3 9.885092 13.416908 5.636100 12.551434 \n",
"4 5.721227 12.760709 10.656748 13.420126 \n",
"5 6.394455 12.454305 7.781983 13.642673 \n",
"6 11.251708 14.216014 8.006252 12.116988 \n",
"7 9.572914 12.906963 5.469677 12.083638 \n",
"8 5.521984 12.295475 10.685971 14.293234 \n",
"9 5.739659 12.753636 12.351271 15.905907 \n",
"10 9.259486 12.892579 7.553088 11.666330 \n",
"11 12.682163 15.907374 10.232092 12.641317 \n",
"12 10.885035 13.532587 7.599297 11.406162 \n",
"13 8.409818 13.167735 6.321747 11.584058 \n",
"14 5.417743 12.668153 7.214473 12.111088 \n",
"15 5.565133 13.389627 12.269357 15.438568 \n",
"16 9.572596 11.662286 10.803180 14.518034 \n",
"\n",
" amplitude_ZBand amplitude_ZLow areaAutocorr_X areaAutocorr_Y \\\n",
"0 6.120984 12.077082 1.251150 0.346077 \n",
"1 7.338200 13.034990 0.613081 -0.337795 \n",
"2 8.157018 11.770679 1.320552 0.285729 \n",
"3 5.816986 11.504766 -0.714717 0.104095 \n",
"4 10.494853 13.742355 -0.177515 0.744384 \n",
"5 8.948602 12.838789 -0.284261 0.190317 \n",
"6 5.537172 12.112158 0.403123 2.862261 \n",
"7 12.102983 14.971049 1.163917 0.491810 \n",
"8 4.930710 12.311160 1.211632 0.166704 \n",
"9 8.926564 12.662584 0.403719 0.886899 \n",
"10 12.090767 15.875714 0.957135 1.056713 \n",
"11 5.467044 11.685198 0.034285 0.114891 \n",
"12 11.504623 14.014334 0.083044 -0.309026 \n",
"13 7.422933 12.495047 2.116489 -0.061512 \n",
"14 6.803331 10.741192 1.100854 0.394110 \n",
"15 10.905015 14.203833 1.739354 0.889813 \n",
"16 12.463576 15.348119 NaN NaN \n",
"\n",
" areaAutocorr_Z areaUnderAccelerationMagnitude areaUnderMagnitude \\\n",
"0 0.489267 817.023838 817.023838 \n",
"1 1.201937 746.603640 746.603640 \n",
"2 0.731113 863.282811 863.282811 \n",
"3 0.980113 797.080198 797.080198 \n",
"4 0.461838 627.711913 627.711913 \n",
"5 0.885326 793.145688 793.145688 \n",
"6 0.046986 751.758387 751.758387 \n",
"7 0.285232 804.852128 804.852128 \n",
"8 1.022880 737.318718 737.318718 \n",
"9 0.418596 748.433836 748.433836 \n",
"10 1.295665 729.288649 729.288649 \n",
"11 0.433735 832.523937 832.523937 \n",
"12 0.114227 874.454264 874.454264 \n",
"13 0.895080 684.783664 684.783664 \n",
"14 0.864031 684.304828 684.304828 \n",
"15 0.615599 845.185357 845.185357 \n",
"16 NaN 889.558912 889.558912 \n",
"\n",
" area_XLow area_YLow area_ZLow autocorrelation_100_X \\\n",
"0 8.507300 17.448677 -93.586973 -0.033598 \n",
"1 195.204955 -2.151729 -22.210498 -0.128406 \n",
"2 14.886643 -72.277090 3.763140 -0.045989 \n",
"3 -6.580937 -57.815404 64.301458 -0.114063 \n",
"4 -33.226356 -169.940579 -44.658588 -0.023989 \n",
"5 92.264979 54.311395 114.608368 -0.006580 \n",
"6 146.122043 106.458752 -12.069510 0.071640 \n",
"7 81.070954 9.782555 101.605517 0.114433 \n",
"8 76.638693 57.580025 -135.876734 0.025191 \n",
"9 19.624899 43.201275 151.705470 -0.047697 \n",
"10 -16.976897 2.086521 3.798669 0.081849 \n",
"11 4.496054 17.036321 -78.608625 0.073983 \n",
"12 2.403524 -47.309146 161.572935 0.137246 \n",
"13 -156.226880 19.395747 7.455774 0.020696 \n",
"14 -25.123373 -32.135156 -54.622977 0.048791 \n",
"15 -3.221847 -77.477830 -75.762919 0.186899 \n",
"16 120.936148 -69.355449 158.385979 -0.076146 \n",
"\n",
" autocorrelation_100_Y autocorrelation_100_Z autocorrelation_10_X \\\n",
"0 0.059537 0.053420 0.106405 \n",
"1 0.103122 0.007333 0.045905 \n",
"2 0.039841 0.040569 -0.054911 \n",
"3 0.034858 0.000401 -0.008231 \n",
"4 0.090927 -0.158701 0.071754 \n",
"5 0.012849 0.006175 0.009983 \n",
"6 -0.050546 0.037803 0.045039 \n",
"7 -0.154497 0.117893 -0.042434 \n",
"8 0.078231 -0.106049 0.074367 \n",
"9 -0.033887 0.048270 0.089410 \n",
"10 -0.043212 0.116065 0.060132 \n",
"11 0.008015 -0.043320 -0.017004 \n",
"12 0.061625 -0.075384 0.034301 \n",
"13 -0.025759 -0.025377 0.031711 \n",
"14 0.009157 0.018478 -0.044737 \n",
"15 0.075965 -0.007770 0.038175 \n",
"16 -0.065110 0.043484 -0.065927 \n",
"\n",
" autocorrelation_10_Y autocorrelation_10_Z autocorrelation_20_X \\\n",
"0 -0.100977 -0.038760 0.040176 \n",
"1 0.052315 -0.034063 0.127281 \n",
"2 0.001645 -0.038531 -0.017747 \n",
"3 0.023636 0.033845 0.054339 \n",
"4 -0.067678 -0.037247 0.064662 \n",
"5 -0.047529 0.088462 0.088562 \n",
"6 -0.033754 0.004394 0.035105 \n",
"7 0.025099 -0.017073 0.014068 \n",
"8 0.043763 0.123542 -0.107926 \n",
"9 -0.065737 -0.075726 0.050419 \n",
"10 -0.093968 0.025957 0.023002 \n",
"11 -0.007979 -0.011119 -0.061107 \n",
"12 0.006941 -0.190285 -0.003771 \n",
"13 0.052174 0.014034 0.033961 \n",
"14 -0.014764 -0.070400 -0.046461 \n",
"15 0.033185 0.053601 -0.006713 \n",
"16 0.028038 0.073310 -0.056683 \n",
"\n",
" autocorrelation_20_Y autocorrelation_20_Z autocorrelation_30_X \\\n",
"0 0.003765 0.002543 -0.049990 \n",
"1 -0.129480 -0.014282 0.027596 \n",
"2 0.011977 -0.110984 0.038068 \n",
"3 -0.058947 -0.038399 0.000622 \n",
"4 0.067429 0.004266 -0.057145 \n",
"5 0.031023 -0.001941 0.034667 \n",
"6 0.012584 0.030843 -0.046854 \n",
"7 -0.006981 -0.007008 -0.096810 \n",
"8 0.066055 0.003499 -0.025921 \n",
"9 0.046704 0.051978 0.054563 \n",
"10 -0.039985 -0.062853 0.002230 \n",
"11 0.063928 -0.108339 0.071981 \n",
"12 -0.056253 -0.000450 -0.026721 \n",
"13 -0.010468 0.001997 -0.019577 \n",
"14 -0.068659 0.079928 0.065463 \n",
"15 0.001135 -0.026500 -0.135474 \n",
"16 0.074539 -0.126566 0.061670 \n",
"\n",
" autocorrelation_30_Y autocorrelation_30_Z autocorrelation_50_X \\\n",
"0 -0.040294 -0.011024 0.060141 \n",
"1 0.040854 0.093325 -0.071681 \n",
"2 0.007768 -0.104029 0.077159 \n",
"3 -0.037307 -0.083809 0.031726 \n",
"4 -0.085651 -0.033945 -0.019312 \n",
"5 0.031843 0.010472 0.007438 \n",
"6 -0.049723 -0.104720 0.027879 \n",
"7 0.058257 -0.034894 -0.007670 \n",
"8 -0.022534 0.069451 0.088884 \n",
"9 0.021820 -0.040629 -0.026695 \n",
"10 0.024232 -0.013382 -0.052934 \n",
"11 0.014563 -0.048561 -0.064959 \n",
"12 -0.115923 0.132645 0.045606 \n",
"13 0.023235 0.017712 -0.000441 \n",
"14 -0.017772 0.114692 -0.061390 \n",
"15 -0.083997 0.049844 -0.052004 \n",
"16 0.040640 -0.130493 -0.014951 \n",
"\n",
" autocorrelation_50_Y autocorrelation_50_Z autocorrelation_5_X \\\n",
"0 -0.035205 -0.055939 -0.009348 \n",
"1 -0.062680 -0.055987 -0.069317 \n",
"2 0.002311 0.111358 -0.004053 \n",
"3 -0.017752 -0.016835 0.005310 \n",
"4 -0.035473 -0.033905 0.031233 \n",
"5 -0.072231 -0.044880 -0.042741 \n",
"6 0.035824 0.096863 -0.060521 \n",
"7 0.087412 -0.149575 -0.082264 \n",
"8 0.031052 0.071567 0.002081 \n",
"9 0.028157 0.055367 0.040055 \n",
"10 0.020769 0.027237 -0.052585 \n",
"11 0.009232 0.083537 0.037802 \n",
"12 0.077260 0.037070 -0.009196 \n",
"13 -0.125566 -0.028065 0.091008 \n",
"14 0.058202 0.018044 -0.084337 \n",
"15 -0.063941 -0.123819 -0.024515 \n",
"16 -0.034196 -0.061111 -0.092936 \n",
"\n",
" autocorrelation_5_Y autocorrelation_5_Z autocorrelation_75_X \\\n",
"0 0.036256 -0.059414 -0.064041 \n",
"1 -0.016056 0.066141 -0.001367 \n",
"2 -0.084868 -0.058238 -0.029358 \n",
"3 -0.087827 -0.099613 -0.051004 \n",
"4 -0.013456 0.012132 0.008428 \n",
"5 0.023408 0.109833 0.023188 \n",
"6 -0.090370 0.013848 -0.054948 \n",
"7 -0.024935 0.033933 -0.104112 \n",
"8 0.039163 0.068791 -0.156985 \n",
"9 -0.085966 -0.018881 -0.035873 \n",
"10 0.155348 0.089262 -0.018731 \n",
"11 -0.055070 -0.053334 0.088817 \n",
"12 -0.062619 0.039355 -0.028028 \n",
"13 0.025877 0.003278 0.002593 \n",
"14 0.077899 -0.037150 -0.053984 \n",
"15 -0.028301 -0.017459 0.105301 \n",
"16 0.116500 0.077768 -0.030928 \n",
"\n",
" autocorrelation_75_Y autocorrelation_75_Z averageVectorLength \\\n",
"0 0.022417 0.117357 9.683036 \n",
"1 0.023094 0.006500 9.222364 \n",
"2 0.073042 0.013775 9.235800 \n",
"3 0.086656 -0.026402 9.612871 \n",
"4 -0.010023 0.062667 9.645595 \n",
"5 -0.058372 0.022381 9.861227 \n",
"6 -0.012912 0.057195 9.574246 \n",
"7 0.022179 -0.087485 9.665710 \n",
"8 0.051851 0.009877 9.744560 \n",
"9 0.001869 0.020469 9.764734 \n",
"10 -0.060570 -0.032457 9.275388 \n",
"11 0.029491 0.056988 9.519998 \n",
"12 0.021713 0.100584 9.425750 \n",
"13 0.039316 0.153231 9.580493 \n",
"14 0.034723 -0.056405 9.668018 \n",
"15 0.009760 0.016339 9.944224 \n",
"16 0.030622 0.073927 6.330216 \n",
"\n",
" averageVectorLengthLow averageVectorLengthPower \\\n",
"0 3.954539 93.761196 \n",
"1 3.875639 85.051992 \n",
"2 3.639579 85.300010 \n",
"3 3.991453 92.407281 \n",
"4 3.881851 93.037501 \n",
"5 4.133362 97.243807 \n",
"6 3.935599 91.666188 \n",
"7 3.991640 93.425941 \n",
"8 4.194873 94.956458 \n",
"9 3.979599 95.350039 \n",
"10 3.938795 86.032830 \n",
"11 3.852962 90.630358 \n",
"12 4.085098 88.844765 \n",
"13 3.968863 91.785846 \n",
"14 3.958077 93.470567 \n",
"15 4.074935 98.887582 \n",
"16 2.623497 40.071633 \n",
"\n",
" averageVectorLengthPowerLow avgPeakAmplitudeChangeAfter_X \\\n",
"0 15.638376 NaN \n",
"1 15.020578 NaN \n",
"2 13.246539 NaN \n",
"3 15.931694 NaN \n",
"4 15.068770 NaN \n",
"5 17.084679 NaN \n",
"6 15.488938 NaN \n",
"7 15.933187 NaN \n",
"8 17.596959 NaN \n",
"9 15.837206 NaN \n",
"10 15.514102 NaN \n",
"11 14.845319 NaN \n",
"12 16.688024 NaN \n",
"13 15.751873 NaN \n",
"14 15.666371 NaN \n",
"15 16.605092 NaN \n",
"16 6.882736 NaN \n",
"\n",
" avgPeakAmplitudeChangeAfter_Y avgPeakAmplitudeChangeAfter_Z \\\n",
"0 NaN NaN \n",
"1 NaN NaN \n",
"2 NaN NaN \n",
"3 NaN NaN \n",
"4 NaN NaN \n",
"5 NaN NaN \n",
"6 NaN NaN \n",
"7 NaN NaN \n",
"8 NaN NaN \n",
"9 NaN NaN \n",
"10 NaN NaN \n",
"11 NaN NaN \n",
"12 NaN NaN \n",
"13 NaN NaN \n",
"14 NaN NaN \n",
"15 NaN NaN \n",
"16 NaN NaN \n",
"\n",
" avgPeakAmplitudeChangeBefore_X avgPeakAmplitudeChangeBefore_Y \\\n",
"0 NaN NaN \n",
"1 NaN NaN \n",
"2 NaN NaN \n",
"3 NaN NaN \n",
"4 NaN NaN \n",
"5 NaN NaN \n",
"6 NaN NaN \n",
"7 NaN NaN \n",
"8 NaN NaN \n",
"9 NaN NaN \n",
"10 NaN NaN \n",
"11 NaN NaN \n",
"12 NaN NaN \n",
"13 NaN NaN \n",
"14 NaN NaN \n",
"15 NaN NaN \n",
"16 NaN NaN \n",
"\n",
" avgPeakAmplitudeChangeBefore_Z avgPeakChangeRatio_X \\\n",
"0 NaN NaN \n",
"1 NaN NaN \n",
"2 NaN NaN \n",
"3 NaN NaN \n",
"4 NaN NaN \n",
"5 NaN NaN \n",
"6 NaN NaN \n",
"7 NaN NaN \n",
"8 NaN NaN \n",
"9 NaN NaN \n",
"10 NaN NaN \n",
"11 NaN NaN \n",
"12 NaN NaN \n",
"13 NaN NaN \n",
"14 NaN NaN \n",
"15 NaN NaN \n",
"16 NaN NaN \n",
"\n",
" avgPeakChangeRatio_Y avgPeakChangeRatio_Z avgPeakDecreaseTime_X \\\n",
"0 NaN NaN NaN \n",
"1 NaN NaN NaN \n",
"2 NaN NaN NaN \n",
"3 NaN NaN NaN \n",
"4 NaN NaN NaN \n",
"5 NaN NaN NaN \n",
"6 NaN NaN NaN \n",
"7 NaN NaN NaN \n",
"8 NaN NaN NaN \n",
"9 NaN NaN NaN \n",
"10 NaN NaN NaN \n",
"11 NaN NaN NaN \n",
"12 NaN NaN NaN \n",
"13 NaN NaN NaN \n",
"14 NaN NaN NaN \n",
"15 NaN NaN NaN \n",
"16 NaN NaN NaN \n",
"\n",
" avgPeakDecreaseTime_Y avgPeakDecreaseTime_Z avgPeakDuration_X \\\n",
"0 NaN NaN NaN \n",
"1 NaN NaN NaN \n",
"2 NaN NaN NaN \n",
"3 NaN NaN NaN \n",
"4 NaN NaN NaN \n",
"5 NaN NaN NaN \n",
"6 NaN NaN NaN \n",
"7 NaN NaN NaN \n",
"8 NaN NaN NaN \n",
"9 NaN NaN NaN \n",
"10 NaN NaN NaN \n",
"11 NaN NaN NaN \n",
"12 NaN NaN NaN \n",
"13 NaN NaN NaN \n",
"14 NaN NaN NaN \n",
"15 NaN NaN NaN \n",
"16 NaN NaN NaN \n",
"\n",
" avgPeakDuration_Y avgPeakDuration_Z avgPeakIncreaseTime_X \\\n",
"0 NaN NaN NaN \n",
"1 NaN NaN NaN \n",
"2 NaN NaN NaN \n",
"3 NaN NaN NaN \n",
"4 NaN NaN NaN \n",
"5 NaN NaN NaN \n",
"6 NaN NaN NaN \n",
"7 NaN NaN NaN \n",
"8 NaN NaN NaN \n",
"9 NaN NaN NaN \n",
"10 NaN NaN NaN \n",
"11 NaN NaN NaN \n",
"12 NaN NaN NaN \n",
"13 NaN NaN NaN \n",
"14 NaN NaN NaN \n",
"15 NaN NaN NaN \n",
"16 NaN NaN NaN \n",
"\n",
" avgPeakIncreaseTime_Y avgPeakIncreaseTime_Z binnedEntropy_X \\\n",
"0 NaN NaN 2.298323 \n",
"1 NaN NaN 2.289073 \n",
"2 NaN NaN 2.280011 \n",
"3 NaN NaN 2.286551 \n",
"4 NaN NaN 2.292404 \n",
"5 NaN NaN 2.288386 \n",
"6 NaN NaN 2.282082 \n",
"7 NaN NaN 2.291969 \n",
"8 NaN NaN 2.290071 \n",
"9 NaN NaN 2.282979 \n",
"10 NaN NaN 2.291118 \n",
"11 NaN NaN 2.287470 \n",
"12 NaN NaN 2.298981 \n",
"13 NaN NaN 2.294519 \n",
"14 NaN NaN 2.290551 \n",
"15 NaN NaN 2.284167 \n",
"16 NaN NaN 2.000757 \n",
"\n",
" binnedEntropy_Y binnedEntropy_Z calcMeanCrossingRateAutocorr_X \\\n",
"0 2.278283 2.287630 65.0 \n",
"1 2.272205 2.290649 67.0 \n",
"2 2.268384 2.285813 71.0 \n",
"3 2.278670 2.299186 57.0 \n",
"4 2.286274 2.297375 65.0 \n",
"5 2.290115 2.285257 63.0 \n",
"6 2.294149 2.283044 53.0 \n",
"7 2.288501 2.283649 71.0 \n",
"8 2.293779 2.284550 61.0 \n",
"9 2.294618 2.296906 65.0 \n",
"10 2.288205 2.280010 65.0 \n",
"11 2.287591 2.296889 67.0 \n",
"12 2.291509 2.288529 61.0 \n",
"13 2.273759 2.296630 61.0 \n",
"14 2.295320 2.288277 63.0 \n",
"15 2.295281 2.287458 50.0 \n",
"16 1.978263 1.988834 0.0 \n",
"\n",
" calcMeanCrossingRateAutocorr_Y calcMeanCrossingRateAutocorr_Z \\\n",
"0 59.0 65.0 \n",
"1 61.0 62.0 \n",
"2 71.0 69.0 \n",
"3 57.0 65.0 \n",
"4 67.0 63.0 \n",
"5 59.0 60.0 \n",
"6 77.0 57.0 \n",
"7 65.0 60.0 \n",
"8 54.0 64.0 \n",
"9 57.0 51.0 \n",
"10 75.0 58.0 \n",
"11 56.0 69.0 \n",
"12 53.0 55.0 \n",
"13 54.0 75.0 \n",
"14 65.0 69.0 \n",
"15 64.0 61.0 \n",
"16 0.0 0.0 \n",
"\n",
" changeDuration_X changeDuration_Y changeDuration_Z changeRate_X \\\n",
"0 NaN NaN NaN NaN \n",
"1 NaN NaN NaN NaN \n",
"2 NaN NaN NaN NaN \n",
"3 NaN NaN NaN NaN \n",
"4 NaN NaN NaN NaN \n",
"5 NaN NaN NaN NaN \n",
"6 NaN NaN NaN NaN \n",
"7 NaN NaN NaN NaN \n",
"8 NaN NaN NaN NaN \n",
"9 NaN NaN NaN NaN \n",
"10 NaN NaN NaN NaN \n",
"11 NaN NaN NaN NaN \n",
"12 NaN NaN NaN NaN \n",
"13 NaN NaN NaN NaN \n",
"14 NaN NaN NaN NaN \n",
"15 NaN NaN NaN NaN \n",
"16 NaN NaN NaN NaN \n",
"\n",
" changeRate_Y changeRate_Z coefficientOfVariation_XBand \\\n",
"0 NaN NaN 0.533236 \n",
"1 NaN NaN 0.527096 \n",
"2 NaN NaN 0.533909 \n",
"3 NaN NaN 0.515671 \n",
"4 NaN NaN 0.522352 \n",
"5 NaN NaN 0.528759 \n",
"6 NaN NaN 0.547856 \n",
"7 NaN NaN 0.530163 \n",
"8 NaN NaN 0.517942 \n",
"9 NaN NaN 0.518977 \n",
"10 NaN NaN 0.542770 \n",
"11 NaN NaN 0.539878 \n",
"12 NaN NaN 0.534670 \n",
"13 NaN NaN 0.533739 \n",
"14 NaN NaN 0.521455 \n",
"15 NaN NaN 0.516158 \n",
"16 NaN NaN 0.599106 \n",
"\n",
" coefficientOfVariation_XLow coefficientOfVariation_YBand \\\n",
"0 0.527017 0.514151 \n",
"1 0.452063 0.554167 \n",
"2 0.526474 0.556140 \n",
"3 0.526374 0.520226 \n",
"4 0.540857 0.534679 \n",
"5 0.493230 0.527201 \n",
"6 0.477819 0.525871 \n",
"7 0.495349 0.527140 \n",
"8 0.494374 0.537649 \n",
"9 0.524269 0.532100 \n",
"10 0.536975 0.525607 \n",
"11 0.537260 0.542834 \n",
"12 0.532577 0.526495 \n",
"13 0.570930 0.511987 \n",
"14 0.536704 0.522882 \n",
"15 0.525543 0.546662 \n",
"16 0.543337 0.624214 \n",
"\n",
" coefficientOfVariation_YLow coefficientOfVariation_ZBand \\\n",
"0 0.527270 0.516443 \n",
"1 0.525025 0.519009 \n",
"2 0.557286 0.529653 \n",
"3 0.548729 0.521221 \n",
"4 0.589041 0.527130 \n",
"5 0.513757 0.525058 \n",
"6 0.483711 0.525506 \n",
"7 0.522798 0.535721 \n",
"8 0.505772 0.514093 \n",
"9 0.518419 0.527682 \n",
"10 0.529116 0.542240 \n",
"11 0.516687 0.515561 \n",
"12 0.549653 0.529763 \n",
"13 0.524731 0.520360 \n",
"14 0.536917 0.515216 \n",
"15 0.557694 0.526219 \n",
"16 0.630624 0.619395 \n",
"\n",
" coefficientOfVariation_ZLow correlation_X_YBand correlation_X_YLow \\\n",
"0 0.555990 0.999983 0.999981 \n",
"1 0.537604 0.999979 0.999984 \n",
"2 0.529651 0.999985 0.999983 \n",
"3 0.500520 0.999982 0.999981 \n",
"4 0.539844 0.999982 0.999983 \n",
"5 0.485686 0.999986 0.999986 \n",
"6 0.532170 0.999981 0.999984 \n",
"7 0.491897 0.999983 0.999983 \n",
"8 0.570792 0.999981 0.999984 \n",
"9 0.473817 0.999983 0.999983 \n",
"10 0.521041 0.999982 0.999983 \n",
"11 0.556969 0.999985 0.999986 \n",
"12 0.479618 0.999985 0.999982 \n",
"13 0.527940 0.999982 0.999981 \n",
"14 0.546964 0.999986 0.999984 \n",
"15 0.563018 0.999982 0.999982 \n",
"16 0.540351 0.999979 0.999978 \n",
"\n",
" correlation_X_ZBand correlation_X_ZLow correlation_Y_ZBand \\\n",
"0 0.999984 0.999984 0.999983 \n",
"1 0.999984 0.999984 0.999981 \n",
"2 0.999986 0.999984 0.999986 \n",
"3 0.999983 0.999984 0.999985 \n",
"4 0.999983 0.999982 0.999980 \n",
"5 0.999984 0.999985 0.999987 \n",
"6 0.999984 0.999985 0.999984 \n",
"7 0.999985 0.999986 0.999982 \n",
"8 0.999984 0.999984 0.999982 \n",
"9 0.999984 0.999984 0.999987 \n",
"10 0.999979 0.999983 0.999983 \n",
"11 0.999981 0.999978 0.999982 \n",
"12 0.999980 0.999981 0.999980 \n",
"13 0.999986 0.999984 0.999985 \n",
"14 0.999984 0.999981 0.999981 \n",
"15 0.999983 0.999984 0.999979 \n",
"16 0.999980 0.999978 0.999978 \n",
"\n",
" correlation_Y_ZLow countAboveMeanAutocorr_X countAboveMeanAutocorr_Y \\\n",
"0 0.999981 100.0 105.0 \n",
"1 0.999984 96.0 103.0 \n",
"2 0.999986 97.0 98.0 \n",
"3 0.999984 106.0 107.0 \n",
"4 0.999982 100.0 96.0 \n",
"5 0.999984 101.0 108.0 \n",
"6 0.999984 98.0 97.0 \n",
"7 0.999985 110.0 101.0 \n",
"8 0.999985 104.0 106.0 \n",
"9 0.999987 92.0 102.0 \n",
"10 0.999983 90.0 92.0 \n",
"11 0.999983 91.0 103.0 \n",
"12 0.999982 106.0 103.0 \n",
"13 0.999982 97.0 107.0 \n",
"14 0.999980 98.0 98.0 \n",
"15 0.999981 98.0 101.0 \n",
"16 0.999975 0.0 0.0 \n",
"\n",
" countAboveMeanAutocorr_Z countAboveMean_X countAboveMean_Y \\\n",
"0 98.0 153.0 151.0 \n",
"1 99.0 155.0 145.0 \n",
"2 103.0 146.0 149.0 \n",
"3 96.0 148.0 148.0 \n",
"4 99.0 158.0 142.0 \n",
"5 100.0 158.0 156.0 \n",
"6 102.0 154.0 151.0 \n",
"7 94.0 157.0 148.0 \n",
"8 103.0 156.0 154.0 \n",
"9 102.0 147.0 150.0 \n",
"10 98.0 149.0 144.0 \n",
"11 98.0 149.0 153.0 \n",
"12 104.0 149.0 145.0 \n",
"13 105.0 143.0 163.0 \n",
"14 103.0 143.0 152.0 \n",
"15 104.0 153.0 152.0 \n",
"16 0.0 107.0 194.0 \n",
"\n",
" countAboveMean_Z countBelowMean_X countBelowMean_Y countBelowMean_Z \\\n",
"0 151.0 147.0 149.0 149.0 \n",
"1 145.0 145.0 155.0 155.0 \n",
"2 153.0 154.0 151.0 147.0 \n",
"3 153.0 152.0 152.0 147.0 \n",
"4 147.0 142.0 158.0 153.0 \n",
"5 161.0 142.0 144.0 139.0 \n",
"6 141.0 146.0 149.0 159.0 \n",
"7 152.0 143.0 152.0 148.0 \n",
"8 148.0 144.0 146.0 152.0 \n",
"9 156.0 153.0 150.0 144.0 \n",
"10 160.0 151.0 156.0 140.0 \n",
"11 147.0 151.0 147.0 153.0 \n",
"12 148.0 151.0 155.0 152.0 \n",
"13 147.0 157.0 137.0 153.0 \n",
"14 143.0 157.0 148.0 157.0 \n",
"15 143.0 147.0 148.0 157.0 \n",
"16 107.0 193.0 106.0 193.0 \n",
"\n",
" derivTonic_X derivTonic_Y derivTonic_Z deriv_X deriv_Y deriv_Z \\\n",
"0 2.264066 1.663697 -1.978076 -29.613465 9.554828 15.833924 \n",
"1 3.378476 0.002513 -2.840698 2.282190 9.914019 -17.346159 \n",
"2 9.343808 0.982711 0.262335 13.724742 8.435181 19.735082 \n",
"3 0.811307 1.112904 7.486793 -21.061162 0.162531 10.641201 \n",
"4 -4.935032 0.429249 4.470062 13.630978 28.242010 -17.852050 \n",
"5 0.615650 9.011439 1.019376 11.908970 12.286923 7.905318 \n",
"6 -0.419359 0.649203 -7.831564 4.122110 8.160791 9.625673 \n",
"7 -8.606199 0.611211 -9.516828 4.243979 -8.139702 -18.404318 \n",
"8 2.839395 -2.098615 3.895081 -14.428611 20.572239 0.857868 \n",
"9 -7.724864 -6.195070 -5.434508 2.497424 -15.977319 -18.537690 \n",
"10 4.473552 -8.085741 1.447796 6.607903 -12.228337 -11.535852 \n",
"11 -0.316638 -3.037811 6.594929 17.468651 1.330721 8.141867 \n",
"12 4.142621 3.497675 -13.110317 23.332381 -2.861054 -1.739394 \n",
"13 -0.286484 2.316337 1.315161 25.572897 5.733510 16.532478 \n",
"14 -4.116657 -1.928712 6.173228 -12.050769 -19.877969 -9.532184 \n",
"15 -9.825086 4.237792 10.268698 2.794769 12.292966 -3.724351 \n",
"16 2.010568 4.794947 5.181957 -7.922947 -7.804784 -16.465154 \n",
"\n",
" dominantFrequencyEnergy_XBand dominantFrequencyEnergy_XLow \\\n",
"0 0.021613 0.032114 \n",
"1 0.028958 0.040884 \n",
"2 0.021711 0.033403 \n",
"3 0.022758 0.049079 \n",
"4 0.021350 0.031001 \n",
"5 0.020972 0.033817 \n",
"6 0.025502 0.033085 \n",
"7 0.022359 0.033667 \n",
"8 0.026543 0.037157 \n",
"9 0.020597 0.036296 \n",
"10 0.018570 0.030853 \n",
"11 0.018851 0.030482 \n",
"12 0.023323 0.034106 \n",
"13 0.021933 0.051276 \n",
"14 0.023552 0.035077 \n",
"15 0.026252 0.036015 \n",
"16 0.018765 0.030059 \n",
"\n",
" dominantFrequencyEnergy_YBand dominantFrequencyEnergy_YLow \\\n",
"0 0.019957 0.031307 \n",
"1 0.021265 0.043713 \n",
"2 0.024045 0.036826 \n",
"3 0.029402 0.030302 \n",
"4 0.022344 0.032830 \n",
"5 0.018170 0.025395 \n",
"6 0.021805 0.033030 \n",
"7 0.023081 0.039157 \n",
"8 0.019678 0.036312 \n",
"9 0.022386 0.031697 \n",
"10 0.022396 0.031159 \n",
"11 0.021019 0.029694 \n",
"12 0.025142 0.032953 \n",
"13 0.024782 0.037983 \n",
"14 0.021930 0.030912 \n",
"15 0.028484 0.037540 \n",
"16 0.024735 0.035134 \n",
"\n",
" dominantFrequencyEnergy_ZBand dominantFrequencyEnergy_ZLow \\\n",
"0 0.029077 0.027159 \n",
"1 0.022946 0.031538 \n",
"2 0.019791 0.027571 \n",
"3 0.025449 0.032896 \n",
"4 0.021159 0.035992 \n",
"5 0.019549 0.032218 \n",
"6 0.024637 0.032953 \n",
"7 0.023016 0.046724 \n",
"8 0.024761 0.043462 \n",
"9 0.025724 0.035699 \n",
"10 0.019494 0.042561 \n",
"11 0.019693 0.035747 \n",
"12 0.026942 0.032238 \n",
"13 0.019526 0.029579 \n",
"14 0.020186 0.023121 \n",
"15 0.020404 0.039396 \n",
"16 0.019362 0.037625 \n",
"\n",
" entropy_XBand entropy_XLow entropy_YBand entropy_YLow entropy_ZBand \\\n",
"0 6.939601 6.788092 6.948577 6.798214 6.935590 \n",
"1 6.962013 6.745530 6.941184 6.684952 6.970926 \n",
"2 6.951091 6.847274 6.915013 6.731275 6.971465 \n",
"3 7.007258 6.748955 6.907122 6.793629 6.937713 \n",
"4 6.946219 6.798508 6.949631 6.798677 6.988088 \n",
"5 6.951435 6.781081 6.987060 6.826218 6.953750 \n",
"6 6.966593 6.808914 6.895219 6.701539 6.942418 \n",
"7 6.909865 6.738131 6.950536 6.776491 6.999050 \n",
"8 6.897070 6.683523 6.989430 6.804307 7.001734 \n",
"9 6.889445 6.743457 6.915464 6.744615 6.945432 \n",
"10 6.985462 6.808788 6.934208 6.785896 6.954452 \n",
"11 6.976421 6.813671 6.958526 6.779792 6.989724 \n",
"12 6.968936 6.811086 6.979781 6.796927 6.899934 \n",
"13 7.007956 6.743319 6.947040 6.797169 6.959353 \n",
"14 6.926548 6.710982 6.930923 6.774075 6.936753 \n",
"15 6.906153 6.698576 6.936426 6.763655 6.976713 \n",
"16 6.964619 6.772995 6.937821 6.765930 6.985357 \n",
"\n",
" entropy_ZLow fp01_X fp01_Y fp01_Z fp02_X fp02_Y fp02_Z fp03_X \\\n",
"0 6.765376 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"1 6.836181 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"2 6.858678 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"3 6.779053 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"4 6.808467 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"5 6.727309 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"6 6.825859 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"7 6.803815 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"8 6.753551 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"9 6.781219 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"10 6.703950 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"11 6.792300 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"12 6.652299 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"13 6.838618 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"14 6.824054 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"15 6.826027 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"16 6.781932 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"\n",
" fp03_Y fp03_Z fp04_X fp04_Y fp04_Z fp05_X fp05_Y fp05_Z fp06_X \\\n",
"0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"6 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"7 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"9 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"10 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"11 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"12 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"13 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"14 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"15 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"16 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"\n",
" fp06_Y fp06_Z fqAbsMean_X fqAbsMean_Y fqAbsMean_Z fqEnergyFeat_X \\\n",
"0 0.0 0.0 4.904584 5.246425 4.990305 9757.282156 \n",
"1 0.0 0.0 4.822180 4.645956 4.976632 9448.079674 \n",
"2 0.0 0.0 4.844398 4.809809 4.760420 9669.760737 \n",
"3 0.0 0.0 5.019139 4.967566 4.990291 10026.356290 \n",
"4 0.0 0.0 4.857150 5.237531 4.879719 9709.603922 \n",
"5 0.0 0.0 5.073285 5.102289 5.181881 10233.693555 \n",
"6 0.0 0.0 4.754901 5.170028 4.966644 9482.841316 \n",
"7 0.0 0.0 4.854265 5.078081 5.121374 9520.121266 \n",
"8 0.0 0.0 5.121016 5.118333 5.043765 10395.792313 \n",
"9 0.0 0.0 5.365118 4.954334 5.007938 11026.931493 \n",
"10 0.0 0.0 4.861183 4.696802 4.795042 9574.581294 \n",
"11 0.0 0.0 5.151702 4.821758 4.838656 10266.304113 \n",
"12 0.0 0.0 4.902073 4.841616 5.048460 9639.580580 \n",
"13 0.0 0.0 5.063369 4.971973 4.946686 10149.017500 \n",
"14 0.0 0.0 4.728647 5.075870 5.210589 9190.474376 \n",
"15 0.0 0.0 5.250907 5.215007 5.076110 10890.487664 \n",
"16 0.0 0.0 3.311168 3.172689 3.480565 6484.122156 \n",
"\n",
" fqEnergyFeat_Y fqEnergyFeat_Z fqEntropyFeat_X fqEntropyFeat_Y \\\n",
"0 10849.028553 9811.741631 5.555442 5.557260 \n",
"1 8899.975693 9956.680101 5.560929 5.536202 \n",
"2 9184.529987 9121.402956 5.575139 5.549254 \n",
"3 9801.236188 9982.377726 5.567258 5.570079 \n",
"4 10691.230186 9662.734156 5.562654 5.588084 \n",
"5 10371.886729 10563.612304 5.576252 5.583882 \n",
"6 10326.075806 10154.052192 5.603480 5.554958 \n",
"7 10241.641412 10387.903719 5.544296 5.567887 \n",
"8 10179.629166 10107.379246 5.548230 5.580267 \n",
"9 9834.741763 10120.339487 5.529802 5.567041 \n",
"10 8891.577695 9480.013849 5.576667 5.544810 \n",
"11 9524.407888 9519.015587 5.586517 5.589838 \n",
"12 9683.493055 10251.534492 5.581777 5.585898 \n",
"13 9632.893918 9966.713340 5.576922 5.570770 \n",
"14 10330.498873 10536.313374 5.560282 5.559407 \n",
"15 10640.928635 10044.509683 5.559758 5.560199 \n",
"16 6140.316953 7010.804341 5.584447 5.553468 \n",
"\n",
" fqEntropyFeat_Z fqHighestPeak1_X fqHighestPeak1_Y fqHighestPeak1_Z \\\n",
"0 5.574111 3.754916 5.607029 2.822416 \n",
"1 5.567919 2.929343 3.188250 3.588912 \n",
"2 5.581274 3.844362 2.215684 2.556580 \n",
"3 5.565787 2.664748 3.548463 3.840508 \n",
"4 5.572350 2.547426 4.058459 2.667875 \n",
"5 5.557310 3.489921 3.000982 3.052319 \n",
"6 5.554691 2.736799 3.462840 4.595469 \n",
"7 5.553808 4.006190 2.889108 3.063053 \n",
"8 5.572265 4.038741 2.673385 3.050807 \n",
"9 5.582309 3.495014 3.126081 3.176471 \n",
"10 5.542950 3.755804 2.893660 2.494761 \n",
"11 5.562584 3.657855 3.397249 2.557454 \n",
"12 5.538797 2.844807 2.782663 7.491650 \n",
"13 5.551558 3.582364 3.078669 2.436009 \n",
"14 5.540887 3.341951 2.905688 4.448141 \n",
"15 5.571962 3.659974 3.506205 3.095609 \n",
"16 5.549691 3.987941 2.775496 3.371644 \n",
"\n",
" fqHighestPeak2_X fqHighestPeak2_Y fqHighestPeak2_Z fqHighestPeak3_X \\\n",
"0 3.440065 4.450443 2.816086 3.141781 \n",
"1 2.272656 3.099145 3.375868 2.083292 \n",
"2 2.908314 2.072371 2.216813 2.889407 \n",
"3 2.558650 3.289128 2.740128 2.240007 \n",
"4 2.487128 3.198084 1.896326 2.064078 \n",
"5 2.793373 2.508526 2.849588 2.728617 \n",
"6 2.505620 2.829232 3.680274 2.496508 \n",
"7 3.474055 2.680011 2.961508 3.065422 \n",
"8 3.466653 2.333558 2.735938 2.543124 \n",
"9 3.241806 2.928799 2.562433 3.110792 \n",
"10 3.664174 2.613525 2.154152 2.815367 \n",
"11 2.584176 2.583424 2.526804 2.073441 \n",
"12 2.292539 2.606928 4.118490 2.035305 \n",
"13 2.653953 2.853552 2.430396 2.152986 \n",
"14 2.379974 2.528655 3.186949 2.361937 \n",
"15 3.228197 3.144964 3.065074 2.935554 \n",
"16 2.998196 2.765137 3.367243 2.373744 \n",
"\n",
" fqHighestPeak3_Y fqHighestPeak3_Z fqHighestPeakFreq1_X \\\n",
"0 3.806449 2.524760 20.312500 \n",
"1 2.937218 2.573928 43.359375 \n",
"2 1.933323 2.057448 17.578125 \n",
"3 2.928341 2.130777 18.359375 \n",
"4 2.634893 1.783069 21.093750 \n",
"5 2.076394 2.233292 44.531250 \n",
"6 2.630907 3.549613 10.546875 \n",
"7 2.337003 2.418840 44.531250 \n",
"8 2.187545 2.541616 7.421875 \n",
"9 2.693042 2.411896 3.125000 \n",
"10 2.063317 1.976259 33.203125 \n",
"11 2.275117 2.521100 46.875000 \n",
"12 1.701413 4.086219 19.921875 \n",
"13 2.583418 2.361895 40.234375 \n",
"14 2.265739 2.817797 7.031250 \n",
"15 2.798654 3.025101 41.796875 \n",
"16 2.469993 2.899311 47.265625 \n",
"\n",
" fqHighestPeakFreq1_Y fqHighestPeakFreq1_Z fqHighestPeakFreq2_X \\\n",
"0 35.546875 6.250000 8.593750 \n",
"1 27.734375 32.812500 8.593750 \n",
"2 39.062500 48.437500 21.875000 \n",
"3 7.812500 44.140625 24.609375 \n",
"4 45.312500 23.437500 20.703125 \n",
"5 47.265625 22.656250 17.187500 \n",
"6 36.718750 25.781250 28.515625 \n",
"7 26.171875 1.562500 23.046875 \n",
"8 9.375000 49.609375 7.812500 \n",
"9 13.671875 23.046875 24.218750 \n",
"10 42.187500 21.484375 30.859375 \n",
"11 39.062500 27.734375 3.515625 \n",
"12 5.468750 6.640625 20.312500 \n",
"13 18.750000 46.484375 40.625000 \n",
"14 22.265625 25.781250 32.812500 \n",
"15 22.656250 12.500000 2.343750 \n",
"16 35.546875 41.015625 12.500000 \n",
"\n",
" fqHighestPeakFreq2_Y fqHighestPeakFreq2_Z fqHighestPeakFreq3_X \\\n",
"0 35.937500 6.640625 48.046875 \n",
"1 12.890625 33.203125 23.828125 \n",
"2 1.171875 10.546875 15.234375 \n",
"3 7.421875 39.062500 38.281250 \n",
"4 34.765625 23.046875 11.718750 \n",
"5 5.078125 48.828125 35.937500 \n",
"6 39.843750 8.593750 41.796875 \n",
"7 40.234375 47.265625 23.437500 \n",
"8 14.843750 33.203125 8.203125 \n",
"9 9.765625 32.812500 24.609375 \n",
"10 23.828125 21.875000 31.250000 \n",
"11 38.671875 2.734375 40.625000 \n",
"12 7.812500 7.031250 24.218750 \n",
"13 1.562500 24.218750 21.093750 \n",
"14 37.890625 44.531250 6.640625 \n",
"15 38.281250 16.796875 12.109375 \n",
"16 35.937500 41.406250 12.109375 \n",
"\n",
" fqHighestPeakFreq3_Y fqHighestPeakFreq3_Z fqHistogramBin10_X \\\n",
"0 35.156250 18.359375 0.663673 \n",
"1 37.109375 49.609375 0.598443 \n",
"2 29.296875 27.734375 0.700968 \n",
"3 7.031250 44.531250 0.757265 \n",
"4 3.906250 15.625000 0.706994 \n",
"5 24.609375 40.234375 0.657617 \n",
"6 37.109375 20.312500 0.580507 \n",
"7 14.453125 13.281250 0.768002 \n",
"8 26.562500 42.187500 0.454272 \n",
"9 13.281250 22.656250 0.639002 \n",
"10 42.578125 32.031250 0.814090 \n",
"11 9.375000 44.531250 0.667374 \n",
"12 49.218750 6.250000 0.749569 \n",
"13 20.312500 21.484375 0.782994 \n",
"14 46.875000 21.093750 0.370842 \n",
"15 9.375000 16.406250 0.621563 \n",
"16 36.328125 31.640625 0.652595 \n",
"\n",
" fqHistogramBin10_Y fqHistogramBin10_Z fqHistogramBin1_X \\\n",
"0 0.877304 0.609371 0.011435 \n",
"1 0.682931 0.738879 0.009578 \n",
"2 0.639824 0.639717 0.009419 \n",
"3 0.380102 0.687712 0.036663 \n",
"4 0.716680 0.757831 0.009164 \n",
"5 0.611367 0.768926 0.009183 \n",
"6 0.750736 0.747705 0.003853 \n",
"7 0.623185 0.631193 0.009826 \n",
"8 0.679706 0.704537 0.005385 \n",
"9 0.490088 0.789989 0.021200 \n",
"10 0.697826 0.717765 0.006414 \n",
"11 0.504953 0.793269 0.002902 \n",
"12 0.562516 0.313177 0.018680 \n",
"13 0.640973 0.789066 0.063078 \n",
"14 0.599062 0.831171 0.074244 \n",
"15 0.697624 0.548579 0.012678 \n",
"16 0.777193 0.768463 0.012546 \n",
"\n",
" fqHistogramBin1_Y fqHistogramBin1_Z fqHistogramBin2_X \\\n",
"0 0.002534 0.034084 0.044164 \n",
"1 0.008954 0.047458 0.038388 \n",
"2 0.175215 0.005396 0.016583 \n",
"3 0.009890 0.034134 0.015763 \n",
"4 0.017415 0.001091 0.057432 \n",
"5 0.015252 0.069538 0.003456 \n",
"6 0.011466 0.009114 0.065513 \n",
"7 0.014012 0.128513 0.010067 \n",
"8 0.009760 0.121179 0.016688 \n",
"9 0.005246 0.004605 0.128821 \n",
"10 0.020237 0.022206 0.049923 \n",
"11 0.055101 0.002404 0.139587 \n",
"12 0.012117 0.029844 0.068914 \n",
"13 0.127296 0.001244 0.004839 \n",
"14 0.010998 0.007489 0.059668 \n",
"15 0.023385 0.014032 0.123925 \n",
"16 0.006016 0.001267 0.024574 \n",
"\n",
" fqHistogramBin2_Y fqHistogramBin2_Z fqHistogramBin3_X \\\n",
"0 0.033360 0.007048 0.015473 \n",
"1 0.037731 0.013756 0.089662 \n",
"2 0.015225 0.070362 0.019016 \n",
"3 0.019602 0.038623 0.000672 \n",
"4 0.015294 0.020563 0.009633 \n",
"5 0.081691 0.007247 0.072019 \n",
"6 0.011883 0.008837 0.045029 \n",
"7 0.018238 0.012506 0.065859 \n",
"8 0.018410 0.002731 0.011055 \n",
"9 0.021401 0.001020 0.029574 \n",
"10 0.018052 0.072599 0.001866 \n",
"11 0.020906 0.080207 0.077911 \n",
"12 0.006486 0.000533 0.042862 \n",
"13 0.039558 0.067846 0.003214 \n",
"14 0.045980 0.017778 0.009217 \n",
"15 0.011245 0.023402 0.050375 \n",
"16 0.038144 0.008480 0.010846 \n",
"\n",
" fqHistogramBin3_Y fqHistogramBin3_Z fqHistogramBin4_X \\\n",
"0 0.008985 0.017334 0.037594 \n",
"1 0.013746 0.005594 0.007540 \n",
"2 0.017045 0.061946 0.017200 \n",
"3 0.032866 0.025035 0.073223 \n",
"4 0.074446 0.042059 0.015283 \n",
"5 0.124216 0.016943 0.106799 \n",
"6 0.084053 0.006094 0.065454 \n",
"7 0.014187 0.063587 0.073324 \n",
"8 0.004976 0.011629 0.204065 \n",
"9 0.010850 0.066517 0.027461 \n",
"10 0.049761 0.012516 0.020644 \n",
"11 0.109207 0.027671 0.044941 \n",
"12 0.128897 0.013828 0.013930 \n",
"13 0.001674 0.007445 0.029504 \n",
"14 0.127170 0.025692 0.250933 \n",
"15 0.066975 0.017625 0.061256 \n",
"16 0.012055 0.008057 0.002157 \n",
"\n",
" fqHistogramBin4_Y fqHistogramBin4_Z fqHistogramBin5_X \\\n",
"0 0.007280 0.230446 0.148221 \n",
"1 0.013747 0.003758 0.101322 \n",
"2 0.059446 0.008613 0.012498 \n",
"3 0.207596 0.040753 0.013068 \n",
"4 0.009695 0.018577 0.003700 \n",
"5 0.014965 0.016717 0.035826 \n",
"6 0.026560 0.001329 0.052150 \n",
"7 0.019774 0.028393 0.029322 \n",
"8 0.028927 0.003415 0.231494 \n",
"9 0.001615 0.045945 0.051472 \n",
"10 0.028766 0.044691 0.023635 \n",
"11 0.004299 0.016184 0.013258 \n",
"12 0.035805 0.506606 0.005249 \n",
"13 0.001400 0.022177 0.020778 \n",
"14 0.068129 0.026048 0.059393 \n",
"15 0.010769 0.004830 0.027219 \n",
"16 0.000727 0.024769 0.004323 \n",
"\n",
" fqHistogramBin5_Y fqHistogramBin5_Z fqHistogramBin6_X \\\n",
"0 0.008045 0.020751 0.029557 \n",
"1 0.056060 0.012401 0.109483 \n",
"2 0.006489 0.010081 0.040686 \n",
"3 0.192067 0.069238 0.002349 \n",
"4 0.008621 0.012083 0.037449 \n",
"5 0.008543 0.021928 0.010102 \n",
"6 0.032678 0.113572 0.107633 \n",
"7 0.030802 0.001284 0.008414 \n",
"8 0.082748 0.018476 0.038918 \n",
"9 0.060710 0.010148 0.034336 \n",
"10 0.050349 0.043929 0.035819 \n",
"11 0.084466 0.004698 0.021953 \n",
"12 0.114383 0.005456 0.042467 \n",
"13 0.028269 0.034825 0.006944 \n",
"14 0.030626 0.002667 0.048076 \n",
"15 0.079745 0.004426 0.003690 \n",
"16 0.025724 0.010074 0.037145 \n",
"\n",
" fqHistogramBin6_Y fqHistogramBin6_Z fqHistogramBin7_X \\\n",
"0 0.006872 0.015075 0.004131 \n",
"1 0.017294 0.057771 0.021135 \n",
"2 0.012852 0.081111 0.017768 \n",
"3 0.036326 0.035171 0.015247 \n",
"4 0.003971 0.027636 0.084530 \n",
"5 0.037657 0.011643 0.006608 \n",
"6 0.012021 0.009564 0.004735 \n",
"7 0.049353 0.012791 0.006654 \n",
"8 0.037622 0.007045 0.007279 \n",
"9 0.151886 0.038589 0.015723 \n",
"10 0.028725 0.010863 0.026443 \n",
"11 0.032166 0.039215 0.006532 \n",
"12 0.067280 0.001306 0.031381 \n",
"13 0.082380 0.025548 0.025241 \n",
"14 0.011153 0.009987 0.029182 \n",
"15 0.005518 0.036627 0.081907 \n",
"16 0.064808 0.022580 0.181095 \n",
"\n",
" fqHistogramBin7_Y fqHistogramBin7_Z fqHistogramBin8_X \\\n",
"0 0.037588 0.050086 0.031146 \n",
"1 0.153668 0.029589 0.002795 \n",
"2 0.037881 0.024510 0.118228 \n",
"3 0.081061 0.055085 0.025833 \n",
"4 0.040810 0.031324 0.038717 \n",
"5 0.013062 0.039543 0.010482 \n",
"6 0.028420 0.004242 0.030659 \n",
"7 0.078465 0.083887 0.022828 \n",
"8 0.021692 0.047647 0.003704 \n",
"9 0.086268 0.021053 0.015700 \n",
"10 0.006769 0.008092 0.015450 \n",
"11 0.019611 0.022611 0.008412 \n",
"12 0.017028 0.026175 0.011397 \n",
"13 0.054565 0.025450 0.047621 \n",
"14 0.021420 0.050353 0.035187 \n",
"15 0.051670 0.160352 0.007104 \n",
"16 0.024693 0.061235 0.031480 \n",
"\n",
" fqHistogramBin8_Y fqHistogramBin8_Z fqHistogramBin9_X \\\n",
"0 0.009261 0.006448 0.014607 \n",
"1 0.011119 0.048257 0.021653 \n",
"2 0.027623 0.053150 0.047635 \n",
"3 0.029350 0.010179 0.059918 \n",
"4 0.063144 0.020308 0.037099 \n",
"5 0.030682 0.008196 0.087907 \n",
"6 0.036800 0.023401 0.044468 \n",
"7 0.136048 0.030321 0.005704 \n",
"8 0.079730 0.070270 0.027140 \n",
"9 0.161211 0.005097 0.036711 \n",
"10 0.020497 0.001989 0.005717 \n",
"11 0.009008 0.008274 0.017131 \n",
"12 0.048368 0.083072 0.015551 \n",
"13 0.014041 0.002945 0.015788 \n",
"14 0.071365 0.020033 0.063259 \n",
"15 0.006093 0.005710 0.010283 \n",
"16 0.007054 0.081870 0.043239 \n",
"\n",
" fqHistogramBin9_Y fqHistogramBin9_Z fqInterquart_X fqInterquart_Y \\\n",
"0 0.008771 0.009357 9.901367 10.769594 \n",
"1 0.004750 0.042537 9.211392 8.740737 \n",
"2 0.008400 0.045114 8.916415 9.052568 \n",
"3 0.011141 0.004070 10.241726 9.943358 \n",
"4 0.049923 0.068527 9.850650 10.473927 \n",
"5 0.062564 0.039319 9.978477 10.357262 \n",
"6 0.005384 0.076140 9.370658 10.321082 \n",
"7 0.015936 0.007526 9.819547 10.452315 \n",
"8 0.036429 0.013070 10.341732 10.685950 \n",
"9 0.010726 0.017037 11.158979 10.258023 \n",
"10 0.079018 0.065350 9.521979 9.357901 \n",
"11 0.160284 0.005465 10.044118 9.042127 \n",
"12 0.007119 0.020003 9.998723 9.539069 \n",
"13 0.009845 0.023455 9.922438 9.869460 \n",
"14 0.014097 0.008781 9.165367 10.443672 \n",
"15 0.046976 0.184416 10.540761 10.997395 \n",
"16 0.043587 0.013205 5.042390 4.702765 \n",
"\n",
" fqInterquart_Z fqKurtosis_X fqKurtosis_Y fqKurtosis_Z fqSkewness_X \\\n",
"0 10.056605 5.389523 12.118564 3.566577 2.148555 \n",
"1 9.630549 2.185909 3.320473 3.964078 1.409120 \n",
"2 9.614408 5.062124 1.258535 0.811035 2.169789 \n",
"3 10.256184 1.619553 5.728227 6.772829 1.300120 \n",
"4 9.184260 1.481245 4.313905 1.015344 1.432945 \n",
"5 10.217679 2.459255 1.131431 1.561264 1.639629 \n",
"6 10.029209 0.986987 2.772263 5.296333 1.184096 \n",
"7 10.394492 5.616668 1.330291 2.351409 2.247110 \n",
"8 9.735894 6.472586 0.920492 1.486168 2.203444 \n",
"9 10.045014 3.805614 2.370727 2.802290 1.722104 \n",
"10 8.904051 3.718599 3.614872 1.258294 1.749833 \n",
"11 9.411591 6.415278 3.023737 0.643165 2.042124 \n",
"12 10.280947 1.124096 2.295497 20.791269 1.177845 \n",
"13 9.738362 3.921990 2.156045 1.162370 1.628852 \n",
"14 10.618324 2.814428 2.047687 6.540693 1.597015 \n",
"15 10.931453 2.446653 3.344342 2.292431 1.580833 \n",
"16 5.345191 6.708391 1.408064 2.552483 2.063941 \n",
"\n",
" fqSkewness_Y fqSkewness_Z ibi_X ibi_Y ibi_Z \\\n",
"0 3.024553 1.834466 0.960000 1.500000 1.190000 \n",
"1 1.753868 1.839541 0.623333 0.750000 1.000000 \n",
"2 1.284222 1.166554 0.726667 0.700000 0.745000 \n",
"3 2.170687 2.179557 0.816250 NaN 0.680000 \n",
"4 1.904344 1.053234 0.478750 0.680000 NaN \n",
"5 1.201932 1.321003 NaN NaN 0.736250 \n",
"6 1.662902 2.250038 0.611250 1.246667 1.010000 \n",
"7 1.323276 1.405953 1.350000 1.220000 0.686667 \n",
"8 1.190934 1.425740 0.740000 NaN 0.796250 \n",
"9 1.569910 1.561782 NaN 0.430000 0.800000 \n",
"10 1.637232 1.182328 0.990000 0.540000 1.440000 \n",
"11 1.694750 1.113059 0.785000 1.590000 NaN \n",
"12 1.361880 3.825978 0.695000 0.887500 0.446667 \n",
"13 1.555360 1.304668 1.680000 0.755000 0.800000 \n",
"14 1.485917 2.161342 0.810000 NaN 1.330000 \n",
"15 1.767959 1.601817 0.470000 2.020000 1.095000 \n",
"16 1.442438 1.673701 0.350000 NaN NaN \n",
"\n",
" interQuartileRangeMagnitudesBand interQuartileRangeMagnitudesLow \\\n",
"0 0.920676 1.973073 \n",
"1 1.016984 1.942406 \n",
"2 0.858312 1.950954 \n",
"3 0.927504 2.134564 \n",
"4 0.928132 2.370860 \n",
"5 0.951660 2.180499 \n",
"6 1.093823 1.981298 \n",
"7 0.950979 1.944341 \n",
"8 0.959495 1.856825 \n",
"9 0.969892 2.417664 \n",
"10 0.918003 2.108845 \n",
"11 0.901527 2.156514 \n",
"12 1.076304 2.230688 \n",
"13 0.879532 1.978442 \n",
"14 0.975241 2.003503 \n",
"15 0.859382 2.671705 \n",
"16 2.127381 4.303851 \n",
"\n",
" interQuartileRange_XBand interQuartileRange_XLow \\\n",
"0 1.757454 3.465240 \n",
"1 1.889158 3.490192 \n",
"2 1.983132 3.253496 \n",
"3 1.901486 3.577908 \n",
"4 1.760314 3.333432 \n",
"5 1.897415 3.580993 \n",
"6 1.701012 3.476000 \n",
"7 1.785110 3.441714 \n",
"8 2.014451 3.847754 \n",
"9 1.941076 3.456800 \n",
"10 1.714848 3.444731 \n",
"11 1.936398 3.372739 \n",
"12 1.798283 3.162916 \n",
"13 1.683782 3.680219 \n",
"14 1.755337 3.764849 \n",
"15 1.964076 4.005708 \n",
"16 0.967114 1.754752 \n",
"\n",
" interQuartileRange_YBand interQuartileRange_YLow \\\n",
"0 1.984149 3.308310 \n",
"1 1.718109 3.810787 \n",
"2 1.741294 3.310818 \n",
"3 1.856279 3.431322 \n",
"4 2.026612 3.352234 \n",
"5 1.881604 3.403631 \n",
"6 1.826520 4.152857 \n",
"7 1.832994 3.463992 \n",
"8 1.852815 3.812084 \n",
"9 2.007690 3.334020 \n",
"10 1.685229 3.120421 \n",
"11 1.635660 3.727290 \n",
"12 1.779794 3.617491 \n",
"13 1.876858 3.111813 \n",
"14 1.911297 3.594541 \n",
"15 2.062958 3.761337 \n",
"16 0.728493 1.848640 \n",
"\n",
" interQuartileRange_ZBand interQuartileRange_ZLow kurtosis_XBand \\\n",
"0 1.903667 3.708505 1.140452 \n",
"1 1.831989 3.167890 0.539754 \n",
"2 1.778376 3.062305 3.774831 \n",
"3 1.995422 3.335374 -0.083848 \n",
"4 1.777317 3.523871 -0.494826 \n",
"5 1.967905 3.828525 -0.496284 \n",
"6 1.700507 3.052828 2.532450 \n",
"7 1.731774 3.385692 -0.114128 \n",
"8 1.689307 3.609902 -0.593102 \n",
"9 1.738103 3.286394 -0.666559 \n",
"10 1.597126 4.093169 1.209637 \n",
"11 1.789724 3.246647 3.741451 \n",
"12 1.893762 3.725728 2.714485 \n",
"13 1.877308 3.165189 -0.070193 \n",
"14 1.895194 3.394883 -0.696165 \n",
"15 1.707837 3.198155 -0.644687 \n",
"16 1.047990 1.582356 1.724068 \n",
"\n",
" kurtosis_XLow kurtosis_YBand kurtosis_YLow kurtosis_ZBand \\\n",
"0 -0.433486 -0.656973 -0.165213 -0.555322 \n",
"1 -0.344966 4.522720 -0.410874 -0.510377 \n",
"2 0.025646 4.674121 -0.217201 0.376264 \n",
"3 -0.831627 -0.428645 -0.588536 -0.534416 \n",
"4 -0.629886 1.011833 -0.530130 0.296548 \n",
"5 -0.255814 -0.187485 -0.135181 0.791489 \n",
"6 0.043343 -0.515236 -0.512346 -0.540677 \n",
"7 -0.495910 -0.644373 -0.478376 1.593402 \n",
"8 -0.482052 1.723593 -0.397926 -0.696604 \n",
"9 -0.427513 1.107252 -0.528508 -0.395877 \n",
"10 -0.329674 -0.533438 -0.416344 1.893127 \n",
"11 0.288675 1.247625 -0.083694 -0.678479 \n",
"12 -0.084646 -0.221705 -0.183027 0.392623 \n",
"13 -0.876383 -0.519862 -0.721379 -0.187303 \n",
"14 -0.203898 -0.597615 -0.685827 -0.755930 \n",
"15 -0.622968 3.219826 -0.130987 0.365543 \n",
"16 -0.200486 3.750956 0.309812 6.243062 \n",
"\n",
" kurtosis_ZLow linearTrendSlope_X linearTrendSlope_Y linearTrendSlope_Z \\\n",
"0 -0.535814 0.006313 -0.000514 0.003657 \n",
"1 -0.687367 -0.003839 0.002532 0.004240 \n",
"2 -0.411320 0.004571 0.002077 -0.000739 \n",
"3 -0.177124 0.005734 0.002063 0.001625 \n",
"4 -0.544198 -0.001512 -0.003387 -0.000964 \n",
"5 -0.245533 0.001101 0.000232 0.004975 \n",
"6 -0.570700 -0.000640 -0.009724 -0.001061 \n",
"7 -0.428218 0.003242 -0.007163 -0.002162 \n",
"8 -0.748547 -0.002593 0.002881 -0.001886 \n",
"9 -0.276559 0.002354 -0.001473 -0.002418 \n",
"10 -0.570432 0.005904 -0.006322 -0.004904 \n",
"11 -0.533622 0.002094 0.000147 -0.000672 \n",
"12 -0.597233 -0.001648 -0.000326 -0.001772 \n",
"13 -0.338392 -0.008854 0.000951 0.002029 \n",
"14 -0.572608 -0.003999 0.003651 0.003445 \n",
"15 -0.567454 -0.008439 -0.003843 -0.001975 \n",
"16 0.798154 -0.003043 0.001917 -0.001591 \n",
"\n",
" longestStrikeAboveMean_X longestStrikeAboveMean_Y \\\n",
"0 5.0 6.0 \n",
"1 9.0 7.0 \n",
"2 5.0 6.0 \n",
"3 7.0 9.0 \n",
"4 9.0 6.0 \n",
"5 6.0 7.0 \n",
"6 6.0 10.0 \n",
"7 11.0 6.0 \n",
"8 9.0 6.0 \n",
"9 7.0 5.0 \n",
"10 6.0 5.0 \n",
"11 11.0 7.0 \n",
"12 6.0 5.0 \n",
"13 6.0 8.0 \n",
"14 6.0 9.0 \n",
"15 9.0 6.0 \n",
"16 8.0 103.0 \n",
"\n",
" longestStrikeAboveMean_Z longestStrikeBelowMean_X \\\n",
"0 7.0 6.0 \n",
"1 8.0 7.0 \n",
"2 6.0 6.0 \n",
"3 7.0 6.0 \n",
"4 5.0 5.0 \n",
"5 11.0 6.0 \n",
"6 5.0 6.0 \n",
"7 10.0 6.0 \n",
"8 8.0 9.0 \n",
"9 8.0 11.0 \n",
"10 13.0 9.0 \n",
"11 6.0 8.0 \n",
"12 8.0 6.0 \n",
"13 5.0 11.0 \n",
"14 7.0 14.0 \n",
"15 8.0 6.0 \n",
"16 7.0 102.0 \n",
"\n",
" longestStrikeBelowMean_Y longestStrikeBelowMean_Z manipulationLow \\\n",
"0 13.0 11.0 3.951277e-01 \n",
"1 9.0 7.0 4.038103e-01 \n",
"2 7.0 6.0 4.809599e-01 \n",
"3 6.0 10.0 4.220357e-01 \n",
"4 8.0 7.0 4.508842e-01 \n",
"5 7.0 7.0 3.929400e-01 \n",
"6 8.0 9.0 3.645748e-01 \n",
"7 6.0 8.0 3.754912e-01 \n",
"8 7.0 10.0 3.534541e-01 \n",
"9 7.0 9.0 4.310468e-01 \n",
"10 9.0 7.0 4.364014e-01 \n",
"11 11.0 11.0 4.579393e-01 \n",
"12 8.0 8.0 4.263630e-01 \n",
"13 6.0 5.0 3.871373e-01 \n",
"14 7.0 7.0 4.354654e-01 \n",
"15 8.0 7.0 4.154386e-01 \n",
"16 9.0 100.0 1.041319e+13 \n",
"\n",
" maxPeakAmplitudeChangeAfter_X maxPeakAmplitudeChangeAfter_Y \\\n",
"0 NaN NaN \n",
"1 NaN NaN \n",
"2 NaN NaN \n",
"3 NaN NaN \n",
"4 NaN NaN \n",
"5 NaN NaN \n",
"6 NaN NaN \n",
"7 NaN NaN \n",
"8 NaN NaN \n",
"9 NaN NaN \n",
"10 NaN NaN \n",
"11 NaN NaN \n",
"12 NaN NaN \n",
"13 NaN NaN \n",
"14 NaN NaN \n",
"15 NaN NaN \n",
"16 NaN NaN \n",
"\n",
" maxPeakAmplitudeChangeAfter_Z maxPeakAmplitudeChangeBefore_X \\\n",
"0 NaN NaN \n",
"1 NaN NaN \n",
"2 NaN NaN \n",
"3 NaN NaN \n",
"4 NaN NaN \n",
"5 NaN NaN \n",
"6 NaN NaN \n",
"7 NaN NaN \n",
"8 NaN NaN \n",
"9 NaN NaN \n",
"10 NaN NaN \n",
"11 NaN NaN \n",
"12 NaN NaN \n",
"13 NaN NaN \n",
"14 NaN NaN \n",
"15 NaN NaN \n",
"16 NaN NaN \n",
"\n",
" maxPeakAmplitudeChangeBefore_Y maxPeakAmplitudeChangeBefore_Z \\\n",
"0 NaN NaN \n",
"1 NaN NaN \n",
"2 NaN NaN \n",
"3 NaN NaN \n",
"4 NaN NaN \n",
"5 NaN NaN \n",
"6 NaN NaN \n",
"7 NaN NaN \n",
"8 NaN NaN \n",
"9 NaN NaN \n",
"10 NaN NaN \n",
"11 NaN NaN \n",
"12 NaN NaN \n",
"13 NaN NaN \n",
"14 NaN NaN \n",
"15 NaN NaN \n",
"16 NaN NaN \n",
"\n",
" maxPeakChangeRatio_X maxPeakChangeRatio_Y maxPeakChangeRatio_Z \\\n",
"0 NaN NaN NaN \n",
"1 NaN NaN NaN \n",
"2 NaN NaN NaN \n",
"3 NaN NaN NaN \n",
"4 NaN NaN NaN \n",
"5 NaN NaN NaN \n",
"6 NaN NaN NaN \n",
"7 NaN NaN NaN \n",
"8 NaN NaN NaN \n",
"9 NaN NaN NaN \n",
"10 NaN NaN NaN \n",
"11 NaN NaN NaN \n",
"12 NaN NaN NaN \n",
"13 NaN NaN NaN \n",
"14 NaN NaN NaN \n",
"15 NaN NaN NaN \n",
"16 NaN NaN NaN \n",
"\n",
" maxPeakDecreaseTime_X maxPeakDecreaseTime_Y maxPeakDecreaseTime_Z \\\n",
"0 NaN NaN NaN \n",
"1 NaN NaN NaN \n",
"2 NaN NaN NaN \n",
"3 NaN NaN NaN \n",
"4 NaN NaN NaN \n",
"5 NaN NaN NaN \n",
"6 NaN NaN NaN \n",
"7 NaN NaN NaN \n",
"8 NaN NaN NaN \n",
"9 NaN NaN NaN \n",
"10 NaN NaN NaN \n",
"11 NaN NaN NaN \n",
"12 NaN NaN NaN \n",
"13 NaN NaN NaN \n",
"14 NaN NaN NaN \n",
"15 NaN NaN NaN \n",
"16 NaN NaN NaN \n",
"\n",
" maxPeakDuration_X maxPeakDuration_Y maxPeakDuration_Z \\\n",
"0 NaN NaN NaN \n",
"1 NaN NaN NaN \n",
"2 NaN NaN NaN \n",
"3 NaN NaN NaN \n",
"4 NaN NaN NaN \n",
"5 NaN NaN NaN \n",
"6 NaN NaN NaN \n",
"7 NaN NaN NaN \n",
"8 NaN NaN NaN \n",
"9 NaN NaN NaN \n",
"10 NaN NaN NaN \n",
"11 NaN NaN NaN \n",
"12 NaN NaN NaN \n",
"13 NaN NaN NaN \n",
"14 NaN NaN NaN \n",
"15 NaN NaN NaN \n",
"16 NaN NaN NaN \n",
"\n",
" maxPeakIncreaseTime_X maxPeakIncreaseTime_Y maxPeakIncreaseTime_Z \\\n",
"0 NaN NaN NaN \n",
"1 NaN NaN NaN \n",
"2 NaN NaN NaN \n",
"3 NaN NaN NaN \n",
"4 NaN NaN NaN \n",
"5 NaN NaN NaN \n",
"6 NaN NaN NaN \n",
"7 NaN NaN NaN \n",
"8 NaN NaN NaN \n",
"9 NaN NaN NaN \n",
"10 NaN NaN NaN \n",
"11 NaN NaN NaN \n",
"12 NaN NaN NaN \n",
"13 NaN NaN NaN \n",
"14 NaN NaN NaN \n",
"15 NaN NaN NaN \n",
"16 NaN NaN NaN \n",
"\n",
" maxPeakResponseSlopeAfter_X maxPeakResponseSlopeAfter_Y \\\n",
"0 NaN NaN \n",
"1 NaN NaN \n",
"2 NaN NaN \n",
"3 NaN NaN \n",
"4 NaN NaN \n",
"5 NaN NaN \n",
"6 NaN NaN \n",
"7 NaN NaN \n",
"8 NaN NaN \n",
"9 NaN NaN \n",
"10 NaN NaN \n",
"11 NaN NaN \n",
"12 NaN NaN \n",
"13 NaN NaN \n",
"14 NaN NaN \n",
"15 NaN NaN \n",
"16 NaN NaN \n",
"\n",
" maxPeakResponseSlopeAfter_Z maxPeakResponseSlopeBefore_X \\\n",
"0 NaN NaN \n",
"1 NaN NaN \n",
"2 NaN NaN \n",
"3 NaN NaN \n",
"4 NaN NaN \n",
"5 NaN NaN \n",
"6 NaN NaN \n",
"7 NaN NaN \n",
"8 NaN NaN \n",
"9 NaN NaN \n",
"10 NaN NaN \n",
"11 NaN NaN \n",
"12 NaN NaN \n",
"13 NaN NaN \n",
"14 NaN NaN \n",
"15 NaN NaN \n",
"16 NaN NaN \n",
"\n",
" maxPeakResponseSlopeBefore_Y maxPeakResponseSlopeBefore_Z maximum_X \\\n",
"0 NaN NaN 9.913559 \n",
"1 NaN NaN 9.791841 \n",
"2 NaN NaN 9.999467 \n",
"3 NaN NaN 9.929909 \n",
"4 NaN NaN 9.955434 \n",
"5 NaN NaN 9.827071 \n",
"6 NaN NaN 9.938884 \n",
"7 NaN NaN 9.908534 \n",
"8 NaN NaN 9.987894 \n",
"9 NaN NaN 9.841638 \n",
"10 NaN NaN 9.959363 \n",
"11 NaN NaN 9.963883 \n",
"12 NaN NaN 9.885265 \n",
"13 NaN NaN 9.907724 \n",
"14 NaN NaN 9.957088 \n",
"15 NaN NaN 9.888184 \n",
"16 NaN NaN 9.870713 \n",
"\n",
" maximum_Y maximum_Z meanAbsChange_X meanAbsChange_Y meanAbsChange_Z \\\n",
"0 9.879872 9.994753 6.708199 6.973540 6.387339 \n",
"1 9.995226 9.721326 6.352467 6.104119 6.843040 \n",
"2 9.932527 9.550520 6.448388 6.381125 6.585151 \n",
"3 9.886429 9.988993 6.510313 6.232186 6.635215 \n",
"4 9.987530 9.930801 6.646537 6.833095 6.771830 \n",
"5 9.917932 9.945268 6.754050 6.989046 6.821789 \n",
"6 9.920647 9.934602 6.347022 6.686862 6.783886 \n",
"7 9.932158 9.916075 6.423501 6.652570 7.042471 \n",
"8 9.909668 9.962329 6.406909 6.557554 6.863164 \n",
"9 9.928470 9.984929 6.851138 6.503910 6.678991 \n",
"10 9.730016 9.952821 6.649205 6.473480 6.272612 \n",
"11 9.904416 9.970920 6.993114 6.571131 6.624015 \n",
"12 9.979279 9.902320 6.472765 6.775512 6.540266 \n",
"13 9.996517 9.991721 6.500397 6.241242 6.967983 \n",
"14 9.967348 9.999424 5.997819 6.654779 6.906320 \n",
"15 9.921541 9.921249 6.617277 6.761452 6.751033 \n",
"16 9.777902 9.878466 4.545531 4.240018 4.510443 \n",
"\n",
" meanChange_X meanChange_Y meanChange_Z meanCrossingRate_XBand \\\n",
"0 -0.061334 0.006416 0.016333 79.0 \n",
"1 0.001574 0.008047 -0.041014 78.0 \n",
"2 0.030453 0.001773 0.045463 90.0 \n",
"3 -0.034580 0.002982 0.033159 79.0 \n",
"4 0.023233 0.056371 -0.030075 92.0 \n",
"5 0.034817 0.043220 0.010260 77.0 \n",
"6 0.003560 0.011067 0.002166 82.0 \n",
"7 -0.010176 -0.022255 -0.028938 79.0 \n",
"8 -0.012925 0.029457 -0.000918 85.0 \n",
"9 0.005239 -0.033076 -0.042385 86.0 \n",
"10 0.026809 -0.032378 -0.029518 86.0 \n",
"11 0.048897 -0.008182 0.020187 79.0 \n",
"12 0.050265 -0.002427 -0.018213 79.0 \n",
"13 0.043435 0.017885 0.036188 73.0 \n",
"14 -0.036082 -0.044090 -0.005177 75.0 \n",
"15 0.000130 0.022171 -0.000606 88.0 \n",
"16 -0.022743 -0.027098 -0.032527 71.0 \n",
"\n",
" meanCrossingRate_XLow meanCrossingRate_YBand meanCrossingRate_YLow \\\n",
"0 55.0 93.0 68.0 \n",
"1 64.0 72.0 56.0 \n",
"2 72.0 78.0 54.0 \n",
"3 42.0 76.0 46.0 \n",
"4 46.0 75.0 36.0 \n",
"5 62.0 87.0 63.0 \n",
"6 62.0 72.0 53.0 \n",
"7 51.0 84.0 60.0 \n",
"8 64.0 74.0 62.0 \n",
"9 62.0 77.0 57.0 \n",
"10 52.0 93.0 53.0 \n",
"11 65.0 72.0 74.0 \n",
"12 53.0 78.0 70.0 \n",
"13 38.0 83.0 47.0 \n",
"14 63.0 79.0 47.0 \n",
"15 58.0 76.0 64.0 \n",
"16 47.0 71.0 41.0 \n",
"\n",
" meanCrossingRate_ZBand meanCrossingRate_ZLow meanHr_X meanHr_Y \\\n",
"0 77.0 55.0 62.500000 40.000000 \n",
"1 91.0 61.0 96.256684 80.000000 \n",
"2 91.0 65.0 82.568807 85.714286 \n",
"3 89.0 78.0 73.506891 NaN \n",
"4 83.0 53.0 125.326371 88.235294 \n",
"5 90.0 58.0 NaN NaN \n",
"6 92.0 70.0 98.159509 48.128342 \n",
"7 89.0 59.0 44.444444 49.180328 \n",
"8 89.0 46.0 81.081081 NaN \n",
"9 81.0 63.0 NaN 139.534884 \n",
"10 69.0 61.0 60.606061 111.111111 \n",
"11 82.0 68.0 76.433121 37.735849 \n",
"12 77.0 55.0 86.330935 67.605634 \n",
"13 88.0 64.0 35.714286 79.470199 \n",
"14 91.0 54.0 74.074074 NaN \n",
"15 86.0 54.0 127.659574 29.702970 \n",
"16 63.0 61.0 171.428571 NaN \n",
"\n",
" meanHr_Z meanKineticEnergy_XBand meanKineticEnergy_YBand \\\n",
"0 50.420168 2618.753542 15.119339 \n",
"1 60.000000 2062.783810 2577.595421 \n",
"2 80.536913 2632.893555 2732.565173 \n",
"3 88.235294 1565.539599 267.909763 \n",
"4 NaN 102.001874 1690.707679 \n",
"5 81.494058 423.119096 734.081168 \n",
"6 59.405941 2118.507995 862.367879 \n",
"7 87.378641 1510.951610 21.975499 \n",
"8 75.353218 62.166538 1824.410823 \n",
"9 75.000000 19.485687 2832.060761 \n",
"10 41.666667 1317.479334 686.057248 \n",
"11 NaN 2717.538775 1568.039863 \n",
"12 134.328358 2067.344519 658.309984 \n",
"13 75.000000 900.033642 0.456851 \n",
"14 45.112782 206.529944 617.725595 \n",
"15 54.794521 2.180843 2742.296041 \n",
"16 NaN 1320.759448 1875.202062 \n",
"\n",
" meanKineticEnergy_ZBand mean_X mean_XLow mean_Y mean_YLow \\\n",
"0 285.854378 -0.053815 0.028358 0.037484 0.058162 \n",
"1 608.639737 0.612934 0.650683 0.038049 -0.007172 \n",
"2 954.255185 0.136521 0.049622 -0.210952 -0.240924 \n",
"3 304.747050 -0.051505 -0.021936 -0.168607 -0.192718 \n",
"4 1898.523547 -0.123231 -0.110755 -0.505054 -0.566469 \n",
"5 1293.340920 0.339549 0.307550 0.247265 0.181038 \n",
"6 52.863608 0.532152 0.487073 0.307206 0.354863 \n",
"7 2704.499361 0.215323 0.270237 0.008370 0.032609 \n",
"8 139.741126 0.249445 0.255462 0.245851 0.191933 \n",
"9 1098.466155 0.057833 0.065416 0.082462 0.144004 \n",
"10 2635.436742 0.003605 -0.056590 -0.074096 0.006955 \n",
"11 230.299711 0.112133 0.014987 0.085015 0.056788 \n",
"12 2036.611335 0.104627 0.008012 -0.129541 -0.157697 \n",
"13 692.888968 -0.475879 -0.520756 0.088602 0.064652 \n",
"14 528.401837 -0.109499 -0.083745 -0.170524 -0.107117 \n",
"15 1883.843543 -0.013173 -0.010739 -0.203450 -0.258259 \n",
"16 2701.182626 0.350229 0.403120 -0.294203 -0.231185 \n",
"\n",
" mean_Z mean_ZLow median_X median_Y median_Z minimum_X minimum_Y \\\n",
"0 -0.324680 -0.311957 0.023734 0.171356 -0.085728 -9.965873 -9.985840 \n",
"1 -0.108151 -0.074035 0.902051 -0.326440 -0.220649 -9.825098 -9.824381 \n",
"2 0.080433 0.012544 -0.159980 -0.481939 0.288308 -9.995123 -9.967720 \n",
"3 0.238372 0.214338 -0.444864 -0.381945 0.327812 -9.969508 -9.946186 \n",
"4 -0.201574 -0.148862 0.054146 -1.271820 -0.581734 -9.995572 -9.919872 \n",
"5 0.435037 0.382028 0.639785 0.584743 1.007224 -9.980317 -9.948741 \n",
"6 -0.041299 -0.040232 0.726784 0.518219 -0.300821 -9.850364 -9.892071 \n",
"7 0.270523 0.338685 0.583696 -0.228860 0.377563 -9.846594 -9.971076 \n",
"8 -0.447767 -0.452922 0.742909 0.639441 -0.748193 -9.949239 -9.961308 \n",
"9 0.447544 0.505685 -0.208261 0.034027 0.820417 -9.988752 -9.918648 \n",
"10 -0.063634 0.012662 -0.042287 -0.317458 0.433556 -9.919072 -9.951992 \n",
"11 -0.249747 -0.262029 0.089504 0.325710 -0.285281 -9.918629 -9.884742 \n",
"12 0.466454 0.538576 -0.059035 -0.317737 0.380071 -9.923152 -9.961030 \n",
"13 0.067747 0.024853 -0.750726 0.700494 -0.061674 -9.960061 -9.790094 \n",
"14 -0.196882 -0.182077 -0.275986 -0.137257 -0.601903 -9.978229 -9.975827 \n",
"15 -0.284220 -0.252543 0.315943 -0.119290 -0.772663 -9.969270 -9.910271 \n",
"16 0.452310 0.527953 0.000000 0.000000 0.000000 -9.921719 -9.957280 \n",
"\n",
" minimum_Z numOfPeaksAutocorr_X numOfPeaksAutocorr_Y \\\n",
"0 -9.989369 0.0 0.0 \n",
"1 -9.921596 0.0 0.0 \n",
"2 -9.904902 0.0 0.0 \n",
"3 -9.968657 0.0 0.0 \n",
"4 -9.966824 0.0 0.0 \n",
"5 -9.746075 0.0 0.0 \n",
"6 -9.968426 0.0 0.0 \n",
"7 -9.991425 0.0 0.0 \n",
"8 -9.945887 0.0 0.0 \n",
"9 -9.943115 0.0 0.0 \n",
"10 -9.995130 0.0 0.0 \n",
"11 -9.911025 0.0 0.0 \n",
"12 -9.942037 0.0 0.0 \n",
"13 -9.996525 0.0 0.0 \n",
"14 -9.968281 0.0 0.0 \n",
"15 -9.942458 0.0 0.0 \n",
"16 -9.944961 0.0 0.0 \n",
"\n",
" numOfPeaksAutocorr_Z numPeaks_X numPeaks_Y numPeaks_Z \\\n",
"0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 \n",
"5 0.0 0.0 0.0 0.0 \n",
"6 0.0 0.0 0.0 0.0 \n",
"7 0.0 0.0 0.0 0.0 \n",
"8 0.0 0.0 0.0 0.0 \n",
"9 0.0 0.0 0.0 0.0 \n",
"10 0.0 0.0 0.0 0.0 \n",
"11 0.0 0.0 0.0 0.0 \n",
"12 0.0 0.0 0.0 0.0 \n",
"13 0.0 0.0 0.0 0.0 \n",
"14 0.0 0.0 0.0 0.0 \n",
"15 0.0 0.0 0.0 0.0 \n",
"16 0.0 0.0 0.0 0.0 \n",
"\n",
" numberOfZeroCrossingsAutocorr_X numberOfZeroCrossingsAutocorr_Y \\\n",
"0 113.0 117.0 \n",
"1 106.0 106.0 \n",
"2 104.0 107.0 \n",
"3 98.0 99.0 \n",
"4 100.0 123.0 \n",
"5 111.0 129.0 \n",
"6 99.0 108.0 \n",
"7 121.0 84.0 \n",
"8 86.0 96.0 \n",
"9 105.0 91.0 \n",
"10 103.0 113.0 \n",
"11 111.0 100.0 \n",
"12 91.0 110.0 \n",
"13 81.0 90.0 \n",
"14 76.0 105.0 \n",
"15 90.0 102.0 \n",
"16 125.0 101.0 \n",
"\n",
" numberOfZeroCrossingsAutocorr_Z numberOfZeroCrossings_X \\\n",
"0 91.0 151.0 \n",
"1 100.0 144.0 \n",
"2 97.0 142.0 \n",
"3 105.0 145.0 \n",
"4 113.0 158.0 \n",
"5 108.0 149.0 \n",
"6 105.0 142.0 \n",
"7 108.0 142.0 \n",
"8 110.0 137.0 \n",
"9 102.0 148.0 \n",
"10 96.0 155.0 \n",
"11 121.0 155.0 \n",
"12 114.0 145.0 \n",
"13 117.0 149.0 \n",
"14 118.0 143.0 \n",
"15 111.0 152.0 \n",
"16 117.0 95.0 \n",
"\n",
" numberOfZeroCrossings_Y numberOfZeroCrossings_Z peaksAmplitudeAvgLow \\\n",
"0 144.0 138.0 0.004347 \n",
"1 154.0 155.0 0.042207 \n",
"2 150.0 147.0 0.020205 \n",
"3 140.0 153.0 0.101105 \n",
"4 151.0 155.0 0.038745 \n",
"5 159.0 146.0 0.044786 \n",
"6 144.0 156.0 0.052742 \n",
"7 154.0 154.0 0.017061 \n",
"8 147.0 156.0 0.007580 \n",
"9 151.0 147.0 0.025005 \n",
"10 161.0 146.0 0.004923 \n",
"11 148.0 150.0 0.007717 \n",
"12 154.0 144.0 0.018046 \n",
"13 140.0 163.0 0.030769 \n",
"14 143.0 154.0 0.021353 \n",
"15 146.0 148.0 0.024445 \n",
"16 97.0 101.0 0.078129 \n",
"\n",
" peaksCountLow peaksCountLow_Q1 peaksCountLow_Q2 peaksCountLow_Q3 \\\n",
"0 72.0 57.0 309.361480 57.0 \n",
"1 68.0 51.0 271.726393 51.0 \n",
"2 69.0 48.0 254.965233 48.0 \n",
"3 65.0 50.0 289.440791 50.0 \n",
"4 69.0 49.0 284.170123 49.0 \n",
"5 77.0 54.0 305.670505 54.0 \n",
"6 64.0 55.0 296.210557 55.0 \n",
"7 71.0 59.0 324.927240 59.0 \n",
"8 67.0 54.0 300.957699 54.0 \n",
"9 69.0 53.0 306.728286 53.0 \n",
"10 73.0 55.0 297.733790 55.0 \n",
"11 72.0 51.0 274.507960 51.0 \n",
"12 66.0 59.0 323.652760 59.0 \n",
"13 67.0 52.0 282.127707 52.0 \n",
"14 64.0 54.0 293.794128 54.0 \n",
"15 72.0 48.0 290.775130 48.0 \n",
"16 43.0 29.0 167.727864 29.0 \n",
"\n",
" peaksCountLow_Q4 peaksPeakAvgLow peaksSumLow pitchAvgLow pitchPeak0 \\\n",
"0 309.361480 5.040374 362.906957 3.040772 17.0 \n",
"1 271.726393 4.909723 333.861168 2.989347 20.0 \n",
"2 254.965233 4.824639 332.900101 2.961778 20.0 \n",
"3 289.440791 5.353140 347.954088 3.121756 23.0 \n",
"4 284.170123 5.124634 353.599737 2.883563 17.0 \n",
"5 305.670505 5.250856 404.315911 3.111643 18.0 \n",
"6 296.210557 5.090897 325.817395 3.018990 14.0 \n",
"7 324.927240 5.214193 370.207730 3.013429 25.0 \n",
"8 300.957699 5.242828 351.269476 2.952927 20.0 \n",
"9 306.728286 5.210245 359.506912 2.839403 21.0 \n",
"10 297.733790 5.073142 370.339333 3.065137 21.0 \n",
"11 274.507960 4.841892 348.616221 3.079928 23.0 \n",
"12 323.652760 5.102014 336.732929 3.024905 18.0 \n",
"13 282.127707 5.138125 344.254404 3.112154 25.0 \n",
"14 293.794128 5.144971 329.278152 2.999553 31.0 \n",
"15 290.775130 5.408422 389.406373 2.988340 17.0 \n",
"16 167.727864 5.017205 215.739794 3.131790 18.0 \n",
"\n",
" pitchPeak1 pitchPeak2 pitchPeak3 pitchStdDevLow pnn20_X pnn20_Y \\\n",
"0 13.579794 0.798811 0.007989 0.486736 100.000000 0.0 \n",
"1 10.988615 0.549431 0.012838 0.469389 50.000000 0.0 \n",
"2 13.188341 0.659417 0.009117 0.486348 50.000000 0.0 \n",
"3 19.352167 0.841399 0.042834 0.528436 100.000000 NaN \n",
"4 11.280661 0.663568 0.057515 0.474275 100.000000 0.0 \n",
"5 13.520449 0.751136 0.082269 0.468915 NaN NaN \n",
"6 9.893896 0.706707 0.016822 0.428226 33.333333 50.0 \n",
"7 17.965807 0.718632 0.048602 0.480323 0.000000 0.0 \n",
"8 12.073847 0.603692 0.014102 0.485176 100.000000 NaN \n",
"9 16.691937 0.794854 0.010707 0.462277 NaN 100.0 \n",
"10 11.844907 0.564043 0.003436 0.495768 0.000000 0.0 \n",
"11 15.343869 0.667125 0.035624 0.516570 100.000000 0.0 \n",
"12 11.012970 0.611832 0.051925 0.487811 100.000000 100.0 \n",
"13 21.396988 0.855880 0.032036 0.545359 0.000000 100.0 \n",
"14 20.769242 0.669976 0.000129 0.550696 0.000000 NaN \n",
"15 8.187062 0.481592 0.059789 0.520021 0.000000 0.0 \n",
"16 10.739782 0.596655 0.001056 0.879333 0.000000 NaN \n",
"\n",
" pnn20_Z pnn50_X pnn50_Y pnn50_Z postureDistance_XLow \\\n",
"0 0.000000 0.000000 0.000000 0.000000 -0.029805 \n",
"1 0.000000 50.000000 0.000000 0.000000 0.657856 \n",
"2 0.000000 50.000000 0.000000 0.000000 0.290546 \n",
"3 100.000000 100.000000 NaN 50.000000 0.170782 \n",
"4 NaN 66.666667 0.000000 NaN 0.455714 \n",
"5 100.000000 NaN NaN 100.000000 0.126512 \n",
"6 0.000000 33.333333 50.000000 0.000000 0.132211 \n",
"7 50.000000 0.000000 0.000000 50.000000 0.237628 \n",
"8 66.666667 0.000000 NaN 66.666667 0.063529 \n",
"9 50.000000 NaN 100.000000 50.000000 -0.078588 \n",
"10 0.000000 0.000000 0.000000 0.000000 -0.063545 \n",
"11 NaN 0.000000 0.000000 NaN -0.041801 \n",
"12 50.000000 66.666667 100.000000 50.000000 0.165709 \n",
"13 0.000000 0.000000 33.333333 0.000000 -0.585409 \n",
"14 0.000000 0.000000 NaN 0.000000 0.023373 \n",
"15 100.000000 0.000000 0.000000 100.000000 0.247520 \n",
"16 NaN 0.000000 NaN NaN 0.634305 \n",
"\n",
" postureDistance_YLow postureDistance_ZLow powerPeaks_X powerPeaks_Y \\\n",
"0 0.340314 0.370119 NaN NaN \n",
"1 0.724718 0.066863 NaN NaN \n",
"2 0.037078 -0.253467 NaN NaN \n",
"3 -0.236275 -0.407056 NaN NaN \n",
"4 0.038107 -0.417607 NaN NaN \n",
"5 -0.074478 -0.200990 NaN NaN \n",
"6 0.527305 0.395094 NaN NaN \n",
"7 -0.068449 -0.306077 NaN NaN \n",
"8 0.708385 0.644856 NaN NaN \n",
"9 -0.440269 -0.361681 NaN NaN \n",
"10 -0.069252 -0.005707 NaN NaN \n",
"11 0.277016 0.318816 NaN NaN \n",
"12 -0.530565 -0.696274 NaN NaN \n",
"13 -0.545609 0.039800 NaN NaN \n",
"14 0.098332 0.074959 NaN NaN \n",
"15 0.241804 -0.005716 NaN NaN \n",
"16 -0.124833 -0.759138 NaN NaN \n",
"\n",
" powerPeaks_Z power_X power_Y power_Z propPosDeriv_X \\\n",
"0 NaN 32.524274 36.163429 32.705805 0.470000 \n",
"1 NaN 31.493599 29.666586 33.188934 0.480000 \n",
"2 NaN 32.232536 30.615100 30.404677 0.530000 \n",
"3 NaN 33.421188 32.670787 33.274592 0.506667 \n",
"4 NaN 32.365346 35.637434 32.209114 0.490000 \n",
"5 NaN 34.112312 34.572956 35.212041 0.486667 \n",
"6 NaN 31.609471 34.420253 33.846841 0.523333 \n",
"7 NaN 31.733738 34.138805 34.626346 0.496667 \n",
"8 NaN 34.652641 33.932097 33.691264 0.463333 \n",
"9 NaN 36.756438 32.782473 33.734465 0.523333 \n",
"10 NaN 31.915271 29.638592 31.600046 0.490000 \n",
"11 NaN 34.221014 31.748026 31.730052 0.526667 \n",
"12 NaN 32.131935 32.278310 34.171782 0.506667 \n",
"13 NaN 33.830058 32.109646 33.222378 0.496667 \n",
"14 NaN 30.634915 34.434996 35.121045 0.540000 \n",
"15 NaN 36.301626 35.469762 33.481699 0.493333 \n",
"16 NaN 21.613741 20.467723 23.369348 0.323333 \n",
"\n",
" propPosDeriv_Y propPosDeriv_Z q25_X q25_Y q25_Z q75_X \\\n",
"0 0.503333 0.503333 -9.904968 -9.913460 -9.891769 -9.815603 \n",
"1 0.513333 0.490000 -9.823503 -9.623845 -9.895991 -9.804560 \n",
"2 0.503333 0.506667 -9.867619 -9.803923 -9.852809 -9.732812 \n",
"3 0.476667 0.540000 -9.783592 -9.889890 -9.927404 -9.641721 \n",
"4 0.493333 0.490000 -9.810951 -9.886232 -9.954297 -9.675613 \n",
"5 0.503333 0.500000 -9.856497 -9.917740 -9.743170 -9.808626 \n",
"6 0.526667 0.503333 -9.800427 -9.848262 -9.900453 -9.709491 \n",
"7 0.496667 0.490000 -9.807134 -9.948366 -9.990132 -9.624504 \n",
"8 0.513333 0.526667 -9.938917 -9.922598 -9.720563 -9.920205 \n",
"9 0.470000 0.486667 -9.983522 -9.842103 -9.795918 -9.902970 \n",
"10 0.523333 0.490000 -9.886542 -9.883881 -9.924314 -9.794184 \n",
"11 0.476667 0.496667 -9.858026 -9.878642 -9.880814 -9.808943 \n",
"12 0.506667 0.490000 -9.911604 -9.951319 -9.910403 -9.881491 \n",
"13 0.536667 0.526667 -9.828445 -9.739559 -9.984165 -9.759210 \n",
"14 0.490000 0.496667 -9.842490 -9.926872 -9.867218 -9.731634 \n",
"15 0.473333 0.506667 -9.950656 -9.780268 -9.796500 -9.886783 \n",
"16 0.333333 0.350000 -9.864598 -9.840362 -9.910587 -9.808965 \n",
"\n",
" q75_Y q75_Z qd_X qd_Y qd_Z \\\n",
"0 -9.722151 -9.784468 0.089365 0.191309 0.107300 \n",
"1 -9.457585 -9.749080 0.018943 0.166260 0.146912 \n",
"2 -9.489301 -9.749357 0.134807 0.314622 0.103452 \n",
"3 -9.826188 -9.778254 0.141871 0.063702 0.149151 \n",
"4 -9.799702 -9.897261 0.135337 0.086530 0.057035 \n",
"5 -9.895604 -9.719051 0.047870 0.022136 0.024119 \n",
"6 -9.815993 -9.736544 0.090936 0.032269 0.163909 \n",
"7 -9.845109 -9.902559 0.182630 0.103257 0.087573 \n",
"8 -9.695187 -9.633150 0.018712 0.227412 0.087413 \n",
"9 -9.701007 -9.673999 0.080552 0.141096 0.121919 \n",
"10 -9.758558 -9.875219 0.092358 0.125324 0.049096 \n",
"11 -9.870160 -9.830770 0.049083 0.008482 0.050044 \n",
"12 -9.863729 -9.856373 0.030113 0.087590 0.054030 \n",
"13 -9.663949 -9.804782 0.069235 0.075611 0.179384 \n",
"14 -9.753898 -9.823848 0.110856 0.172974 0.043369 \n",
"15 -9.527091 -9.561305 0.063874 0.253177 0.235195 \n",
"16 -9.755245 -9.704994 0.055633 0.085117 0.205592 \n",
"\n",
" quartilesMagnitudeLow_Q1 quartilesMagnitudeLow_Q2 \\\n",
"0 2.997074 3.831943 \n",
"1 2.843185 3.823473 \n",
"2 2.603842 3.455643 \n",
"3 2.858406 3.899183 \n",
"4 2.668560 3.745257 \n",
"5 2.981484 4.133815 \n",
"6 2.944049 3.830869 \n",
"7 3.014263 3.936224 \n",
"8 3.154731 4.072560 \n",
"9 2.685077 3.947851 \n",
"10 2.744576 3.936554 \n",
"11 2.646841 3.830938 \n",
"12 2.864009 4.011649 \n",
"13 2.879925 3.937298 \n",
"14 2.967667 3.971088 \n",
"15 2.667819 3.939721 \n",
"16 0.000506 2.642343 \n",
"\n",
" quartilesMagnitudeLow_Q3 quartilesMagnitudes_XBand \\\n",
"0 4.970148 1.529648 \n",
"1 4.785591 1.354417 \n",
"2 4.554796 1.429635 \n",
"3 4.992970 1.503415 \n",
"4 5.039420 1.423320 \n",
"5 5.161984 1.505583 \n",
"6 4.925347 1.370036 \n",
"7 4.958604 1.424857 \n",
"8 5.011556 1.459846 \n",
"9 5.102741 1.519479 \n",
"10 4.853421 1.381178 \n",
"11 4.803355 1.419972 \n",
"12 5.094697 1.348596 \n",
"13 4.858366 1.505410 \n",
"14 4.971170 1.463376 \n",
"15 5.339524 1.607608 \n",
"16 4.304358 0.000888 \n",
"\n",
" quartilesMagnitudes_YBand quartilesMagnitudes_ZBand quartilesQ1_XBand \\\n",
"0 1.953035 2.450324 -0.857281 \n",
"1 1.823645 2.371402 -0.890517 \n",
"2 1.857566 2.287946 -0.908937 \n",
"3 1.927286 2.430919 -0.936330 \n",
"4 1.943362 2.351452 -0.848642 \n",
"5 2.044482 2.457244 -0.964691 \n",
"6 1.911373 2.463859 -0.853602 \n",
"7 1.923635 2.375836 -0.933618 \n",
"8 1.894052 2.419341 -0.989153 \n",
"9 1.983375 2.489371 -0.981082 \n",
"10 1.803099 2.299181 -0.839424 \n",
"11 1.892468 2.321498 -0.947796 \n",
"12 1.920256 2.424900 -0.885908 \n",
"13 1.886238 2.384941 -0.905751 \n",
"14 1.953468 2.438616 -0.829282 \n",
"15 2.024101 2.466989 -0.915346 \n",
"16 1.447118 2.128269 -0.416022 \n",
"\n",
" quartilesQ1_YBand quartilesQ1_ZBand quartilesQ2_XBand \\\n",
"0 -1.066341 -0.943389 1.734648e-03 \n",
"1 -0.896180 -0.890692 5.305092e-02 \n",
"2 -0.905143 -0.904948 -1.316958e-01 \n",
"3 -0.895335 -1.012306 7.424161e-02 \n",
"4 -1.009354 -0.870719 9.819226e-03 \n",
"5 -0.898707 -0.974285 -5.631767e-02 \n",
"6 -0.919344 -0.833187 -2.319636e-02 \n",
"7 -0.909365 -0.856205 3.927045e-03 \n",
"8 -0.990565 -0.815172 5.484881e-02 \n",
"9 -1.022765 -0.921673 4.270924e-02 \n",
"10 -0.860238 -0.793160 -6.855676e-03 \n",
"11 -0.910512 -0.870465 -5.014919e-02 \n",
"12 -0.910620 -0.927338 2.410547e-02 \n",
"13 -0.898025 -0.906175 -8.665132e-02 \n",
"14 -0.974343 -0.955520 -4.738416e-02 \n",
"15 -0.984985 -0.811973 -3.887618e-02 \n",
"16 -0.440029 -0.540883 3.331106e-07 \n",
"\n",
" quartilesQ2_YBand quartilesQ2_ZBand quartilesQ3_XBand \\\n",
"0 1.474204e-01 2.570732e-02 0.900173 \n",
"1 -1.393668e-01 6.543044e-02 0.998641 \n",
"2 -2.592307e-02 3.705648e-02 1.074195 \n",
"3 7.881847e-02 3.799249e-02 0.965155 \n",
"4 -6.889970e-02 4.224540e-03 0.911672 \n",
"5 -8.779827e-02 8.764006e-02 0.932725 \n",
"6 -9.019255e-03 -3.461384e-03 0.847410 \n",
"7 -1.005830e-02 3.384215e-03 0.851492 \n",
"8 3.164539e-02 -2.583106e-02 1.025297 \n",
"9 6.089817e-02 5.860674e-02 0.959995 \n",
"10 -4.994243e-03 -2.613465e-02 0.875425 \n",
"11 -3.398671e-02 -1.037207e-02 0.988602 \n",
"12 -2.678631e-02 1.237609e-01 0.912376 \n",
"13 3.114818e-02 -3.300223e-02 0.778031 \n",
"14 1.429302e-02 1.719155e-02 0.926055 \n",
"15 -4.416076e-02 -2.242612e-02 1.048730 \n",
"16 -2.639121e-07 -4.257538e-09 0.551091 \n",
"\n",
" quartilesQ3_YBand quartilesQ3_ZBand quartiles_Q1_XLow \\\n",
"0 0.917809 0.960279 -1.692628 \n",
"1 0.821929 0.941297 -1.075061 \n",
"2 0.836151 0.873429 -1.413513 \n",
"3 0.960944 0.983116 -1.860919 \n",
"4 1.017258 0.906597 -1.853105 \n",
"5 0.982897 0.993620 -1.426029 \n",
"6 0.907176 0.867320 -1.164096 \n",
"7 0.923628 0.875569 -1.476751 \n",
"8 0.862250 0.874136 -1.723314 \n",
"9 0.984925 0.816430 -1.718565 \n",
"10 0.824992 0.803966 -1.691706 \n",
"11 0.725148 0.919259 -1.536187 \n",
"12 0.869175 0.966424 -1.586190 \n",
"13 0.978833 0.971133 -2.410799 \n",
"14 0.936954 0.939674 -1.731873 \n",
"15 1.077973 0.895863 -1.958784 \n",
"16 0.288465 0.507107 -0.354829 \n",
"\n",
" quartiles_Q1_YLow quartiles_Q1_ZLow quartiles_Q2_XLow \\\n",
"0 -1.541206 -2.190574 7.106834e-02 \n",
"1 -1.881130 -1.707743 7.121445e-01 \n",
"2 -1.861473 -1.407143 -1.932959e-02 \n",
"3 -1.922915 -1.264425 -2.975076e-01 \n",
"4 -2.190908 -1.998139 -6.881272e-02 \n",
"5 -1.490952 -1.543161 3.411664e-01 \n",
"6 -1.796971 -1.543134 4.847145e-01 \n",
"7 -1.732299 -1.375862 3.162880e-01 \n",
"8 -1.752244 -2.346500 3.795663e-01 \n",
"9 -1.588920 -1.023154 8.254056e-02 \n",
"10 -1.424364 -2.000485 -1.249822e-01 \n",
"11 -1.844722 -1.895595 4.847813e-03 \n",
"12 -1.785255 -1.375454 1.907984e-01 \n",
"13 -1.576045 -1.598559 -8.241570e-01 \n",
"14 -1.924112 -1.910202 -1.233831e-01 \n",
"15 -2.041210 -1.911564 -4.371645e-02 \n",
"16 -1.282318 -0.007787 -1.034646e-10 \n",
"\n",
" quartiles_Q2_YLow quartiles_Q2_ZLow quartiles_Q3_XLow \\\n",
"0 1.925838e-01 -0.244365 1.772612 \n",
"1 4.735999e-03 -0.227438 2.415131 \n",
"2 -1.750099e-01 -0.007410 1.839983 \n",
"3 -1.634460e-01 0.273415 1.716989 \n",
"4 -6.622510e-01 -0.047323 1.480328 \n",
"5 2.301154e-01 0.542243 2.154964 \n",
"6 5.439990e-01 -0.094862 2.311904 \n",
"7 5.966718e-02 0.301915 1.964963 \n",
"8 2.255246e-01 -0.316655 2.124440 \n",
"9 1.560492e-01 0.474546 1.738235 \n",
"10 -1.370148e-01 -0.053503 1.753026 \n",
"11 3.170505e-01 -0.285082 1.836553 \n",
"12 5.473598e-03 0.528322 1.576726 \n",
"13 -7.963359e-02 0.064714 1.269420 \n",
"14 -1.492296e-01 -0.151915 2.032976 \n",
"15 -4.362463e-02 -0.219009 2.046924 \n",
"16 1.421830e-09 0.000036 1.399923 \n",
"\n",
" quartiles_Q3_YLow quartiles_Q3_ZLow ratePeaks_X ratePeaks_Y \\\n",
"0 1.767104 1.517931 0.0 0.0 \n",
"1 1.929656 1.460147 0.0 0.0 \n",
"2 1.449344 1.655161 0.0 0.0 \n",
"3 1.508407 2.070949 0.0 0.0 \n",
"4 1.161326 1.525732 0.0 0.0 \n",
"5 1.912678 2.285364 0.0 0.0 \n",
"6 2.355886 1.509694 0.0 0.0 \n",
"7 1.731693 2.009830 0.0 0.0 \n",
"8 2.059840 1.263401 0.0 0.0 \n",
"9 1.745099 2.263241 0.0 0.0 \n",
"10 1.696057 2.092684 0.0 0.0 \n",
"11 1.882568 1.351052 0.0 0.0 \n",
"12 1.832236 2.350274 0.0 0.0 \n",
"13 1.535768 1.566630 0.0 0.0 \n",
"14 1.670429 1.484681 0.0 0.0 \n",
"15 1.720127 1.286591 0.0 0.0 \n",
"16 0.566322 1.574568 0.0 0.0 \n",
"\n",
" ratePeaks_Z ratioBeyondRSigma_X ratioBeyondRSigma_Y \\\n",
"0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 \n",
"5 0.0 0.0 0.0 \n",
"6 0.0 0.0 0.0 \n",
"7 0.0 0.0 0.0 \n",
"8 0.0 0.0 0.0 \n",
"9 0.0 0.0 0.0 \n",
"10 0.0 0.0 0.0 \n",
"11 0.0 0.0 0.0 \n",
"12 0.0 0.0 0.0 \n",
"13 0.0 0.0 0.0 \n",
"14 0.0 0.0 0.0 \n",
"15 0.0 0.0 0.0 \n",
"16 0.0 0.0 0.0 \n",
"\n",
" ratioBeyondRSigma_Z rmssd_X rmssd_Y rmssd_Z rollAvgLow \\\n",
"0 0.0 0.040000 0.00000 0.000000 6.267041 \n",
"1 0.0 0.070711 0.00000 0.000000 6.229705 \n",
"2 0.0 0.056569 0.00000 0.010000 6.246037 \n",
"3 0.0 0.176564 NaN 0.079057 6.263200 \n",
"4 0.0 0.073314 0.00000 NaN 6.257153 \n",
"5 0.0 NaN NaN 0.143788 6.235513 \n",
"6 0.0 0.055227 0.13435 0.000000 6.256733 \n",
"7 0.0 0.000000 0.00000 0.099247 6.249577 \n",
"8 0.0 0.020000 NaN 0.084113 6.257396 \n",
"9 0.0 NaN 0.16000 0.106066 6.229289 \n",
"10 0.0 0.000000 0.00000 0.000000 6.197414 \n",
"11 0.0 0.030000 0.00000 NaN 6.245839 \n",
"12 0.0 0.152315 0.19500 0.049497 6.191870 \n",
"13 0.0 0.000000 0.06364 0.000000 6.216458 \n",
"14 0.0 0.000000 NaN 0.000000 6.250970 \n",
"15 0.0 0.000000 0.00000 0.090000 6.252043 \n",
"16 0.0 0.015811 NaN NaN 6.168358 \n",
"\n",
" rollMotionAmountLow rollMotionRegularityLow rollPeak0 rollPeak1 \\\n",
"0 1.542201 0.960000 58.0 81.579155 \n",
"1 1.572021 0.946667 50.0 81.415426 \n",
"2 1.644758 0.920000 57.0 85.111788 \n",
"3 1.628594 0.960000 53.0 95.000403 \n",
"4 1.751518 0.986667 60.0 101.781375 \n",
"5 1.479838 0.943333 50.0 97.621402 \n",
"6 1.454305 0.913333 54.0 89.027514 \n",
"7 1.514670 0.936667 52.0 89.122608 \n",
"8 1.486984 0.940000 55.0 79.561599 \n",
"9 1.543290 0.943333 53.0 95.600485 \n",
"10 1.593219 0.953333 52.0 78.927944 \n",
"11 1.516778 0.953333 59.0 77.765390 \n",
"12 1.565020 0.960000 46.0 75.389760 \n",
"13 1.549493 0.943333 51.0 92.043536 \n",
"14 1.644497 0.946667 63.0 118.478766 \n",
"15 1.605553 0.930000 64.0 97.084014 \n",
"16 1.106250 0.966667 36.0 67.487914 \n",
"\n",
" rollPeak2 rollPeak3 rollPitchCorrelation rollStdDevLow sd1/sd2_X \\\n",
"0 1.406537 9.519295e-02 0.999979 1.781788 NaN \n",
"1 1.628309 6.604003e-02 0.999981 1.828565 0.534522 \n",
"2 1.493189 9.489318e-02 0.999979 1.882802 0.534522 \n",
"3 1.792460 1.092292e-02 0.999981 1.853306 1.379034 \n",
"4 1.696356 7.270613e-02 0.999981 1.957519 0.995458 \n",
"5 1.952428 3.119174e-02 0.999980 1.714472 NaN \n",
"6 1.648658 1.089759e-01 0.999980 1.744573 0.577154 \n",
"7 1.713896 3.651673e-02 0.999978 1.774453 NaN \n",
"8 1.446575 4.361178e-02 0.999979 1.745401 NaN \n",
"9 1.803783 5.295251e-02 0.999981 1.797112 NaN \n",
"10 1.517845 4.367994e-03 0.999978 1.798309 NaN \n",
"11 1.318057 3.999860e-02 0.999980 1.785573 NaN \n",
"12 1.638908 5.001221e-02 0.999981 1.788564 0.638044 \n",
"13 1.804775 1.027405e-01 0.999984 1.809506 NaN \n",
"14 1.880615 8.600262e-02 0.999982 1.883839 NaN \n",
"15 1.516938 7.589902e-03 0.999981 1.863443 NaN \n",
"16 1.874664 7.709882e-19 0.999983 1.500198 1.414214 \n",
"\n",
" sd1/sd2_Y sd1/sd2_Z sd2_X sd2_Y sd2_Z sd_X sd_Y \\\n",
"0 NaN NaN NaN NaN NaN 0.014142 0.000000 \n",
"1 NaN NaN 0.062361 NaN NaN 0.033333 0.000000 \n",
"2 NaN NaN 0.049889 NaN NaN 0.026667 0.000000 \n",
"3 NaN 1.414214 0.044234 NaN 0.020412 0.061001 NaN \n",
"4 NaN NaN 0.026623 NaN NaN 0.026502 0.000000 \n",
"5 NaN 1.831731 NaN NaN 0.026584 NaN NaN \n",
"6 0.534522 NaN 0.050584 0.118486 NaN 0.029195 0.063333 \n",
"7 NaN 0.619666 NaN NaN 0.078138 0.000000 0.000000 \n",
"8 NaN 0.700467 NaN NaN 0.056811 0.007071 NaN \n",
"9 NaN 0.534522 NaN NaN 0.093541 NaN 0.056569 \n",
"10 NaN NaN NaN NaN NaN 0.000000 0.000000 \n",
"11 NaN NaN NaN NaN NaN 0.010607 0.000000 \n",
"12 NaN 0.534522 0.087789 NaN 0.043653 0.056013 0.068943 \n",
"13 1.133893 NaN NaN 0.019843 NaN 0.000000 0.022500 \n",
"14 NaN NaN NaN NaN NaN 0.000000 NaN \n",
"15 NaN NaN NaN NaN NaN 0.000000 0.000000 \n",
"16 NaN NaN 0.004082 NaN NaN 0.005774 NaN \n",
"\n",
" sd_Z sdnn_X sdnn_Y sdnn_Z sdsd_X sdsd_Y sdsd_Z \\\n",
"0 0.000000 0.020000 0.000000 0.000000 0.000000 0.000000 0.000000 \n",
"1 0.000000 0.047140 0.000000 0.000000 0.050000 0.000000 0.000000 \n",
"2 0.003536 0.037712 0.000000 0.005000 0.040000 0.000000 0.000000 \n",
"3 0.028868 0.086268 NaN 0.040825 0.053281 NaN 0.025000 \n",
"4 NaN 0.037479 0.000000 NaN 0.026562 0.000000 NaN \n",
"5 0.048694 NaN NaN 0.068864 NaN NaN 0.039229 \n",
"6 0.000000 0.041288 0.089567 0.000000 0.041298 0.095000 0.000000 \n",
"7 0.048419 0.000000 0.000000 0.068475 0.000000 0.000000 0.065000 \n",
"8 0.039794 0.010000 NaN 0.056278 0.000000 NaN 0.049046 \n",
"9 0.050000 NaN 0.080000 0.070711 NaN 0.000000 0.075000 \n",
"10 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n",
"11 NaN 0.015000 0.000000 NaN 0.000000 0.000000 NaN \n",
"12 0.023333 0.079215 0.097500 0.032998 0.073636 0.000000 0.035000 \n",
"13 0.000000 0.000000 0.031820 0.000000 0.000000 0.021213 0.000000 \n",
"14 0.000000 0.000000 NaN 0.000000 0.000000 NaN 0.000000 \n",
"15 0.031820 0.000000 0.000000 0.045000 0.000000 0.000000 0.000000 \n",
"16 NaN 0.008165 NaN NaN 0.005000 NaN NaN \n",
"\n",
" sigTonicDifference_X sigTonicDifference_Y sigTonicDifference_Z \\\n",
"0 9.199656 9.338675 8.899684 \n",
"1 9.616484 8.656152 8.719506 \n",
"2 9.254964 8.942960 9.371260 \n",
"3 8.953227 9.256710 9.405749 \n",
"4 9.227503 8.427440 8.868092 \n",
"5 9.610274 9.664016 9.881796 \n",
"6 9.707548 9.728117 9.286315 \n",
"7 8.843457 9.474760 9.450369 \n",
"8 9.430278 9.303699 8.659857 \n",
"9 9.505284 8.649510 9.470890 \n",
"10 8.655102 8.230653 9.430806 \n",
"11 8.710545 9.404535 8.934167 \n",
"12 8.777491 9.328002 9.314613 \n",
"13 8.489345 9.333659 9.356877 \n",
"14 7.818805 8.840335 9.259486 \n",
"15 9.371048 9.028195 8.869437 \n",
"16 7.249286 5.986623 7.562215 \n",
"\n",
" signalOverallChange_X signalOverallChange_Y signalOverallChange_Z \\\n",
"0 NaN NaN NaN \n",
"1 NaN NaN NaN \n",
"2 NaN NaN NaN \n",
"3 NaN NaN NaN \n",
"4 NaN NaN NaN \n",
"5 NaN NaN NaN \n",
"6 NaN NaN NaN \n",
"7 NaN NaN NaN \n",
"8 NaN NaN NaN \n",
"9 NaN NaN NaN \n",
"10 NaN NaN NaN \n",
"11 NaN NaN NaN \n",
"12 NaN NaN NaN \n",
"13 NaN NaN NaN \n",
"14 NaN NaN NaN \n",
"15 NaN NaN NaN \n",
"16 NaN NaN NaN \n",
"\n",
" significantDecreaseChange_X significantDecreaseChange_Y \\\n",
"0 0.0 0.0 \n",
"1 0.0 0.0 \n",
"2 0.0 0.0 \n",
"3 0.0 0.0 \n",
"4 0.0 0.0 \n",
"5 0.0 0.0 \n",
"6 0.0 0.0 \n",
"7 0.0 0.0 \n",
"8 0.0 0.0 \n",
"9 0.0 0.0 \n",
"10 0.0 0.0 \n",
"11 0.0 0.0 \n",
"12 0.0 0.0 \n",
"13 0.0 0.0 \n",
"14 0.0 0.0 \n",
"15 0.0 0.0 \n",
"16 0.0 0.0 \n",
"\n",
" significantDecreaseChange_Z significantDecreaseDuration_X \\\n",
"0 0.0 0.0 \n",
"1 0.0 0.0 \n",
"2 0.0 0.0 \n",
"3 0.0 0.0 \n",
"4 0.0 0.0 \n",
"5 0.0 0.0 \n",
"6 0.0 0.0 \n",
"7 0.0 0.0 \n",
"8 0.0 0.0 \n",
"9 0.0 0.0 \n",
"10 0.0 0.0 \n",
"11 0.0 0.0 \n",
"12 0.0 0.0 \n",
"13 0.0 0.0 \n",
"14 0.0 0.0 \n",
"15 0.0 0.0 \n",
"16 0.0 0.0 \n",
"\n",
" significantDecreaseDuration_Y significantDecreaseDuration_Z \\\n",
"0 0.0 0.0 \n",
"1 0.0 0.0 \n",
"2 0.0 0.0 \n",
"3 0.0 0.0 \n",
"4 0.0 0.0 \n",
"5 0.0 0.0 \n",
"6 0.0 0.0 \n",
"7 0.0 0.0 \n",
"8 0.0 0.0 \n",
"9 0.0 0.0 \n",
"10 0.0 0.0 \n",
"11 0.0 0.0 \n",
"12 0.0 0.0 \n",
"13 0.0 0.0 \n",
"14 0.0 0.0 \n",
"15 0.0 0.0 \n",
"16 0.0 0.0 \n",
"\n",
" significantDecreaseIntensity_X significantDecreaseIntensity_Y \\\n",
"0 0.0 0.0 \n",
"1 0.0 0.0 \n",
"2 0.0 0.0 \n",
"3 0.0 0.0 \n",
"4 0.0 0.0 \n",
"5 0.0 0.0 \n",
"6 0.0 0.0 \n",
"7 0.0 0.0 \n",
"8 0.0 0.0 \n",
"9 0.0 0.0 \n",
"10 0.0 0.0 \n",
"11 0.0 0.0 \n",
"12 0.0 0.0 \n",
"13 0.0 0.0 \n",
"14 0.0 0.0 \n",
"15 0.0 0.0 \n",
"16 0.0 0.0 \n",
"\n",
" significantDecreaseIntensity_Z significantDecreaseMean_X \\\n",
"0 0.0 0.0 \n",
"1 0.0 0.0 \n",
"2 0.0 0.0 \n",
"3 0.0 0.0 \n",
"4 0.0 0.0 \n",
"5 0.0 0.0 \n",
"6 0.0 0.0 \n",
"7 0.0 0.0 \n",
"8 0.0 0.0 \n",
"9 0.0 0.0 \n",
"10 0.0 0.0 \n",
"11 0.0 0.0 \n",
"12 0.0 0.0 \n",
"13 0.0 0.0 \n",
"14 0.0 0.0 \n",
"15 0.0 0.0 \n",
"16 0.0 0.0 \n",
"\n",
" significantDecreaseMean_Y significantDecreaseMean_Z \\\n",
"0 0.0 0.0 \n",
"1 0.0 0.0 \n",
"2 0.0 0.0 \n",
"3 0.0 0.0 \n",
"4 0.0 0.0 \n",
"5 0.0 0.0 \n",
"6 0.0 0.0 \n",
"7 0.0 0.0 \n",
"8 0.0 0.0 \n",
"9 0.0 0.0 \n",
"10 0.0 0.0 \n",
"11 0.0 0.0 \n",
"12 0.0 0.0 \n",
"13 0.0 0.0 \n",
"14 0.0 0.0 \n",
"15 0.0 0.0 \n",
"16 0.0 0.0 \n",
"\n",
" significantDecreaseSpeed_X significantDecreaseSpeed_Y \\\n",
"0 0.0 0.0 \n",
"1 0.0 0.0 \n",
"2 0.0 0.0 \n",
"3 0.0 0.0 \n",
"4 0.0 0.0 \n",
"5 0.0 0.0 \n",
"6 0.0 0.0 \n",
"7 0.0 0.0 \n",
"8 0.0 0.0 \n",
"9 0.0 0.0 \n",
"10 0.0 0.0 \n",
"11 0.0 0.0 \n",
"12 0.0 0.0 \n",
"13 0.0 0.0 \n",
"14 0.0 0.0 \n",
"15 0.0 0.0 \n",
"16 0.0 0.0 \n",
"\n",
" significantDecreaseSpeed_Z significantIncreaseChange_X \\\n",
"0 0.0 0.0 \n",
"1 0.0 0.0 \n",
"2 0.0 0.0 \n",
"3 0.0 0.0 \n",
"4 0.0 0.0 \n",
"5 0.0 0.0 \n",
"6 0.0 0.0 \n",
"7 0.0 0.0 \n",
"8 0.0 0.0 \n",
"9 0.0 0.0 \n",
"10 0.0 0.0 \n",
"11 0.0 0.0 \n",
"12 0.0 0.0 \n",
"13 0.0 0.0 \n",
"14 0.0 0.0 \n",
"15 0.0 0.0 \n",
"16 0.0 0.0 \n",
"\n",
" significantIncreaseChange_Y significantIncreaseChange_Z \\\n",
"0 0.0 0.0 \n",
"1 0.0 0.0 \n",
"2 0.0 0.0 \n",
"3 0.0 0.0 \n",
"4 0.0 0.0 \n",
"5 0.0 0.0 \n",
"6 0.0 0.0 \n",
"7 0.0 0.0 \n",
"8 0.0 0.0 \n",
"9 0.0 0.0 \n",
"10 0.0 0.0 \n",
"11 0.0 0.0 \n",
"12 0.0 0.0 \n",
"13 0.0 0.0 \n",
"14 0.0 0.0 \n",
"15 0.0 0.0 \n",
"16 0.0 0.0 \n",
"\n",
" significantIncreaseDuration_X significantIncreaseDuration_Y \\\n",
"0 0.0 0.0 \n",
"1 0.0 0.0 \n",
"2 0.0 0.0 \n",
"3 0.0 0.0 \n",
"4 0.0 0.0 \n",
"5 0.0 0.0 \n",
"6 0.0 0.0 \n",
"7 0.0 0.0 \n",
"8 0.0 0.0 \n",
"9 0.0 0.0 \n",
"10 0.0 0.0 \n",
"11 0.0 0.0 \n",
"12 0.0 0.0 \n",
"13 0.0 0.0 \n",
"14 0.0 0.0 \n",
"15 0.0 0.0 \n",
"16 0.0 0.0 \n",
"\n",
" significantIncreaseDuration_Z significantIncreaseIntensity_X \\\n",
"0 0.0 0.0 \n",
"1 0.0 0.0 \n",
"2 0.0 0.0 \n",
"3 0.0 0.0 \n",
"4 0.0 0.0 \n",
"5 0.0 0.0 \n",
"6 0.0 0.0 \n",
"7 0.0 0.0 \n",
"8 0.0 0.0 \n",
"9 0.0 0.0 \n",
"10 0.0 0.0 \n",
"11 0.0 0.0 \n",
"12 0.0 0.0 \n",
"13 0.0 0.0 \n",
"14 0.0 0.0 \n",
"15 0.0 0.0 \n",
"16 0.0 0.0 \n",
"\n",
" significantIncreaseIntensity_Y significantIncreaseIntensity_Z \\\n",
"0 0.0 0.0 \n",
"1 0.0 0.0 \n",
"2 0.0 0.0 \n",
"3 0.0 0.0 \n",
"4 0.0 0.0 \n",
"5 0.0 0.0 \n",
"6 0.0 0.0 \n",
"7 0.0 0.0 \n",
"8 0.0 0.0 \n",
"9 0.0 0.0 \n",
"10 0.0 0.0 \n",
"11 0.0 0.0 \n",
"12 0.0 0.0 \n",
"13 0.0 0.0 \n",
"14 0.0 0.0 \n",
"15 0.0 0.0 \n",
"16 0.0 0.0 \n",
"\n",
" significantIncreaseMean_X significantIncreaseMean_Y \\\n",
"0 0.0 0.0 \n",
"1 0.0 0.0 \n",
"2 0.0 0.0 \n",
"3 0.0 0.0 \n",
"4 0.0 0.0 \n",
"5 0.0 0.0 \n",
"6 0.0 0.0 \n",
"7 0.0 0.0 \n",
"8 0.0 0.0 \n",
"9 0.0 0.0 \n",
"10 0.0 0.0 \n",
"11 0.0 0.0 \n",
"12 0.0 0.0 \n",
"13 0.0 0.0 \n",
"14 0.0 0.0 \n",
"15 0.0 0.0 \n",
"16 0.0 0.0 \n",
"\n",
" significantIncreaseMean_Z significantIncreaseSpeed_X \\\n",
"0 0.0 0.0 \n",
"1 0.0 0.0 \n",
"2 0.0 0.0 \n",
"3 0.0 0.0 \n",
"4 0.0 0.0 \n",
"5 0.0 0.0 \n",
"6 0.0 0.0 \n",
"7 0.0 0.0 \n",
"8 0.0 0.0 \n",
"9 0.0 0.0 \n",
"10 0.0 0.0 \n",
"11 0.0 0.0 \n",
"12 0.0 0.0 \n",
"13 0.0 0.0 \n",
"14 0.0 0.0 \n",
"15 0.0 0.0 \n",
"16 0.0 0.0 \n",
"\n",
" significantIncreaseSpeed_Y significantIncreaseSpeed_Z skewness_XBand \\\n",
"0 0.0 0.0 -0.789241 \n",
"1 0.0 0.0 -0.964118 \n",
"2 0.0 0.0 -1.947521 \n",
"3 0.0 0.0 -1.074669 \n",
"4 0.0 0.0 -1.429767 \n",
"5 0.0 0.0 -1.423178 \n",
"6 0.0 0.0 -1.810281 \n",
"7 0.0 0.0 -1.029154 \n",
"8 0.0 0.0 -1.399832 \n",
"9 0.0 0.0 -1.368791 \n",
"10 0.0 0.0 -1.711224 \n",
"11 0.0 0.0 -1.930326 \n",
"12 0.0 0.0 -1.829400 \n",
"13 0.0 0.0 -1.433780 \n",
"14 0.0 0.0 -1.331531 \n",
"15 0.0 0.0 -1.393066 \n",
"16 0.0 0.0 -0.841880 \n",
"\n",
" skewness_XLow skewness_YBand skewness_YLow skewness_ZBand \\\n",
"0 -1.336122 -1.408522 -1.448100 -1.400358 \n",
"1 -1.261287 -1.989833 -1.397036 -1.338255 \n",
"2 -1.475923 -2.027313 -1.467638 -1.562003 \n",
"3 -1.266773 -1.453350 -1.383511 -1.442892 \n",
"4 -1.339143 -1.615808 -1.422805 -0.943698 \n",
"5 -1.416528 -1.459715 -1.448963 -1.675927 \n",
"6 -1.386903 -1.294143 -1.357113 -1.412690 \n",
"7 -1.330033 -1.368968 -1.402020 -0.702916 \n",
"8 -1.384544 -1.713550 -1.379397 -1.356883 \n",
"9 -1.372940 -0.716725 -1.210997 -1.201617 \n",
"10 -1.425541 -1.311673 -1.400647 -0.616432 \n",
"11 -1.533702 -1.614584 -1.548574 -1.364344 \n",
"12 -1.478368 -1.469157 -1.519127 -1.050517 \n",
"13 -1.329548 -1.421468 -1.253525 -1.496642 \n",
"14 -1.497803 -1.339151 -1.344117 -1.300268 \n",
"15 -1.368357 -1.891049 -1.525716 -1.012493 \n",
"16 -0.784251 -0.129888 -1.336934 0.048994 \n",
"\n",
" skewness_ZLow squareSumOfComponent squareSumOfComponent_X \\\n",
"0 -1.445621 9491.043380 87.304565 \n",
"1 -1.277417 30651.148332 68.792877 \n",
"2 -1.393616 44408.530623 87.771841 \n",
"3 -1.483391 5106.736870 52.245492 \n",
"4 -1.392960 15176.836847 3.443728 \n",
"5 -1.425731 6709.160654 14.176021 \n",
"6 -1.363114 10254.961649 70.644597 \n",
"7 -1.265042 19979.281586 50.420508 \n",
"8 -1.365171 4581.997895 2.110400 \n",
"9 -1.319741 17362.935975 0.673737 \n",
"10 -1.352344 23952.457725 43.977395 \n",
"11 -1.425509 22698.768662 90.606767 \n",
"12 -1.140978 25247.727112 68.948690 \n",
"13 -1.399283 2837.286157 30.077470 \n",
"14 -1.411368 2051.843171 6.938203 \n",
"15 -1.344404 23828.015922 0.081206 \n",
"16 -0.643958 42835.132332 46.378025 \n",
"\n",
" squareSumOfComponent_Y squareSumOfComponent_Z stdDev_X stdDev_Y \\\n",
"0 0.525027 9.592395 5.702752 6.013487 \n",
"1 85.920194 20.361622 5.578343 5.446571 \n",
"2 91.087375 31.874100 5.675729 5.529069 \n",
"3 8.992683 10.223261 5.780877 5.713349 \n",
"4 56.423599 63.326978 5.687720 5.948307 \n",
"5 24.547381 43.186064 5.830696 5.874676 \n",
"6 28.825635 1.796552 5.596989 5.858829 \n",
"7 0.756588 90.170990 5.629154 5.842836 \n",
"8 60.870553 4.709504 5.881362 5.819936 \n",
"9 94.407329 36.687427 6.062433 5.725004 \n",
"10 22.934706 87.853715 5.649359 5.443630 \n",
"11 52.320191 7.734147 5.848798 5.633897 \n",
"12 22.013900 67.932744 5.667538 5.679923 \n",
"13 0.019081 23.169631 5.796861 5.665845 \n",
"14 20.667281 17.691791 5.533798 5.865656 \n",
"15 91.434499 62.847554 6.025069 5.952174 \n",
"16 65.801181 94.787294 4.635847 4.514551 \n",
"\n",
" stdDev_Z std_X std_Y std_Z sumOfSquareComponents \\\n",
"0 5.709675 5.702752 6.013487 5.709675 7714.376715 \n",
"1 5.759969 5.578343 5.446571 5.759969 12529.335362 \n",
"2 5.513457 5.675729 5.529069 5.513457 17016.764285 \n",
"3 5.763486 5.780877 5.713349 5.763486 2914.974871 \n",
"4 5.671727 5.687720 5.948307 5.671727 7205.787985 \n",
"5 5.918005 5.830696 5.874676 5.918005 2668.569628 \n",
"6 5.817657 5.596989 5.858829 5.817657 5824.803953 \n",
"7 5.878194 5.629154 5.842836 5.878194 10673.607545 \n",
"8 5.787121 5.881362 5.819936 5.787121 3731.857444 \n",
"9 5.790869 6.062433 5.725004 5.790869 10259.165086 \n",
"10 5.621032 5.649359 5.443630 5.621032 10178.287252 \n",
"11 5.627404 5.848798 5.633897 5.627404 11006.805647 \n",
"12 5.827023 5.667538 5.679923 5.827023 9853.391350 \n",
"13 5.763488 5.796861 5.665845 5.763488 1441.486376 \n",
"14 5.923030 5.533798 5.865656 5.923030 788.274651 \n",
"15 5.779353 6.025069 5.952174 5.779353 12310.089283 \n",
"16 4.812979 4.635847 4.514551 4.812979 15465.347834 \n",
"\n",
" sumPerComponent_XBand sumPerComponent_YBand sumPerComponent_ZBand \\\n",
"0 9.332071 0.711978 3.085267 \n",
"1 8.282718 9.258236 4.500362 \n",
"2 9.357266 9.532453 5.634279 \n",
"3 7.216070 2.987004 3.185468 \n",
"4 1.844006 7.499087 7.946165 \n",
"5 3.752978 4.942276 6.559151 \n",
"6 8.393765 5.356485 1.328328 \n",
"7 7.089141 0.857534 9.483464 \n",
"8 1.440467 7.789667 2.157835 \n",
"9 0.807834 9.704695 6.045037 \n",
"10 6.619876 4.777700 9.361491 \n",
"11 9.506484 7.221729 2.769357 \n",
"12 8.291813 4.680328 8.230175 \n",
"13 5.472029 0.126213 4.801692 \n",
"14 2.622796 4.534010 4.193525 \n",
"15 0.272450 9.549740 7.915426 \n",
"16 6.800411 8.092254 9.720961 \n",
"\n",
" sumPer_X sumPer_Y sumPer_Z sumPosDeriv_X sumPosDeriv_Y sumPosDeriv_Z \\\n",
"0 9.343691 0.724587 3.097159 1.533655 1.811178 1.681572 \n",
"1 8.294147 9.269315 4.512385 1.591732 1.580072 1.700955 \n",
"2 9.368663 9.543971 5.645715 1.755798 1.650120 1.671424 \n",
"3 7.228104 2.998780 3.197383 1.697559 1.655703 1.668006 \n",
"4 1.855728 7.511564 7.957825 1.714760 1.769990 1.689834 \n",
"5 3.765106 4.954531 6.571610 1.601735 1.663261 1.676063 \n",
"6 8.405034 5.368951 1.340355 1.608356 1.653202 1.825924 \n",
"7 7.100740 0.869821 9.495841 1.701632 1.756226 1.709203 \n",
"8 1.452721 7.801958 2.170139 1.653067 1.827721 1.536427 \n",
"9 0.820815 9.716343 6.057015 1.824568 1.587335 1.700598 \n",
"10 6.631545 4.789019 9.373031 1.624215 1.513528 1.636635 \n",
"11 9.518759 7.233270 2.781033 1.650110 1.606799 1.702796 \n",
"12 8.303535 4.691897 8.242132 1.706478 1.541407 1.577032 \n",
"13 5.484293 0.138134 4.813484 1.771312 1.704668 1.763609 \n",
"14 2.634047 4.546128 4.206161 1.551998 1.620187 1.795793 \n",
"15 0.284968 9.562139 7.927645 1.618430 1.746358 1.796606 \n",
"16 6.810141 8.111793 9.735877 1.009023 1.086773 1.161188 \n",
"\n",
" sumSquared_X sumSquared_Y sumSquared_Z totalAbsoluteAreaBand \\\n",
"0 87.304565 0.525027 9.592395 930.324637 \n",
"1 68.792877 85.920194 20.361622 880.255964 \n",
"2 87.771841 91.087375 31.874100 889.394563 \n",
"3 52.245492 8.992683 10.223261 920.462589 \n",
"4 3.443728 56.423599 63.326978 906.331468 \n",
"5 14.176021 24.547381 43.186064 922.999063 \n",
"6 70.644597 28.825635 1.796552 891.241288 \n",
"7 50.420508 0.756588 90.170990 889.958466 \n",
"8 2.110400 60.870553 4.709504 899.898502 \n",
"9 0.673737 94.407329 36.687427 937.539507 \n",
"10 43.977395 22.934706 87.853715 853.098151 \n",
"11 90.606767 52.320191 7.734147 894.370062 \n",
"12 68.948690 22.013900 67.932744 912.690717 \n",
"13 30.077470 0.019081 23.169631 896.978822 \n",
"14 6.938203 20.667281 17.691791 904.039012 \n",
"15 0.081206 91.434499 62.847554 949.133312 \n",
"16 46.378025 65.801181 94.787294 618.770314 \n",
"\n",
" totalAbsoluteAreaLow totalEnergy_XBand totalEnergy_XLow \\\n",
"0 1780.575497 517.364214 1788.802647 \n",
"1 1764.960003 484.409520 1660.514544 \n",
"2 1660.479036 500.176502 1608.410552 \n",
"3 1820.669589 451.010824 1992.791606 \n",
"4 1768.462902 392.463100 1611.102684 \n",
"5 1875.393901 471.891573 1857.190163 \n",
"6 1787.154967 486.437759 1675.123945 \n",
"7 1812.332972 462.825167 1787.230831 \n",
"8 1914.346191 460.461739 2145.783460 \n",
"9 1820.621790 459.708676 1891.234146 \n",
"10 1788.896569 456.655747 1775.297410 \n",
"11 1754.867700 530.355391 1909.625501 \n",
"12 1844.751328 457.213609 1748.235049 \n",
"13 1774.809989 431.661941 2061.651867 \n",
"14 1785.109858 422.788778 1908.060229 \n",
"15 1849.464050 487.266003 2234.828172 \n",
"16 1206.745729 325.226513 1173.958591 \n",
"\n",
" totalEnergy_YBand totalEnergy_YLow totalEnergy_ZBand totalEnergy_ZLow \\\n",
"0 439.584822 1739.615369 450.831393 1794.973308 \n",
"1 457.269815 1856.515911 413.902079 1532.911953 \n",
"2 472.406450 1718.034506 403.722870 1392.356015 \n",
"3 464.921005 1690.931963 438.332549 1759.580678 \n",
"4 529.857943 1861.075738 461.368239 1706.093090 \n",
"5 456.903709 1860.241368 459.162105 2076.012958 \n",
"6 462.875255 2038.645919 403.746970 1497.384032 \n",
"7 426.235740 1833.567302 490.346279 1776.759610 \n",
"8 485.681060 1887.933048 377.333528 1856.973429 \n",
"9 556.100152 1919.097714 474.084271 1774.462002 \n",
"10 374.230201 1527.449086 461.128464 2062.255419 \n",
"11 450.140820 1765.227258 385.755339 1529.079555 \n",
"12 425.974207 1747.207222 529.734045 2313.928055 \n",
"13 412.340960 1682.121184 434.772069 1493.757008 \n",
"14 475.704726 1914.740172 429.391914 1481.573747 \n",
"15 563.461483 1932.475692 474.052209 1633.787069 \n",
"16 340.504512 1173.019368 386.447472 1226.625881 \n",
"\n",
" totalKineticEnergyBand totalMagnitudeBand totalMagnitudeLow \\\n",
"0 2.925126e+08 37.561417 73.200325 \n",
"1 5.258724e+08 36.836583 71.964761 \n",
"2 6.331399e+08 37.155660 68.858981 \n",
"3 2.142150e+08 36.827968 73.961246 \n",
"4 3.698058e+08 37.211833 72.700856 \n",
"5 2.455072e+08 37.317283 76.700344 \n",
"6 3.039349e+08 36.815042 72.961288 \n",
"7 4.245261e+08 37.156183 73.861435 \n",
"8 2.030065e+08 36.400458 77.362336 \n",
"9 3.957316e+08 38.649692 75.327253 \n",
"10 4.647551e+08 35.970652 73.266806 \n",
"11 4.524228e+08 37.022559 72.336756 \n",
"12 4.771071e+08 37.613472 76.851962 \n",
"13 1.596326e+08 35.767026 72.943244 \n",
"14 1.355158e+08 36.471281 72.961260 \n",
"15 4.636878e+08 39.090631 76.441830 \n",
"16 -3.812113e+07 32.463418 61.018083 \n",
"\n",
" totalMeanLow variance_XBand variance_XLow variance_YBand \\\n",
"0 -22.543665 2.721968 9.754062 2.590389 \n",
"1 56.947576 2.563355 7.355288 2.510291 \n",
"2 -17.875769 2.804377 8.647055 2.622988 \n",
"3 -0.031628 2.429697 11.250914 2.645239 \n",
"4 -82.608508 2.215412 9.352735 2.991478 \n",
"5 87.061581 2.673239 9.243265 2.587991 \n",
"6 80.170428 2.693489 7.684352 2.562234 \n",
"7 64.153009 2.469863 9.024566 2.414425 \n",
"8 -0.552672 2.593119 11.128252 2.712446 \n",
"9 71.510548 2.611981 10.151689 2.926317 \n",
"10 -3.697235 2.502221 9.994805 2.122154 \n",
"11 -19.025417 2.948125 10.263177 2.519518 \n",
"12 38.889104 2.545405 9.535645 2.420954 \n",
"13 -43.125120 2.439554 14.330087 2.351737 \n",
"14 -37.293835 2.341786 10.937580 2.644027 \n",
"15 -52.154199 2.788693 12.546204 3.149414 \n",
"16 69.988893 1.527052 4.799571 1.541689 \n",
"\n",
" variance_YLow variance_ZBand variance_ZLow velocity_XBand \\\n",
"0 9.313834 2.528331 11.471023 9.329075 \n",
"1 10.417940 2.274827 8.751125 8.279796 \n",
"2 10.472756 2.271032 7.621608 -9.354190 \n",
"3 10.178643 2.536343 9.079495 7.213186 \n",
"4 12.998558 2.465946 10.177490 1.841149 \n",
"5 9.554210 2.626139 10.193015 -3.749940 \n",
"6 10.207149 2.279214 8.458739 -8.390872 \n",
"7 10.084753 2.561608 8.665412 7.086253 \n",
"8 9.794086 2.111711 12.556467 1.437382 \n",
"9 9.953002 2.584094 8.199316 0.804720 \n",
"10 8.401283 2.379874 11.553055 -6.617017 \n",
"11 9.721455 2.142709 9.559985 -9.503376 \n",
"12 10.224227 2.851741 10.736961 -8.288873 \n",
"13 8.996186 2.515854 8.132504 -5.469177 \n",
"14 11.128877 2.382600 8.970394 2.619904 \n",
"15 11.788846 2.508219 9.934570 0.269214 \n",
"16 6.359343 1.750283 4.757309 6.798417 \n",
"\n",
" velocity_YBand velocity_ZBand \n",
"0 0.708808 3.082230 \n",
"1 -9.255495 4.497523 \n",
"2 -9.529691 -5.631469 \n",
"3 -2.983890 -3.182467 \n",
"4 -7.495938 7.943277 \n",
"5 -4.939248 -6.556118 \n",
"6 5.353457 -1.325481 \n",
"7 -0.854626 9.480576 \n",
"8 -7.786676 2.155067 \n",
"9 9.701594 6.042039 \n",
"10 4.774896 9.358744 \n",
"11 -7.218897 2.766581 \n",
"12 -4.677415 8.227049 \n",
"13 0.123248 -4.798694 \n",
"14 4.530926 4.190602 \n",
"15 -9.546621 7.912537 \n",
"16 8.090398 9.732142 \n"
]
}
],
"source": [
"INPUT_LEN = 5000\n",
"random.seed(1234)\n",
"np.random.seed(1234)\n",
"\n",
"x = np.array([random.random() * 20 - 10 for _ in range(INPUT_LEN)])\n",
"y = np.array([random.random() * 20 - 10 for _ in range(INPUT_LEN)])\n",
"z = np.array([random.random() * 20 - 10 for _ in range(INPUT_LEN)])\n",
"pd.set_option('display.max_rows', 500)\n",
"pd.set_option('display.max_columns', None)\n",
"pd.set_option('display.width', None)\n",
"\n",
"time = [i*0.01 for i in range(INPUT_LEN)]\n",
"\n",
"numCols = 300\n",
"\n",
"ax = convertInputInto2d(x, numCols)\n",
"ay = convertInputInto2d(y, numCols)\n",
"az = convertInputInto2d(z, numCols)\n",
"\n",
"time = convertInputInto2d(time, numCols)\n",
"\n",
"df = calculateFeatures(ax, ay, az, time)\n",
"\n",
"print(df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Calculate execution times"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"DATA_LEN = 100000\n",
"PRINT_OUTPUT = False\n",
"\n",
"\n",
"def timeFunc(fName, f, *args):\n",
" start_time = t.time()\n",
" out = f(*args)\n",
" print(fName, \" \" * (40-len(fName)), t.time() - start_time, \"seconds\")\n",
" if PRINT_OUTPUT:\n",
" print(out)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"compute_features 0.06318068504333496 seconds\n",
"calcAreaUnderAccelerationMagnitude 0.1833968162536621 seconds\n",
"calcAverageVectorLength 0.001512765884399414 seconds\n",
"calcAverageVectorLengthPower 0.0005660057067871094 seconds\n",
"calcMeanKineticEnergy 0.9430029392242432 seconds\n",
"calcPeaks 0.8460264205932617 seconds\n",
"calcTotalKineticEnergy 1.1924221515655518 seconds\n",
"calcAcAbsoluteArea 0.0012974739074707031 seconds\n",
"calcAbsoluteMean 0.0006303787231445312 seconds\n",
"calcAmplitude 0.0005743503570556641 seconds\n",
"calcCoefficientOfVariation 17.25027561187744 seconds\n",
"calcCorrelation 0.3744330406188965 seconds\n",
"calcEntropy 1.2423591613769531 seconds\n",
"calcInterQuartileRange 5.245208740234375e-06 seconds\n",
"calcKurtosis 1.1491007804870605 seconds\n",
"calcMeanCrossingRate 0.12923097610473633 seconds\n",
"calcQuartiles 0.10563778877258301 seconds\n",
"calcSkewness 1.1148443222045898 seconds\n",
"calcTotalAbsoluteArea 0.0001842975616455078 seconds\n",
"calcTotalEnergy 0.8747704029083252 seconds\n",
"calcDominantFrequencyEnergy 0.9095582962036133 seconds\n",
"calcTotalMagnitude 1.2974116802215576 seconds\n",
"calcVariance 15.527474403381348 seconds\n",
"calcArea 0.0006725788116455078 seconds\n",
"calcMean 0.00042319297790527344 seconds\n",
"calcPostureDistance 1.4543533325195312e-05 seconds\n",
"calcTotalMean 0.0002124309539794922 seconds\n",
"calcPeakCountBoza 0.0006649494171142578 seconds\n",
"calcSumPerComponent 1.1699285507202148 seconds\n",
"computeACVelocity 0.768822193145752 seconds\n",
"lowPassFilter 0.1188957691192627 seconds\n",
"bandPassFilter 0.24991559982299805 seconds\n",
"highPassFilter 0.12767314910888672 seconds\n",
"magnitudeVector 1.7064223289489746 seconds\n",
"covariance 0.13443350791931152 seconds\n",
"calcRoll 0.6018388271331787 seconds\n",
"calcPitch 0.7513015270233154 seconds\n",
"stdDev 0.13022685050964355 seconds\n",
"rollMotionAmount 0.4034900665283203 seconds\n",
"rollMotionRegularity 0.47931718826293945 seconds\n",
"manipulation 1.9478199481964111 seconds\n",
"min 0.0003123283386230469 seconds\n",
"min 0.0002841949462890625 seconds\n",
"max 0.00025963783264160156 seconds\n",
"max 0.00019931793212890625 seconds\n",
"avg 0.0003573894500732422 seconds\n",
"avg 0.000213623046875 seconds\n"
]
}
],
"source": [
"magnitudes = np.array([random.random() * 100 for _ in range(DATA_LEN)])\n",
"time = np.array([random.randint(1499719594, 1599719594) for _ in range(DATA_LEN)])\n",
"\n",
"x = np.array([random.random() * 100 for _ in range(DATA_LEN)])\n",
"y = np.array([random.random() * 100 for _ in range(DATA_LEN)])\n",
"z = np.array([random.random() * 100 for _ in range(DATA_LEN)])\n",
"\n",
"timeFunc(\"compute_features\", functions.computeFreqFeatures, magnitudes)\n",
"\n",
"timeFunc(\"calcAreaUnderAccelerationMagnitude\", functions.calcAreaUnderAccelerationMagnitude, magnitudes, time)\n",
"timeFunc(\"calcAverageVectorLength\", functions.calcAverageVectorLength, magnitudes)\n",
"timeFunc(\"calcAverageVectorLengthPower\", functions.calcAverageVectorLengthPower, magnitudes)\n",
"timeFunc(\"calcMeanKineticEnergy\", functions.calcMeanKineticEnergy, magnitudes, time)\n",
"timeFunc(\"calcPeaks\", functions.calcPeaks, magnitudes)\n",
"timeFunc(\"calcTotalKineticEnergy\", functions.calcTotalKineticEnergy, x, y, z, time)\n",
"timeFunc(\"calcAcAbsoluteArea\", functions.calcAcAbsoluteArea, x, y, z)\n",
"timeFunc(\"calcAbsoluteMean\", functions.calcAbsoluteMean, magnitudes)\n",
"timeFunc(\"calcAmplitude\", functions.calcAmplitude, magnitudes)\n",
"timeFunc(\"calcCoefficientOfVariation\", functions.calcCoefficientOfVariation, magnitudes)\n",
"timeFunc(\"calcCorrelation\", functions.calcCorrelation, magnitudes, magnitudes[::-1])\n",
"timeFunc(\"calcEntropy\", functions.calcEntropy, magnitudes)\n",
"timeFunc(\"calcInterQuartileRange\", functions.calcInterQuartileRange, magnitudes)\n",
"timeFunc(\"calcKurtosis\", functions.calcKurtosis, magnitudes)\n",
"timeFunc(\"calcMeanCrossingRate\", functions.calcMeanCrossingRate, magnitudes)\n",
"timeFunc(\"calcQuartiles\", functions.calcQuartiles, magnitudes)\n",
"timeFunc(\"calcSkewness\", functions.calcSkewness, magnitudes)\n",
"timeFunc(\"calcTotalAbsoluteArea\", functions.calcTotalAbsoluteArea, magnitudes)\n",
"timeFunc(\"calcTotalEnergy\", functions.calcTotalEnergy, magnitudes)\n",
"timeFunc(\"calcDominantFrequencyEnergy\", functions.calcDominantFrequencyEnergy, magnitudes)\n",
"timeFunc(\"calcTotalMagnitude\", functions.calcTotalMagnitude, x, y, z)\n",
"timeFunc(\"calcVariance\", functions.calcVariance, magnitudes)\n",
"timeFunc(\"calcArea\", functions.calcArea, magnitudes)\n",
"timeFunc(\"calcMean\", functions.calcMean, magnitudes)\n",
"timeFunc(\"calcPostureDistance\", functions.calcPostureDistance, functions.calcMean(x), functions.calcMean(y),\n",
" functions.calcMean(z))\n",
"timeFunc(\"calcTotalMean\", functions.calcTotalMean, magnitudes, magnitudes[::-1])\n",
"timeFunc(\"calcPeakCountBoza\", functions.calcPeakCount,\n",
" np.array([1.0, 4.0, 60.0, 4.5, 1.0, 4.0, 60.0, 4.5, 1.0, 4.0, 60.0, 4.5]))\n",
"timeFunc(\"calcSumPerComponent\", functions.calcSumPerComponent, magnitudes, time)\n",
"timeFunc(\"computeACVelocity\", functions.computeACVelocity, magnitudes, time)\n",
"timeFunc(\"lowPassFilter\", functions.lowPassFilter, magnitudes, 0.5)\n",
"timeFunc(\"bandPassFilter\", functions.bandPassFilter, magnitudes, 0.5, 0.7)\n",
"timeFunc(\"highPassFilter\", functions.highPassFilter, magnitudes, 0.5)\n",
"timeFunc(\"magnitudeVector\", functions.magnitudeVector, x, y, z)\n",
"timeFunc(\"covariance\", functions.covariance, magnitudes, magnitudes[::-1])\n",
"\n",
"timeFunc(\"calcRoll\", functions.calcRoll, magnitudes, magnitudes[::-1])\n",
"timeFunc(\"calcPitch\", functions.calcPitch, x, y, z)\n",
"timeFunc(\"stdDev\", functions.stdDev, magnitudes)\n",
"timeFunc(\"rollMotionAmount\", functions.rollMotionAmount, magnitudes)\n",
"timeFunc(\"rollMotionRegularity\", functions.rollMotionRegularity, magnitudes)\n",
"timeFunc(\"manipulation\", functions.manipulation, x, y, z, magnitudes, magnitudes[::-1])\n",
"\n",
"intArray = time\n",
"doubleArray = magnitudes\n",
"timeFunc(\"min\", functions.min, intArray)\n",
"timeFunc(\"min\", functions.min, doubleArray)\n",
"timeFunc(\"max\", functions.max, intArray)\n",
"timeFunc(\"max\", functions.max, doubleArray)\n",
"timeFunc(\"avg\", functions.avg, intArray)\n",
"timeFunc(\"avg\", functions.avg, doubleArray)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Calculate EDA features with calculateFeatures"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Warning: Cannot change to a different GUI toolkit: widget. Using notebook instead.\n"
]
}
],
"source": [
"import CalculatingFeatures.gsr\n",
"from eda_explorer.load_files import butter_lowpass_filter\n",
"from eda_explorer.EDA_Peak_Detection_Script import calcPeakFeatures\n",
"%matplotlib widget"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"pathToEDACsv = \"example_data/EDA.csv\"\n",
"\n",
"# get an array of values from EDA empatica file\n",
"eda_data, startTimeStamp_EDA, sampleRate_EDA = convert1DEmpaticaToArray(pathToEDACsv)\n",
"\n",
"windowLength_EDA = int(sampleRate_EDA*120)\n",
"\n",
"# Convert the HRV data into 2D array\n",
"eda_data_2D = convertInputInto2d(eda_data, windowLength_EDA)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"df_EDA = pd.DataFrame()\n",
"for row in eda_data_2D:\n",
" current_result = {}\n",
" current_result.update(CalculatingFeatures.gsr.extractGsrFeatures(row, sampleRate=int(sampleRate_EDA),featureNames=gsrFeatureNames))\n",
" df_EDA = df_EDA.append(current_result, ignore_index=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In `extractGsrFeatures`, the EDA signal is first filtered using a Butterworth filter (`scipy.signal.butter`) from the SciPy library (`scipy.signal.lfilter`).\n",
"Its order ($N = 6$) and the cutoff frequency ($W_n = 1$ Hz) are hard-coded."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"no_interest = 131\n",
"current_row = eda_data_2D[no_interest,]\n",
"filtered_EDA = butter_lowpass_filter(current_row, 1.0, int(sampleRate_EDA), 6)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"application/javascript": [
"/* Put everything inside the global mpl namespace */\n",
"/* global mpl */\n",
"window.mpl = {};\n",
"\n",
"mpl.get_websocket_type = function () {\n",
" if (typeof WebSocket !== 'undefined') {\n",
" return WebSocket;\n",
" } else if (typeof MozWebSocket !== 'undefined') {\n",
" return MozWebSocket;\n",
" } else {\n",
" alert(\n",
" 'Your browser does not have WebSocket support. ' +\n",
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
" 'Firefox 4 and 5 are also supported but you ' +\n",
" 'have to enable WebSockets in about:config.'\n",
" );\n",
" }\n",
"};\n",
"\n",
"mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n",
" this.id = figure_id;\n",
"\n",
" this.ws = websocket;\n",
"\n",
" this.supports_binary = this.ws.binaryType !== undefined;\n",
"\n",
" if (!this.supports_binary) {\n",
" var warnings = document.getElementById('mpl-warnings');\n",
" if (warnings) {\n",
" warnings.style.display = 'block';\n",
" warnings.textContent =\n",
" 'This browser does not support binary websocket messages. ' +\n",
" 'Performance may be slow.';\n",
" }\n",
" }\n",
"\n",
" this.imageObj = new Image();\n",
"\n",
" this.context = undefined;\n",
" this.message = undefined;\n",
" this.canvas = undefined;\n",
" this.rubberband_canvas = undefined;\n",
" this.rubberband_context = undefined;\n",
" this.format_dropdown = undefined;\n",
"\n",
" this.image_mode = 'full';\n",
"\n",
" this.root = document.createElement('div');\n",
" this.root.setAttribute('style', 'display: inline-block');\n",
" this._root_extra_style(this.root);\n",
"\n",
" parent_element.appendChild(this.root);\n",
"\n",
" this._init_header(this);\n",
" this._init_canvas(this);\n",
" this._init_toolbar(this);\n",
"\n",
" var fig = this;\n",
"\n",
" this.waiting = false;\n",
"\n",
" this.ws.onopen = function () {\n",
" fig.send_message('supports_binary', { value: fig.supports_binary });\n",
" fig.send_message('send_image_mode', {});\n",
" if (fig.ratio !== 1) {\n",
" fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n",
" }\n",
" fig.send_message('refresh', {});\n",
" };\n",
"\n",
" this.imageObj.onload = function () {\n",
" if (fig.image_mode === 'full') {\n",
" // Full images could contain transparency (where diff images\n",
" // almost always do), so we need to clear the canvas so that\n",
" // there is no ghosting.\n",
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
" }\n",
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
" };\n",
"\n",
" this.imageObj.onunload = function () {\n",
" fig.ws.close();\n",
" };\n",
"\n",
" this.ws.onmessage = this._make_on_message_function(this);\n",
"\n",
" this.ondownload = ondownload;\n",
"};\n",
"\n",
"mpl.figure.prototype._init_header = function () {\n",
" var titlebar = document.createElement('div');\n",
" titlebar.classList =\n",
" 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n",
" var titletext = document.createElement('div');\n",
" titletext.classList = 'ui-dialog-title';\n",
" titletext.setAttribute(\n",
" 'style',\n",
" 'width: 100%; text-align: center; padding: 3px;'\n",
" );\n",
" titlebar.appendChild(titletext);\n",
" this.root.appendChild(titlebar);\n",
" this.header = titletext;\n",
"};\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n",
"\n",
"mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n",
"\n",
"mpl.figure.prototype._init_canvas = function () {\n",
" var fig = this;\n",
"\n",
" var canvas_div = (this.canvas_div = document.createElement('div'));\n",
" canvas_div.setAttribute(\n",
" 'style',\n",
" 'border: 1px solid #ddd;' +\n",
" 'box-sizing: content-box;' +\n",
" 'clear: both;' +\n",
" 'min-height: 1px;' +\n",
" 'min-width: 1px;' +\n",
" 'outline: 0;' +\n",
" 'overflow: hidden;' +\n",
" 'position: relative;' +\n",
" 'resize: both;'\n",
" );\n",
"\n",
" function on_keyboard_event_closure(name) {\n",
" return function (event) {\n",
" return fig.key_event(event, name);\n",
" };\n",
" }\n",
"\n",
" canvas_div.addEventListener(\n",
" 'keydown',\n",
" on_keyboard_event_closure('key_press')\n",
" );\n",
" canvas_div.addEventListener(\n",
" 'keyup',\n",
" on_keyboard_event_closure('key_release')\n",
" );\n",
"\n",
" this._canvas_extra_style(canvas_div);\n",
" this.root.appendChild(canvas_div);\n",
"\n",
" var canvas = (this.canvas = document.createElement('canvas'));\n",
" canvas.classList.add('mpl-canvas');\n",
" canvas.setAttribute('style', 'box-sizing: content-box;');\n",
"\n",
" this.context = canvas.getContext('2d');\n",
"\n",
" var backingStore =\n",
" this.context.backingStorePixelRatio ||\n",
" this.context.webkitBackingStorePixelRatio ||\n",
" this.context.mozBackingStorePixelRatio ||\n",
" this.context.msBackingStorePixelRatio ||\n",
" this.context.oBackingStorePixelRatio ||\n",
" this.context.backingStorePixelRatio ||\n",
" 1;\n",
"\n",
" this.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
" if (this.ratio !== 1) {\n",
" fig.send_message('set_dpi_ratio', { dpi_ratio: this.ratio });\n",
" }\n",
"\n",
" var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n",
" 'canvas'\n",
" ));\n",
" rubberband_canvas.setAttribute(\n",
" 'style',\n",
" 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n",
" );\n",
"\n",
" var resizeObserver = new ResizeObserver(function (entries) {\n",
" var nentries = entries.length;\n",
" for (var i = 0; i < nentries; i++) {\n",
" var entry = entries[i];\n",
" var width, height;\n",
" if (entry.contentBoxSize) {\n",
" if (entry.contentBoxSize instanceof Array) {\n",
" // Chrome 84 implements new version of spec.\n",
" width = entry.contentBoxSize[0].inlineSize;\n",
" height = entry.contentBoxSize[0].blockSize;\n",
" } else {\n",
" // Firefox implements old version of spec.\n",
" width = entry.contentBoxSize.inlineSize;\n",
" height = entry.contentBoxSize.blockSize;\n",
" }\n",
" } else {\n",
" // Chrome <84 implements even older version of spec.\n",
" width = entry.contentRect.width;\n",
" height = entry.contentRect.height;\n",
" }\n",
"\n",
" // Keep the size of the canvas and rubber band canvas in sync with\n",
" // the canvas container.\n",
" if (entry.devicePixelContentBoxSize) {\n",
" // Chrome 84 implements new version of spec.\n",
" canvas.setAttribute(\n",
" 'width',\n",
" entry.devicePixelContentBoxSize[0].inlineSize\n",
" );\n",
" canvas.setAttribute(\n",
" 'height',\n",
" entry.devicePixelContentBoxSize[0].blockSize\n",
" );\n",
" } else {\n",
" canvas.setAttribute('width', width * fig.ratio);\n",
" canvas.setAttribute('height', height * fig.ratio);\n",
" }\n",
" canvas.setAttribute(\n",
" 'style',\n",
" 'width: ' + width + 'px; height: ' + height + 'px;'\n",
" );\n",
"\n",
" rubberband_canvas.setAttribute('width', width);\n",
" rubberband_canvas.setAttribute('height', height);\n",
"\n",
" // And update the size in Python. We ignore the initial 0/0 size\n",
" // that occurs as the element is placed into the DOM, which should\n",
" // otherwise not happen due to the minimum size styling.\n",
" if (width != 0 && height != 0) {\n",
" fig.request_resize(width, height);\n",
" }\n",
" }\n",
" });\n",
" resizeObserver.observe(canvas_div);\n",
"\n",
" function on_mouse_event_closure(name) {\n",
" return function (event) {\n",
" return fig.mouse_event(event, name);\n",
" };\n",
" }\n",
"\n",
" rubberband_canvas.addEventListener(\n",
" 'mousedown',\n",
" on_mouse_event_closure('button_press')\n",
" );\n",
" rubberband_canvas.addEventListener(\n",
" 'mouseup',\n",
" on_mouse_event_closure('button_release')\n",
" );\n",
" // Throttle sequential mouse events to 1 every 20ms.\n",
" rubberband_canvas.addEventListener(\n",
" 'mousemove',\n",
" on_mouse_event_closure('motion_notify')\n",
" );\n",
"\n",
" rubberband_canvas.addEventListener(\n",
" 'mouseenter',\n",
" on_mouse_event_closure('figure_enter')\n",
" );\n",
" rubberband_canvas.addEventListener(\n",
" 'mouseleave',\n",
" on_mouse_event_closure('figure_leave')\n",
" );\n",
"\n",
" canvas_div.addEventListener('wheel', function (event) {\n",
" if (event.deltaY < 0) {\n",
" event.step = 1;\n",
" } else {\n",
" event.step = -1;\n",
" }\n",
" on_mouse_event_closure('scroll')(event);\n",
" });\n",
"\n",
" canvas_div.appendChild(canvas);\n",
" canvas_div.appendChild(rubberband_canvas);\n",
"\n",
" this.rubberband_context = rubberband_canvas.getContext('2d');\n",
" this.rubberband_context.strokeStyle = '#000000';\n",
"\n",
" this._resize_canvas = function (width, height, forward) {\n",
" if (forward) {\n",
" canvas_div.style.width = width + 'px';\n",
" canvas_div.style.height = height + 'px';\n",
" }\n",
" };\n",
"\n",
" // Disable right mouse context menu.\n",
" this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n",
" event.preventDefault();\n",
" return false;\n",
" });\n",
"\n",
" function set_focus() {\n",
" canvas.focus();\n",
" canvas_div.focus();\n",
" }\n",
"\n",
" window.setTimeout(set_focus, 100);\n",
"};\n",
"\n",
"mpl.figure.prototype._init_toolbar = function () {\n",
" var fig = this;\n",
"\n",
" var toolbar = document.createElement('div');\n",
" toolbar.classList = 'mpl-toolbar';\n",
" this.root.appendChild(toolbar);\n",
"\n",
" function on_click_closure(name) {\n",
" return function (_event) {\n",
" return fig.toolbar_button_onclick(name);\n",
" };\n",
" }\n",
"\n",
" function on_mouseover_closure(tooltip) {\n",
" return function (event) {\n",
" if (!event.currentTarget.disabled) {\n",
" return fig.toolbar_button_onmouseover(tooltip);\n",
" }\n",
" };\n",
" }\n",
"\n",
" fig.buttons = {};\n",
" var buttonGroup = document.createElement('div');\n",
" buttonGroup.classList = 'mpl-button-group';\n",
" for (var toolbar_ind in mpl.toolbar_items) {\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) {\n",
" /* Instead of a spacer, we start a new button group. */\n",
" if (buttonGroup.hasChildNodes()) {\n",
" toolbar.appendChild(buttonGroup);\n",
" }\n",
" buttonGroup = document.createElement('div');\n",
" buttonGroup.classList = 'mpl-button-group';\n",
" continue;\n",
" }\n",
"\n",
" var button = (fig.buttons[name] = document.createElement('button'));\n",
" button.classList = 'mpl-widget';\n",
" button.setAttribute('role', 'button');\n",
" button.setAttribute('aria-disabled', 'false');\n",
" button.addEventListener('click', on_click_closure(method_name));\n",
" button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
"\n",
" var icon_img = document.createElement('img');\n",
" icon_img.src = '_images/' + image + '.png';\n",
" icon_img.srcset = '_images/' + image + '_large.png 2x';\n",
" icon_img.alt = tooltip;\n",
" button.appendChild(icon_img);\n",
"\n",
" buttonGroup.appendChild(button);\n",
" }\n",
"\n",
" if (buttonGroup.hasChildNodes()) {\n",
" toolbar.appendChild(buttonGroup);\n",
" }\n",
"\n",
" var fmt_picker = document.createElement('select');\n",
" fmt_picker.classList = 'mpl-widget';\n",
" toolbar.appendChild(fmt_picker);\n",
" this.format_dropdown = fmt_picker;\n",
"\n",
" for (var ind in mpl.extensions) {\n",
" var fmt = mpl.extensions[ind];\n",
" var option = document.createElement('option');\n",
" option.selected = fmt === mpl.default_extension;\n",
" option.innerHTML = fmt;\n",
" fmt_picker.appendChild(option);\n",
" }\n",
"\n",
" var status_bar = document.createElement('span');\n",
" status_bar.classList = 'mpl-message';\n",
" toolbar.appendChild(status_bar);\n",
" this.message = status_bar;\n",
"};\n",
"\n",
"mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n",
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
" // which will in turn request a refresh of the image.\n",
" this.send_message('resize', { width: x_pixels, height: y_pixels });\n",
"};\n",
"\n",
"mpl.figure.prototype.send_message = function (type, properties) {\n",
" properties['type'] = type;\n",
" properties['figure_id'] = this.id;\n",
" this.ws.send(JSON.stringify(properties));\n",
"};\n",
"\n",
"mpl.figure.prototype.send_draw_message = function () {\n",
" if (!this.waiting) {\n",
" this.waiting = true;\n",
" this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
" var format_dropdown = fig.format_dropdown;\n",
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
" fig.ondownload(fig, format);\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_resize = function (fig, msg) {\n",
" var size = msg['size'];\n",
" if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n",
" fig._resize_canvas(size[0], size[1], msg['forward']);\n",
" fig.send_message('refresh', {});\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n",
" var x0 = msg['x0'] / fig.ratio;\n",
" var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n",
" var x1 = msg['x1'] / fig.ratio;\n",
" var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n",
" x0 = Math.floor(x0) + 0.5;\n",
" y0 = Math.floor(y0) + 0.5;\n",
" x1 = Math.floor(x1) + 0.5;\n",
" y1 = Math.floor(y1) + 0.5;\n",
" var min_x = Math.min(x0, x1);\n",
" var min_y = Math.min(y0, y1);\n",
" var width = Math.abs(x1 - x0);\n",
" var height = Math.abs(y1 - y0);\n",
"\n",
" fig.rubberband_context.clearRect(\n",
" 0,\n",
" 0,\n",
" fig.canvas.width / fig.ratio,\n",
" fig.canvas.height / fig.ratio\n",
" );\n",
"\n",
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n",
" // Updates the figure title.\n",
" fig.header.textContent = msg['label'];\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_cursor = function (fig, msg) {\n",
" var cursor = msg['cursor'];\n",
" switch (cursor) {\n",
" case 0:\n",
" cursor = 'pointer';\n",
" break;\n",
" case 1:\n",
" cursor = 'default';\n",
" break;\n",
" case 2:\n",
" cursor = 'crosshair';\n",
" break;\n",
" case 3:\n",
" cursor = 'move';\n",
" break;\n",
" }\n",
" fig.rubberband_canvas.style.cursor = cursor;\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_message = function (fig, msg) {\n",
" fig.message.textContent = msg['message'];\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_draw = function (fig, _msg) {\n",
" // Request the server to send over a new figure.\n",
" fig.send_draw_message();\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n",
" fig.image_mode = msg['mode'];\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n",
" for (var key in msg) {\n",
" if (!(key in fig.buttons)) {\n",
" continue;\n",
" }\n",
" fig.buttons[key].disabled = !msg[key];\n",
" fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n",
" if (msg['mode'] === 'PAN') {\n",
" fig.buttons['Pan'].classList.add('active');\n",
" fig.buttons['Zoom'].classList.remove('active');\n",
" } else if (msg['mode'] === 'ZOOM') {\n",
" fig.buttons['Pan'].classList.remove('active');\n",
" fig.buttons['Zoom'].classList.add('active');\n",
" } else {\n",
" fig.buttons['Pan'].classList.remove('active');\n",
" fig.buttons['Zoom'].classList.remove('active');\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function () {\n",
" // Called whenever the canvas gets updated.\n",
" this.send_message('ack', {});\n",
"};\n",
"\n",
"// A function to construct a web socket function for onmessage handling.\n",
"// Called in the figure constructor.\n",
"mpl.figure.prototype._make_on_message_function = function (fig) {\n",
" return function socket_on_message(evt) {\n",
" if (evt.data instanceof Blob) {\n",
" /* FIXME: We get \"Resource interpreted as Image but\n",
" * transferred with MIME type text/plain:\" errors on\n",
" * Chrome. But how to set the MIME type? It doesn't seem\n",
" * to be part of the websocket stream */\n",
" evt.data.type = 'image/png';\n",
"\n",
" /* Free the memory for the previous frames */\n",
" if (fig.imageObj.src) {\n",
" (window.URL || window.webkitURL).revokeObjectURL(\n",
" fig.imageObj.src\n",
" );\n",
" }\n",
"\n",
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
" evt.data\n",
" );\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" } else if (\n",
" typeof evt.data === 'string' &&\n",
" evt.data.slice(0, 21) === 'data:image/png;base64'\n",
" ) {\n",
" fig.imageObj.src = evt.data;\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
"\n",
" var msg = JSON.parse(evt.data);\n",
" var msg_type = msg['type'];\n",
"\n",
" // Call the \"handle_{type}\" callback, which takes\n",
" // the figure and JSON message as its only arguments.\n",
" try {\n",
" var callback = fig['handle_' + msg_type];\n",
" } catch (e) {\n",
" console.log(\n",
" \"No handler for the '\" + msg_type + \"' message type: \",\n",
" msg\n",
" );\n",
" return;\n",
" }\n",
"\n",
" if (callback) {\n",
" try {\n",
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
" callback(fig, msg);\n",
" } catch (e) {\n",
" console.log(\n",
" \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n",
" e,\n",
" e.stack,\n",
" msg\n",
" );\n",
" }\n",
" }\n",
" };\n",
"};\n",
"\n",
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
"mpl.findpos = function (e) {\n",
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
" var targ;\n",
" if (!e) {\n",
" e = window.event;\n",
" }\n",
" if (e.target) {\n",
" targ = e.target;\n",
" } else if (e.srcElement) {\n",
" targ = e.srcElement;\n",
" }\n",
" if (targ.nodeType === 3) {\n",
" // defeat Safari bug\n",
" targ = targ.parentNode;\n",
" }\n",
"\n",
" // pageX,Y are the mouse positions relative to the document\n",
" var boundingRect = targ.getBoundingClientRect();\n",
" var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n",
" var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n",
"\n",
" return { x: x, y: y };\n",
"};\n",
"\n",
"/*\n",
" * return a copy of an object with only non-object keys\n",
" * we need this to avoid circular references\n",
" * http://stackoverflow.com/a/24161582/3208463\n",
" */\n",
"function simpleKeys(original) {\n",
" return Object.keys(original).reduce(function (obj, key) {\n",
" if (typeof original[key] !== 'object') {\n",
" obj[key] = original[key];\n",
" }\n",
" return obj;\n",
" }, {});\n",
"}\n",
"\n",
"mpl.figure.prototype.mouse_event = function (event, name) {\n",
" var canvas_pos = mpl.findpos(event);\n",
"\n",
" if (name === 'button_press') {\n",
" this.canvas.focus();\n",
" this.canvas_div.focus();\n",
" }\n",
"\n",
" var x = canvas_pos.x * this.ratio;\n",
" var y = canvas_pos.y * this.ratio;\n",
"\n",
" this.send_message(name, {\n",
" x: x,\n",
" y: y,\n",
" button: event.button,\n",
" step: event.step,\n",
" guiEvent: simpleKeys(event),\n",
" });\n",
"\n",
" /* This prevents the web browser from automatically changing to\n",
" * the text insertion cursor when the button is pressed. We want\n",
" * to control all of the cursor setting manually through the\n",
" * 'cursor' event from matplotlib */\n",
" event.preventDefault();\n",
" return false;\n",
"};\n",
"\n",
"mpl.figure.prototype._key_event_extra = function (_event, _name) {\n",
" // Handle any extra behaviour associated with a key event\n",
"};\n",
"\n",
"mpl.figure.prototype.key_event = function (event, name) {\n",
" // Prevent repeat events\n",
" if (name === 'key_press') {\n",
" if (event.which === this._key) {\n",
" return;\n",
" } else {\n",
" this._key = event.which;\n",
" }\n",
" }\n",
" if (name === 'key_release') {\n",
" this._key = null;\n",
" }\n",
"\n",
" var value = '';\n",
" if (event.ctrlKey && event.which !== 17) {\n",
" value += 'ctrl+';\n",
" }\n",
" if (event.altKey && event.which !== 18) {\n",
" value += 'alt+';\n",
" }\n",
" if (event.shiftKey && event.which !== 16) {\n",
" value += 'shift+';\n",
" }\n",
"\n",
" value += 'k';\n",
" value += event.which.toString();\n",
"\n",
" this._key_event_extra(event, name);\n",
"\n",
" this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n",
" return false;\n",
"};\n",
"\n",
"mpl.figure.prototype.toolbar_button_onclick = function (name) {\n",
" if (name === 'download') {\n",
" this.handle_save(this, null);\n",
" } else {\n",
" this.send_message('toolbar_button', { name: name });\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n",
" this.message.textContent = tooltip;\n",
"};\n",
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
"\n",
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
"\n",
"mpl.default_extension = \"png\";/* global mpl */\n",
"\n",
"var comm_websocket_adapter = function (comm) {\n",
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
" // object with the appropriate methods. Currently this is a non binary\n",
" // socket, so there is still some room for performance tuning.\n",
" var ws = {};\n",
"\n",
" ws.close = function () {\n",
" comm.close();\n",
" };\n",
" ws.send = function (m) {\n",
" //console.log('sending', m);\n",
" comm.send(m);\n",
" };\n",
" // Register the callback with on_msg.\n",
" comm.on_msg(function (msg) {\n",
" //console.log('receiving', msg['content']['data'], msg);\n",
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
" ws.onmessage(msg['content']['data']);\n",
" });\n",
" return ws;\n",
"};\n",
"\n",
"mpl.mpl_figure_comm = function (comm, msg) {\n",
" // This is the function which gets called when the mpl process\n",
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
"\n",
" var id = msg.content.data.id;\n",
" // Get hold of the div created by the display call when the Comm\n",
" // socket was opened in Python.\n",
" var element = document.getElementById(id);\n",
" var ws_proxy = comm_websocket_adapter(comm);\n",
"\n",
" function ondownload(figure, _format) {\n",
" window.open(figure.canvas.toDataURL());\n",
" }\n",
"\n",
" var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n",
"\n",
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
" // web socket which is closed, not our websocket->open comm proxy.\n",
" ws_proxy.onopen();\n",
"\n",
" fig.parent_element = element;\n",
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
" if (!fig.cell_info) {\n",
" console.error('Failed to find cell for figure', id, fig);\n",
" return;\n",
" }\n",
" fig.cell_info[0].output_area.element.one(\n",
" 'cleared',\n",
" { fig: fig },\n",
" fig._remove_fig_handler\n",
" );\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_close = function (fig, msg) {\n",
" var width = fig.canvas.width / fig.ratio;\n",
" fig.cell_info[0].output_area.element.off(\n",
" 'cleared',\n",
" fig._remove_fig_handler\n",
" );\n",
"\n",
" // Update the output cell to use the data from the current canvas.\n",
" fig.push_to_output();\n",
" var dataURL = fig.canvas.toDataURL();\n",
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
" // the notebook keyboard shortcuts fail.\n",
" IPython.keyboard_manager.enable();\n",
" fig.parent_element.innerHTML =\n",
" '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
" fig.close_ws(fig, msg);\n",
"};\n",
"\n",
"mpl.figure.prototype.close_ws = function (fig, msg) {\n",
" fig.send_message('closing', msg);\n",
" // fig.ws.close()\n",
"};\n",
"\n",
"mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n",
" // Turn the data on the canvas into data in the output cell.\n",
" var width = this.canvas.width / this.ratio;\n",
" var dataURL = this.canvas.toDataURL();\n",
" this.cell_info[1]['text/html'] =\n",
" '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
"};\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function () {\n",
" // Tell IPython that the notebook contents must change.\n",
" IPython.notebook.set_dirty(true);\n",
" this.send_message('ack', {});\n",
" var fig = this;\n",
" // Wait a second, then push the new image to the DOM so\n",
" // that it is saved nicely (might be nice to debounce this).\n",
" setTimeout(function () {\n",
" fig.push_to_output();\n",
" }, 1000);\n",
"};\n",
"\n",
"mpl.figure.prototype._init_toolbar = function () {\n",
" var fig = this;\n",
"\n",
" var toolbar = document.createElement('div');\n",
" toolbar.classList = 'btn-toolbar';\n",
" this.root.appendChild(toolbar);\n",
"\n",
" function on_click_closure(name) {\n",
" return function (_event) {\n",
" return fig.toolbar_button_onclick(name);\n",
" };\n",
" }\n",
"\n",
" function on_mouseover_closure(tooltip) {\n",
" return function (event) {\n",
" if (!event.currentTarget.disabled) {\n",
" return fig.toolbar_button_onmouseover(tooltip);\n",
" }\n",
" };\n",
" }\n",
"\n",
" fig.buttons = {};\n",
" var buttonGroup = document.createElement('div');\n",
" buttonGroup.classList = 'btn-group';\n",
" var button;\n",
" for (var toolbar_ind in mpl.toolbar_items) {\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) {\n",
" /* Instead of a spacer, we start a new button group. */\n",
" if (buttonGroup.hasChildNodes()) {\n",
" toolbar.appendChild(buttonGroup);\n",
" }\n",
" buttonGroup = document.createElement('div');\n",
" buttonGroup.classList = 'btn-group';\n",
" continue;\n",
" }\n",
"\n",
" button = fig.buttons[name] = document.createElement('button');\n",
" button.classList = 'btn btn-default';\n",
" button.href = '#';\n",
" button.title = name;\n",
" button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n",
" button.addEventListener('click', on_click_closure(method_name));\n",
" button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
" buttonGroup.appendChild(button);\n",
" }\n",
"\n",
" if (buttonGroup.hasChildNodes()) {\n",
" toolbar.appendChild(buttonGroup);\n",
" }\n",
"\n",
" // Add the status bar.\n",
" var status_bar = document.createElement('span');\n",
" status_bar.classList = 'mpl-message pull-right';\n",
" toolbar.appendChild(status_bar);\n",
" this.message = status_bar;\n",
"\n",
" // Add the close button to the window.\n",
" var buttongrp = document.createElement('div');\n",
" buttongrp.classList = 'btn-group inline pull-right';\n",
" button = document.createElement('button');\n",
" button.classList = 'btn btn-mini btn-primary';\n",
" button.href = '#';\n",
" button.title = 'Stop Interaction';\n",
" button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n",
" button.addEventListener('click', function (_evt) {\n",
" fig.handle_close(fig, {});\n",
" });\n",
" button.addEventListener(\n",
" 'mouseover',\n",
" on_mouseover_closure('Stop Interaction')\n",
" );\n",
" buttongrp.appendChild(button);\n",
" var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n",
" titlebar.insertBefore(buttongrp, titlebar.firstChild);\n",
"};\n",
"\n",
"mpl.figure.prototype._remove_fig_handler = function (event) {\n",
" var fig = event.data.fig;\n",
" fig.close_ws(fig, {});\n",
"};\n",
"\n",
"mpl.figure.prototype._root_extra_style = function (el) {\n",
" el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n",
"};\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function (el) {\n",
" // this is important to make the div 'focusable\n",
" el.setAttribute('tabindex', 0);\n",
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
" // off when our div gets focus\n",
"\n",
" // location in version 3\n",
" if (IPython.notebook.keyboard_manager) {\n",
" IPython.notebook.keyboard_manager.register_events(el);\n",
" } else {\n",
" // location in version 2\n",
" IPython.keyboard_manager.register_events(el);\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype._key_event_extra = function (event, _name) {\n",
" var manager = IPython.notebook.keyboard_manager;\n",
" if (!manager) {\n",
" manager = IPython.keyboard_manager;\n",
" }\n",
"\n",
" // Check for shift+enter\n",
" if (event.shiftKey && event.which === 13) {\n",
" this.canvas_div.blur();\n",
" // select the cell after this one\n",
" var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
" IPython.notebook.select(index + 1);\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
" fig.ondownload(fig, null);\n",
"};\n",
"\n",
"mpl.find_output_cell = function (html_output) {\n",
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
" // IPython event is triggered only after the cells have been serialised, which for\n",
" // our purposes (turning an active figure into a static one), is too late.\n",
" var cells = IPython.notebook.get_cells();\n",
" var ncells = cells.length;\n",
" for (var i = 0; i < ncells; i++) {\n",
" var cell = cells[i];\n",
" if (cell.cell_type === 'code') {\n",
" for (var j = 0; j < cell.output_area.outputs.length; j++) {\n",
" var data = cell.output_area.outputs[j];\n",
" if (data.data) {\n",
" // IPython >= 3 moved mimebundle to data attribute of output\n",
" data = data.data;\n",
" }\n",
" if (data['text/html'] === html_output) {\n",
" return [cell, data, j];\n",
" }\n",
" }\n",
" }\n",
" }\n",
"};\n",
"\n",
"// Register the function which deals with the matplotlib target/channel.\n",
"// The kernel may be null if the page has been refreshed.\n",
"if (IPython.notebook.kernel !== null) {\n",
" IPython.notebook.kernel.comm_manager.register_target(\n",
" 'matplotlib',\n",
" mpl.mpl_figure_comm\n",
" );\n",
"}\n"
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure()\n",
"plt.plot(current_row, color='blue')\n",
"plt.plot(filtered_EDA, color='red')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, the peaks are detected using the EDA Explorer.\n",
"Here, the parameters can be set in `extractGsrFeatures`, but their default values are also set.\n",
"\n",
"The explanations and illustrations of these parameters can be found at the [EDA Explorer FAQ](https://eda-explorer.media.mit.edu/info/), but in brief, they are:\n",
"* threshold: the minimum amplitude a potential skin conductance response (SCR) must reach in order to be counted as an SCR (in µS); \n",
"* offset: the number of seconds for which the *derivative must be positive before a peak* and the derivative must be negative after a peak; \n",
"* max rise time: allowed time in seconds from the \"start\" of the peak to the apex of a peak;\n",
"* max decay time: allowed time in seconds after the apex of a peak to the 50 % of maximum amplitude of the peak.\n",
"\n",
"Their default values are: `(threshold=.02, offset=1, riseTime=4, decayTime=4,)`"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"gsr_data = pd.DataFrame(current_row, columns=[\"EDA\"])\n",
"startTime = pd.to_datetime(0, unit=\"s\")\n",
"gsr_data.index = pd.date_range(start=startTime, periods=len(gsr_data), freq=str(1000/sampleRate_EDA) + 'L')\n",
"gsr_data['filtered_eda'] = filtered_EDA\n",
"peakData = calcPeakFeatures(gsr_data, offset=1, thresh=.02, start_WT=4, end_WT=4, sampleRate=int(sampleRate_EDA))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This function returns peaks (i.e., the time of the peaks) and their characteristics.\n",
"These include their start and end time (when the amplitude falls by 50 %), their amplitude, their duration (or width) and more.\n",
"\n",
"Some peaks are visualized below, along with their start (>) and end (■) times."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 46 66 81 107 159 293 313 328 376 397 452]\n",
"[ 17 30 58 73 101 152 280 304 321 365 393 444]\n",
"[ 58 73 89 112 168 304 318 334 386 400 460]\n"
]
}
],
"source": [
"peaks = np.where(peakData.peaks == 1.0)[0]\n",
"peak_starts = np.where(peakData.peak_start == 1.0)[0]\n",
"peak_ends = np.where(peakData.peak_end == 1.0)[0]\n",
"print(peaks)\n",
"print(peak_starts)\n",
"print(peak_ends)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"application/javascript": [
"/* Put everything inside the global mpl namespace */\n",
"/* global mpl */\n",
"window.mpl = {};\n",
"\n",
"mpl.get_websocket_type = function () {\n",
" if (typeof WebSocket !== 'undefined') {\n",
" return WebSocket;\n",
" } else if (typeof MozWebSocket !== 'undefined') {\n",
" return MozWebSocket;\n",
" } else {\n",
" alert(\n",
" 'Your browser does not have WebSocket support. ' +\n",
" 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n",
" 'Firefox 4 and 5 are also supported but you ' +\n",
" 'have to enable WebSockets in about:config.'\n",
" );\n",
" }\n",
"};\n",
"\n",
"mpl.figure = function (figure_id, websocket, ondownload, parent_element) {\n",
" this.id = figure_id;\n",
"\n",
" this.ws = websocket;\n",
"\n",
" this.supports_binary = this.ws.binaryType !== undefined;\n",
"\n",
" if (!this.supports_binary) {\n",
" var warnings = document.getElementById('mpl-warnings');\n",
" if (warnings) {\n",
" warnings.style.display = 'block';\n",
" warnings.textContent =\n",
" 'This browser does not support binary websocket messages. ' +\n",
" 'Performance may be slow.';\n",
" }\n",
" }\n",
"\n",
" this.imageObj = new Image();\n",
"\n",
" this.context = undefined;\n",
" this.message = undefined;\n",
" this.canvas = undefined;\n",
" this.rubberband_canvas = undefined;\n",
" this.rubberband_context = undefined;\n",
" this.format_dropdown = undefined;\n",
"\n",
" this.image_mode = 'full';\n",
"\n",
" this.root = document.createElement('div');\n",
" this.root.setAttribute('style', 'display: inline-block');\n",
" this._root_extra_style(this.root);\n",
"\n",
" parent_element.appendChild(this.root);\n",
"\n",
" this._init_header(this);\n",
" this._init_canvas(this);\n",
" this._init_toolbar(this);\n",
"\n",
" var fig = this;\n",
"\n",
" this.waiting = false;\n",
"\n",
" this.ws.onopen = function () {\n",
" fig.send_message('supports_binary', { value: fig.supports_binary });\n",
" fig.send_message('send_image_mode', {});\n",
" if (fig.ratio !== 1) {\n",
" fig.send_message('set_dpi_ratio', { dpi_ratio: fig.ratio });\n",
" }\n",
" fig.send_message('refresh', {});\n",
" };\n",
"\n",
" this.imageObj.onload = function () {\n",
" if (fig.image_mode === 'full') {\n",
" // Full images could contain transparency (where diff images\n",
" // almost always do), so we need to clear the canvas so that\n",
" // there is no ghosting.\n",
" fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n",
" }\n",
" fig.context.drawImage(fig.imageObj, 0, 0);\n",
" };\n",
"\n",
" this.imageObj.onunload = function () {\n",
" fig.ws.close();\n",
" };\n",
"\n",
" this.ws.onmessage = this._make_on_message_function(this);\n",
"\n",
" this.ondownload = ondownload;\n",
"};\n",
"\n",
"mpl.figure.prototype._init_header = function () {\n",
" var titlebar = document.createElement('div');\n",
" titlebar.classList =\n",
" 'ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix';\n",
" var titletext = document.createElement('div');\n",
" titletext.classList = 'ui-dialog-title';\n",
" titletext.setAttribute(\n",
" 'style',\n",
" 'width: 100%; text-align: center; padding: 3px;'\n",
" );\n",
" titlebar.appendChild(titletext);\n",
" this.root.appendChild(titlebar);\n",
" this.header = titletext;\n",
"};\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function (_canvas_div) {};\n",
"\n",
"mpl.figure.prototype._root_extra_style = function (_canvas_div) {};\n",
"\n",
"mpl.figure.prototype._init_canvas = function () {\n",
" var fig = this;\n",
"\n",
" var canvas_div = (this.canvas_div = document.createElement('div'));\n",
" canvas_div.setAttribute(\n",
" 'style',\n",
" 'border: 1px solid #ddd;' +\n",
" 'box-sizing: content-box;' +\n",
" 'clear: both;' +\n",
" 'min-height: 1px;' +\n",
" 'min-width: 1px;' +\n",
" 'outline: 0;' +\n",
" 'overflow: hidden;' +\n",
" 'position: relative;' +\n",
" 'resize: both;'\n",
" );\n",
"\n",
" function on_keyboard_event_closure(name) {\n",
" return function (event) {\n",
" return fig.key_event(event, name);\n",
" };\n",
" }\n",
"\n",
" canvas_div.addEventListener(\n",
" 'keydown',\n",
" on_keyboard_event_closure('key_press')\n",
" );\n",
" canvas_div.addEventListener(\n",
" 'keyup',\n",
" on_keyboard_event_closure('key_release')\n",
" );\n",
"\n",
" this._canvas_extra_style(canvas_div);\n",
" this.root.appendChild(canvas_div);\n",
"\n",
" var canvas = (this.canvas = document.createElement('canvas'));\n",
" canvas.classList.add('mpl-canvas');\n",
" canvas.setAttribute('style', 'box-sizing: content-box;');\n",
"\n",
" this.context = canvas.getContext('2d');\n",
"\n",
" var backingStore =\n",
" this.context.backingStorePixelRatio ||\n",
" this.context.webkitBackingStorePixelRatio ||\n",
" this.context.mozBackingStorePixelRatio ||\n",
" this.context.msBackingStorePixelRatio ||\n",
" this.context.oBackingStorePixelRatio ||\n",
" this.context.backingStorePixelRatio ||\n",
" 1;\n",
"\n",
" this.ratio = (window.devicePixelRatio || 1) / backingStore;\n",
" if (this.ratio !== 1) {\n",
" fig.send_message('set_dpi_ratio', { dpi_ratio: this.ratio });\n",
" }\n",
"\n",
" var rubberband_canvas = (this.rubberband_canvas = document.createElement(\n",
" 'canvas'\n",
" ));\n",
" rubberband_canvas.setAttribute(\n",
" 'style',\n",
" 'box-sizing: content-box; position: absolute; left: 0; top: 0; z-index: 1;'\n",
" );\n",
"\n",
" var resizeObserver = new ResizeObserver(function (entries) {\n",
" var nentries = entries.length;\n",
" for (var i = 0; i < nentries; i++) {\n",
" var entry = entries[i];\n",
" var width, height;\n",
" if (entry.contentBoxSize) {\n",
" if (entry.contentBoxSize instanceof Array) {\n",
" // Chrome 84 implements new version of spec.\n",
" width = entry.contentBoxSize[0].inlineSize;\n",
" height = entry.contentBoxSize[0].blockSize;\n",
" } else {\n",
" // Firefox implements old version of spec.\n",
" width = entry.contentBoxSize.inlineSize;\n",
" height = entry.contentBoxSize.blockSize;\n",
" }\n",
" } else {\n",
" // Chrome <84 implements even older version of spec.\n",
" width = entry.contentRect.width;\n",
" height = entry.contentRect.height;\n",
" }\n",
"\n",
" // Keep the size of the canvas and rubber band canvas in sync with\n",
" // the canvas container.\n",
" if (entry.devicePixelContentBoxSize) {\n",
" // Chrome 84 implements new version of spec.\n",
" canvas.setAttribute(\n",
" 'width',\n",
" entry.devicePixelContentBoxSize[0].inlineSize\n",
" );\n",
" canvas.setAttribute(\n",
" 'height',\n",
" entry.devicePixelContentBoxSize[0].blockSize\n",
" );\n",
" } else {\n",
" canvas.setAttribute('width', width * fig.ratio);\n",
" canvas.setAttribute('height', height * fig.ratio);\n",
" }\n",
" canvas.setAttribute(\n",
" 'style',\n",
" 'width: ' + width + 'px; height: ' + height + 'px;'\n",
" );\n",
"\n",
" rubberband_canvas.setAttribute('width', width);\n",
" rubberband_canvas.setAttribute('height', height);\n",
"\n",
" // And update the size in Python. We ignore the initial 0/0 size\n",
" // that occurs as the element is placed into the DOM, which should\n",
" // otherwise not happen due to the minimum size styling.\n",
" if (width != 0 && height != 0) {\n",
" fig.request_resize(width, height);\n",
" }\n",
" }\n",
" });\n",
" resizeObserver.observe(canvas_div);\n",
"\n",
" function on_mouse_event_closure(name) {\n",
" return function (event) {\n",
" return fig.mouse_event(event, name);\n",
" };\n",
" }\n",
"\n",
" rubberband_canvas.addEventListener(\n",
" 'mousedown',\n",
" on_mouse_event_closure('button_press')\n",
" );\n",
" rubberband_canvas.addEventListener(\n",
" 'mouseup',\n",
" on_mouse_event_closure('button_release')\n",
" );\n",
" // Throttle sequential mouse events to 1 every 20ms.\n",
" rubberband_canvas.addEventListener(\n",
" 'mousemove',\n",
" on_mouse_event_closure('motion_notify')\n",
" );\n",
"\n",
" rubberband_canvas.addEventListener(\n",
" 'mouseenter',\n",
" on_mouse_event_closure('figure_enter')\n",
" );\n",
" rubberband_canvas.addEventListener(\n",
" 'mouseleave',\n",
" on_mouse_event_closure('figure_leave')\n",
" );\n",
"\n",
" canvas_div.addEventListener('wheel', function (event) {\n",
" if (event.deltaY < 0) {\n",
" event.step = 1;\n",
" } else {\n",
" event.step = -1;\n",
" }\n",
" on_mouse_event_closure('scroll')(event);\n",
" });\n",
"\n",
" canvas_div.appendChild(canvas);\n",
" canvas_div.appendChild(rubberband_canvas);\n",
"\n",
" this.rubberband_context = rubberband_canvas.getContext('2d');\n",
" this.rubberband_context.strokeStyle = '#000000';\n",
"\n",
" this._resize_canvas = function (width, height, forward) {\n",
" if (forward) {\n",
" canvas_div.style.width = width + 'px';\n",
" canvas_div.style.height = height + 'px';\n",
" }\n",
" };\n",
"\n",
" // Disable right mouse context menu.\n",
" this.rubberband_canvas.addEventListener('contextmenu', function (_e) {\n",
" event.preventDefault();\n",
" return false;\n",
" });\n",
"\n",
" function set_focus() {\n",
" canvas.focus();\n",
" canvas_div.focus();\n",
" }\n",
"\n",
" window.setTimeout(set_focus, 100);\n",
"};\n",
"\n",
"mpl.figure.prototype._init_toolbar = function () {\n",
" var fig = this;\n",
"\n",
" var toolbar = document.createElement('div');\n",
" toolbar.classList = 'mpl-toolbar';\n",
" this.root.appendChild(toolbar);\n",
"\n",
" function on_click_closure(name) {\n",
" return function (_event) {\n",
" return fig.toolbar_button_onclick(name);\n",
" };\n",
" }\n",
"\n",
" function on_mouseover_closure(tooltip) {\n",
" return function (event) {\n",
" if (!event.currentTarget.disabled) {\n",
" return fig.toolbar_button_onmouseover(tooltip);\n",
" }\n",
" };\n",
" }\n",
"\n",
" fig.buttons = {};\n",
" var buttonGroup = document.createElement('div');\n",
" buttonGroup.classList = 'mpl-button-group';\n",
" for (var toolbar_ind in mpl.toolbar_items) {\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) {\n",
" /* Instead of a spacer, we start a new button group. */\n",
" if (buttonGroup.hasChildNodes()) {\n",
" toolbar.appendChild(buttonGroup);\n",
" }\n",
" buttonGroup = document.createElement('div');\n",
" buttonGroup.classList = 'mpl-button-group';\n",
" continue;\n",
" }\n",
"\n",
" var button = (fig.buttons[name] = document.createElement('button'));\n",
" button.classList = 'mpl-widget';\n",
" button.setAttribute('role', 'button');\n",
" button.setAttribute('aria-disabled', 'false');\n",
" button.addEventListener('click', on_click_closure(method_name));\n",
" button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
"\n",
" var icon_img = document.createElement('img');\n",
" icon_img.src = '_images/' + image + '.png';\n",
" icon_img.srcset = '_images/' + image + '_large.png 2x';\n",
" icon_img.alt = tooltip;\n",
" button.appendChild(icon_img);\n",
"\n",
" buttonGroup.appendChild(button);\n",
" }\n",
"\n",
" if (buttonGroup.hasChildNodes()) {\n",
" toolbar.appendChild(buttonGroup);\n",
" }\n",
"\n",
" var fmt_picker = document.createElement('select');\n",
" fmt_picker.classList = 'mpl-widget';\n",
" toolbar.appendChild(fmt_picker);\n",
" this.format_dropdown = fmt_picker;\n",
"\n",
" for (var ind in mpl.extensions) {\n",
" var fmt = mpl.extensions[ind];\n",
" var option = document.createElement('option');\n",
" option.selected = fmt === mpl.default_extension;\n",
" option.innerHTML = fmt;\n",
" fmt_picker.appendChild(option);\n",
" }\n",
"\n",
" var status_bar = document.createElement('span');\n",
" status_bar.classList = 'mpl-message';\n",
" toolbar.appendChild(status_bar);\n",
" this.message = status_bar;\n",
"};\n",
"\n",
"mpl.figure.prototype.request_resize = function (x_pixels, y_pixels) {\n",
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
" // which will in turn request a refresh of the image.\n",
" this.send_message('resize', { width: x_pixels, height: y_pixels });\n",
"};\n",
"\n",
"mpl.figure.prototype.send_message = function (type, properties) {\n",
" properties['type'] = type;\n",
" properties['figure_id'] = this.id;\n",
" this.ws.send(JSON.stringify(properties));\n",
"};\n",
"\n",
"mpl.figure.prototype.send_draw_message = function () {\n",
" if (!this.waiting) {\n",
" this.waiting = true;\n",
" this.ws.send(JSON.stringify({ type: 'draw', figure_id: this.id }));\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
" var format_dropdown = fig.format_dropdown;\n",
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
" fig.ondownload(fig, format);\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_resize = function (fig, msg) {\n",
" var size = msg['size'];\n",
" if (size[0] !== fig.canvas.width || size[1] !== fig.canvas.height) {\n",
" fig._resize_canvas(size[0], size[1], msg['forward']);\n",
" fig.send_message('refresh', {});\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_rubberband = function (fig, msg) {\n",
" var x0 = msg['x0'] / fig.ratio;\n",
" var y0 = (fig.canvas.height - msg['y0']) / fig.ratio;\n",
" var x1 = msg['x1'] / fig.ratio;\n",
" var y1 = (fig.canvas.height - msg['y1']) / fig.ratio;\n",
" x0 = Math.floor(x0) + 0.5;\n",
" y0 = Math.floor(y0) + 0.5;\n",
" x1 = Math.floor(x1) + 0.5;\n",
" y1 = Math.floor(y1) + 0.5;\n",
" var min_x = Math.min(x0, x1);\n",
" var min_y = Math.min(y0, y1);\n",
" var width = Math.abs(x1 - x0);\n",
" var height = Math.abs(y1 - y0);\n",
"\n",
" fig.rubberband_context.clearRect(\n",
" 0,\n",
" 0,\n",
" fig.canvas.width / fig.ratio,\n",
" fig.canvas.height / fig.ratio\n",
" );\n",
"\n",
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_figure_label = function (fig, msg) {\n",
" // Updates the figure title.\n",
" fig.header.textContent = msg['label'];\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_cursor = function (fig, msg) {\n",
" var cursor = msg['cursor'];\n",
" switch (cursor) {\n",
" case 0:\n",
" cursor = 'pointer';\n",
" break;\n",
" case 1:\n",
" cursor = 'default';\n",
" break;\n",
" case 2:\n",
" cursor = 'crosshair';\n",
" break;\n",
" case 3:\n",
" cursor = 'move';\n",
" break;\n",
" }\n",
" fig.rubberband_canvas.style.cursor = cursor;\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_message = function (fig, msg) {\n",
" fig.message.textContent = msg['message'];\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_draw = function (fig, _msg) {\n",
" // Request the server to send over a new figure.\n",
" fig.send_draw_message();\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_image_mode = function (fig, msg) {\n",
" fig.image_mode = msg['mode'];\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_history_buttons = function (fig, msg) {\n",
" for (var key in msg) {\n",
" if (!(key in fig.buttons)) {\n",
" continue;\n",
" }\n",
" fig.buttons[key].disabled = !msg[key];\n",
" fig.buttons[key].setAttribute('aria-disabled', !msg[key]);\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_navigate_mode = function (fig, msg) {\n",
" if (msg['mode'] === 'PAN') {\n",
" fig.buttons['Pan'].classList.add('active');\n",
" fig.buttons['Zoom'].classList.remove('active');\n",
" } else if (msg['mode'] === 'ZOOM') {\n",
" fig.buttons['Pan'].classList.remove('active');\n",
" fig.buttons['Zoom'].classList.add('active');\n",
" } else {\n",
" fig.buttons['Pan'].classList.remove('active');\n",
" fig.buttons['Zoom'].classList.remove('active');\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function () {\n",
" // Called whenever the canvas gets updated.\n",
" this.send_message('ack', {});\n",
"};\n",
"\n",
"// A function to construct a web socket function for onmessage handling.\n",
"// Called in the figure constructor.\n",
"mpl.figure.prototype._make_on_message_function = function (fig) {\n",
" return function socket_on_message(evt) {\n",
" if (evt.data instanceof Blob) {\n",
" /* FIXME: We get \"Resource interpreted as Image but\n",
" * transferred with MIME type text/plain:\" errors on\n",
" * Chrome. But how to set the MIME type? It doesn't seem\n",
" * to be part of the websocket stream */\n",
" evt.data.type = 'image/png';\n",
"\n",
" /* Free the memory for the previous frames */\n",
" if (fig.imageObj.src) {\n",
" (window.URL || window.webkitURL).revokeObjectURL(\n",
" fig.imageObj.src\n",
" );\n",
" }\n",
"\n",
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
" evt.data\n",
" );\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" } else if (\n",
" typeof evt.data === 'string' &&\n",
" evt.data.slice(0, 21) === 'data:image/png;base64'\n",
" ) {\n",
" fig.imageObj.src = evt.data;\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
"\n",
" var msg = JSON.parse(evt.data);\n",
" var msg_type = msg['type'];\n",
"\n",
" // Call the \"handle_{type}\" callback, which takes\n",
" // the figure and JSON message as its only arguments.\n",
" try {\n",
" var callback = fig['handle_' + msg_type];\n",
" } catch (e) {\n",
" console.log(\n",
" \"No handler for the '\" + msg_type + \"' message type: \",\n",
" msg\n",
" );\n",
" return;\n",
" }\n",
"\n",
" if (callback) {\n",
" try {\n",
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
" callback(fig, msg);\n",
" } catch (e) {\n",
" console.log(\n",
" \"Exception inside the 'handler_\" + msg_type + \"' callback:\",\n",
" e,\n",
" e.stack,\n",
" msg\n",
" );\n",
" }\n",
" }\n",
" };\n",
"};\n",
"\n",
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
"mpl.findpos = function (e) {\n",
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
" var targ;\n",
" if (!e) {\n",
" e = window.event;\n",
" }\n",
" if (e.target) {\n",
" targ = e.target;\n",
" } else if (e.srcElement) {\n",
" targ = e.srcElement;\n",
" }\n",
" if (targ.nodeType === 3) {\n",
" // defeat Safari bug\n",
" targ = targ.parentNode;\n",
" }\n",
"\n",
" // pageX,Y are the mouse positions relative to the document\n",
" var boundingRect = targ.getBoundingClientRect();\n",
" var x = e.pageX - (boundingRect.left + document.body.scrollLeft);\n",
" var y = e.pageY - (boundingRect.top + document.body.scrollTop);\n",
"\n",
" return { x: x, y: y };\n",
"};\n",
"\n",
"/*\n",
" * return a copy of an object with only non-object keys\n",
" * we need this to avoid circular references\n",
" * http://stackoverflow.com/a/24161582/3208463\n",
" */\n",
"function simpleKeys(original) {\n",
" return Object.keys(original).reduce(function (obj, key) {\n",
" if (typeof original[key] !== 'object') {\n",
" obj[key] = original[key];\n",
" }\n",
" return obj;\n",
" }, {});\n",
"}\n",
"\n",
"mpl.figure.prototype.mouse_event = function (event, name) {\n",
" var canvas_pos = mpl.findpos(event);\n",
"\n",
" if (name === 'button_press') {\n",
" this.canvas.focus();\n",
" this.canvas_div.focus();\n",
" }\n",
"\n",
" var x = canvas_pos.x * this.ratio;\n",
" var y = canvas_pos.y * this.ratio;\n",
"\n",
" this.send_message(name, {\n",
" x: x,\n",
" y: y,\n",
" button: event.button,\n",
" step: event.step,\n",
" guiEvent: simpleKeys(event),\n",
" });\n",
"\n",
" /* This prevents the web browser from automatically changing to\n",
" * the text insertion cursor when the button is pressed. We want\n",
" * to control all of the cursor setting manually through the\n",
" * 'cursor' event from matplotlib */\n",
" event.preventDefault();\n",
" return false;\n",
"};\n",
"\n",
"mpl.figure.prototype._key_event_extra = function (_event, _name) {\n",
" // Handle any extra behaviour associated with a key event\n",
"};\n",
"\n",
"mpl.figure.prototype.key_event = function (event, name) {\n",
" // Prevent repeat events\n",
" if (name === 'key_press') {\n",
" if (event.which === this._key) {\n",
" return;\n",
" } else {\n",
" this._key = event.which;\n",
" }\n",
" }\n",
" if (name === 'key_release') {\n",
" this._key = null;\n",
" }\n",
"\n",
" var value = '';\n",
" if (event.ctrlKey && event.which !== 17) {\n",
" value += 'ctrl+';\n",
" }\n",
" if (event.altKey && event.which !== 18) {\n",
" value += 'alt+';\n",
" }\n",
" if (event.shiftKey && event.which !== 16) {\n",
" value += 'shift+';\n",
" }\n",
"\n",
" value += 'k';\n",
" value += event.which.toString();\n",
"\n",
" this._key_event_extra(event, name);\n",
"\n",
" this.send_message(name, { key: value, guiEvent: simpleKeys(event) });\n",
" return false;\n",
"};\n",
"\n",
"mpl.figure.prototype.toolbar_button_onclick = function (name) {\n",
" if (name === 'download') {\n",
" this.handle_save(this, null);\n",
" } else {\n",
" this.send_message('toolbar_button', { name: name });\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.toolbar_button_onmouseover = function (tooltip) {\n",
" this.message.textContent = tooltip;\n",
"};\n",
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Left button pans, Right button zooms\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\\nx/y fixes axis, CTRL fixes aspect\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
"\n",
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
"\n",
"mpl.default_extension = \"png\";/* global mpl */\n",
"\n",
"var comm_websocket_adapter = function (comm) {\n",
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
" // object with the appropriate methods. Currently this is a non binary\n",
" // socket, so there is still some room for performance tuning.\n",
" var ws = {};\n",
"\n",
" ws.close = function () {\n",
" comm.close();\n",
" };\n",
" ws.send = function (m) {\n",
" //console.log('sending', m);\n",
" comm.send(m);\n",
" };\n",
" // Register the callback with on_msg.\n",
" comm.on_msg(function (msg) {\n",
" //console.log('receiving', msg['content']['data'], msg);\n",
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
" ws.onmessage(msg['content']['data']);\n",
" });\n",
" return ws;\n",
"};\n",
"\n",
"mpl.mpl_figure_comm = function (comm, msg) {\n",
" // This is the function which gets called when the mpl process\n",
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
"\n",
" var id = msg.content.data.id;\n",
" // Get hold of the div created by the display call when the Comm\n",
" // socket was opened in Python.\n",
" var element = document.getElementById(id);\n",
" var ws_proxy = comm_websocket_adapter(comm);\n",
"\n",
" function ondownload(figure, _format) {\n",
" window.open(figure.canvas.toDataURL());\n",
" }\n",
"\n",
" var fig = new mpl.figure(id, ws_proxy, ondownload, element);\n",
"\n",
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
" // web socket which is closed, not our websocket->open comm proxy.\n",
" ws_proxy.onopen();\n",
"\n",
" fig.parent_element = element;\n",
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
" if (!fig.cell_info) {\n",
" console.error('Failed to find cell for figure', id, fig);\n",
" return;\n",
" }\n",
" fig.cell_info[0].output_area.element.one(\n",
" 'cleared',\n",
" { fig: fig },\n",
" fig._remove_fig_handler\n",
" );\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_close = function (fig, msg) {\n",
" var width = fig.canvas.width / fig.ratio;\n",
" fig.cell_info[0].output_area.element.off(\n",
" 'cleared',\n",
" fig._remove_fig_handler\n",
" );\n",
"\n",
" // Update the output cell to use the data from the current canvas.\n",
" fig.push_to_output();\n",
" var dataURL = fig.canvas.toDataURL();\n",
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
" // the notebook keyboard shortcuts fail.\n",
" IPython.keyboard_manager.enable();\n",
" fig.parent_element.innerHTML =\n",
" '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
" fig.close_ws(fig, msg);\n",
"};\n",
"\n",
"mpl.figure.prototype.close_ws = function (fig, msg) {\n",
" fig.send_message('closing', msg);\n",
" // fig.ws.close()\n",
"};\n",
"\n",
"mpl.figure.prototype.push_to_output = function (_remove_interactive) {\n",
" // Turn the data on the canvas into data in the output cell.\n",
" var width = this.canvas.width / this.ratio;\n",
" var dataURL = this.canvas.toDataURL();\n",
" this.cell_info[1]['text/html'] =\n",
" '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
"};\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function () {\n",
" // Tell IPython that the notebook contents must change.\n",
" IPython.notebook.set_dirty(true);\n",
" this.send_message('ack', {});\n",
" var fig = this;\n",
" // Wait a second, then push the new image to the DOM so\n",
" // that it is saved nicely (might be nice to debounce this).\n",
" setTimeout(function () {\n",
" fig.push_to_output();\n",
" }, 1000);\n",
"};\n",
"\n",
"mpl.figure.prototype._init_toolbar = function () {\n",
" var fig = this;\n",
"\n",
" var toolbar = document.createElement('div');\n",
" toolbar.classList = 'btn-toolbar';\n",
" this.root.appendChild(toolbar);\n",
"\n",
" function on_click_closure(name) {\n",
" return function (_event) {\n",
" return fig.toolbar_button_onclick(name);\n",
" };\n",
" }\n",
"\n",
" function on_mouseover_closure(tooltip) {\n",
" return function (event) {\n",
" if (!event.currentTarget.disabled) {\n",
" return fig.toolbar_button_onmouseover(tooltip);\n",
" }\n",
" };\n",
" }\n",
"\n",
" fig.buttons = {};\n",
" var buttonGroup = document.createElement('div');\n",
" buttonGroup.classList = 'btn-group';\n",
" var button;\n",
" for (var toolbar_ind in mpl.toolbar_items) {\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) {\n",
" /* Instead of a spacer, we start a new button group. */\n",
" if (buttonGroup.hasChildNodes()) {\n",
" toolbar.appendChild(buttonGroup);\n",
" }\n",
" buttonGroup = document.createElement('div');\n",
" buttonGroup.classList = 'btn-group';\n",
" continue;\n",
" }\n",
"\n",
" button = fig.buttons[name] = document.createElement('button');\n",
" button.classList = 'btn btn-default';\n",
" button.href = '#';\n",
" button.title = name;\n",
" button.innerHTML = '<i class=\"fa ' + image + ' fa-lg\"></i>';\n",
" button.addEventListener('click', on_click_closure(method_name));\n",
" button.addEventListener('mouseover', on_mouseover_closure(tooltip));\n",
" buttonGroup.appendChild(button);\n",
" }\n",
"\n",
" if (buttonGroup.hasChildNodes()) {\n",
" toolbar.appendChild(buttonGroup);\n",
" }\n",
"\n",
" // Add the status bar.\n",
" var status_bar = document.createElement('span');\n",
" status_bar.classList = 'mpl-message pull-right';\n",
" toolbar.appendChild(status_bar);\n",
" this.message = status_bar;\n",
"\n",
" // Add the close button to the window.\n",
" var buttongrp = document.createElement('div');\n",
" buttongrp.classList = 'btn-group inline pull-right';\n",
" button = document.createElement('button');\n",
" button.classList = 'btn btn-mini btn-primary';\n",
" button.href = '#';\n",
" button.title = 'Stop Interaction';\n",
" button.innerHTML = '<i class=\"fa fa-power-off icon-remove icon-large\"></i>';\n",
" button.addEventListener('click', function (_evt) {\n",
" fig.handle_close(fig, {});\n",
" });\n",
" button.addEventListener(\n",
" 'mouseover',\n",
" on_mouseover_closure('Stop Interaction')\n",
" );\n",
" buttongrp.appendChild(button);\n",
" var titlebar = this.root.querySelector('.ui-dialog-titlebar');\n",
" titlebar.insertBefore(buttongrp, titlebar.firstChild);\n",
"};\n",
"\n",
"mpl.figure.prototype._remove_fig_handler = function (event) {\n",
" var fig = event.data.fig;\n",
" fig.close_ws(fig, {});\n",
"};\n",
"\n",
"mpl.figure.prototype._root_extra_style = function (el) {\n",
" el.style.boxSizing = 'content-box'; // override notebook setting of border-box.\n",
"};\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function (el) {\n",
" // this is important to make the div 'focusable\n",
" el.setAttribute('tabindex', 0);\n",
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
" // off when our div gets focus\n",
"\n",
" // location in version 3\n",
" if (IPython.notebook.keyboard_manager) {\n",
" IPython.notebook.keyboard_manager.register_events(el);\n",
" } else {\n",
" // location in version 2\n",
" IPython.keyboard_manager.register_events(el);\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype._key_event_extra = function (event, _name) {\n",
" var manager = IPython.notebook.keyboard_manager;\n",
" if (!manager) {\n",
" manager = IPython.keyboard_manager;\n",
" }\n",
"\n",
" // Check for shift+enter\n",
" if (event.shiftKey && event.which === 13) {\n",
" this.canvas_div.blur();\n",
" // select the cell after this one\n",
" var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n",
" IPython.notebook.select(index + 1);\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_save = function (fig, _msg) {\n",
" fig.ondownload(fig, null);\n",
"};\n",
"\n",
"mpl.find_output_cell = function (html_output) {\n",
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
" // IPython event is triggered only after the cells have been serialised, which for\n",
" // our purposes (turning an active figure into a static one), is too late.\n",
" var cells = IPython.notebook.get_cells();\n",
" var ncells = cells.length;\n",
" for (var i = 0; i < ncells; i++) {\n",
" var cell = cells[i];\n",
" if (cell.cell_type === 'code') {\n",
" for (var j = 0; j < cell.output_area.outputs.length; j++) {\n",
" var data = cell.output_area.outputs[j];\n",
" if (data.data) {\n",
" // IPython >= 3 moved mimebundle to data attribute of output\n",
" data = data.data;\n",
" }\n",
" if (data['text/html'] === html_output) {\n",
" return [cell, data, j];\n",
" }\n",
" }\n",
" }\n",
" }\n",
"};\n",
"\n",
"// Register the function which deals with the matplotlib target/channel.\n",
"// The kernel may be null if the page has been refreshed.\n",
"if (IPython.notebook.kernel !== null) {\n",
" IPython.notebook.kernel.comm_manager.register_target(\n",
" 'matplotlib',\n",
" mpl.mpl_figure_comm\n",
" );\n",
"}\n"
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAgAElEQVR4nOzdd3gUxf8H8Dl6lQ4CoSoiSBNRQUEUENSfiDRBBCIqGhAJBESQkthAQVFQsdIsQfgSUFASaUFFRZEqRFAhKhApQUggtOTy/v3xYbN3yfW9u73k3q/nuUdyO7s7l4yZd3Z3ZhSIiIiIKKwosytARERERMHFAEhEREQUZhgAiYiIiMIMAyARERFRmGEAJCIiIgozDIBEREREYYYBkIiIiCjMMAASERERhRkGQCIiIqIwwwBIREREFGYYAImIiIjCDAMgERERUZhhACQiIiIKMwyARERERGGGAZCIiIgozDAAEhEREYUZBkAiIiKiMMMASERERBRmGACJiIiIwgwDIBEREVGYYQAkIiIiCjMMgERERERhhgGQiIiIKMwwABIRERGFGQZAIiIiojDDAEhEREQUZhgAiYiIiMIMAyARERFRmGEAJCIiIgozDIBEREREYYYBkIiIiCjMMAASERERhRkGQCIiIqIwwwBIREREFGYYAImIiIjCDAMgERERUZhhACQiIiIKMwyARERERGGGAZCIiIgozDAAEhEREYUZBkAiIiKiMMMASERERBRmGACJiIiIwgwDIBEREVGYYQAkIiIiCjMMgERERERhhgGQiIiIKMwwABIRERGFGQZAIiIiojDDAEhEREQUZhgAiYiIiMIMAyARERFRmGEAJCIiIgozDIBEREREYYYBkIiIiCjMMAASERERhRkGQAOsVisOHTqE06dPIyMjgy+++OKLL774KgSv06dP49ChQ7BarWZHCdMwABpw6NAhKKX44osvvvjii69C+Dp06JDZUcI0DIAGnD59Oq8Bmf3XDF988cUXX3zx5dlLu4Bz+vRps6OEaRgADcjIyIBSChkZGWZXhYiIiDzE/psB0BA2ICIiosKH/TcDoCFsQERERIUP+28GQEPYgIiIiAof9t8MgIawARERERU+7L8ZAA1hAyIiIip82H8zABrCBkRERFT4sP9mADSEDYiIiKjwYf/NAGgIGxAREVHhw/6bAdAQNiAiIqLCh/03A6AhbEBERESFD/tvBkBD2ICIiIgKH/bfDICGsAEREREVPuy/GQANYQMiInItx5qD5NRkrF0ci4NjH0bOhfNmV4mI/TcYAA1hAyIici4hJQERsyOg4hSg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\" width=\"640\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure()\n",
"plt.plot(filtered_EDA, color='red')\n",
"plt.scatter(peaks, filtered_EDA[peaks], color=\"green\")\n",
"plt.scatter(peak_starts, filtered_EDA[peak_starts], color=\"green\", marker=\">\", alpha=0.5)\n",
"plt.scatter(peak_ends, filtered_EDA[peak_ends], color=\"green\", marker=\"s\", alpha=0.5)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Features, related to the peaks, are then calculated.\n",
"These include the number and rate (peaks per second) of the peaks, as well as the average and maximum of their characteristics (duration, increase and decrease time etc.)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"avgPeakAmplitudeChangeAfter 0.564829\n",
"avgPeakAmplitudeChangeBefore 0.000000\n",
"avgPeakChangeRatio 0.096774\n",
"avgPeakDecreaseTime 2.818182\n",
"avgPeakDuration 49.454545\n",
"avgPeakIncreaseTime 0.272727\n",
"maxPeakAmplitudeChangeAfter 1.660329\n",
"maxPeakAmplitudeChangeBefore 1.400329\n",
"maxPeakChangeRatio 0.259259\n",
"maxPeakDecreaseTime 6.750000\n",
"maxPeakDuration 8.500000\n",
"maxPeakIncreaseTime 1.750000\n",
"maxPeakResponseSlopeAfter -0.065041\n",
"maxPeakResponseSlopeBefore 0.233815\n",
"numPeaks 11.000000\n",
"powerPeaks 3.643448\n",
"ratePeaks 0.091667\n",
"Name: 131, dtype: float64\n"
]
}
],
"source": [
"print(df_EDA.loc[no_interest, df_EDA.columns.str.contains('Peak')])"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 239/239 [01:04<00:00, 3.69it/s]\n"
]
}
],
"source": [
"calculatedFeatures_EDA = calculateFeatures(eda_data_2D, fs=int(sampleRate_EDA), featureNames=gsrFeatureNames)"
]
}
],
"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.8.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}