def correlationIndividualStages(data, idx = (0,1), cls = -1, delay = (-100, 100)):
"""Calculate correlation functions in time between the various measures in each stage"""
stages = stageIndex(data, cls = cls);
stages = np.insert(np.append(stages, data.shape[0]), 0, 0);
ns = len(stages) - 1;
n = len(idx);
means = np.mean(data[:,:-1], axis = 0);
nd = delay[1] - delay[0] + 1;
cc = np.zeros((nd,n,n,ns))
for s in range(ns):
dat = data[stages[s]:stages[s+1],:];
for i in range(n):
for j in range(n):
if delay[0] < 0:
cm = np.correlate(dat[:, i] - means[i], dat[-delay[0]:, j] - means[j]);
else:
cm = [0];
if delay[1] > 0:
cp = np.correlate(dat[:, j] - means[j], dat[delay[1]:, i] - means[i]);
else:
cp = [0];
ca = np.concatenate((cm[1:], cp[::-1]));
if delay[0] > 0:
cc[:,i,j,s] = ca[delay[0]:];
elif delay[1] < 0:
cc[:,i,j,s] = ca[:-delay[1]];
else:
cc[:,i,j,s] = ca;
return cc;
评论列表
文章目录