import ajustador as aju
def params_fitness(morph_file,ntype,modeltype,ghkkluge=1):
P = aju.optimize.AjuParam
params = aju.optimize.ParamSet(
P('junction_potential', -12e-3, min=-20e-3, max = 20e-3),
P('RA', 2.5, min=.3, max=4),
P('RM', 2.3, min=0.01, max=100),
P('CM', 0.014, min=0.005, max=0.02),
P('Cond_Kir_0', 9.3, min=1, max=50),
P('Cond_Kir_1', 9.3, min=1, max=50),
P('Cond_Kir_2', 5.3, min=1, max=15),
P('Eleak', -0.07, min=-0.09, max=-0.020),
P('Cond_NaF_0', 153e3, min=10e3, max=10000e3),
P('Cond_NaF_1', 10000, min=1, max=100e3),
P('Cond_NaF_2', 100, min=1, max=300),
P('Cond_KaS_0', 200, min=1, max=1000),
P('Cond_KaS_1', 100, min=1, max=1000),
P('Cond_KaS_2', 30, min=1, max=100),
P('Cond_KaF_0', 1228, min=10, max=10000),
P('Cond_KaF_1', 1624, min=10, max=10000),
P('Cond_KaF_2', 40, min=1, max=100),
P('Cond_Krp', 0.06, min=0.01, max=100),
#P('Cond_Krp_1', 0.05, min=0, max=50),
#P('Cond_Krp_2', 0.05, min=0, max=50),
P('Cond_SKCa', 1.3, min=.1, max=10),
P('Cond_CaCC', 1.9, min=.1, max=100),
P('Cond_BKCa', 10, min=.1, max=100),
P('Cond_CaN_0', 8*ghkkluge, min=1e-3, max=10*ghkkluge),
P('Cond_CaT32_1', 0.01*ghkkluge, min=1e-3, max=10*ghkkluge),
P('Cond_CaT32_2', 2.3*ghkkluge, min=1e-3, max=10*ghkkluge),
P('Cond_CaT33_1', 0.01*ghkkluge, min=1e-3, max=10*ghkkluge),
P('Cond_CaT33_2', 2.3*ghkkluge, min=1e-3, max=10*ghkkluge),P('Cond_CaL12_0', 2.5*ghkkluge, min=1e-3, max=20*ghkkluge),
P('Cond_CaL12_1', 3.5*ghkkluge, min=1e-3, max=20*ghkkluge),
P('Cond_CaL12_2', 3*ghkkluge, min=1e-3, max=20*ghkkluge),
P('Cond_CaL13_0', 5.5*ghkkluge, min=1e-3, max=20*ghkkluge),
P('Cond_CaL13_1', 0.15*ghkkluge, min=1e-3, max=20*ghkkluge),
P('Cond_CaL13_2', 0.12*ghkkluge, min=1e-3, max=20*ghkkluge),
P('Cond_CaR_0', 5*ghkkluge, min=1e-3, max=60*ghkkluge),
P('Cond_CaR_1', 10*ghkkluge, min=1e-3, max=60*ghkkluge),
P('Cond_CaR_2', 20*ghkkluge, min=1e-3, max=60*ghkkluge),
P('Chan_NaF_vshift_X', 0.0004, min=-0.02, max=0.02),
P('Chan_NaF_vshift_Y', 0.009, min=-0.02, max=0.02),
P('Chan_NaF_taumul_X', 1.35, min=0.25, max=3),
P('Chan_NaF_taumul_Y', 1.34, min=0.25, max=3),
P('Chan_KaF_vshift_X', -0.003, min=-0.02, max=0.02),
P('Chan_KaF_vshift_Y', 0.0048, min=-0.02, max=0.02),
P('Chan_KaF_taumul_X', 0.63, min=0.25, max=3),
P('Chan_KaF_taumul_Y', .88, min=0.25, max=3),
P('Chan_KaS_vshift_X', -0.02, min=-0.030, max=0.020),
P('Chan_KaS_vshift_Y', 0.0015, min=-0.020, max=0.020),
P('Chan_KaS_taumul_X', .3, min=0.2, max=4),
P('Chan_KaS_taumul_Y', 1.01, min=0.25, max=3),
#P('Chan_CaCC_vshift', 0.0, min=-0.01, max=0.01),
P('Chan_CaCC_taumul', 1.0, min=0.5, max=2),
P('Chan_Kir_vshift', 0.012, min = -.02, max = .03),
P('Chan_Kir_taumul', 1.7, min = .25, max = 3),
P('morph_file', morph_file, fixed=1),
P('neuron_type', ntype, fixed=1),
P('model', modeltype, fixed=1))
#fitness=aju.fitnesses.combined_fitness('new_combined_fitness')
fitness = aju.fitnesses.combined_fitness('empty',
response=3,
baseline_pre=2,
baseline_post=2,
rectification=1,
falling_curve_time=1,
spike_time=3,
spike_width=2,
spike_height=10,
spike_latency=2,
spike_count=3,
spike_ahp=1,
ahp_curve=2,
charging_curve_time=2,
charging_curve_full=4,
spike_range_y_histogram=1,
mean_isi=2,
isi_spread=2,
#spike_threshold=1,
#response_variance=0.05,
post_injection_curve_tau = 2)
return params,fitness