add second set of parameters add additional variable to check
This commit is contained in:
parent
e92197d0ba
commit
92119373c1
@ -8,31 +8,35 @@ import copy
|
||||
import os
|
||||
|
||||
|
||||
SEARCH_WIDTH = 3
|
||||
SEARCH_PRECISION = 30
|
||||
SEARCH_WIDTH = 1.1
|
||||
SEARCH_PRECISION = 1
|
||||
CONTRASTS = np.arange(-0.4, 0.45, 0.1)
|
||||
|
||||
def main():
|
||||
model_parameters = {'threshold': 1,
|
||||
'step_size': 5e-05,
|
||||
'a_zero': 2,
|
||||
'delta_a': 0.2032269898801589,
|
||||
'mem_tau': 0.011314027210564803,
|
||||
'noise_strength': 0.056724809998220195,
|
||||
'v_zero': 0,
|
||||
'v_base': 0,
|
||||
'tau_a': 0.05958195972016753,
|
||||
'input_scaling': 119.81500448274554,
|
||||
'dend_tau': 0.0027746086464721723,
|
||||
'v_offset': -24.21875}
|
||||
|
||||
|
||||
def main():
|
||||
model_parameters1 = {'threshold': 1,
|
||||
'step_size': 5e-05,
|
||||
'a_zero': 2,
|
||||
'delta_a': 0.2032269898801589,
|
||||
'mem_tau': 0.011314027210564803,
|
||||
'noise_strength': 0.056724809998220195,
|
||||
'v_zero': 0,
|
||||
'v_base': 0,
|
||||
'tau_a': 0.05958195972016753,
|
||||
'input_scaling': 119.81500448274554,
|
||||
'dend_tau': 0.0027746086464721723,
|
||||
'v_offset': -24.21875}
|
||||
|
||||
model_parameters2 = {'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}
|
||||
|
||||
parameters_to_test = ["input_scaling", "dend_tau", "mem_tau", "noise_strength", "v_offset", "delta_a", "tau_a"]
|
||||
effect_data = []
|
||||
for p in parameters_to_test:
|
||||
print("Working on parameter " + p)
|
||||
effect_data.append(test_parameter_effect(model_parameters, p))
|
||||
effect_data.append(test_parameter_effect(model_parameters2, p))
|
||||
|
||||
plot_effects(effect_data, "./figures/variable_effect/")
|
||||
|
||||
@ -55,13 +59,15 @@ def test_parameter_effect(model_parameters, test_parameter):
|
||||
f_inf_v = []
|
||||
f_zero_s = []
|
||||
f_zero_v = []
|
||||
|
||||
fi_curves = []
|
||||
broken_i = []
|
||||
|
||||
for i in range(len(values)):
|
||||
model_parameters[test_parameter] = values[i]
|
||||
model = LifacNoiseModel(model_parameters)
|
||||
|
||||
fi_curve = FICurveModel(model, CONTRASTS, 600, trials=50)
|
||||
fi_curve = FICurveModel(model, CONTRASTS, 600, trials=1)
|
||||
fi_curves.append(fi_curve)
|
||||
f_inf_s.append(fi_curve.get_f_inf_slope())
|
||||
f_inf_v.append(fi_curve.get_f_inf_frequencies())
|
||||
f_zero_s.append(fi_curve.get_f_zero_fit_slope_at_stimulus_value(0.1))
|
||||
@ -76,8 +82,7 @@ def test_parameter_effect(model_parameters, test_parameter):
|
||||
|
||||
fi_curve.plot_f_point_detections(detection_save_path)
|
||||
|
||||
|
||||
baseline = BaselineModel(model, 600, trials=10)
|
||||
baseline = BaselineModel(model, 600, trials=1)
|
||||
bf.append(baseline.get_baseline_frequency())
|
||||
vs.append(baseline.get_vector_strength())
|
||||
sc.append(baseline.get_serial_correlation(2))
|
||||
@ -89,28 +94,33 @@ def test_parameter_effect(model_parameters, test_parameter):
|
||||
for i in broken_i:
|
||||
del values[i]
|
||||
|
||||
return ParameterEffectData(values, test_parameter, bf, vs, sc, cv, f_inf_s, f_inf_v, f_zero_s, f_zero_v)
|
||||
return ParameterEffectData(fi_curves, values, test_parameter, bf, vs, sc, cv, f_inf_s, f_inf_v, f_zero_s, f_zero_v)
|
||||
# plot_effects(values, test_parameter, bf, vs, sc, cv, f_inf_s, f_inf_v, f_zero_s, f_zero_v)
|
||||
|
||||
|
||||
def plot_effects(par_effect_data_list, save_path=None):
|
||||
|
||||
fig, axes = plt.subplots(8, len(par_effect_data_list), figsize=(32, 4*len(par_effect_data_list)), sharex="col")
|
||||
names = ("bf", "vs", "sc", "cv", "f_inf_s", "f_inf_v", "f_zero_s", "f_zero_v", "f_zero_fit_x_0")
|
||||
|
||||
names = ("bf", "vs", "sc", "cv", "f_inf_s", "f_inf_v", "f_zero_s", "f_zero_v")
|
||||
fig, axes = plt.subplots(len(names), len(par_effect_data_list), figsize=(32, 4*len(par_effect_data_list)), sharex="col")
|
||||
|
||||
for j in range(len(par_effect_data_list)):
|
||||
ped = par_effect_data_list[j]
|
||||
|
||||
ranges = ((0, max(ped.get_data("bf")) * 1.1), (0, 1), (-1, 1), (0, 1),
|
||||
(0, max(ped.get_data("f_inf_s")) * 1.1), (0, 800),
|
||||
(0, max(ped.get_data("f_zero_s")) * 1.1), (0, 3000))
|
||||
(0, max(ped.get_data("f_zero_s")) * 1.1), (0, 10000), (-0.5, max(ped.get_data("f_zero_fit_x_0"))))
|
||||
values = ped.values
|
||||
|
||||
for i in range(len(names)):
|
||||
y_data = ped.get_data(names[i])
|
||||
axes[i, j].plot(values, y_data)
|
||||
axes[i, j].set_ylim(ranges[i])
|
||||
|
||||
if names[i] == "f_zero_v":
|
||||
axes[i, j].set_yscale('log')
|
||||
axes[i, j].set_ylim(ranges[i])
|
||||
else:
|
||||
axes[i, j].set_ylim(ranges[i])
|
||||
|
||||
if j == 0:
|
||||
axes[i, j].set_ylabel(names[i])
|
||||
@ -127,9 +137,10 @@ def plot_effects(par_effect_data_list, save_path=None):
|
||||
|
||||
|
||||
class ParameterEffectData:
|
||||
data_names = ("bf", "vs", "sc", "cv", "f_inf_s", "f_inf_v" "f_zero_s", "f_zero_v")
|
||||
data_names = ("bf", "vs", "sc", "cv", "f_inf_s", "f_inf_v" "f_zero_s", "f_zero_v", "f_zero_fit_x_0")
|
||||
|
||||
def __init__(self, values, test_parameter, bf, vs, sc, cv, f_inf_s, f_inf_v, f_zero_s, f_zero_v):
|
||||
def __init__(self, fi_curves, values, test_parameter, bf, vs, sc, cv, f_inf_s, f_inf_v, f_zero_s, f_zero_v):
|
||||
self.fi_curves = fi_curves
|
||||
self.values = values
|
||||
self.test_parameter = test_parameter
|
||||
self.bf = bf
|
||||
@ -158,6 +169,10 @@ class ParameterEffectData:
|
||||
return self.f_zero_s
|
||||
elif name == "f_zero_v":
|
||||
return self.f_zero_v
|
||||
elif name == "f_zero_fit_x_0":
|
||||
fits = [fi.f_zero_fit for fi in self.fi_curves]
|
||||
x_zeros = [fit[3] for fit in fits]
|
||||
return x_zeros
|
||||
else:
|
||||
raise ValueError("Unknown attribute name!")
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user