From 4388983ae240b4e67c64bdeb9000ac3fdae13c15 Mon Sep 17 00:00:00 2001 From: "a.ott" Date: Wed, 20 May 2020 15:24:25 +0200 Subject: [PATCH] tests and automatic renaming --- tests/generalTests.py | 111 +++++++++++++++++++++++++++++--------- tests/old_fit_routines.py | 4 +- 2 files changed, 87 insertions(+), 28 deletions(-) diff --git a/tests/generalTests.py b/tests/generalTests.py index 4190ce2..8518a7c 100644 --- a/tests/generalTests.py +++ b/tests/generalTests.py @@ -10,7 +10,8 @@ from scipy.signal import argrelmax from thunderfish.eventdetection import detect_peaks from stimuli.SinusAmplitudeModulation import SinusAmplitudeModulationStimulus from models.LIFACnoise import LifacNoiseModel -from FiCurve import FICurve +from FiCurve import FICurveModel, get_fi_curve_class +from Baseline import get_baseline_class from AdaptionCurrent import Adaption from stimuli.StepStimulus import StepStimulus from stimuli.SinusoidalStepStimulus import SinusoidalStepStimulus @@ -102,10 +103,21 @@ def test_simulation_speed(): def test_fi_curve_class(): + model_parameters = {'v_offset': -15.234375, 'input_scaling': 64.94152780134829, 'step_size': 5e-05, 'a_zero': 2, + 'threshold': 1, 'v_base': 0, 'delta_a': 0.04763179657857666, 'tau_a': 0.07891848949732623, + 'mem_tau': 0.004828473985707999, 'noise_strength': 0.017132801387559883, + 'v_zero': 0, 'dend_tau': 0.0015230454266819539} + + model = LifacNoiseModel(model_parameters) + contrasts = np.arange(-0.4, 0.4, 0.05) + + ficurve = get_fi_curve_class(model, contrasts, 700) + ficurve.plot_mean_frequency_curves() + return + for cell_data in icelldata_of_dir("../data/"): - fi_curve = FICurve(cell_data) - fi_curve.get_f_zero_and_f_inf_intersection() - fi_curve.plot_fi_curve() + fi_curve = get_fi_curve_class(cell_data, cell_data.get_fi_contrasts()) + fi_curve.plot_mean_frequency_curves() # fi_curve.plot_f_point_detections() @@ -113,11 +125,37 @@ def test_fi_curve_class(): def test_adaption_class(): + model_parameters = {'v_offset': -15.234375, 'input_scaling': 64.94152780134829, 'step_size': 5e-05, 'a_zero': 2, + 'threshold': 1, 'v_base': 0, 'delta_a': 0.04763179657857666, 'tau_a': 0.07891848949732623, + 'mem_tau': 0.004828473985707999, 'noise_strength': 0.017132801387559883, + 'v_zero': 0, 'dend_tau': 0.0015230454266819539} + + model = LifacNoiseModel(model_parameters) + contrasts = np.arange(-0.4, 1, 0.05) + for delta_a in np.arange(0.1, 1.5, 0.1): + model.set_variable("delta_a", delta_a) + # for tau_a in np.arange(0.01, 0.1, 0.01): + # model.set_variable("tau_a", tau_a) + fi_curve = FICurveModel(model, contrasts, 750, 10) + adaption = Adaption(fi_curve) + # adaption.plot_exponential_fits() + m_tau = model.get_parameters()["tau_a"] + approx_tau = adaption.get_tau_real() + m_delta_a = model.get_parameters()["delta_a"] + approx_delta_a = adaption.get_delta_a() + fi_curve.plot_fi_curve("../figures/error_plots/adaption_test_{:.2f}_delta_a_with_{:.2f}_error.png".format(delta_a, approx_delta_a/ m_delta_a)) + # print("model tau_a \t: {:.4f} vs {:.4f} adaption estimate, error: {:.2}".format(m_tau, approx_tau, (approx_tau / m_tau))) + print("model delta_a\t: {:.4f} vs {:.4f} adaption estimate, error: {:.2}".format(m_delta_a, approx_delta_a, (approx_delta_a / m_delta_a))) + print(fi_curve.f_zero_fit[3]) + + + + quit() for cell_data in icelldata_of_dir("../data/"): print() print(cell_data.get_data_path()) fi_curve = FICurve(cell_data) - adaption = Adaption(cell_data, fi_curve) + adaption = Adaption(fi_curve) adaption.plot_exponential_fits() @@ -167,6 +205,27 @@ def test_vector_strength_calculation(): print("with detected eod durations vs: {:.3f}".format(vs2)) +def test_baseline_polar_plot(): + + model_parameter = {'v_offset': -15.234375, 'input_scaling': 64.94152780134829, 'step_size': 5e-05, 'a_zero': 2, + 'threshold': 1, 'v_base': 0, 'delta_a': 0.04763179657857666, 'tau_a': 0.07891848949732623, + 'mem_tau': 0.004828473985707999, 'noise_strength': 0.017132801387559883, + 'v_zero': 0, 'dend_tau': 0.0015230454266819539} + + baseline = get_baseline_class(LifacNoiseModel(model_parameter), 700) + baseline.plot_polar_vector_strength() + + # for data in icelldata_of_dir("../data/"): + # trace = data.get_base_traces(trace_type=data.V1) + # if len(trace) == 0: + # print("NO V1 TRACE FOUND") + # continue + # + # baseline = get_baseline_class(data) + # baseline.plot_polar_vector_strength() + + + def plot_model_during_stimulus(model: LifacNoiseModel, stimulus:SinusAmplitudeModulationStimulus, total_time): _, spiketimes = model.simulate_fast(stimulus, total_time) @@ -195,32 +254,32 @@ def rectify_stimulus_array(stimulus_array: np.ndarray): if __name__ == '__main__': - # X = [0.05, 0.02, 50, 0.1, 0.03] - model = LifacNoiseModel() - # model.set_variable("mem_tau", X[0]) - # model.set_variable("noise_strength", X[1]) - # model.set_variable("input_scaling", X[2]) - # model.set_variable("tau_a", X[3]) - # model.set_variable("delta_a", X[4]) - stim = SinusoidalStepStimulus(700, 0.2, start_time=1, duration=1) - bf, vs, sc = model.calculate_baseline_markers(700) - print("baseline freq:{:.2f}\nVector strength: {:.3f}\nSerial cor:".format(bf, vs), sc) - contrasts = np.arange(-0.3, 0.31, 0.05) - model.calculate_fi_curve(contrasts, 700) - f_infinities, slope = model.calculate_fi_markers(contrasts, 700) - print("FI-Curve\nSlope: {:.2f}\nValues:".format(slope), f_infinities) - plot_model_during_stimulus(model, stim, 3) - - quit() - - + # # X = [0.05, 0.02, 50, 0.1, 0.03] + # model = LifacNoiseModel() + # # model.set_variable("mem_tau", X[0]) + # # model.set_variable("noise_strength", X[1]) + # # model.set_variable("input_scaling", X[2]) + # # model.set_variable("tau_a", X[3]) + # # model.set_variable("delta_a", X[4]) + # stim = SinusoidalStepStimulus(700, 0.2, start_time=1, duration=1) + # bf, vs, sc = model.calculate_baseline_markers(700) + # print("baseline freq:{:.2f}\nVector strength: {:.3f}\nSerial cor:".format(bf, vs), sc) + # contrasts = np.arange(-0.3, 0.31, 0.05) + # model.calculate_fi_curve(contrasts, 700) + # f_infinities, slope = model.calculate_fi_markers(contrasts, 700) + # print("FI-Curve\nSlope: {:.2f}\nValues:".format(slope), f_infinities) + # plot_model_during_stimulus(model, stim, 3) + + # quit() + + # test_baseline_polar_plot() # time_test_function() # test_cell_data() # test_peak_detection() # test_simulation_speed() # test_parameters() - # test_fi_curve_class() + test_fi_curve_class() # test_adaption_class() - test_vector_strength_calculation() + # test_vector_strength_calculation() pass diff --git a/tests/old_fit_routines.py b/tests/old_fit_routines.py index 6b536fc..08e5c62 100644 --- a/tests/old_fit_routines.py +++ b/tests/old_fit_routines.py @@ -7,7 +7,7 @@ def fit_routine_1(self, cell_data=None): x0 = np.array([0.02, 0.03, 70]) initial_simplex = create_init_simples(x0, search_scale=2) error_weights = (1, 1, 1, 1, 1, 0, 0) - fmin_step1 = minimize(fun=self.cost_function_with_fixed_adaption, args=(self.tau_a, self.delta_a, error_weights), + fmin_step1 = minimize(fun=self.cost_function_with_fixed_adaption_tau, args=(self.tau_a, self.delta_a, error_weights), x0=x0, method="Nelder-Mead", options={"initial_simplex": initial_simplex}) res_parameters_step1 = self.base_model.get_parameters() @@ -42,7 +42,7 @@ def fit_routine_2(self, cell_data=None): x0 = np.array([0.02, 0.03, 70]) initial_simplex = create_init_simples(x0, search_scale=2) error_weights = (1, 1, 5, 1, 2, 0, 0) - fmin = minimize(fun=self.cost_function_with_fixed_adaption, + fmin = minimize(fun=self.cost_function_with_fixed_adaption_tau, args=(self.tau_a, self.delta_a, error_weights), x0=x0, method="Nelder-Mead", options={"initial_simplex": initial_simplex}) res_parameters = self.base_model.get_parameters()