tests and automatic renaming
This commit is contained in:
parent
15bcc09655
commit
4388983ae2
@ -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
|
||||
|
||||
|
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user