diff --git a/analysis.py b/analysis.py index bbf695e..6356167 100644 --- a/analysis.py +++ b/analysis.py @@ -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__':