import numpy as np def zero_crossing(eod, time): threshold = 0 shift_eod = np.roll(eod, 1) eod_times = time[(eod >= threshold) & (shift_eod < threshold)] sampling_rate = 40000.0 eod_idx = eod_times*sampling_rate return eod_idx def vector_strength(spike_times, eod_durations): n = len(spike_times) phase_times = np.zeros(len(spike_times)) for i, idx in enumerate(spike_times): phase_times[i] = (spike_times[i] / eod_durations[i]) * 2 * np.pi vs = np.sqrt((1/n*sum(np.cos(phase_times)))**2 + (1/n*sum(np.sin(phase_times)))**2) return vs def gaussian(x, mu, sig): y = np.exp(-np.power(x - mu, 2.) / (2 * np.power(sig, 2.))) return y def smooth(data, window): mu = 1 sigma = window time_gauss = np.arange(-4 * sigma, 4 * sigma, 1) gauss = gaussian(time_gauss, mu, sigma) smoothed_data = np.convolve(data, gauss, 'same') return smoothed_data def map_keys(input): df_map = {} for k in input.keys(): df = k[1] ch = k[3] if df in df_map.keys(): df_map[df].append(k) else: df_map[df] = [k] return df_map print(ch)