From 74c9fa55fa701e86f50fb7d54266fb5b26c7141d Mon Sep 17 00:00:00 2001 From: "a.ott" Date: Wed, 4 Mar 2020 15:55:24 +0100 Subject: [PATCH] make all_mean_freq_trace more robust --- helperFunctions.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/helperFunctions.py b/helperFunctions.py index 5a35ba6..fff59f1 100644 --- a/helperFunctions.py +++ b/helperFunctions.py @@ -55,14 +55,15 @@ def merge_intensities_similar_to_index(intensities, spiketimes, trans_amplitudes return intensities, spiketimes, trans_amplitudes -def all_calculate_mean_isi_frequency_traces(spiketimes, sampling_interval, time_in_ms=True): +def all_calculate_mean_isi_frequency_traces(spiketimes, sampling_interval, stimulus_start=0, time_in_ms=False): """ Expects spiketimes to be a 3dim list with the first dimension being the trial the second the count of runs of spikes and the last the individual spikes_times: [[[trial1-run1-spike1, trial1-run1-spike2, ...],[trial1-run2-spike1, ...]],[[trial2-run1-spike1, ...], [..]]] - :param spiketimes: - :param sampling_interval: - :param time_in_ms: + :param stimulus_start: the time point at which the actual stimulus starts + :param spiketimes: time points of action potentials + :param sampling_interval: the sampling interval used / will also be used for the frequency trace + :param time_in_ms: whether the time is in ms or seconds :return: the mean frequency trace for each trial and its time trace """ times = [] @@ -73,6 +74,10 @@ def all_calculate_mean_isi_frequency_traces(spiketimes, sampling_interval, time_ trial_freq_trace = [] for j in range(len(spiketimes[i])): time, isi_freq = calculate_time_and_frequency_trace(spiketimes[i][j], sampling_interval, time_in_ms) + + if time[0] > stimulus_start: + print("Trial not used as its frequency trace started after the stimulus start!") + continue trial_freq_trace.append(isi_freq) trial_time_trace.append(time) @@ -141,12 +146,12 @@ def calculate_mean_of_frequency_traces(trial_time_traces, trial_frequency_traces latest_start = max(starts) earliest_end = min(ends) - shortened_time = np.arange(latest_start, earliest_end+sampling_interval, sampling_interval) + shortened_time = np.arange(latest_start, earliest_end, sampling_interval) shortened_freqs = [] for i in range(len(trial_frequency_traces)): - start_idx = int((latest_start - trial_time_traces[i][0]) / sampling_interval) - end_idx = int((earliest_end - trial_time_traces[i][0]) / sampling_interval) + start_idx = int(round((latest_start - trial_time_traces[i][0]) / sampling_interval)) + end_idx = int(round((earliest_end - trial_time_traces[i][0]) / sampling_interval)) shortened_freqs.append(trial_frequency_traces[i][start_idx:end_idx]) @@ -158,6 +163,7 @@ def calculate_mean_of_frequency_traces(trial_time_traces, trial_frequency_traces def mean_freq_of_spiketimes_after_time_x(spiketimes, time_x, time_in_ms=False): """ Calculates the mean frequency of the portion of spiketimes that is after last_x_time """ + spiketimes = np.array(spiketimes) if len(spiketimes) <= 1: return 0