make all_mean_freq_trace more robust

This commit is contained in:
a.ott 2020-03-04 15:55:24 +01:00
parent a71193f0c9
commit 74c9fa55fa

View File

@ -55,14 +55,15 @@ def merge_intensities_similar_to_index(intensities, spiketimes, trans_amplitudes
return 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 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: 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, ...], [..]]] [[[trial1-run1-spike1, trial1-run1-spike2, ...],[trial1-run2-spike1, ...]],[[trial2-run1-spike1, ...], [..]]]
:param spiketimes: :param stimulus_start: the time point at which the actual stimulus starts
:param sampling_interval: :param spiketimes: time points of action potentials
:param time_in_ms: :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 :return: the mean frequency trace for each trial and its time trace
""" """
times = [] times = []
@ -73,6 +74,10 @@ def all_calculate_mean_isi_frequency_traces(spiketimes, sampling_interval, time_
trial_freq_trace = [] trial_freq_trace = []
for j in range(len(spiketimes[i])): for j in range(len(spiketimes[i])):
time, isi_freq = calculate_time_and_frequency_trace(spiketimes[i][j], sampling_interval, time_in_ms) 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_freq_trace.append(isi_freq)
trial_time_trace.append(time) 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) latest_start = max(starts)
earliest_end = min(ends) 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 = [] shortened_freqs = []
for i in range(len(trial_frequency_traces)): for i in range(len(trial_frequency_traces)):
start_idx = int((latest_start - trial_time_traces[i][0]) / sampling_interval) start_idx = int(round((latest_start - trial_time_traces[i][0]) / sampling_interval))
end_idx = int((earliest_end - 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]) 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): 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 """ """ Calculates the mean frequency of the portion of spiketimes that is after last_x_time """
spiketimes = np.array(spiketimes)
if len(spiketimes) <= 1: if len(spiketimes) <= 1:
return 0 return 0