In [69]:
import scipy.io
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
In [62]:
def loadData(matlabFile):
matlabDict = scipy.io.loadmat(matlabFile)
lat = matlabDict['latency'][0]
freq = len(matlabDict['data'][0])
data = pd.DataFrame({'time':np.arange(lat,1.0+lat,1.0/freq)})
channels = ['chan1','chan2','chan3','chan4','chan5','chan6','chan7','chan8','chan9','chan10','chan11','chan12','chan13','chan14','chan15','chan16']
for i in range(len(matlabDict['channels'][0][0])):
data[channels[i]] = matlabDict['data'][i]
return data
In [77]:
def downSample(data,factor):
coarseData = data.groupby(lambda x: int(np.floor(x/factor))).mean()
return coarseData
In [83]:
def plotChannels(data,channels,plotOpts):
if len(channels) > len(plotOpts):
print 'ERROR: Must specify plot options for each channel'
return
for chan in range(len(channels)):
plt.plot(data['time'],data[channels[chan]],plotOpts[chan])
plt.xlabel('time (s)')
plt.ylabel('Electrode reading')
plt.legend(channels)
In [80]:
df = loadData('sample_clip.mat')
df.head(5)
Out[80]:
In [81]:
df = downSample(df,5.0)
plotChannels(df,['chan1','chan2','chan7'],['b-','g-','r-'])
In [71]: