def spike_map(spiketimes,csum, npath_x, npath_y):
'''
Make the Spike Matrix from spiketimes, path and time_array
'''
import numpy as np
Z = np.zeros((npath_x,npath_y))
if len(spiketimes) != 0:
for spike in spiketimes:
# Find the last positive index --> this is the mapping from time to space
if spike > csum[-1]:
continue
else:
idxs = np.argwhere((spike - csum) > 0)
if idxs.shape[0]==0:
idx=0
else:
idx = idxs.shape[0]
Z[idx,:] += 1
if Z.shape[0] != npath_x or Z.shape[1] != npath_y:
print 'Error in Z dimensions'
return Z
def binning(a, N, method):
import numpy as np
if (isinstance(N, int)==False):
raise ValueError('Binning size must be integer.')
a = a.squeeze()
L = a.shape[0]
rem = L % N
if rem !=0:
raise ValueError('Not a valid binning size.')
# find the step
step = L/N
b = np.zeros(N)
cnt = 0
for i in range(0, L, step):
if method=='summing':
b[cnt] = np.sum(a[i:i+step])
elif method=='mean':
b[cnt] = np.mean(a[i:i+step])
cnt+=1
return b.reshape(-1,1)