def save(self, output_dir): Utils.save_chart(self._generate_chart(), Utils.get_path("chart.png", basepath=output_dir)) summary = self._generate_summary() summary_file_path = Utils.get_path("summary.txt", basepath=output_dir) with open(summary_file_path, 'w') as outfile: outfile.write(summary) result_img_file_path = Utils.get_path("result_img.jpg", basepath=output_dir) Utils.save_img(img=self.best_img, img_path=result_img_file_path)
def _save_results_comparison(results, output_dir): def generate_comparison_summary_file(): content = [] results_probabilities_times = [(r.get_last_probability(), r.running_time) for r in results] if all([prob_time[0] > FAKE_CLASS_PROB_TO_GET for prob_time in results_probabilities_times]): content.append("No parameters set returned probability below FAKE_CLASS_PROB_TO_GET ({})\n".format(FAKE_CLASS_PROB_TO_GET)) best_result = max([prob_time[0] for prob_time in results_probabilities_times]) for i, prob_time in enumerate(results_probabilities_times): if prob_time[0] == best_result: best_result_id = i best_result_time = prob_time[1] content.append("Best probability result is {}, received for paramaters set number {}\n" " in time {}.".format(best_result, best_result_id, best_result_time)) else: prob, shortest_time = min([prob_time for prob_time in results_probabilities_times if prob_time[0] <= FAKE_CLASS_PROB_TO_GET], key= lambda prob_time : prob_time[1]) for i, prob_time in enumerate(results_probabilities_times): if prob_time[0] == prob and prob_time[1] == shortest_time: best_result_id = i content.append("The probability went below FAKE_CLASS_PROB_TO_GET ({}) and was received in the shortest time ({}s) " "by parameters set number {} and is {}".format(FAKE_CLASS_PROB_TO_GET, shortest_time, best_result_id, prob)) return "".join(content) def get_results_timings_chart(): x_data = [r.get_last_probability() for r in results] y_data = [r.running_time for r in results] fig, ax = plt.subplots() ax.scatter(x_data, y_data) for i, prob in enumerate(x_data): ax.annotate(i, (prob, y_data[i])) plt.ylabel("Time [s]") plt.xlabel("Probability") plt.title("Results and times") return plt def get_results_chart(): x_data = range(len(results)) y_data = [r.get_last_probability() for r in results] plt.scatter(x_data, y_data) plt.xticks(x_data) plt.ylabel("Probability") plt.xlabel("Parameters set ID") plt.title("Results in following parameters sets") return plt def get_timings_chart(): x_data = range(len(results)) y_data = [r.running_time for r in results] plt.scatter(x_data, y_data) plt.xticks(x_data) plt.ylabel("Time [s]") plt.xlabel("Parameters set ID") plt.title("Running times in following parameters sets") return plt Utils.save_chart(get_results_chart(), Utils.get_path("results_chart.png", basepath=output_dir)) Utils.save_chart(get_timings_chart(), Utils.get_path("timings_chart.png", basepath=output_dir)) Utils.save_chart(get_results_timings_chart(), Utils.get_path("timings_results_chart.png", basepath=output_dir)) summary_file = generate_comparison_summary_file() summary_file_path = Utils.get_path("summary.txt", basepath=output_dir) with open(summary_file_path, 'w') as outfile: outfile.write(summary_file)