In [132]:
# imports
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import rcParams
import seaborn as sns
from bokeh.plotting import figure
from bokeh.charts import TimeSeries
%matplotlib inline

In [135]:
rcParams['figure.figsize'] = (100, 6)

In [37]:
# files
subjects_train = [[{k: 'train/subj%d_series%d_%s.csv' % (i, j, k)
                    for k in ['data', 'events']} 
                   for j in range(1, 9)]
                  for i in range(1, 13)]
subjects_test = [[{k: 'test/subj%d_series%d_%s.csv' % (i, j, k) 
                   for k in ['data', 'events']} 
                  for j in range(9, 11)]
                 for i in range(1, 13)]

In [121]:
electrodes = [
    'Fp1', 'Fp2', 'F7', 'F3', 'Fz', 'F4', 'F8', 'FC5',
    'FC1', 'FC2', 'FC6', 'T7', 'C3', 'Cz', 'C4', 'T8',
    'TP9', 'CP5', 'CP1', 'CP2', 'CP6', 'TP10', 'P7', 'P3',
    'Pz', 'P4', 'P8', 'PO9', 'O1', 'Oz', 'O2', 'PO10']
neighbours = {
    'Fp1': ['F3', 'F7', 'Fz', 'Fp2'],
    'Fp2': ['F4', 'F8', 'Fz', 'Fp1'], 
    'F7': ['FC5', 'F3', 'Fp1'], 
    'F3': ['FC1', 'FC5', 'F7', 'Fz', 'Fp1'],
    'Fz': ['FC1', 'FC2', 'F3', 'F4'],
    'F4': ['FC2', 'FC6', 'F8', 'Fz', 'Fp2'],
    'F8': ['FC6', 'F4', 'Fp2'],
    'FC5': ['F7', 'F3', 'C3', 'T7'],
    'FC1': ['F3', 'Fz', 'Cz', 'C3'],
    'FC2': ['F4', 'Fz', 'Cz', 'C4'],
    'FC6': ['F8', 'F4', 'C4', 'T8'],
    'T7': ['FC5', 'CP5', 'TP9'],
    'C3': ['FC5', 'CP5', 'FC1', 'CP1'],
    'Cz': ['FC1', 'FC2', 'CP1', 'CP2'],
    'C4': ['FC6', 'CP6', 'FC2', 'CP2'],
    'T8': ['FC6', 'CP6', 'TP10'],
    'TP9': ['P7', 'T7'],
    'CP5': ['P7', 'P3', 'C3', 'T7'],
    'CP1': ['P3', 'Pz', 'Cz', 'C3'],
    'CP2': ['P4', 'Pz', 'Cz', 'C4'],
    'CP6': ['P8', 'P4', 'C4', 'T8'],
    'TP10': ['P8', 'T8'],
    'P7': ['CP5', 'TP9', 'PO9', 'P3'],
    'P3': ['CP1', 'CP5', 'Pz', 'O1'],
    'Pz': ['CP1', 'CP2', 'P3', 'P4', 'O1', 'O2'],
    'P4': ['CP2', 'CP6', 'Pz', 'O2'],
    'P8': ['CP6', 'TP10', 'PO10', 'P4'],
    'PO9': ['P7', 'O1'],
    'O1': ['Oz', 'P3', 'PO9'],
    'Oz': ['O1', 'O2', 'Pz'],
    'O2': ['Oz', 'P4', 'PO10'],
    'PO10': ['P8', 'O2']}
mirror_pairs = [
    ['Fp1', 'Fp2'],
    ['F7', 'F8'],
    ['F3', 'F4'],
    ['Fz', 'Fz'],
    ['FC5', 'FC6'],
    ['FC1', 'FC2'],
    ['T7', 'T8'],
    ['C3', 'C4'],
    ['Cz', 'Cz'],
    ['TP9', 'TP10'],
    ['CP5', 'CP6'],
    ['CP1', 'CP2'],
    ['P7', 'P8'],
    ['P3', 'P4'],
    ['Pz', 'Pz'],
    ['PO9', 'PO10'],
    ['O1', 'O2'],
    ['Oz', 'Oz']
]
events = [
    'HandStart', 'FirstDigitTouch', 'BothStartLoadPhase', 'LiftOff',
    'Replace', 'BothReleased']

In [43]:
data11 = pd.read_csv(subjects_train[0][0]['data'])
events11 = pd.read_csv(subjects_train[0][0]['events'])

In [146]:
data11.T8.plot()


Out[146]:
<matplotlib.axes._subplots.AxesSubplot at 0x19cb4f6a0>

In [123]:
for left, right in mirror_pairs:
    print("{} vs {}". format(left, right))
    plt.plot(getattr(data11, left), getattr(data11, right))
    plt.show()


Fp1 vs Fp2
F7 vs F8
F3 vs F4
Fz vs Fz
FC5 vs FC6
FC1 vs FC2
T7 vs T8
C3 vs C4
Cz vs Cz
TP9 vs TP10
CP5 vs CP6
CP1 vs CP2
P7 vs P8
P3 vs P4
Pz vs Pz
PO9 vs PO10
O1 vs O2
Oz vs Oz

