def _setup(self): # setup drag an drop self.setDragDropMode(self.InternalMove) self.setAcceptDrops(True) self.setDropIndicatorShown(True) self.setDragDropOverwriteMode(True) self._tree_model = TreeModel(self._api, self._root, parent=self) self._tree_proxy = makeQSortFilterProxyModel(self) self._tree_proxy.setSourceModel(self._tree_model) self.setSortingEnabled(True) self.sortByColumn(0, QtCore.Qt.AscendingOrder) self._tree_proxy.setDynamicSortFilter(True) self._tree_proxy.setFilterCaseSensitivity(QtCore.Qt.CaseInsensitive) self._tree_proxy.setSortRole(TreeModel.sortRole) self._tree_proxy.setFilterRole(TreeModel.filterRole) self.setModel(self._tree_proxy) self.setColumnWidth(0, 175) header = self.header() header.setStretchLastSection(False) setHeaderViewResizeMode(header, QtWidgets.QHeaderView.Stretch, 0) self.setAnimated(True)
def test_TreeModel(): # typical model test exponent = 8 mantissa = 24 file = "tests/my_expression.txt" f = open(file, "r") file_name = (ntpath.basename(file).split(".")[0]).lower() # (file.split(".")[0]).lower() text = f.read() text = text[:-1] f.close() myYacc = FPRyacc(text, False) start_time = time() T = TreeModel(myYacc, mantissa, exponent, [40, 10], 100, 250000, error_model="high_precision") end_time = time() print("Exe time --- %s seconds ---" % (end_time - start_time)) plt.close("all") matplotlib.rcParams.update({'font.size': 11}) fig, a = plt.subplots(2, 2) dist = T.tree.root_value[0].distribution t0 = dist.range_()[0] tf = dist.range_()[1] x = np.linspace(t0, tf, 100) a[0][0].plot(x, dist.pdf(x)) a[0][0].set_title("Unquantized operations") dist = T.tree.root_value[1].distribution t0 = dist.range_()[0] tf = dist.range_()[1] x = np.linspace(t0, tf, 100) a[0][1].plot(x, dist.pdf(x)) a[0][1].set_title("Last error") dist = T.tree.root_value[2].distribution t0 = dist.range_()[0] tf = dist.range_()[1] x = np.linspace(t0, tf, 100) a[1][0].plot(x, dist.pdf(x)) a[1][0].set_title("Quantized operations") plt.show()
"Next coin rel y", "Crates around next coin", "Bomb possible", "Sum all crates", "Agent pos rel to wall", "Free space down", "Free space right", "Free space up", "Free space left", "Survivable spaces down", "Survivable spaces right", "Survivable spaces up", "Survivable spaces left", "Survivable spaces wait" ] labels = ['UP', 'DOWN', 'LEFT', 'RIGHT', 'BOMB', 'WAIT'] model = TreeModel(1000, (21, ), (6, ), 1) model.load('agent_code/minimal_tree_1/actor.p') X = np.load('agent_code/minimal_tree_1/actor_X.npy') y = np.load('agent_code/minimal_tree_1/actor_y.npy')[:, 0] plt.figure(figsize=(25, 20)) tree.plot_tree(model.model, feature_names=cols, class_names=y, max_depth=10, fontsize=4) plt.show() #print(tree.export_text(model.model)[:10000])
def process_file(file, mantissa, exp, range_my_dict, abs_my_dict): try: print("\n\n\n\n" + file + "\n\n\n\n\n") f = open(file, "r") file_name = (ntpath.basename(file).split(".")[0] ).lower() # (file.split(".")[0]).lower() text = f.read() text = text[:-1] f.close() myYacc = FPRyacc(text, False) start_time = time.time() T = TreeModel( myYacc, mantissa, exp, [40, 10], 50, 250000) #, error_model="typical", dependent_mode="p-box") end_time = time.time() print("Exe time --- %s seconds ---" % (end_time - start_time)) finalTime = end_time - start_time if os.path.exists(output_path + file_name): shutil.rmtree(output_path + file_name) os.makedirs(output_path + file_name) #loadedSamples, values_samples, abs_err_samples, rel_err_samples = T.generate_error_samples(5, file_name) loadedGolden, values_golden, abs_err_golden, rel_err_golden, err_golden = T.generate_error_samples( golden_model_time, file_name, golden=True) with open( output_path + file_name + "/" + file_name + "_constraints_log.out", "w+") as log: print(T.logging_constraints, file=log) f = open( output_path + file_name + "/" + file_name + "_CDF_summary.out", "w+") f.write("Execution Time:" + str(finalTime) + "s \n\n") plot_range_analysis_CDF(T, loadedGolden, values_golden, f, file_name, range_my_dict.get(file_name)) plot_abs_error_analysis_CDF(T, loadedGolden, abs_err_golden, f, file_name, abs_my_dict.get(file_name), rel_my_dict.get(file_name)) #plot_error_analysis_CDF(T, loadedGolden, err_golden, f, file_name, abs_my_dict.get(file_name), rel_my_dict.get(file_name)) #plot_abs_error_analysis_CDF(T.relative_err_distr, loadedGolden, rel_err_samples, rel_err_golden, f, file_name, abs_my_dict.get(file_name), rel_my_dict.get(file_name)) f.flush() f.close() f = open( output_path + file_name + "/" + file_name + "_PDF_summary.out", "w+") f.write("Execution Time:" + str(finalTime) + "s \n\n") #plot_range_analysis_PDF(T.final_quantized_distr, loadedGolden, values_golden, f, file_name, range_my_dict.get(file_name)) #plot_error_analysis_PDF(T.abs_err_distr, loadedGolden, abs_err_samples, abs_err_golden, f, file_name, abs_my_dict.get(file_name), rel_my_dict.get(file_name)) f.flush() f.close() except Exception as e: logging.error(traceback.format_exc()) finally: del values_golden, abs_err_golden, rel_err_golden gc.collect() matplotlib.pyplot.close("all")