fit no dend_tau increased v_offset baseline sim to 9 from 5

This commit is contained in:
alexanderott 2020-09-12 19:27:55 +02:00
parent f1268b291c
commit 52e6fea5f8
3 changed files with 23 additions and 34 deletions

View File

@ -184,7 +184,7 @@ class LifacNoiseModel(AbstractModel):
def find_v_offset(self, goal_baseline_frequency, base_stimulus, threshold=2, border=50000): def find_v_offset(self, goal_baseline_frequency, base_stimulus, threshold=2, border=50000):
test_model = self.get_model_copy() test_model = self.get_model_copy()
simulation_length = 5 simulation_length = 9
v_search_step_size = 100 v_search_step_size = 100
@ -229,8 +229,8 @@ def binary_search_base_freq(model: LifacNoiseModel, base_stimulus, goal_frequenc
raise ValueError("binary_search_base_freq() - LifacNoiseModel: Goal frequency might be nan?") raise ValueError("binary_search_base_freq() - LifacNoiseModel: Goal frequency might be nan?")
if abs(upper_bound - lower_bound) < 0.0001: if abs(upper_bound - lower_bound) < 0.0001:
print("v_offset search stopped. bounds converged! freq: {:.2f}, lower {:.1f}, upper: {:.1f}" print("v_offset search stopped. bounds converged! freq: {:.2f}, bounds: {:.0f}"
.format(frequency, lower_bound, upper_bound)) .format(frequency, lower_bound))
warn("Search was stopped. Upper and lower bounds converged without finding a value closer than threshold!") warn("Search was stopped. Upper and lower bounds converged without finding a value closer than threshold!")
return middle return middle

View File

@ -14,8 +14,8 @@ from helperFunctions import plot_errors
import multiprocessing as mp import multiprocessing as mp
SAVE_DIRECTORY = "./results/ref_and_tau/no_ref_period" SAVE_DIRECTORY = "./results/ref_and_tau/no_dend_tau/"
SAVE_DIRECTORY_BEST = "./results/ref_and_tau/nrp_best" SAVE_DIRECTORY_BEST = "./results/ref_and_tau/ndt_best"
# [vs, sc, cv, isi_hist, bursty, f_inf, f_inf_slope, f_zero, f_zero_slope, f0_curve] # [vs, sc, cv, isi_hist, bursty, f_inf, f_inf_slope, f_zero, f_zero_slope, f0_curve]
ERROR_WEIGHTS = (1, 1, 1, 1, 1, 1, 1, 1, 0, 1) ERROR_WEIGHTS = (1, 1, 1, 1, 1, 1, 1, 1, 0, 1)
@ -31,7 +31,7 @@ def main():
quit() quit()
# test_single_cell("data/invivo/2010-11-08-al-invivo-1/") # test_single_cell("data/invivo/2010-11-08-al-invivo-1/")
test_single_cell("data/ref_and_dend_set/2012-12-21-am-invivo-1/") test_single_cell("data/final/2012-12-21-am-invivo-1/")
# start_parameters = [p for p in iget_start_parameters()] # start_parameters = [p for p in iget_start_parameters()]
# cell_data = CellData("data/invivo_bursty/2014-03-19-ae-invivo-1/") # cell_data = CellData("data/invivo_bursty/2014-03-19-ae-invivo-1/")
@ -45,7 +45,7 @@ def test_single_cell(path):
for i, p in enumerate(start_parameters): for i, p in enumerate(start_parameters):
fitter = Fitter() fitter = Fitter()
fitter.set_data_reference_values(cell_data) fitter.set_data_reference_values(cell_data)
fmin, res_par = fitter.fit_routine_no_ref_period(p, ERROR_WEIGHTS) fmin, res_par = fitter.fit_routine_no_dend_tau(p, ERROR_WEIGHTS)
cell_path = os.path.split(cell_data.get_data_path())[-1] cell_path = os.path.split(cell_data.get_data_path())[-1]
@ -60,7 +60,7 @@ def fit_cell_base(parameters):
time1 = time.time() time1 = time.time()
fitter = Fitter() fitter = Fitter()
fitter.set_data_reference_values(parameters[0]) fitter.set_data_reference_values(parameters[0])
fmin, res_par = fitter.fit_routine_no_ref_period(parameters[2], ERROR_WEIGHTS) fmin, res_par = fitter.fit_routine_no_dend_tau(parameters[2], ERROR_WEIGHTS)
cell_data = parameters[0] cell_data = parameters[0]
cell_name = os.path.split(cell_data.get_data_path())[-1] cell_name = os.path.split(cell_data.get_data_path())[-1]

41
test.py
View File

@ -19,7 +19,7 @@ import helperFunctions as hF
import models.smallModels as sM import models.smallModels as sM
from stimuli.SinusoidalStepStimulus import SinusoidalStepStimulus from stimuli.SinusoidalStepStimulus import SinusoidalStepStimulus
from matplotlib import gridspec from matplotlib import gridspec
from plottools.axes import labelaxes_params # from plottools.axes import labelaxes_params
@ -34,30 +34,19 @@ from plottools.axes import labelaxes_params
fit = ModelFit("results/final_2/2012-07-12-ag-invivo-1/start_parameter_4_err_6.11/") fit = ModelFit("results/final_2/2012-07-12-ag-invivo-1/start_parameter_4_err_6.11/")
model = fit.get_model() model = fit.get_model()
print(model.parameters)
eodf = fit.get_cell_data().get_eod_frequency()
baseline = BaselineModel(model, eod_frequency=eodf)
print("model BF: {:.2f}".format(baseline.get_baseline_frequency()))
base_stim = SinusoidalStepStimulus(fit.get_cell_data().get_eod_frequency(), 0, 0) model_no_dend = model.get_model_copy()
time_list = [] model_no_dend.parameters["dend_tau"] = 0
freq_list = [] model_no_dend.parameters["input_scaling"] = 20
con_freq_list = []
duration = 10 baseline = BaselineModel(model_no_dend, eod_frequency=eodf)
step = model.get_sampling_interval() print("no dend BF: {:.2f}".format(baseline.get_baseline_frequency()))
g = gaussian_kernel(0.005, step) baseline.plot_interspike_interval_histogram()
for i in range(20):
print(i) v1, spikes = model_no_dend.simulate(SinusoidalStepStimulus(eodf, 0, 0), 2)
v1, spikes = model.simulate(base_stim, duration) plt.plot(v1)
binary = np.zeros(int(np.rint(duration / step)))
for s in spikes:
binary[int(np.rint(s/step))] = 1
rate = np.convolve(binary, g, mode='same')
con_freq_list.append(rate)
time, freq = hF.calculate_time_and_frequency_trace(spikes, model.get_sampling_interval())
time_list.append(time)
freq_list.append(freq)
rates = np.array(con_freq_list)
mean_rate = np.mean(rates, axis=0)
mean_time, mean_freq = hF.calculate_mean_of_frequency_traces(time_list, freq_list, model.get_sampling_interval())
plt.plot(np.arange(0, 10, step), mean_rate, alpha=0.5)
plt.plot(mean_time, mean_freq, alpha=0.5)
plt.show() plt.show()