finish sensitivity analysis

This commit is contained in:
a.ott 2020-07-23 10:33:01 +02:00
parent 16a8da2dfc
commit 4b406f033a

View File

@ -17,26 +17,28 @@ def main():
# parser.add_argument("dir", help="folder containing the cell folders with the fit results")
# args = parser.parse_args()
dir_path = "results/invivo_results/" # args.dir
# dir_path = "results/invivo_results/" # args.dir
dir_path = "results/results_add__trial_more_iter_NM/invivo_results" # args.dir
# if not os.path.isdir(dir_path):
# print("Argument dir is not a directory.")
# parser.print_usage()
# exit(0)
# sensitivity_analysis(dir_path, max_models=2)
fits_info = get_fit_info(dir_path)
errors = calculate_percent_errors(fits_info)
create_boxplots(errors)
labels, corr_values, corrected_p_values = behaviour_correlations(fits_info, model_values=False)
create_correlation_plot(labels, corr_values, corrected_p_values)
labels, corr_values, corrected_p_values = parameter_correlations(fits_info)
create_correlation_plot(labels, corr_values, corrected_p_values)
create_parameter_distributions(get_parameter_values(fits_info))
cell_b, model_b = get_behaviour_values(fits_info)
create_behaviour_distributions(cell_b, model_b)
sensitivity_analysis(dir_path, max_models=3)
# fits_info = get_fit_info(dir_path)
#
# errors = calculate_percent_errors(fits_info)
# create_boxplots(errors)
# labels, corr_values, corrected_p_values = behaviour_correlations(fits_info, model_values=False)
# create_correlation_plot(labels, corr_values, corrected_p_values)
#
# labels, corr_values, corrected_p_values = parameter_correlations(fits_info)
# create_correlation_plot(labels, corr_values, corrected_p_values)
#
# create_parameter_distributions(get_parameter_values(fits_info))
# cell_b, model_b = get_behaviour_values(fits_info)
# create_behaviour_distributions(cell_b, model_b)
pass
@ -293,7 +295,7 @@ def sensitivity_analysis(dir_path, par_range=(0.5, 1.6, 0.1), contrast_range=(-0
if "vector_strength" in behaviours:
par_responses[par]["vector_strength"][i] = baseline.get_vector_strength()
fi_curve = FICurveModel(model_copy, contrasts, eod, trials=10)
fi_curve = FICurveModel(model_copy, contrasts, eod, trials=20)
if "f_inf_slope" in behaviours:
par_responses[par]["f_inf_slope"][i] = fi_curve.get_f_inf_slope()
@ -304,7 +306,26 @@ def sensitivity_analysis(dir_path, par_range=(0.5, 1.6, 0.1), contrast_range=(-0
model_behaviour_responses.append(par_responses)
pass
print("sensitivity analysis done!")
plot_sensitivity_analysis(model_behaviour_responses, behaviours, parameters, factors)
def plot_sensitivity_analysis(responses, behaviours, parameters, factors):
fig, axes = plt.subplots(len(behaviours), len(parameters), sharex="all", sharey="row", figsize=(8, 8))
for i, behaviour in enumerate(behaviours):
for j, par in enumerate(parameters):
for model in responses:
axes[i, j].plot(factors, model[par][behaviour])
if j == 0:
axes[i, j].set_ylabel("{}".format(behaviour))
if i == 0:
axes[i, j].set_title("{}".format(par))
plt.tight_layout()
plt.show()
plt.close()
if __name__ == '__main__':