tests and automatic renaming

This commit is contained in:
a.ott 2020-05-20 15:24:25 +02:00
parent 15bcc09655
commit 4388983ae2
2 changed files with 87 additions and 28 deletions

View File

@ -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

View File

@ -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()