stuff
This commit is contained in:
@@ -46,8 +46,8 @@ class FICurve:
|
||||
self.f_inf_fit = hF.fit_clipped_line(self.stimulus_values, self.f_inf_frequencies)
|
||||
self.f_zero_fit = hF.fit_boltzmann(self.stimulus_values, self.f_zero_frequencies)
|
||||
|
||||
def __calculate_time_constant_internal__(self, contrast, mean_frequency, baseline_freq, sampling_interval, pre_duration, plot=False):
|
||||
time_constant_fit_length = 0.05
|
||||
def __calculate_time_constant_internal__(self, contrast, mean_frequency, baseline_freq, sampling_interval, pre_duration, plot=False, plot_data=False):
|
||||
time_constant_fit_length = 0.05 # change to 25 - 30 ms
|
||||
|
||||
if contrast > 0:
|
||||
maximum_idx = np.argmax(mean_frequency)
|
||||
@@ -88,6 +88,9 @@ class FICurve:
|
||||
fu.exponential_function(x_values, popt[0], popt[1], popt[2]), color="orange")
|
||||
plt.show()
|
||||
plt.close()
|
||||
|
||||
if plot_data:
|
||||
return popt, np.arange(start_fit_idx, end_fit_idx, 1) * sampling_interval - pre_duration
|
||||
return popt, pcov
|
||||
except RuntimeError:
|
||||
print("RuntimeError happened in fit_exponential.")
|
||||
@@ -375,7 +378,7 @@ class FICurveCellData(FICurve):
|
||||
popt, pcov = super().__calculate_time_constant_internal__(self.stimulus_values[contrast_idx], mean_frequency,
|
||||
baseline_freq, sampling_interval, pre_duration, plot=plot)
|
||||
|
||||
return popt[1]
|
||||
return popt
|
||||
|
||||
def calculate_all_frequency_points(self):
|
||||
mean_frequencies = self.cell_data.get_mean_fi_curve_isi_frequencies()
|
||||
@@ -498,7 +501,7 @@ class FICurveModel(FICurve):
|
||||
stim_start = 0.5
|
||||
total_simulation_time = stim_duration + 2 * stim_start
|
||||
|
||||
def __init__(self, model, stimulus_values, eod_frequency, trials=5):
|
||||
def __init__(self, model, stimulus_values, eod_frequency, trials=5, save_dir=None, recalculate=False):
|
||||
self.eod_frequency = eod_frequency
|
||||
self.model = model
|
||||
self.trials = trials
|
||||
@@ -506,7 +509,7 @@ class FICurveModel(FICurve):
|
||||
self.mean_frequency_traces = []
|
||||
self.mean_time_traces = []
|
||||
self.set_model_adaption_to_baseline()
|
||||
super().__init__(stimulus_values)
|
||||
super().__init__(stimulus_values, save_dir=None, recalculate=False)
|
||||
|
||||
def set_model_adaption_to_baseline(self):
|
||||
stimulus = SinusoidalStepStimulus(self.eod_frequency, 0, 0, 0)
|
||||
@@ -540,7 +543,7 @@ class FICurveModel(FICurve):
|
||||
|
||||
if len(time) == 0 or min(time) > self.stim_start \
|
||||
or max(time) < self.stim_start + self.stim_duration:
|
||||
# print("Too few spikes to calculate f_inf, f_0 and f_base")
|
||||
|
||||
self.f_inf_frequencies.append(0)
|
||||
self.f_zero_frequencies.append(0)
|
||||
self.f_baseline_frequencies.append(0)
|
||||
@@ -569,10 +572,7 @@ class FICurveModel(FICurve):
|
||||
|
||||
popt, pcov = super().__calculate_time_constant_internal__(self.stimulus_values[contrast_idx], mean_frequency,
|
||||
baseline_freq, sampling_interval, pre_duration, plot=plot)
|
||||
if len(popt) > 0:
|
||||
return popt[1]
|
||||
else:
|
||||
return -1
|
||||
return popt
|
||||
|
||||
def get_mean_time_and_freq_traces(self):
|
||||
return self.mean_time_traces, self.mean_frequency_traces
|
||||
@@ -644,6 +644,6 @@ def get_fi_curve_class(data, stimulus_values, eod_freq=None, trials=5, save_dir=
|
||||
if isinstance(data, LifacNoiseModel):
|
||||
if eod_freq is None:
|
||||
raise ValueError("The FiCurveModel needs the eod variable to work")
|
||||
return FICurveModel(data, stimulus_values, eod_freq, trials=trials)
|
||||
return FICurveModel(data, stimulus_values, eod_freq, trials=trials, save_dir=None, recalculate=False)
|
||||
|
||||
raise ValueError("Unknown type: Cannot find corresponding Baseline class. Data was type:" + str(type(data)))
|
||||
|
||||
Reference in New Issue
Block a user