[reproclasses/FICurve] buffer spike times when reading from nix ...

fix spike indices during rate calculation
This commit is contained in:
Jan Grewe 2019-10-09 11:38:58 +02:00
parent fe2457d85f
commit 2c4f3afa56

View File

@ -440,9 +440,8 @@ class FIData:
end_index_eod = eod_da.dimensions[0].index_of(end_time) end_index_eod = eod_da.dimensions[0].index_of(end_time)
local_eod = eod_da[start_index_eod:end_index_eod] local_eod = eod_da[start_index_eod:end_index_eod]
spikes = spikes_da[start_index_spikes:end_index_spikes] - start_time spikes = self.__all_spikes[(self.__all_spikes >= start_time) & (self.__all_spikes < end_time)] - start_time - delay
time = np.asarray(eod_da.dimensions[0].axis(len(local_eod))) - delay time = np.asarray(eod_da.dimensions[0].axis(end_index_eod - start_index_eod)) - delay
return spikes, local_eod, time, contrast return spikes, local_eod, time, contrast
def __read_spikes_from_nix(self, repro: RePro): def __read_spikes_from_nix(self, repro: RePro):
@ -459,6 +458,7 @@ class FIData:
return self.__read_spikes_from_directory(repro) return self.__read_spikes_from_directory(repro)
f = nix.File.open(data_source, nix.FileMode.ReadOnly) f = nix.File.open(data_source, nix.FileMode.ReadOnly)
b = f.blocks[0] b = f.blocks[0]
self.__all_spikes = b.data_arrays["Spikes-1"][:]
mt = None mt = None
for i in tqdm(range(len(stimuli)), desc="Loading data"): for i in tqdm(range(len(stimuli)), desc="Loading data"):
s = stimuli[i] s = stimuli[i]
@ -594,7 +594,7 @@ class FIData:
dt = np.mean(np.diff(t)) dt = np.mean(np.diff(t))
sp = self.spikes(index) sp = self.spikes(index)
binary = np.zeros(t.shape) binary = np.zeros(t.shape)
spike_indices = (sp / dt).astype(int) spike_indices = ((sp - t[0]) / dt).astype(int)
binary[spike_indices[(spike_indices >= 0) & (spike_indices < len(binary))]] = 1 binary[spike_indices[(spike_indices >= 0) & (spike_indices < len(binary))]] = 1
g = gaussian_kernel(kernel_width, dt) g = gaussian_kernel(kernel_width, dt)
rate = np.convolve(binary, g, mode='same') rate = np.convolve(binary, g, mode='same')