In [129]:
for left, right in mirror_pairs:
    print("{} vs {}". format(left, right))
    print(getattr(data11, left).corr(getattr(data11, right)))


Fp1 vs Fp2
0.867857865118
F7 vs F8
0.553119571107
F3 vs F4
0.400634641937
Fz vs Fz
1.0
FC5 vs FC6
0.0802586192125
FC1 vs FC2
0.593420109335
T7 vs T8
0.86934101138
C3 vs C4
0.64957002175
Cz vs Cz
1.0
TP9 vs TP10
0.803319670448
CP5 vs CP6
0.560797082522
CP1 vs CP2
0.639498377486
P7 vs P8
0.563669628724
P3 vs P4
0.375045201628
Pz vs Pz
1.0
PO9 vs PO10
0.626141814788
O1 vs O2
0.32751793489
Oz vs Oz
1.0

In [130]:
correlations = data11.corr()

In [137]:
correlations


Out[137]:
Fp1 Fp2 F7 F3 Fz F4 F8 FC5 FC1 FC2 ... P7 P3 Pz P4 P8 PO9 O1 Oz O2 PO10
Fp1 1.000000 0.867858 0.675580 0.553247 0.521371 0.523235 0.532336 0.442380 0.362718 0.048851 ... 0.029417 0.146105 0.418826 -0.291157 -0.143853 0.288681 0.110374 -0.125155 0.023103 -0.028593
Fp2 0.867858 1.000000 0.629592 0.577022 0.524197 0.574031 0.553825 0.485268 0.255384 0.023190 ... 0.010438 0.107966 0.515495 -0.323176 -0.047943 0.350764 0.047435 -0.073799 0.095540 0.037899
F7 0.675580 0.629592 1.000000 0.588146 0.570901 0.486275 0.553120 0.544152 0.338257 0.223821 ... 0.403929 0.512704 0.534703 0.010677 0.273395 0.598477 0.295219 0.256233 0.337106 0.360731
F3 0.553247 0.577022 0.588146 1.000000 0.479130 0.400635 0.439942 0.568551 0.437309 0.363931 ... 0.292455 0.291383 0.473842 0.024699 0.260408 0.511450 0.036668 0.271337 0.354687 0.353617
Fz 0.521371 0.524197 0.570901 0.479130 1.000000 0.582181 0.496036 0.494457 0.449608 0.394517 ... 0.318489 0.411427 0.442252 0.095488 0.253866 0.472353 0.129193 0.320717 0.378484 0.391952
F4 0.523235 0.574031 0.486275 0.400635 0.582181 1.000000 0.520217 0.469524 0.083946 0.132035 ... 0.107222 0.164705 0.554533 -0.147490 0.130080 0.372537 0.056996 0.088008 0.219974 0.074482
F8 0.532336 0.553825 0.553120 0.439942 0.496036 0.520217 1.000000 0.469165 0.260323 0.153896 ... 0.177481 0.372610 0.585442 -0.160793 0.064789 0.441800 0.169284 0.106562 0.139628 0.255579
FC5 0.442380 0.485268 0.544152 0.568551 0.494457 0.469524 0.469165 1.000000 0.375224 0.234263 ... 0.284750 0.425235 0.568995 -0.046746 0.294028 0.499646 0.211462 0.197662 0.259011 0.315142
FC1 0.362718 0.255384 0.338257 0.437309 0.449608 0.083946 0.260323 0.375224 1.000000 0.593420 ... 0.339240 0.456161 0.225657 0.234436 0.091369 0.288989 0.346749 0.180401 0.300005 0.327135
FC2 0.048851 0.023190 0.223821 0.363931 0.394517 0.132035 0.153896 0.234263 0.593420 1.000000 ... 0.531533 0.484251 0.117460 0.678457 0.544190 0.328458 0.196431 0.517498 0.541099 0.507195
FC6 -0.078911 0.045557 0.128863 0.334690 0.142388 0.189696 0.057830 0.080259 -0.080216 0.320495 ... 0.256274 0.005600 -0.011930 0.285886 0.374377 0.224014 -0.070816 0.477601 0.301744 0.299767
T7 0.353173 0.210924 0.289136 0.226342 0.154336 0.305279 0.583026 0.180902 0.160661 0.138819 ... 0.203970 0.167541 0.268392 0.030985 -0.026103 0.195462 0.182263 0.117728 0.063448 -0.008727
C3 0.368032 0.381727 0.632040 0.654269 0.630410 0.439919 0.499612 0.620376 0.522048 0.564770 ... 0.557210 0.695090 0.642327 0.324575 0.513349 0.691607 0.373795 0.504244 0.649641 0.536943
Cz 0.277300 0.346403 0.382398 0.504428 0.483204 0.385717 0.372303 0.373214 0.490084 0.455387 ... 0.413422 0.379136 0.612444 0.208263 0.286603 0.574902 0.229003 0.471476 0.617011 0.422022
C4 0.030622 0.045594 0.378018 0.362970 0.531024 0.233529 0.267769 0.301266 0.446191 0.805570 ... 0.631459 0.628573 0.292689 0.670331 0.685638 0.487225 0.259757 0.682806 0.653641 0.682239
T8 0.423951 0.268772 0.220745 0.205909 0.138434 0.249284 0.569406 0.155312 0.256885 0.018536 ... 0.031259 0.098970 0.282045 -0.187895 -0.212081 0.111073 0.198599 -0.060827 -0.093622 -0.037208
TP9 0.582274 0.504108 0.366225 0.307593 0.187021 0.399442 0.681095 0.319649 0.252344 -0.139071 ... -0.043608 0.095778 0.541365 -0.467415 -0.345183 0.254691 0.174882 -0.214669 -0.115499 -0.077581
CP5 0.034281 0.004017 0.459581 0.384779 0.276144 -0.021143 0.141586 0.326595 0.519299 0.636965 ... 0.739666 0.710591 0.239541 0.581006 0.565741 0.562564 0.390245 0.641874 0.622689 0.657502
CP1 0.304110 0.266088 0.515460 0.491480 0.529110 0.262555 0.420115 0.402786 0.611557 0.522113 ... 0.478080 0.667177 0.573927 0.282050 0.386505 0.557177 0.324711 0.390383 0.450534 0.537738
CP2 0.408051 0.500335 0.583091 0.525280 0.568334 0.590665 0.671257 0.614949 0.303218 0.247324 ... 0.319096 0.584515 0.899681 -0.057678 0.367956 0.667438 0.277335 0.324564 0.466612 0.461041
CP6 0.118982 0.182157 0.453244 0.403221 0.469141 0.350652 0.371149 0.368411 0.249335 0.582027 ... 0.558305 0.579311 0.548336 0.584601 0.715377 0.598598 0.272133 0.615928 0.687596 0.573293
TP10 0.443971 0.335873 0.351731 0.370610 0.225673 0.303314 0.700242 0.259644 0.372672 0.242431 ... 0.186903 0.295605 0.428596 -0.065592 -0.045194 0.315657 0.218573 0.081334 0.096811 0.196215
P7 0.029417 0.010438 0.403929 0.292455 0.318489 0.107222 0.177481 0.284750 0.339240 0.531533 ... 1.000000 0.599906 0.266201 0.540056 0.563670 0.572817 0.406961 0.652939 0.563303 0.585445
P3 0.146105 0.107966 0.512704 0.291383 0.411427 0.164705 0.372610 0.425235 0.456161 0.484251 ... 0.599906 1.000000 0.478423 0.375045 0.506064 0.615314 0.609623 0.525115 0.557937 0.620744
Pz 0.418826 0.515495 0.534703 0.473842 0.442252 0.554533 0.585442 0.568995 0.225657 0.117460 ... 0.266201 0.478423 1.000000 -0.109760 0.286212 0.632176 0.289223 0.226424 0.398711 0.367806
P4 -0.291157 -0.323176 0.010677 0.024699 0.095488 -0.147490 -0.160793 -0.046746 0.234436 0.678457 ... 0.540056 0.375045 -0.109760 1.000000 0.670537 0.176948 0.193000 0.698770 0.597329 0.433555
P8 -0.143853 -0.047943 0.273395 0.260408 0.253866 0.130080 0.064789 0.294028 0.091369 0.544190 ... 0.563670 0.506064 0.286212 0.670537 1.000000 0.487319 0.211689 0.732242 0.653233 0.665380
PO9 0.288681 0.350764 0.598477 0.511450 0.472353 0.372537 0.441800 0.499646 0.288989 0.328458 ... 0.572817 0.615314 0.632176 0.176948 0.487319 1.000000 0.434103 0.627577 0.633561 0.626142
O1 0.110374 0.047435 0.295219 0.036668 0.129193 0.056996 0.169284 0.211462 0.346749 0.196431 ... 0.406961 0.609623 0.289223 0.193000 0.211689 0.434103 1.000000 0.344098 0.327518 0.361617
Oz -0.125155 -0.073799 0.256233 0.271337 0.320717 0.088008 0.106562 0.197662 0.180401 0.517498 ... 0.652939 0.525115 0.226424 0.698770 0.732242 0.627577 0.344098 1.000000 0.757971 0.735700
O2 0.023103 0.095540 0.337106 0.354687 0.378484 0.219974 0.139628 0.259011 0.300005 0.541099 ... 0.563303 0.557937 0.398711 0.597329 0.653233 0.633561 0.327518 0.757971 1.000000 0.604672
PO10 -0.028593 0.037899 0.360731 0.353617 0.391952 0.074482 0.255579 0.315142 0.327135 0.507195 ... 0.585445 0.620744 0.367806 0.433555 0.665380 0.626142 0.361617 0.735700 0.604672 1.000000

32 rows × 32 columns


In [136]:
plt.imshow(correlations)


Out[136]:
<matplotlib.image.AxesImage at 0x1c3789d68>

In [142]:
from biokit.viz import corrplot
c = corrplot.Corrplot(correlations)
c.plot(lower='circle', upper='text', shrink=.9)