def _IsValueNumeric(self, value): if InputController.IsInt(value): return True if InputController.IsLong(value): return True if InputController.IsFloat(value): return True return False
def _IsListOfLists(self, matrix): if InputController.IsList(matrix): for row in matrix: if not InputController.IsList(row): return False else: return False return True
def __init__(self): self.input_controller = InputController() self.original_formulas_file = sys.argv[1] self.researched_formulas_file = sys.argv[2] self.optimized_original_file = sys.argv[3] self.optimized_researched_file = sys.argv[4] self.result_of_testing_original_file = sys.argv[5] self.result_of_testing_researched_file = sys.argv[6] self.analyzer_results = sys.argv[7]
class MainController: def __init__(self): self.input_controller = InputController() self.original_formulas_file = sys.argv[1] self.researched_formulas_file = sys.argv[2] self.optimized_original_file = sys.argv[3] self.optimized_researched_file = sys.argv[4] self.result_of_testing_original_file = sys.argv[5] self.result_of_testing_researched_file = sys.argv[6] self.analyzer_results = sys.argv[7] def start(self): self.input_controller.fault_tolerance_request() self.input_controller.initial_groups_request() self.input_controller.blocked_vector_request() tested_faults = len(max(self.input_controller.initial_groups, key=len)) processors = Processors(self.input_controller.initial_groups) generator = FormulasGenerator(processors, self.input_controller.fault_tolerance) selector = Selector(self.input_controller.blocked_vectors) tester = PrTester(processors) blocker = Blocker(self.input_controller.blocked_vectors, tester, selector, processors) ''' For original formulas ''' generator.generate(self.input_controller.initial_groups, self.original_formulas_file) optimizer_original = Optimizer(self.input_controller.fault_tolerance, processors, self.optimized_original_file) optimizer_original.optimize(generator.origin_formulas_arr) blocking_original_formulas = blocker.block_original(selector.select_group(optimizer_original.result_formulas)) tester.test(self.result_of_testing_original_file, blocking_original_formulas, tested_faults, self.input_controller.fault_tolerance) ''' For researched formulas ''' self.input_controller.researched_way_request() if self.input_controller.researched_way: generator.generate(processors.form_groups_according_to_blocked_vector(self.input_controller.blocked_vectors), self.researched_formulas_file) optimizer_researched = Optimizer(self.input_controller.fault_tolerance, processors, self.optimized_researched_file) optimizer_researched.optimize(generator.origin_formulas_arr) #selector.select_group(optimizer_researched.result_formulas) blocking_researched_formulas = blocker.block_researched(selector.select_group(optimizer_researched.result_formulas)) tester.test(self.result_of_testing_researched_file,blocking_researched_formulas, tested_faults, self.input_controller.fault_tolerance) self.input_controller.repeat_request() return self.input_controller.repeat
def playGame(self, boardSpacing=-1): newGame = True if (boardSpacing == -1): boardSpacing = InputController.promptBoardSize( ) #ask for the board size. else: newGame = False game1 = Game(6, 7, 4, boardSpacing) #make a game. if (newGame is True): game1.view.displayColumnAsk() # display columns print("") game1.view.display() #display board while (game1.isOver is False): #while the game isnt over for x in game1.playerList: if ((game1.turnNumber == (game1.rows * game1.columns)) & (game1.isOver is not True)): play = InputController.getGameFilled( ) #the gameboard MUST be filled. if (play): return self.playGame( boardSpacing ) #if it is, prompt for restart the game. else: game1.isOver = True #game is over. return else: if (game1.isOver is True): #if the game is over.. return else: game1.turnNumber = game1.turnNumber + 1 #increment turn col = InputController.getValidColumn( game1.view.board, x, game1.turnNumber) #get a valid column if (x.makeMove(game1.view, col) is True): #if this is true game1.isOver = True #game is over. if (InputController.getPlayAgain() is True): #if we play again.. return self.playGame(boardSpacing) else: game1.isOver = True #if not, gg return
def _IsValidKey(self, key): """Valid key -> (row, columns) where row and columns are integers""" if InputController.IsTuple(key): if not self._IsValidKeyValues(key): return False else: return False return True
def __init__(self, pos): Entity.__init__(self, pos, 0.5, 2) self.stats = Stats() self.input = InputController(self) self.motion = MotionController(self) self.action = ActionController(self) self.color = 0xAA0077 self.net = -1
def _IsValidKeyValues(self, key): """There can be only two integer values in a tuple""" countValues = 0 for value in key: if not InputController.IsInt(value): return False countValues += 1 if (countValues != 2): return False return True
def __init__(self): self.server_running = False self.socket = None self.packet = 0 self.myid = None self.node_table = None self.cost_table = None self.servers = None self.neighbors = None self.neighbor_timers = None self.updated = False self.interval = None InputController(self)
class Volume_Tab_View: def __init__(self, glade_xml, model_factory, app): self.model_factory = model_factory self.main_win = app self.width = 0 self.height = 0 self.glade_xml = glade_xml ##Set up list structure self.treeview = self.glade_xml.get_widget('treeview1') self.treemodel = self.treeview.get_model() self.treemodel = gtk.TreeStore (gobject.TYPE_STRING, gobject.TYPE_INT, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_PYOBJECT) self.treeview.set_model(self.treemodel) self.treeview.set_headers_visible(False) self.input_controller = InputController(self.reset_tree_model, self.treeview, self.model_factory, self.glade_xml) #Change Listener selection = self.treeview.get_selection() selection.connect('changed', self.on_tree_selection_changed) #self.treeview.connect('expand-collapse-cursor-row',self.on_row_expand_collapse) #self.treeview.connect('row-collapsed',self.on_row_expand_collapse) self.icon_ellipse_hashtable = {} renderer1 = gtk.CellRendererText() column1 = gtk.TreeViewColumn("Volumes",renderer1,markup=0) self.treeview.append_column(column1) #Time to set up draw area window1 = self.glade_xml.get_widget("drawingarea1") window1.set_size_request(700, 500) window2 = self.glade_xml.get_widget("drawingarea2") window2.set_size_request(700, 500) window3 = self.glade_xml.get_widget("drawingarea3") window3.set_size_request(700, 500) window4 = self.glade_xml.get_widget("drawingarea4") window4.set_size_request(700, 500) pr_upper = Properties_Renderer(window3, window3.window) #pr_lower = Properties_Renderer(window4, window4.window) self.display_view = DisplayView(self.input_controller.register_highlighted_sections, window1, pr_upper, None, None) #self.display_view = DisplayView(self.input_controller.register_highlighted_sections, window1, pr_upper, window2, pr_lower) self.glade_xml.get_widget('best_fit_button').connect('clicked', self.on_best_fit) self.glade_xml.get_widget('zoom_in_button').connect('clicked', self.on_zoom_in) self.glade_xml.get_widget('zoom_out_button').connect('clicked', self.on_zoom_out) self.glade_xml.get_widget('viewport1').connect('size-allocate', self.on_resize_drawing_area) self.on_best_fit(None) self.glade_xml.get_widget('zoom_box').set_sensitive(False) # set up mirror copy progress self.mirror_sync_progress = MirrorSyncProgress(self.glade_xml.get_widget('messages_vbox')) ############################# ##Highly experimental self.box = self.glade_xml.get_widget('vbox12') self.uninit_panel = self.glade_xml.get_widget('uninit_panel') self.uninit_panel.hide() self.unalloc_panel = self.glade_xml.get_widget('unalloc_panel') self.unalloc_panel.hide() self.phys_vol_view_panel = self.glade_xml.get_widget('phys_vol_view_panel') self.phys_vol_view_panel.hide() self.log_vol_view_panel = self.glade_xml.get_widget('log_vol_view_panel') self.log_vol_view_panel.hide() self.on_rm_select_lvs_button = self.glade_xml.get_widget('on_rm_select_lvs') self.phys_panel = self.glade_xml.get_widget('phys_panel') self.phys_panel.hide() self.log_panel = self.glade_xml.get_widget('log_panel') self.log_panel.hide() self.prepare_tree() model = self.treeview.get_model() vgs = self.model_factory.get_VGs() if len(vgs) > 0: model.foreach(self.check_tree_items, [vgs[0].get_name()]) else: unallocs = self.model_factory.query_unallocated() if len(unallocs) > 0: model.foreach(self.check_tree_items, ['', '', unallocs[0].get_path()]) else: uninits = self.model_factory.query_uninitialized() if len(uninits) > 0: model.foreach(self.check_tree_items, ['', '', uninits[0].get_path()]) # format is [vgname, lvpath, pvpath] - put '' if none def reset_tree_model(self, *in_args): self.prepare_tree() args = [] for arg in in_args: args.append(arg) model = self.treeview.get_model() model.foreach(self.check_tree_items, args) def check_tree_items(self, model, path, iter, *args): # return True to stop foreach, False to continue if len(args) == 0: return True # don't go any further args_internal = [] for arg in args[0]: args_internal.append(arg) while len(args_internal) < 3: args_internal.append('') vgname = args_internal[0] lvpath = args_internal[1] pvpath = args_internal[2] selection = self.treeview.get_selection() type = model.get_value(iter, TYPE_COL) if type == VG_PHYS_TYPE: if vgname != '' and lvpath == '' and pvpath != '': vg = model.get_value(iter, OBJ_COL) if vgname == vg.get_name(): self.treeview.expand_to_path(path) selection.select_path(path) return True elif type == VG_LOG_TYPE: if vgname != '' and lvpath != '' and pvpath == '': vg = model.get_value(iter, OBJ_COL) if vgname == vg.get_name(): self.treeview.expand_to_path(path) selection.select_path(path) return True elif type == VG_TYPE: if vgname != '' and lvpath == '' and pvpath == '': vg = model.get_value(iter, OBJ_COL) if vgname == vg.get_name(): self.treeview.expand_to_path(path) selection.select_path(path) return True elif type == LOG_TYPE: if vgname == '' and lvpath != '' and pvpath == '': lv = model.get_value(iter, OBJ_COL) if lvpath == lv.get_path(): self.treeview.expand_to_path(path) selection.select_path(path) return True elif type == PHYS_TYPE or type == UNALLOCATED_TYPE or type == UNINITIALIZED_TYPE: if vgname == '' and lvpath == '' and pvpath != '': pv = model.get_value(iter, OBJ_COL) if pvpath in pv.get_paths(): self.treeview.expand_to_path(path) selection.select_path(path) return True return False def prepare_tree(self): treemodel = self.treeview.get_model() treemodel.clear() self.model_factory.reload() self.mirror_sync_progress.initiate() vg_list = self.model_factory.get_VGs() if len(vg_list) > 0: vg_iter = treemodel.append(None) vg_string = "<span size=\"11000\"><b>" + VOLUME_GROUPS + "</b></span>" treemodel.set(vg_iter, NAME_COL, vg_string, TYPE_COL, UNSELECTABLE_TYPE) self.__sort_list_by_get_name_fcn(vg_list) for vg in vg_list: vg_child_iter = treemodel.append(vg_iter) vg_name = vg.get_name() vg_name_marked = vg_name if vg.clustered(): vg_name_marked += '<span foreground="#FF00FF"> (' + _('Clustered VG') + ')</span>' treemodel.set(vg_child_iter, NAME_COL, vg_name_marked, TYPE_COL, VG_TYPE, OBJ_COL, vg) phys_iter = treemodel.append(vg_child_iter) log_iter = treemodel.append(vg_child_iter) pview_string = vg_name + "<span foreground=\"#ED1C2A\"><i> " + PHYSICAL_VIEW + "</i></span>" treemodel.set(phys_iter, NAME_COL, pview_string, TYPE_COL, VG_PHYS_TYPE, PATH_COL, vg_name, OBJ_COL, vg) lview_string = vg_name + "<span foreground=\"#43ACF6\"><i> " + LOGICAL_VIEW + "</i></span>" treemodel.set(log_iter, NAME_COL, lview_string, TYPE_COL, VG_LOG_TYPE, PATH_COL, vg_name, OBJ_COL, vg) pv_list = vg.get_pvs().values() grouped_dir, ungrouped_list = self.__group_by_device(pv_list) grouped_dir_sorted = grouped_dir.keys() grouped_dir_sorted.sort() for main_dev in grouped_dir_sorted: dev_iter = treemodel.append(phys_iter) pvs = grouped_dir[main_dev] devnames = pvs[0].getDevnames() devnames_str = devnames[0] for devname in devnames[1:]: devnames_str = devnames_str + ', ' + devname if len(devnames) > 1: devnames_str = str(pvs[0].getMultipath()) + ' [' + devnames_str + ']' treemodel.set(dev_iter, NAME_COL, devnames_str, TYPE_COL, UNSELECTABLE_TYPE) for pv in pvs: iter = treemodel.append(dev_iter) phys_string = "<span foreground=\"#ED1C2A\">" + pv.get_name() + "</span>" treemodel.set(iter, NAME_COL, phys_string, TYPE_COL, PHYS_TYPE, PATH_COL, pv.get_path(), OBJ_COL, pv) for pv in ungrouped_list: iter = treemodel.append(phys_iter) phys_string = "<span foreground=\"#ED1C2A\">" + pv.get_name() + "</span>" treemodel.set(iter, NAME_COL, phys_string, TYPE_COL, PHYS_TYPE, PATH_COL, pv.get_path(), OBJ_COL, pv) lv_list = vg.get_lvs().values() self.__sort_list_by_get_name_fcn(lv_list) for lv in lv_list: if lv.is_used(): iter = treemodel.append(log_iter) log_string = "<span foreground=\"#43ACF6\">" + lv.get_name() + "</span>" treemodel.set(iter, NAME_COL, log_string, TYPE_COL, LOG_TYPE, PATH_COL, lv.get_path(), SIMPLE_LV_NAME_COL, lv.get_name(), OBJ_COL, lv) #Expand if there are entries self.treeview.expand_row(treemodel.get_path(vg_iter),False) unalloc_list = self.model_factory.query_unallocated() if len(unalloc_list) > 0: unallocated_iter = treemodel.append(None) unalloc_string = "<span size=\"11000\"><b>" + UNALLOCATED_VOLUMES + "</b></span>" treemodel.set(unallocated_iter, NAME_COL, unalloc_string, TYPE_COL, UNSELECTABLE_TYPE) grouped_dir, ungrouped_list = self.__group_by_device(unalloc_list) grouped_dir_sorted = grouped_dir.keys() grouped_dir_sorted.sort() for main_dev in grouped_dir_sorted: dev_iter = treemodel.append(unallocated_iter) pvs = grouped_dir[main_dev] devnames = pvs[0].getDevnames() devnames_str = devnames[0] for devname in devnames[1:]: devnames_str = devnames_str + ', ' + devname if len(devnames) > 1: devnames_str = str(pvs[0].getMultipath()) + ' [' + devnames_str + ']' treemodel.set(dev_iter, NAME_COL, devnames_str, TYPE_COL, UNSELECTABLE_TYPE) for pv in pvs: iter = treemodel.append(dev_iter) phys_string = "<span foreground=\"#ED1C2A\">" + pv.get_name() + "</span>" treemodel.set(iter, NAME_COL, phys_string, TYPE_COL, UNALLOCATED_TYPE, PATH_COL, pv.get_path(), OBJ_COL, pv) for pv in ungrouped_list: iter = treemodel.append(unallocated_iter) phys_string = "<span foreground=\"#ED1C2A\">" + pv.get_path() + "</span>" treemodel.set(iter, NAME_COL, phys_string, TYPE_COL, UNALLOCATED_TYPE, PATH_COL, pv.get_path(), OBJ_COL, pv) uninit_list = self.model_factory.query_uninitialized() if len(uninit_list) > 0: uninitialized_iter = treemodel.append(None) uninit_string = "<span size=\"11000\"><b>" + UNINITIALIZED_ENTITIES + "</b></span>" treemodel.set(uninitialized_iter, NAME_COL, uninit_string, TYPE_COL, UNSELECTABLE_TYPE) grouped_dir, ungrouped_list = self.__group_by_device(uninit_list) grouped_dir_sorted = grouped_dir.keys() grouped_dir_sorted.sort() for main_dev in grouped_dir_sorted: dev_iter = treemodel.append(uninitialized_iter) pvs = grouped_dir[main_dev] devnames = pvs[0].getDevnames() devnames_str = devnames[0] for devname in devnames[1:]: devnames_str = devnames_str + ', ' + devname if len(devnames) > 1: devnames_str = str(pvs[0].getMultipath()) + ' [' + devnames_str + ']' treemodel.set(dev_iter, NAME_COL, devnames_str, TYPE_COL, UNSELECTABLE_TYPE) for pv in grouped_dir[main_dev]: iter = treemodel.append(dev_iter) treemodel.set(iter, NAME_COL, pv.get_name(), TYPE_COL, UNINITIALIZED_TYPE, PATH_COL, pv.get_path(), OBJ_COL, pv) for pv in ungrouped_list: iter = treemodel.append(uninitialized_iter) treemodel.set(iter, NAME_COL, pv.get_path(), TYPE_COL, UNINITIALIZED_TYPE, PATH_COL, pv.get_path(), OBJ_COL, pv) #self.treeview.expand_all() self.clear_all_buttonpanels() # returns {main_dev : [pv1, pv2, ...], ...} def __group_by_device(self, pvlist): grouped = {} ungrouped = [] for pv in pvlist: if len(pv.getDevnames()) == 0 or pv.wholeDevice(): ungrouped.append(pv) continue if pv.getDevnames()[0] in grouped.keys(): grouped[pv.getDevnames()[0]].append(pv) else: grouped[pv.getDevnames()[0]] = [pv] # sort lists for main_dev in grouped: self.__sort_list_by_get_name_fcn(grouped[main_dev]) self.__sort_list_by_get_name_fcn(ungrouped) return grouped, ungrouped def __sort_list_by_get_name_fcn(self, some_list): d = {} l = [] while len(some_list) != 0: o = some_list.pop() name = o.get_name() if name in d: d[name].append(o) else: d[name] = [o] l.append(name) l.sort() for name in l: for o in d[name]: some_list.append(o) return some_list def on_tree_selection_changed(self, *args): selection = self.treeview.get_selection() model,iter = selection.get_selected() if iter == None: self.glade_xml.get_widget('zoom_box').set_sensitive(False) self.display_view.render_no_selection() self.display_view.draw() return treepath = model.get_path(iter) self.treeview.expand_row(treepath, False) type = model.get_value(iter, TYPE_COL) if type == VG_PHYS_TYPE: self.input_controller.clear_highlighted_sections() self.clear_all_buttonpanels() self.phys_vol_view_panel.show() vg = model.get_value(iter, OBJ_COL) pv_list = vg.get_pvs().values() self.display_view.render_pvs(pv_list) self.on_best_fit(None) self.glade_xml.get_widget('zoom_box').set_sensitive(True) elif type == VG_LOG_TYPE: self.input_controller.clear_highlighted_sections() self.clear_all_buttonpanels() vg = model.get_value(iter, OBJ_COL) lv_list = vg.get_lvs().values() self.show_log_vol_view_panel(lv_list) self.display_view.render_lvs(lv_list) self.on_best_fit(None) self.glade_xml.get_widget('zoom_box').set_sensitive(True) elif type == VG_TYPE: self.clear_all_buttonpanels() self.input_controller.clear_highlighted_sections() vg = model.get_value(iter, OBJ_COL) self.display_view.render_vg(vg) self.on_best_fit(None) self.glade_xml.get_widget('zoom_box').set_sensitive(True) elif type == LOG_TYPE: self.input_controller.clear_highlighted_sections() self.clear_all_buttonpanels() self.log_panel.show() lv = model.get_value(iter, OBJ_COL) self.display_view.render_lv(lv) self.on_best_fit(None) self.glade_xml.get_widget('zoom_box').set_sensitive(False) elif type == PHYS_TYPE: self.input_controller.clear_highlighted_sections() self.clear_all_buttonpanels() self.phys_panel.show() pv = model.get_value(iter, OBJ_COL) self.display_view.render_pv(pv) self.on_best_fit(None) self.glade_xml.get_widget('zoom_box').set_sensitive(True) elif type == UNALLOCATED_TYPE: self.input_controller.clear_highlighted_sections() self.clear_all_buttonpanels() self.unalloc_panel.show() pv = model.get_value(iter, OBJ_COL) self.display_view.render_unalloc_pv(pv) self.on_best_fit(None) self.glade_xml.get_widget('zoom_box').set_sensitive(False) elif type == UNINITIALIZED_TYPE: self.input_controller.clear_highlighted_sections() self.clear_all_buttonpanels() button = self.input_controller.init_entity_button uv = model.get_value(iter, OBJ_COL) if uv.initializable: button.set_sensitive(True) else: button.set_sensitive(False) self.uninit_panel.show() self.display_view.render_uninit_pv(uv) self.on_best_fit(None) self.glade_xml.get_widget('zoom_box').set_sensitive(False) else: self.input_controller.clear_highlighted_sections() self.clear_all_buttonpanels() self.display_view.render_no_selection() self.display_view.draw() self.glade_xml.get_widget('zoom_box').set_sensitive(False) def on_row_expand_collapse(self, treeview, logical,expand, openall, *params): treeview.get_model() selection = treeview.get_selection() model, iter = selection.get_selected() # if model.iter_parent(iter) == None: #Top level return True # else: # return False def show_log_vol_view_panel(self,lv_list): #This is a wrapper for self.log_vol_view_panel.show() #If the VG has no LVs, then a proxy LV is returned as an 'Unused' LV. #We do not want to allow the deletion of this unused LV. #So we'll gray out the button. self.on_rm_select_lvs_button.set_sensitive(True) if len(lv_list) == 1: if lv_list[0].is_used() == False: self.on_rm_select_lvs_button.set_sensitive(False) self.log_vol_view_panel.show() def clear_all_buttonpanels(self): self.unalloc_panel.hide() self.uninit_panel.hide() self.log_vol_view_panel.hide() self.phys_vol_view_panel.hide() self.log_panel.hide() self.phys_panel.hide() def on_best_fit(self, obj): self.on_resize_drawing_area(None, None) self.__set_zoom_buttons(self.display_view.set_best_fit()) self.display_view.draw() def on_zoom_in(self, obj): self.__set_zoom_buttons(self.display_view.zoom_in()) self.display_view.draw() def on_zoom_out(self, obj): self.__set_zoom_buttons(self.display_view.zoom_out()) self.display_view.draw() def __set_zoom_buttons(self, (z_in, z_out)): if z_in: self.glade_xml.get_widget('zoom_in_button').set_sensitive(True) else: self.glade_xml.get_widget('zoom_in_button').set_sensitive(False) if z_out: self.glade_xml.get_widget('zoom_out_button').set_sensitive(True) else: self.glade_xml.get_widget('zoom_out_button').set_sensitive(False)
def __init__(self, glade_xml, model_factory, app): self.model_factory = model_factory self.main_win = app self.width = 0 self.height = 0 self.glade_xml = glade_xml self.try_not_best_fit = True ##Set up list structure self.treeview = self.glade_xml.get_widget('treeview1') self.treemodel = self.treeview.get_model() self.treemodel = gtk.TreeStore(gobject.TYPE_STRING, gobject.TYPE_INT, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_PYOBJECT) self.treeview.set_model(self.treemodel) self.treeview.set_headers_visible(False) self.input_controller = InputController(self.reset_tree_model, self.treeview, self.model_factory, self.glade_xml) #Change Listener selection = self.treeview.get_selection() selection.connect('changed', self.on_tree_selection_changed) #self.treeview.connect('expand-collapse-cursor-row',self.on_row_expand_collapse) #self.treeview.connect('row-collapsed',self.on_row_expand_collapse) self.icon_ellipse_hashtable = {} renderer1 = gtk.CellRendererText() column1 = gtk.TreeViewColumn("Volumes", renderer1, markup=0) self.treeview.append_column(column1) #Time to set up draw area window1 = self.glade_xml.get_widget("drawingarea1") window1.set_size_request(700, 500) window2 = self.glade_xml.get_widget("drawingarea2") window2.set_size_request(700, 500) window3 = self.glade_xml.get_widget("drawingarea3") window3.set_size_request(700, 500) window4 = self.glade_xml.get_widget("drawingarea4") window4.set_size_request(700, 500) pr_upper = Properties_Renderer(window3, window3.window) #pr_lower = Properties_Renderer(window4, window4.window) self.display_view = DisplayView( self.input_controller.register_highlighted_sections, window1, pr_upper, None, None) #self.display_view = DisplayView(self.input_controller.register_highlighted_sections, window1, pr_upper, window2, pr_lower) self.glade_xml.get_widget('best_fit_button').connect( 'clicked', self.on_best_fit) self.glade_xml.get_widget('zoom_in_button').connect( 'clicked', self.on_zoom_in) self.glade_xml.get_widget('zoom_out_button').connect( 'clicked', self.on_zoom_out) self.glade_xml.get_widget('viewport1').connect( 'size-allocate', self.on_resize_drawing_area) self.on_best_fit(None) self.glade_xml.get_widget('zoom_box').set_sensitive(False) # set up mirror copy progress self.mirror_sync_progress = MirrorSyncProgress( self.glade_xml.get_widget('messages_vbox')) ############################# ##Highly experimental self.box = self.glade_xml.get_widget('vbox12') self.uninit_panel = self.glade_xml.get_widget('uninit_panel') self.uninit_panel.hide() self.unalloc_panel = self.glade_xml.get_widget('unalloc_panel') self.unalloc_panel.hide() self.phys_vol_view_panel = self.glade_xml.get_widget( 'phys_vol_view_panel') self.phys_vol_view_panel.hide() self.log_vol_view_panel = self.glade_xml.get_widget( 'log_vol_view_panel') self.log_vol_view_panel.hide() self.on_rm_select_lvs_button = self.glade_xml.get_widget( 'on_rm_select_lvs') self.phys_panel = self.glade_xml.get_widget('phys_panel') self.phys_panel.hide() self.log_panel = self.glade_xml.get_widget('log_panel') self.log_panel.hide() self.prepare_tree() model = self.treeview.get_model() vgs = self.model_factory.get_VGs() if len(vgs) > 0: model.foreach(self.check_tree_items, [vgs[0].get_name()]) lvs_count = 0 for vg in vgs: lvs_count += len(vg.lvs) if (lvs_count < MAX_LV_FOR_BESTFIT): self.try_not_best_fit = False else: self.glade_xml.get_widget('best_fit_button').set_sensitive( False) else: unallocs = self.model_factory.query_unallocated() if len(unallocs) > 0: model.foreach(self.check_tree_items, ['', '', unallocs[0].get_path()]) else: uninits = self.model_factory.query_uninitialized() if len(uninits) > 0: model.foreach(self.check_tree_items, ['', '', uninits[0].get_path()])
class Ui_RegressionWindow(object): input_C = InputController() RgMdl = RegressionController() rt = ReportModule() saveModel = 0 def setupUi(self, RegressionWindow): RegressionWindow.setObjectName("RegressionWindow") RegressionWindow.resize(870, 845) self.centralwidget = QtWidgets.QWidget(RegressionWindow) self.centralwidget.setObjectName("centralwidget") self.ImgPath = QtWidgets.QLineEdit(self.centralwidget) self.ImgPath.setGeometry(QtCore.QRect(10, 160, 311, 31)) self.ImgPath.setObjectName("ImgPath") self.tranData_Path = QtWidgets.QLineEdit(self.centralwidget) self.tranData_Path.setGeometry(QtCore.QRect(10, 240, 311, 31)) self.tranData_Path.setObjectName("tranData_Path") self.ImgPth_Btn = QtWidgets.QPushButton(self.centralwidget) self.ImgPth_Btn.setGeometry(QtCore.QRect(370, 160, 93, 31)) self.ImgPth_Btn.setObjectName("ImgPth_Btn") self.tranPath_Btn = QtWidgets.QPushButton(self.centralwidget) self.tranPath_Btn.setGeometry(QtCore.QRect(370, 240, 93, 31)) self.tranPath_Btn.setObjectName("tranPath_Btn") self.attr_btn = QtWidgets.QPushButton(self.centralwidget) self.attr_btn.setGeometry(QtCore.QRect(740, 240, 93, 31)) self.attr_btn.setObjectName("attr_btn") self.attributes = QtWidgets.QComboBox(self.centralwidget) self.attributes.setGeometry(QtCore.QRect(680, 190, 151, 31)) self.attributes.setObjectName("attributes") self.RunBtn = QtWidgets.QPushButton(self.centralwidget) self.RunBtn.setGeometry(QtCore.QRect(710, 320, 121, 41)) self.RunBtn.setObjectName("RunBtn") self.line = QtWidgets.QFrame(self.centralwidget) self.line.setGeometry(QtCore.QRect(0, 510, 861, 16)) self.line.setFrameShape(QtWidgets.QFrame.HLine) self.line.setFrameShadow(QtWidgets.QFrame.Sunken) self.line.setObjectName("line") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setEnabled(True) self.label.setGeometry(QtCore.QRect(210, 30, 521, 61)) font = QtGui.QFont() font.setPointSize(23) font.setBold(False) font.setWeight(50) self.label.setFont(font) self.label.setObjectName("label") self.savePath = QtWidgets.QLineEdit(self.centralwidget) self.savePath.setGeometry(QtCore.QRect(10, 580, 321, 31)) self.savePath.setObjectName("savePath") self.PathLabel = QtWidgets.QLabel(self.centralwidget) self.PathLabel.setGeometry(QtCore.QRect(10, 550, 131, 20)) self.PathLabel.setObjectName("PathLabel") self.BrowsePath = QtWidgets.QPushButton(self.centralwidget) self.BrowsePath.setGeometry(QtCore.QRect(370, 580, 93, 31)) self.BrowsePath.setObjectName("BrowsePath") self.SaveBtn = QtWidgets.QRadioButton(self.centralwidget) self.SaveBtn.setGeometry(QtCore.QRect(710, 560, 111, 21)) self.SaveBtn.setObjectName("SaveBtn") self.ReportNameLabel = QtWidgets.QLabel(self.centralwidget) self.ReportNameLabel.setGeometry(QtCore.QRect(10, 640, 131, 20)) self.ReportNameLabel.setObjectName("ReportNameLabel") self.ProjectName = QtWidgets.QLineEdit(self.centralwidget) self.ProjectName.setGeometry(QtCore.QRect(10, 670, 221, 31)) self.ProjectName.setObjectName("ProjectName") self.ImgPath_label = QtWidgets.QLabel(self.centralwidget) self.ImgPath_label.setGeometry(QtCore.QRect(10, 130, 131, 20)) self.ImgPath_label.setObjectName("ImgPath_label") self.TrainData_label = QtWidgets.QLabel(self.centralwidget) self.TrainData_label.setGeometry(QtCore.QRect(10, 210, 131, 20)) self.TrainData_label.setObjectName("TrainData_label") self.testsize = QtWidgets.QLineEdit(self.centralwidget) self.testsize.setGeometry(QtCore.QRect(30, 400, 111, 41)) self.testsize.setObjectName("testsize") self.trees_label = QtWidgets.QLabel(self.centralwidget) self.trees_label.setGeometry(QtCore.QRect(330, 340, 131, 21)) font = QtGui.QFont() font.setPointSize(9) font.setBold(False) font.setWeight(50) self.trees_label.setFont(font) self.trees_label.setObjectName("trees_label") self.SplitSize_label = QtWidgets.QLabel(self.centralwidget) self.SplitSize_label.setGeometry(QtCore.QRect(20, 340, 381, 31)) font = QtGui.QFont() font.setPointSize(9) font.setBold(False) font.setWeight(50) self.SplitSize_label.setFont(font) self.SplitSize_label.setObjectName("SplitSize_label") self.trnsplt_label = QtWidgets.QLabel(self.centralwidget) self.trnsplt_label.setGeometry(QtCore.QRect(150, 400, 141, 41)) font = QtGui.QFont() font.setPointSize(10) font.setBold(True) font.setWeight(75) self.trnsplt_label.setFont(font) self.trnsplt_label.setObjectName("trnsplt_label") self.TreesNo = QtWidgets.QLineEdit(self.centralwidget) self.TreesNo.setGeometry(QtCore.QRect(330, 380, 113, 41)) self.TreesNo.setObjectName("TreesNo") self.SplitSize_label_2 = QtWidgets.QLabel(self.centralwidget) self.SplitSize_label_2.setGeometry(QtCore.QRect(20, 460, 381, 31)) font = QtGui.QFont() font.setPointSize(9) font.setBold(False) font.setWeight(50) self.SplitSize_label_2.setFont(font) self.SplitSize_label_2.setObjectName("SplitSize_label_2") RegressionWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(RegressionWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 870, 26)) self.menubar.setObjectName("menubar") RegressionWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(RegressionWindow) self.statusbar.setObjectName("statusbar") RegressionWindow.setStatusBar(self.statusbar) self.testsize.setText("25") self.TreesNo.setText("100") self.ImgPth_Btn.clicked.connect(self.openImagePathDialog) self.tranPath_Btn.clicked.connect(self.openTrainingFileDialog) self.BrowsePath.clicked.connect(self.BrowsePathDir) self.SaveBtn.toggled.connect(self.SaveModel) self.attr_btn.clicked.connect(self.Get_TrainAttribute) self.RunBtn.clicked.connect(self.validateInput) self.retranslateUi(RegressionWindow) QtCore.QMetaObject.connectSlotsByName(RegressionWindow) def retranslateUi(self, RegressionWindow): _translate = QtCore.QCoreApplication.translate RegressionWindow.setWindowTitle( _translate("RegressionWindow", "Regression")) self.ImgPth_Btn.setText(_translate("RegressionWindow", "Browse")) self.tranPath_Btn.setText(_translate("RegressionWindow", "Browse")) self.attr_btn.setText(_translate("RegressionWindow", "Get attributes")) self.RunBtn.setText(_translate("RegressionWindow", "Run")) self.label.setText( _translate("RegressionWindow", "Random Forrest Regression")) self.PathLabel.setText( _translate("RegressionWindow", "Results Directory")) self.BrowsePath.setText(_translate("RegressionWindow", "Browse")) self.SaveBtn.setText(_translate("RegressionWindow", "Save Model")) self.ReportNameLabel.setText( _translate("RegressionWindow", "Project Name")) self.ImgPath_label.setText(_translate("RegressionWindow", "Image Path")) self.TrainData_label.setText( _translate("RegressionWindow", "Training Data Path")) self.trees_label.setText( _translate("RegressionWindow", "Number of Trees")) self.SplitSize_label.setText( _translate("RegressionWindow", "Split size of Training & Testing sets")) self.trnsplt_label.setText( _translate("RegressionWindow", "% Test Size")) self.SplitSize_label_2.setText( _translate("RegressionWindow", "Training Size is 100% - Test Size")) def openImagePathDialog(self): filename = QFileDialog.getOpenFileName() self.ImgPath.setText(filename[0]) self.input_C.set_img_path(filename[0]) def openTrainingFileDialog(self): filename = QFileDialog.getOpenFileName() self.tranData_Path.setText(filename[0]) self.input_C.set_training_path(filename[0]) def Get_TrainAttribute(self): if not self.tranData_Path.text().endswith(".shp"): msg = QMessageBox() msg.setIcon(QMessageBox.Information) msg.setWindowTitle("Wrong Selection") msg.setText( "Please select correct file with .shp extension to get attributes. " ) msg.exec_() return else: attlist = self.FindAttributes(self.tranData_Path.text()) if (attlist): self.attributes.addItems(attlist) if not (attlist): msg = QMessageBox() msg.setIcon(QMessageBox.Information) msg.setWindowTitle("NO ATTRIBUTES FOUND") msg.setText("NO ATTRIBUTES FOUND IN .SHP FILE. ") msg.exec_() def FindAttributes(self, filepath): return self.input_C.FindAttributes(filepath) # try: # driver = ogr.GetDriverByName('ESRI Shapefile') # shape_dataset = driver.Open(filepath) # shape_layer = shape_dataset.GetLayer() # field_names = [field.name for field in shape_layer.schema] # return field_names # except ValueError as e: # print(e) def BrowsePathDir(self): filename = QFileDialog.getExistingDirectory() self.savePath.setText(filename) def BrowseImagePath(self): filename = QFileDialog.getExistingDirectory() self.ImgSavePath.setText(filename) def SaveModel(self): if self.SaveBtn.isChecked(): self.saveModel = 1 # self.ModelNameLabel.show() # self.ModelPathLabel.show() # self.BrowseMdlPath.show() # self.ModelSavePath.show() # self.ModelName.show() else: self.saveModel = 0 # self.ModelNameLabel.hide() # self.ModelPathLabel.hide() # self.ModelSavePath.hide() # self.BrowseMdlPath.hide() # self.ModelName.hide() def BrowseModelPath(self): filename = QFileDialog.getExistingDirectory() self.ModelSavePath.setText(filename) def validateInput(self): msg = QMessageBox() msg.setIcon(QMessageBox.Information) msg.setWindowTitle("Validation Prompt") msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel) if not self.ImgPath.text().endswith(".tif"): msg.setText("Invalid Image File. ") msg.setInformativeText("Invalid File Format") msg.setDetailedText( "The details are as follows: Either Image file is not selected or does not contain .tif extension" ) msg.exec_() self.window = QtWidgets.QMainWindow() self.ui = Ui_RegressionWindow() self.ui.setupUi(self.window) return if not self.tranData_Path.text().endswith(".shp"): msg.setText("Invalid Training Data File. ") msg.setInformativeText("Invalid File Format") msg.setDetailedText( "The details are as follows: Either Training file is not selected or does not contain .shp extension" ) msg.exec_() self.window = QtWidgets.QMainWindow() self.ui = Ui_RegressionWindow() self.ui.setupUi(self.window) return if self.attributes.currentText() == "": msg.setText("Please select the attribute. ") msg.setInformativeText("Attribute not selected") msg.setDetailedText( "The details are as follows: Select attribute from Training File" ) msg.exec_() self.window = QtWidgets.QMainWindow() self.ui = Ui_RegressionWindow() self.ui.setupUi(self.window) return if self.ProjectName.text() == "": msg.setText("Please enter a suitable name for your project. ") msg.setInformativeText("project name missing") msg.exec_() self.window = QtWidgets.QMainWindow() self.ui = Ui_RegressionWindow() self.ui.setupUi(self.window) return if self.savePath.text() == "": msg.setText("Please select path for project. ") msg.setInformativeText("project path missing") msg.exec_() self.window = QtWidgets.QMainWindow() self.ui = Ui_RegressionWindow() self.ui.setupUi(self.window) return # if self.TreesNo.text() == "": # msg.setText("Please enter a suitable numbe. ") # msg.setInformativeText("Image name missing") # msg.exec_() # self.window = QtWidgets.QMainWindow() # self.ui = Ui_RegressionWindow() # self.ui.setupUi(self.window) # return # # if self.ImgSavePath.text() == "": # msg.setText("Please select path for Image result. ") # msg.setInformativeText("Image path missing") # msg.exec_() # self.window = QtWidgets.QMainWindow() # self.ui = Ui_RegressionWindow() # self.ui.setupUi(self.window) # return # # if self.saveModel == 1 and (self.ModelName.text() == "" or self.ModelSavePath.text() == ""): # msg.setText("Please enter name and Path for saving model. ") # msg.setInformativeText("Either Model Name of Path not entered") # msg.exec_() # self.window = QtWidgets.QMainWindow() # self.ui = Ui_RegressionWindow() # self.ui.setupUi(self.window) # return else: self.Run() def Run(self): try: print("The process has started.... This will take few minutes") if self.TreesNo.text() == "": self.TreesNo.setText("100") if self.testsize.text() == "": self.testsize.setText("1000") test_size = float(self.testsize.text()) / 100 treeNo = int(self.TreesNo.text()) print(self.savePath.text()) dir_path = self.savePath.text() + "\\" + self.ProjectName.text() if os.path.isdir(dir_path): msg = QMessageBox() msg.setIcon(QMessageBox.Information) msg.setWindowTitle("Validation Prompt") msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel) msg.setText("A folder nammed " + self.ProjectName.text() + " already exists. ") msg.setInformativeText("Please move the folder and try again") msg.exec_() self.window = QtWidgets.QMainWindow() self.ui = Ui_RegressionWindow() self.ui.setupUi(self.window) return else: os.mkdir(dir_path) reportpath = dir_path reportpath += "/" + str(self.ProjectName.text()) + "_REPORT.pdf" prediction_map = dir_path prediction_map += "/" + str(self.ProjectName.text()) + "_IMG.tif" modelsavepath = dir_path + "/" + self.ProjectName.text( ) + "_MODEL.sav" LoadingImages = self.input_C.load_image_data() img_ds = LoadingImages[0] img = LoadingImages[1] doc = self.rt.build_doc(reportpath, "Random Forrest Regression Report") self.input_C.set_training_attr(self.attributes.currentText()) TrainingData = self.input_C.load_train_data(img_ds, "Regression") ## roi # self.input_C.create_training_subplots(img[:, :, 0],TrainingData) Regressor = self.RgMdl.RF_regressor(TrainingData, img, self.attributes.currentText(), test_size, treeNo) RFR = Regressor[0] self.helper = Regressor[1] #preparesection1 prediction = self.RgMdl.RF_prediction(RFR, img) self.RgMdl.RF_save_PredictionImage(prediction, prediction_map, img, img_ds) rp_param = RFHelper(prediction, TrainingData, self.helper, self.ImgPath.text(), self.tranData_Path.text(), reportpath, prediction_map, modelsavepath) doc = self.rt.make_rf_reg_report(doc, img, rp_param, dir_path) if self.saveModel == 1: self.RgMdl.save_model(RFR, modelsavepath) doc.save() msg = QMessageBox() msg.setIcon(QMessageBox.Information) msg.setWindowTitle("Complete!!!") msg.setText("Processing Done. Report ready to preview ") msg.exec_() except ValueError as e: print(e)
class Ui_ClassificationWindow(object): input_C = InputController() rf_C = RandomForrestController() rt = ReportModule() saveModel = 0 counter = 0 validationFlag = 1 def setupUi(self, ClassificationWindow): ClassificationWindow.setObjectName("ClassificationWindow") ClassificationWindow.resize(860, 798) self.centralwidget = QtWidgets.QWidget(ClassificationWindow) self.centralwidget.setObjectName("centralwidget") self.imagePath = QtWidgets.QLineEdit(self.centralwidget) self.imagePath.setGeometry(QtCore.QRect(20, 140, 311, 31)) self.imagePath.setObjectName("imagePath") self.trainPath = QtWidgets.QLineEdit(self.centralwidget) self.trainPath.setGeometry(QtCore.QRect(20, 230, 311, 31)) self.trainPath.setObjectName("trainPath") self.validPath = QtWidgets.QLineEdit(self.centralwidget) self.validPath.setGeometry(QtCore.QRect(20, 320, 311, 31)) self.validPath.setObjectName("validPath") self.imgBrowseBtn = QtWidgets.QPushButton(self.centralwidget) self.imgBrowseBtn.setGeometry(QtCore.QRect(370, 140, 93, 31)) self.imgBrowseBtn.setObjectName("imgBrowseBtn") self.trainBrowseBtn = QtWidgets.QPushButton(self.centralwidget) self.trainBrowseBtn.setGeometry(QtCore.QRect(370, 230, 93, 31)) self.trainBrowseBtn.setObjectName("trainBrowseBtn") self.validBrowseBtn = QtWidgets.QPushButton(self.centralwidget) self.validBrowseBtn.setGeometry(QtCore.QRect(370, 320, 93, 31)) self.validBrowseBtn.setObjectName("validBrowseBtn") self.ImagePathLabel = QtWidgets.QLabel(self.centralwidget) self.ImagePathLabel.setGeometry(QtCore.QRect(30, 110, 131, 20)) self.ImagePathLabel.setObjectName("ImagePathLabel") self.TrainingPathLabel = QtWidgets.QLabel(self.centralwidget) self.TrainingPathLabel.setGeometry(QtCore.QRect(30, 200, 131, 20)) self.TrainingPathLabel.setObjectName("TrainingPathLabel") self.ValdationPathLabel = QtWidgets.QLabel(self.centralwidget) self.ValdationPathLabel.setGeometry(QtCore.QRect(30, 290, 131, 20)) self.ValdationPathLabel.setObjectName("ValdationPathLabel") self.TreesLabel = QtWidgets.QLabel(self.centralwidget) self.TreesLabel.setGeometry(QtCore.QRect(30, 400, 131, 20)) self.TreesLabel.setObjectName("TreesLabel") self.ClassificationLabel = QtWidgets.QLabel(self.centralwidget) self.ClassificationLabel.setGeometry(QtCore.QRect(160, 10, 611, 61)) font = QtGui.QFont() font.setPointSize(25) font.setBold(False) font.setWeight(50) self.ClassificationLabel.setFont(font) self.ClassificationLabel.setObjectName("ClassificationLabel") self.trainingAttributes = QtWidgets.QComboBox(self.centralwidget) self.trainingAttributes.setGeometry(QtCore.QRect(680, 240, 151, 31)) self.trainingAttributes.setObjectName("trainingAttributes") self.validationAttributes = QtWidgets.QComboBox(self.centralwidget) self.validationAttributes.setGeometry(QtCore.QRect(680, 320, 151, 31)) self.validationAttributes.setObjectName("validationAttributes") self.trainAttrBtn = QtWidgets.QPushButton(self.centralwidget) self.trainAttrBtn.setGeometry(QtCore.QRect(570, 240, 93, 28)) self.trainAttrBtn.setObjectName("trainAttrBtn") self.valAttrBtn = QtWidgets.QPushButton(self.centralwidget) self.valAttrBtn.setGeometry(QtCore.QRect(570, 320, 93, 28)) self.valAttrBtn.setObjectName("valAttrBtn") self.savePath = QtWidgets.QLineEdit(self.centralwidget) self.savePath.setGeometry(QtCore.QRect(20, 560, 321, 31)) self.savePath.setObjectName("savePath") self.ReportPathLabel = QtWidgets.QLabel(self.centralwidget) self.ReportPathLabel.setGeometry(QtCore.QRect(20, 530, 131, 20)) self.ReportPathLabel.setObjectName("ReportPathLabel") self.BrowsePath = QtWidgets.QPushButton(self.centralwidget) self.BrowsePath.setGeometry(QtCore.QRect(360, 560, 93, 31)) self.BrowsePath.setObjectName("BrowsePath") self.runBtn = QtWidgets.QPushButton(self.centralwidget) self.runBtn.setGeometry(QtCore.QRect(710, 440, 121, 41)) self.runBtn.setObjectName("runBtn") self.treesNo = QtWidgets.QLineEdit(self.centralwidget) self.treesNo.setGeometry(QtCore.QRect(20, 440, 131, 41)) self.treesNo.setObjectName("treesNo") self.SaveBtn = QtWidgets.QRadioButton(self.centralwidget) self.SaveBtn.setGeometry(QtCore.QRect(600, 530, 93, 20)) self.SaveBtn.setObjectName("SaveBtn") self.line = QtWidgets.QFrame(self.centralwidget) self.line.setGeometry(QtCore.QRect(10, 500, 1061, 16)) self.line.setFrameShape(QtWidgets.QFrame.HLine) self.line.setFrameShadow(QtWidgets.QFrame.Sunken) self.line.setObjectName("line") self.ProjectName = QtWidgets.QLineEdit(self.centralwidget) self.ProjectName.setGeometry(QtCore.QRect(20, 630, 221, 31)) self.ProjectName.setObjectName("ReportName") self.ProjectNameLabel = QtWidgets.QLabel(self.centralwidget) self.ProjectNameLabel.setGeometry(QtCore.QRect(20, 610, 131, 20)) self.ProjectNameLabel.setObjectName("ReportNameLabel") ClassificationWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(ClassificationWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 860, 26)) self.menubar.setObjectName("menubar") ClassificationWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(ClassificationWindow) self.statusbar.setObjectName("statusbar") ClassificationWindow.setStatusBar(self.statusbar) self.treesNo.setText("500") self.validBrowseBtn.clicked.connect(self.openValidationDialog) self.trainBrowseBtn.clicked.connect(self.openTrainingDialog) self.imgBrowseBtn.clicked.connect(self.openImageDialog) self.trainAttrBtn.clicked.connect(self.Get_TrainAttribute) self.valAttrBtn.clicked.connect(self.Get_ValidationAttribute) self.SaveBtn.toggled.connect(self.SaveModel) self.BrowsePath.clicked.connect(self.BrowsePathDir) self.runBtn.clicked.connect(self.validateInput) self.retranslateUi(ClassificationWindow) QtCore.QMetaObject.connectSlotsByName(ClassificationWindow) def retranslateUi(self, ClassificationWindow): _translate = QtCore.QCoreApplication.translate ClassificationWindow.setWindowTitle(_translate("ClassificationWindow", "MainWindow")) self.imgBrowseBtn.setText(_translate("ClassificationWindow", "Browse")) self.trainBrowseBtn.setText(_translate("ClassificationWindow", "Browse")) self.validBrowseBtn.setText(_translate("ClassificationWindow", "Browse")) self.ImagePathLabel.setText(_translate("ClassificationWindow", "Image Path")) self.TrainingPathLabel.setText(_translate("ClassificationWindow", "Training Path")) self.ValdationPathLabel.setText(_translate("ClassificationWindow", "Validation Path")) self.TreesLabel.setText(_translate("ClassificationWindow", "Number of Trees")) self.ClassificationLabel.setText(_translate("ClassificationWindow", "Random Forrest Classification ")) self.trainAttrBtn.setText(_translate("ClassificationWindow", "Get Attributes")) self.valAttrBtn.setText(_translate("ClassificationWindow", "Get Attributes")) self.ReportPathLabel.setText(_translate("ClassificationWindow", "Results Directory")) self.BrowsePath.setText(_translate("ClassificationWindow", "Browse")) self.runBtn.setText(_translate("ClassificationWindow", "Run")) self.SaveBtn.setText(_translate("ClassificationWindow", "Save Model")) self.ProjectNameLabel.setText(_translate("ClassificationWindow", "Project Name")) def openValidationDialog(self): filename = QFileDialog.getOpenFileName() self.validPath.setText(filename[0]) self.input_C.set_validation_path(filename[0]) def openTrainingDialog(self): filename = QFileDialog.getOpenFileName() self.trainPath.setText(filename[0]) self.input_C.set_training_path(filename[0]) def openImageDialog(self): filename = QFileDialog.getOpenFileName() self.imagePath.setText(filename[0]) self.input_C.set_img_path(filename[0]) def Get_TrainAttribute(self): if not self.trainPath.text().endswith(".shp"): msg = QMessageBox() msg.setIcon(QMessageBox.Information) msg.setWindowTitle("Wrong Selection") msg.setText("Please select correct file with .shp extension to get attributes. ") msg.exec_() return else: attlist = self.FindAttributes(self.trainPath.text()) if(attlist): self.trainingAttributes.addItems(attlist) if not(attlist): msg = QMessageBox() msg.setIcon(QMessageBox.Information) msg.setWindowTitle("NO ATTRIBUTES FOUND") msg.setText("NO ATTRIBUTES FOUND IN .SHP FILE. ") msg.exec_() def Get_ValidationAttribute(self): if not self.validPath.text().endswith(".shp"): msg = QMessageBox() msg.setIcon(QMessageBox.Information) msg.setWindowTitle("Wrong Selection") msg.setText("Please select correct file with .shp extension to get attributes. ") msg.exec_() return else: attlist = self.FindAttributes(self.validPath.text()) if (attlist): self.validationAttributes.addItems(attlist) if not (attlist): msg = QMessageBox() msg.setIcon(QMessageBox.Information) msg.setWindowTitle("NO ATTRIBUTES FOUND") msg.setText("NO ATTRIBUTES FOUND IN .SHP FILE. ") msg.exec_() def FindAttributes(self, filepath): return self.input_C.FindAttributes(filepath) # try: # driver = ogr.GetDriverByName('ESRI Shapefile') # shape_dataset = driver.Open(filepath) # shape_layer = shape_dataset.GetLayer() # field_names = [field.name for field in shape_layer.schema] # return field_names # except ValueError as e: # print(e) def loadImage(self): self.input_C.load_image_data() def BrowsePathDir(self): filename = QFileDialog.getExistingDirectory() self.savePath.setText(filename) # def BrowseReportPath(self): # filename = QFileDialog.getExistingDirectory() # self.ReportsavePath.setText(filename) # def BrowseImagePath(self): # filename = QFileDialog.getExistingDirectory() # self.ImgSavePath.setText(filename) def SaveModel(self): if self.SaveBtn.isChecked(): self.saveModel = 1 # self.ModelNameLabel.show() # self.ModelPathLabel.show() # self.BrowseMdlPath.show() # self.ModelSavePath.show() # self.ModelName.show() else: self.saveModel = 0 # self.ModelNameLabel.hide() # self.ModelPathLabel.hide() # self.ModelSavePath.hide() # self.BrowseMdlPath.hide() # self.ModelName.hide() # def LoadValidationDialog(self): # self.window = QtWidgets.QMainWindow() # self.ui = Ui_ValidationDialog() # self.ui.setupUi(self.window) # # MainWindow.hide() # self.window.show() def validateInput(self): msg = QMessageBox() msg.setIcon(QMessageBox.Information) msg.setWindowTitle("Validation Prompt") msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel) if not self.imagePath.text().endswith(".tif"): msg.setText("Invalid Image File. ") msg.setInformativeText("Invalid File Format") msg.setDetailedText("The details are as follows: Either Image file is not selected or does not contain .tif extension") msg.exec_() self.window = QtWidgets.QMainWindow() self.ui = Ui_ClassificationWindow() self.ui.setupUi(self.window) return if not self.trainPath.text().endswith(".shp"): msg.setText("Invalid Training Data File. ") msg.setInformativeText("Invalid File Format") msg.setDetailedText("The details are as follows: Either Training file is not selected or does not contain .shp extension") msg.exec_() self.window = QtWidgets.QMainWindow() self.ui = Ui_ClassificationWindow() self.ui.setupUi(self.window) return if not self.validPath.text().endswith(".shp"): msg.setText("Invalid Validation Data File. ") msg.setInformativeText("Invalid File Format") msg.setDetailedText("The details are as follows: Either Validation file is not selected or does not contain .shp extension") msg.exec_() self.window = QtWidgets.QMainWindow() self.ui = Ui_ClassificationWindow() self.ui.setupUi(self.window) return if self.validationAttributes.currentText() == "" or self.trainingAttributes.currentText() == "": msg.setText("Please select the attributes. ") msg.setInformativeText("Attribute not selected") msg.setDetailedText("The details are as follows: Select same attribute from Training and Validation File") msg.exec_() self.window = QtWidgets.QMainWindow() self.ui = Ui_ClassificationWindow() self.ui.setupUi(self.window) return if not self.validationAttributes.currentText() == "" or self.trainingAttributes.currentText() == "": if self.validationAttributes.currentText() != self.trainingAttributes.currentText(): msg.setText("Invalid Data. ") msg.setInformativeText("Please see details for Error Message") msg.setDetailedText( "The details are as follows: Select same attribute from Training and Validation File") msg.exec_() self.window = QtWidgets.QMainWindow() self.ui = Ui_ClassificationWindow() self.ui.setupUi(self.window) return if self.ProjectName.text() == "": msg.setText("Please enter a suitable name for your project. ") msg.setInformativeText("Project name missing") msg.exec_() self.window = QtWidgets.QMainWindow() self.ui = Ui_ClassificationWindow() self.ui.setupUi(self.window) return if self.savePath.text() == "": msg = QMessageBox() msg.setIcon(QMessageBox.Information) msg.setWindowTitle("Validation Prompt") msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel) msg.setText("Please select path for Results. ") msg.setInformativeText("Results path missing") msg.exec_() self.window = QtWidgets.QMainWindow() self.ui = Ui_ClassificationWindow() self.ui.setupUi(self.window) return # if self.ImgName.text() == "": # msg.setText("Please enter a suitable name for Image result. ") # msg.setInformativeText("Image name missing") # msg.exec_() # self.window = QtWidgets.QMainWindow() # self.ui = Ui_ClassificationWindow() # self.ui.setupUi(self.window) # return # # if self.ImgSavePath.text() == "": # msg.setText("Please select path for Image result. ") # msg.setInformativeText("Image path missing") # msg.exec_() # self.window = QtWidgets.QMainWindow() # self.ui = Ui_ClassificationWindow() # self.ui.setupUi(self.window) # return # if self.saveModel == 1 and (self.ModelName.text() == "" or self.ModelSavePath.text() == ""): # msg.setText("Please enter name and Path for saving model. ") # msg.setInformativeText("Either Model Name of Path not entered") # msg.exec_() # self.window = QtWidgets.QMainWindow() # self.ui = Ui_ClassificationWindow() # self.ui.setupUi(self.window) # return else: self.Run() def Run(self): try: import sys, os try: ROOT_DIR = os.path.abspath(os.curdir) PROJ_DIR = ROOT_DIR + "\PROJ" os.environ['PROJ_LIB'] = PROJ_DIR if 'PROJ_LIB' in os.environ: print('env variable : PROJ_LIB set...') else: print('Couldnt set env variable : PROJ_LIB.Please set Manually ') except Exception as ex: print("Could not set env_var") print("The process has started.... This will take few minutes") if self.treesNo.text() == "": trees = 100 else: trees = int(self.treesNo.text()) self.rf_C.set_RF_trees = trees print (self.savePath.text()) dir_path = self.savePath.text()+"\\"+self.ProjectName.text() if os.path.isdir(dir_path): msg = QMessageBox() msg.setIcon(QMessageBox.Information) msg.setWindowTitle("Validation Prompt") msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel) msg.setText("A folder nammed "+ self.ProjectName.text()+" already exists. ") msg.setInformativeText("Please move the folder and try again") msg.exec_() self.window = QtWidgets.QMainWindow() self.ui = Ui_ClassificationWindow() self.ui.setupUi(self.window) return else: os.mkdir(dir_path) # doc_path = dir_path + "/" + str(self.ProjectName.text()) +"_REPORT.pdf" print(doc_path) # doc = self.rt.build_doc(doc_path,"Random Forrest Classification Report") LoadingImages = self.input_C.load_image_data() img_ds = LoadingImages[0] img = LoadingImages[1] # # self.input_C.set_training_attr(self.trainingAttributes.currentText()) self.input_C.set_validation_attr(self.validationAttributes.currentText()) TrainingData = self.input_C.load_train_data(img_ds,"Classification") ## roi ValidationData = self.input_C.load_validation_data(img_ds) ##roi_V classifier_output = self.rf_C.rf_classifier(img, img_ds, TrainingData, trees) model = classifier_output[0] importance = classifier_output[1] table_M = classifier_output[2] ob_score = classifier_output[3] if self.SaveBtn.isChecked() == True: model_path = dir_path model_path += "/" + str(self.ProjectName.text()) + "_MODEL.sav" self.rf_C.save_model(model, model_path) else: model_path = "Model not saved" # class_prediction = self.rf_C.rf_prediction(img, model) imgSavePath = dir_path imgSavePath += "/"+ (self.ProjectName.text())+"_IMG.tif" self.rf_C.save_result_image(img_ds, img, class_prediction, imgSavePath) doc = self.rt.Clf_prepare_report(doc, img, TrainingData, importance, table_M, trees, ob_score, class_prediction, ValidationData,self.trainingAttributes.currentText(),dir_path) doc = self.rf_C.validation_processing(ValidationData, class_prediction, TrainingData, doc,model_path,imgSavePath,dir_path) doc.save() msg = QMessageBox() msg.setIcon(QMessageBox.Information) msg.setWindowTitle("Complete!!!") msg.setText("Processing Done. Report ready to preview ") msg.exec_() except ValueError: logging.error("Exception occurred", exc_info=True) print("Classification Failed...")
class Baller(Entity): def __init__(self, pos): Entity.__init__(self, pos, 0.5, 2) self.stats = Stats() self.input = InputController(self) self.motion = MotionController(self) self.action = ActionController(self) self.color = 0xAA0077 self.net = -1 def land(self, pos): def onGround(baller): # TODO: traveling baller.input.enable(True) baller.capsule.pos.y = 0 self.motion.moveToPosition(pos, 0.5) self.motion.afterMoveDo(onGround) def jump(self, velocity): self.input.enable(False) pos = Vec3d(self.pos + velocity) duration = 0.5 self.motion.moveToPosition( self.pos + AXIS_VECTORS[1] * self._getJumpHeight() + velocity * duration, duration) self.motion.afterMoveDo(lambda baller: self.land(pos)) def _getJumpHeight(self): return 1.5 def obtainBall(self): pass @property def hasBall(self): return self.game.ball.holder == self def draw(self, canvas, screenPos, scale): width = 50. * scale height = 100. * scale if not (0 < screenPos[0] < 700 and 0 < screenPos[1] < 400): screenPos.clamp((15, 685, 15, 400)) width = 30 height = 30 pygame.draw.ellipse(canvas, self.color, (screenPos[0] - width / 2, screenPos[1] - height, width, height), 5) return shadowPos = self.game.camera.toScreen(Vec3d(self.pos.x, 0, self.pos.z)) shadowWidth = 80. * scale shadowHeight = 30. * scale pygame.draw.ellipse(canvas, 0x000000, (shadowPos[0] - shadowWidth / 2, shadowPos[1] - shadowHeight / 2, shadowWidth, shadowHeight)) pygame.draw.rect(canvas, self.color, (screenPos[0] - width / 2, screenPos[1] - height, width, height)) def update(self, delta): self.input.update(delta) self.motion.update(delta)
def createInputController(self, Controller, InputReader): return InputController( InputReader, ExceptionHandler(InputReader.read, [GameResetException()], Controller.reset))
def fourier_series(input_: InputController, num_vectors: int = 500) -> FourierSeries: vectors: Dict[int, complex] = {} for n in range(-num_vectors, num_vectors + 1): vectors[n] = integral(lambda t: input_.input(t) * cmath.exp(-n * 2 * cmath.pi * 1j * t), input_.bounds(), 0.001) return FourierSeries(vectors)
def __init__(self, glade_xml, model_factory, app): self.model_factory = model_factory self.main_win = app self.width = 0 self.height = 0 self.glade_xml = glade_xml ##Set up list structure self.treeview = self.glade_xml.get_widget('treeview1') self.treemodel = self.treeview.get_model() self.treemodel = gtk.TreeStore (gobject.TYPE_STRING, gobject.TYPE_INT, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_PYOBJECT) self.treeview.set_model(self.treemodel) self.treeview.set_headers_visible(False) self.input_controller = InputController(self.reset_tree_model, self.treeview, self.model_factory, self.glade_xml) #Change Listener selection = self.treeview.get_selection() selection.connect('changed', self.on_tree_selection_changed) #self.treeview.connect('expand-collapse-cursor-row',self.on_row_expand_collapse) #self.treeview.connect('row-collapsed',self.on_row_expand_collapse) self.icon_ellipse_hashtable = {} renderer1 = gtk.CellRendererText() column1 = gtk.TreeViewColumn("Volumes",renderer1,markup=0) self.treeview.append_column(column1) #Time to set up draw area window1 = self.glade_xml.get_widget("drawingarea1") window1.set_size_request(700, 500) window2 = self.glade_xml.get_widget("drawingarea2") window2.set_size_request(700, 500) window3 = self.glade_xml.get_widget("drawingarea3") window3.set_size_request(700, 500) window4 = self.glade_xml.get_widget("drawingarea4") window4.set_size_request(700, 500) pr_upper = Properties_Renderer(window3, window3.window) #pr_lower = Properties_Renderer(window4, window4.window) self.display_view = DisplayView(self.input_controller.register_highlighted_sections, window1, pr_upper, None, None) #self.display_view = DisplayView(self.input_controller.register_highlighted_sections, window1, pr_upper, window2, pr_lower) self.glade_xml.get_widget('best_fit_button').connect('clicked', self.on_best_fit) self.glade_xml.get_widget('zoom_in_button').connect('clicked', self.on_zoom_in) self.glade_xml.get_widget('zoom_out_button').connect('clicked', self.on_zoom_out) self.glade_xml.get_widget('viewport1').connect('size-allocate', self.on_resize_drawing_area) self.on_best_fit(None) self.glade_xml.get_widget('zoom_box').set_sensitive(False) # set up mirror copy progress self.mirror_sync_progress = MirrorSyncProgress(self.glade_xml.get_widget('messages_vbox')) ############################# ##Highly experimental self.box = self.glade_xml.get_widget('vbox12') self.uninit_panel = self.glade_xml.get_widget('uninit_panel') self.uninit_panel.hide() self.unalloc_panel = self.glade_xml.get_widget('unalloc_panel') self.unalloc_panel.hide() self.phys_vol_view_panel = self.glade_xml.get_widget('phys_vol_view_panel') self.phys_vol_view_panel.hide() self.log_vol_view_panel = self.glade_xml.get_widget('log_vol_view_panel') self.log_vol_view_panel.hide() self.on_rm_select_lvs_button = self.glade_xml.get_widget('on_rm_select_lvs') self.phys_panel = self.glade_xml.get_widget('phys_panel') self.phys_panel.hide() self.log_panel = self.glade_xml.get_widget('log_panel') self.log_panel.hide() self.prepare_tree() model = self.treeview.get_model() vgs = self.model_factory.get_VGs() if len(vgs) > 0: model.foreach(self.check_tree_items, [vgs[0].get_name()]) else: unallocs = self.model_factory.query_unallocated() if len(unallocs) > 0: model.foreach(self.check_tree_items, ['', '', unallocs[0].get_path()]) else: uninits = self.model_factory.query_uninitialized() if len(uninits) > 0: model.foreach(self.check_tree_items, ['', '', uninits[0].get_path()])
class Ui_PLSRWindow(object): input_C = InputController() PLSR_C = PLSRController() rt = ReportModule() def setupUi(self, PLSR_Window): PLSR_Window.setObjectName("PLSR_Window") PLSR_Window.resize(886, 725) self.centralwidget = QtWidgets.QWidget(PLSR_Window) self.centralwidget.setObjectName("centralwidget") self.BrowsePath = QtWidgets.QPushButton(self.centralwidget) self.BrowsePath.setGeometry(QtCore.QRect(410, 480, 93, 31)) self.BrowsePath.setObjectName("BrowsePath") self.TrainData_label = QtWidgets.QLabel(self.centralwidget) self.TrainData_label.setGeometry(QtCore.QRect(30, 250, 131, 20)) self.TrainData_label.setObjectName("TrainData_label") self.ImgPth_Btn = QtWidgets.QPushButton(self.centralwidget) self.ImgPth_Btn.setGeometry(QtCore.QRect(390, 200, 93, 31)) self.ImgPth_Btn.setObjectName("ImgPth_Btn") self.savePath = QtWidgets.QLineEdit(self.centralwidget) self.savePath.setGeometry(QtCore.QRect(50, 480, 321, 31)) self.savePath.setObjectName("savePath") self.PathLabel = QtWidgets.QLabel(self.centralwidget) self.PathLabel.setGeometry(QtCore.QRect(50, 450, 131, 20)) self.PathLabel.setObjectName("PathLabel") self.attr_btn = QtWidgets.QPushButton(self.centralwidget) self.attr_btn.setGeometry(QtCore.QRect(700, 230, 93, 31)) self.attr_btn.setObjectName("attr_btn") self.line = QtWidgets.QFrame(self.centralwidget) self.line.setGeometry(QtCore.QRect(10, 390, 861, 16)) self.line.setFrameShape(QtWidgets.QFrame.HLine) self.line.setFrameShadow(QtWidgets.QFrame.Sunken) self.line.setObjectName("line") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setEnabled(True) self.label.setGeometry(QtCore.QRect(260, 30, 521, 61)) font = QtGui.QFont() font.setPointSize(23) font.setBold(False) font.setWeight(50) self.label.setFont(font) self.label.setObjectName("label") self.ImgPath_label = QtWidgets.QLabel(self.centralwidget) self.ImgPath_label.setGeometry(QtCore.QRect(30, 170, 131, 20)) self.ImgPath_label.setObjectName("ImgPath_label") self.SaveBtn = QtWidgets.QRadioButton(self.centralwidget) self.SaveBtn.setGeometry(QtCore.QRect(750, 460, 111, 21)) self.SaveBtn.setObjectName("SaveBtn") self.tranPath_Btn = QtWidgets.QPushButton(self.centralwidget) self.tranPath_Btn.setGeometry(QtCore.QRect(390, 280, 93, 31)) self.tranPath_Btn.setObjectName("tranPath_Btn") self.ReportNameLabel = QtWidgets.QLabel(self.centralwidget) self.ReportNameLabel.setGeometry(QtCore.QRect(50, 540, 131, 20)) self.ReportNameLabel.setObjectName("ReportNameLabel") self.ImgPath = QtWidgets.QLineEdit(self.centralwidget) self.ImgPath.setGeometry(QtCore.QRect(30, 200, 311, 31)) self.ImgPath.setObjectName("ImgPath") self.ProjectName = QtWidgets.QLineEdit(self.centralwidget) self.ProjectName.setGeometry(QtCore.QRect(50, 570, 221, 31)) self.ProjectName.setObjectName("ProjectName") self.RunBtn = QtWidgets.QPushButton(self.centralwidget) self.RunBtn.setGeometry(QtCore.QRect(670, 310, 121, 41)) self.RunBtn.setObjectName("RunBtn") self.tranData_Path = QtWidgets.QLineEdit(self.centralwidget) self.tranData_Path.setGeometry(QtCore.QRect(30, 280, 311, 31)) self.tranData_Path.setObjectName("tranData_Path") self.attributes = QtWidgets.QComboBox(self.centralwidget) self.attributes.setGeometry(QtCore.QRect(640, 180, 151, 31)) self.attributes.setObjectName("attributes") PLSR_Window.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(PLSR_Window) self.menubar.setGeometry(QtCore.QRect(0, 0, 886, 26)) self.menubar.setObjectName("menubar") PLSR_Window.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(PLSR_Window) self.statusbar.setObjectName("statusbar") PLSR_Window.setStatusBar(self.statusbar) self.ImgPth_Btn.clicked.connect(self.openImagePathDialog) self.attr_btn.clicked.connect(self.Get_TrainAttribute) self.tranPath_Btn.clicked.connect(self.openTrainingFileDialog) self.BrowsePath.clicked.connect(self.BrowsePathDir) self.RunBtn.clicked.connect(self.validateInput) self.retranslateUi(PLSR_Window) QtCore.QMetaObject.connectSlotsByName(PLSR_Window) def retranslateUi(self, PLSR_Window): _translate = QtCore.QCoreApplication.translate PLSR_Window.setWindowTitle(_translate("PLSR_Window", "PLSR_Window")) self.BrowsePath.setText(_translate("PLSR_Window", "Browse")) self.TrainData_label.setText( _translate("PLSR_Window", "Training Data Path")) self.ImgPth_Btn.setText(_translate("PLSR_Window", "Browse")) self.PathLabel.setText(_translate("PLSR_Window", "Results Directory")) self.attr_btn.setText(_translate("PLSR_Window", "Get attributes")) self.label.setText(_translate("PLSR_Window", "PLSR Regression - LOOCV")) self.ImgPath_label.setText(_translate("PLSR_Window", "Image Path")) self.SaveBtn.setText(_translate("PLSR_Window", "Save Model")) self.tranPath_Btn.setText(_translate("PLSR_Window", "Browse")) self.ReportNameLabel.setText(_translate("PLSR_Window", "Project Name")) self.RunBtn.setText(_translate("PLSR_Window", "Run")) def openImagePathDialog(self): filename = QFileDialog.getOpenFileName() self.ImgPath.setText(filename[0]) self.input_C.set_img_path(filename[0]) def openTrainingFileDialog(self): filename = QFileDialog.getOpenFileName() self.tranData_Path.setText(filename[0]) self.input_C.set_training_path(filename[0]) def Get_TrainAttribute(self): if not self.tranData_Path.text().endswith(".shp"): msg = QMessageBox() msg.setIcon(QMessageBox.Information) msg.setWindowTitle("Wrong Selection") msg.setText( "Please select correct file with .shp extension to get attributes. " ) msg.exec_() return else: attlist = self.FindAttributes(self.tranData_Path.text()) if (attlist): self.attributes.addItems(attlist) if not (attlist): msg = QMessageBox() msg.setIcon(QMessageBox.Information) msg.setWindowTitle("NO ATTRIBUTES FOUND") msg.setText("NO ATTRIBUTES FOUND IN .SHP FILE. ") msg.exec_() def FindAttributes(self, filepath): return self.input_C.FindAttributes(filepath) def BrowsePathDir(self): filename = QFileDialog.getExistingDirectory() self.savePath.setText(filename) def validateInput(self): msg = QMessageBox() msg.setIcon(QMessageBox.Information) msg.setWindowTitle("Validation Prompt") msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel) if not self.ImgPath.text().endswith(".tif"): msg.setText("Invalid Image File. ") msg.setInformativeText("Invalid File Format") msg.setDetailedText( "The details are as follows: Either Image file is not selected or does not contain .tif extension" ) msg.exec_() self.window = QtWidgets.QMainWindow() self.ui = Ui_PLSRWindow() self.ui.setupUi(self.window) return if not self.tranData_Path.text().endswith(".shp"): msg.setText("Invalid Training Data File. ") msg.setInformativeText("Invalid File Format") msg.setDetailedText( "The details are as follows: Either Training file is not selected or does not contain .shp extension" ) msg.exec_() self.window = QtWidgets.QMainWindow() self.ui = Ui_PLSRWindow() self.ui.setupUi(self.window) return if self.attributes.currentText() == "": msg.setText("Please select the attribute. ") msg.setInformativeText("Attribute not selected") msg.setDetailedText( "The details are as follows: Select attribute from Training File" ) msg.exec_() self.window = QtWidgets.QMainWindow() self.ui = Ui_PLSRWindow() self.ui.setupUi(self.window) return if self.ProjectName.text() == "": msg.setText("Please enter a suitable name for your project. ") msg.setInformativeText("project name missing") msg.exec_() self.window = QtWidgets.QMainWindow() self.ui = Ui_PLSRWindow() self.ui.setupUi(self.window) return if self.savePath.text() == "": msg.setText("Please select path for project. ") msg.setInformativeText("project path missing") msg.exec_() self.window = QtWidgets.QMainWindow() self.ui = Ui_PLSRWindow() self.ui.setupUi(self.window) return else: self.Run() def Run(self): try: import sys, os try: ROOT_DIR = os.path.abspath(os.curdir) PROJ_DIR = ROOT_DIR + "\PROJ" os.environ['PROJ_LIB'] = PROJ_DIR if 'PROJ_LIB' in os.environ: print('env variable : PROJ_LIB set...') else: print( 'Couldnt set env variable : PROJ_LIB.Please set Manually ' ) except Exception as ex: print("Could not set env_var") log_format = "%(asctime)s::%(levelname)s::%(name)s::" \ "%(filename)s::%(lineno)d::%(message)s" logging.basicConfig(filename='app.log', filemode='w', level=logging.DEBUG, format=log_format) print("The process has started.... This will take few minutes") print(self.savePath.text()) dir_path = self.savePath.text() + "\\" + self.ProjectName.text() if os.path.isdir(dir_path): msg = QMessageBox() msg.setIcon(QMessageBox.Information) msg.setWindowTitle("Validation Prompt") msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel) msg.setText("A folder nammed " + self.ProjectName.text() + " already exists. ") msg.setInformativeText("Please move the folder and try again") msg.exec_() self.window = QtWidgets.QMainWindow() self.ui = Ui_PLSRWindow() self.ui.setupUi(self.window) return else: os.mkdir(dir_path) reportpath = dir_path reportpath += "/" + str(self.ProjectName.text()) + "_REPORT.pdf" prediction_map = dir_path prediction_map += "/" + str(self.ProjectName.text()) + "_IMG.tif" if self.SaveBtn.isChecked() == True: modelsavepath = dir_path + "/" + self.ProjectName.text( ) + "_MODEL.sav" else: modelsavepath = "Model not saved" try: doc = self.rt.build_doc(reportpath, "PLSR Sparse Regression") except Exception as e: print(e) logging.debug("exception occurred " + e, exc_info=True) logging.debug("exception occurred", exc_info=True) loading_images = self.input_C.load_image_data() # print(LoadingImages) # print("Loading image ok") img_ds = loading_images[0] img = loading_images[1] # print(img_ds) # print("img_ds ok") # print(img) # print("img ok") print(self.attributes.currentText()) self.input_C.set_training_attr(self.attributes.currentText()) logging.debug("exception occurred", exc_info=True) # print(self.attributes.currentText() +" xxx OK") train_data = self.input_C.load_train_data(img_ds, "Regression") ## roi logging.debug("Exception occurred", exc_info=True) X = img[train_data > 0, :] # print("printing X") # print(X.shape) y = train_data[train_data > 0] logging.debug("Exception occurred", exc_info=True) # print("printing y") # print(y) # print("printing y--- ok") features = pd.DataFrame(X) logging.debug("Exception occurred", exc_info=True) band_names = [] for i in range(X.shape[1]): # for i in range(0,2500): nband = "Band_" + str(i + 1) band_names.append(nband) features.columns = band_names print('The shape of our features is:', features.shape) print('The number of Spectra is:', features.shape[0]) print('The number of bands is:', features.shape[1]) # print("........................ ok here ...................") features['value'] = y features.head() # print('features.....') # print(features) logging.debug("Exception occurred", exc_info=True) # Labels are the values we want to predict labels = np.array(features['value']) # Remove the labels from the features # axis 1 refers to the columns features = features.drop('value', axis=1) # Saving feature names for later use feature_list = list(features.columns) # Convert to numpy array features = np.array(features) print('Training Features Shape: ', features.shape) print('Training Labels Shape: ', labels.shape) try: pls_opt, mse, msemin, component, y, y_c, y_cv, score_c, score_cv = self.PLSR_C.PLSR_Regressor( features, X, y) # print(traceback.print_exc()) except Exception as e: print(traceback.print_exc()) logging.debug("exception occurred", exc_info=True) logging.debug(traceback.print_exc()) print("regressor error") print(e) logging.exception("Exception occurred", exc_info=True) #print("......ok ....... regressor done") importance = self.PLSR_C.PLSR_vip(pls_opt) logging.error("Exception occurred", exc_info=True) cols, rows, doc, prediction, prediction_ = self.PLSR_C.PLSR_Predict( doc, score_cv, importance, img, y_c, y, y_cv, labels, pls_opt) logging.error("Exception occurred", exc_info=True) importance = self.PLSR_C.PLSR_vip(pls_opt) logging.error("Exception occurred", exc_info=True) self.PLSR_C.PLSR_SaveImage(prediction_map, img, img_ds, prediction) logging.error("Exception occurred", exc_info=True) if self.SaveBtn.isChecked() == True: self.PLSR_C.PLSR_SaveModel(pls_opt, modelsavepath) logging.error("Exception occurred", exc_info=True) rp_param = PLSRHelper(train_data, X, mse, msemin, component, y, y_c, y_cv, self.attributes.currentText(), importance, prediction, dir_path, reportpath, prediction_map, modelsavepath, self.ImgPath.text(), self.tranData_Path.text()) doc = self.rt.make_plsr_report(doc, img, dir_path, rp_param) logging.error("Exception occurred", exc_info=True) doc.save() msg = QMessageBox() msg.setIcon(QMessageBox.Information) msg.setWindowTitle("Complete!!!") msg.setText("Processing Done. Report ready to preview ") msg.exec_() except TypeError as e: logging.exception("Exception occurred", exc_info=True) print(e) sys.exit(0)
class Volume_Tab_View: def __init__(self, glade_xml, model_factory, app): self.model_factory = model_factory self.main_win = app self.width = 0 self.height = 0 self.glade_xml = glade_xml self.try_not_best_fit = True ##Set up list structure self.treeview = self.glade_xml.get_widget('treeview1') self.treemodel = self.treeview.get_model() self.treemodel = gtk.TreeStore(gobject.TYPE_STRING, gobject.TYPE_INT, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_PYOBJECT) self.treeview.set_model(self.treemodel) self.treeview.set_headers_visible(False) self.input_controller = InputController(self.reset_tree_model, self.treeview, self.model_factory, self.glade_xml) #Change Listener selection = self.treeview.get_selection() selection.connect('changed', self.on_tree_selection_changed) #self.treeview.connect('expand-collapse-cursor-row',self.on_row_expand_collapse) #self.treeview.connect('row-collapsed',self.on_row_expand_collapse) self.icon_ellipse_hashtable = {} renderer1 = gtk.CellRendererText() column1 = gtk.TreeViewColumn("Volumes", renderer1, markup=0) self.treeview.append_column(column1) #Time to set up draw area window1 = self.glade_xml.get_widget("drawingarea1") window1.set_size_request(700, 500) window2 = self.glade_xml.get_widget("drawingarea2") window2.set_size_request(700, 500) window3 = self.glade_xml.get_widget("drawingarea3") window3.set_size_request(700, 500) window4 = self.glade_xml.get_widget("drawingarea4") window4.set_size_request(700, 500) pr_upper = Properties_Renderer(window3, window3.window) #pr_lower = Properties_Renderer(window4, window4.window) self.display_view = DisplayView( self.input_controller.register_highlighted_sections, window1, pr_upper, None, None) #self.display_view = DisplayView(self.input_controller.register_highlighted_sections, window1, pr_upper, window2, pr_lower) self.glade_xml.get_widget('best_fit_button').connect( 'clicked', self.on_best_fit) self.glade_xml.get_widget('zoom_in_button').connect( 'clicked', self.on_zoom_in) self.glade_xml.get_widget('zoom_out_button').connect( 'clicked', self.on_zoom_out) self.glade_xml.get_widget('viewport1').connect( 'size-allocate', self.on_resize_drawing_area) self.on_best_fit(None) self.glade_xml.get_widget('zoom_box').set_sensitive(False) # set up mirror copy progress self.mirror_sync_progress = MirrorSyncProgress( self.glade_xml.get_widget('messages_vbox')) ############################# ##Highly experimental self.box = self.glade_xml.get_widget('vbox12') self.uninit_panel = self.glade_xml.get_widget('uninit_panel') self.uninit_panel.hide() self.unalloc_panel = self.glade_xml.get_widget('unalloc_panel') self.unalloc_panel.hide() self.phys_vol_view_panel = self.glade_xml.get_widget( 'phys_vol_view_panel') self.phys_vol_view_panel.hide() self.log_vol_view_panel = self.glade_xml.get_widget( 'log_vol_view_panel') self.log_vol_view_panel.hide() self.on_rm_select_lvs_button = self.glade_xml.get_widget( 'on_rm_select_lvs') self.phys_panel = self.glade_xml.get_widget('phys_panel') self.phys_panel.hide() self.log_panel = self.glade_xml.get_widget('log_panel') self.log_panel.hide() self.prepare_tree() model = self.treeview.get_model() vgs = self.model_factory.get_VGs() if len(vgs) > 0: model.foreach(self.check_tree_items, [vgs[0].get_name()]) lvs_count = 0 for vg in vgs: lvs_count += len(vg.lvs) if (lvs_count < MAX_LV_FOR_BESTFIT): self.try_not_best_fit = False else: self.glade_xml.get_widget('best_fit_button').set_sensitive( False) else: unallocs = self.model_factory.query_unallocated() if len(unallocs) > 0: model.foreach(self.check_tree_items, ['', '', unallocs[0].get_path()]) else: uninits = self.model_factory.query_uninitialized() if len(uninits) > 0: model.foreach(self.check_tree_items, ['', '', uninits[0].get_path()]) # format is [vgname, lvpath, pvpath] - put '' if none def reset_tree_model(self, *in_args): self.prepare_tree() args = [] for arg in in_args: args.append(arg) model = self.treeview.get_model() model.foreach(self.check_tree_items, args) def check_tree_items(self, model, path, iter, *args): # return True to stop foreach, False to continue if len(args) == 0: return True # don't go any further args_internal = [] for arg in args[0]: args_internal.append(arg) while len(args_internal) < 3: args_internal.append('') vgname = args_internal[0] lvpath = args_internal[1] pvpath = args_internal[2] selection = self.treeview.get_selection() type = model.get_value(iter, TYPE_COL) if type == VG_PHYS_TYPE: if vgname != '' and lvpath == '' and pvpath != '': vg = model.get_value(iter, OBJ_COL) if vgname == vg.get_name(): self.treeview.expand_to_path(path) selection.select_path(path) return True elif type == VG_LOG_TYPE: if vgname != '' and lvpath != '' and pvpath == '': vg = model.get_value(iter, OBJ_COL) if vgname == vg.get_name(): self.treeview.expand_to_path(path) selection.select_path(path) return True elif type == VG_TYPE: if vgname != '' and lvpath == '' and pvpath == '': vg = model.get_value(iter, OBJ_COL) if vgname == vg.get_name(): self.treeview.expand_to_path(path) selection.select_path(path) return True elif type == LOG_TYPE: if vgname == '' and lvpath != '' and pvpath == '': lv = model.get_value(iter, OBJ_COL) if lvpath == lv.get_path(): self.treeview.expand_to_path(path) selection.select_path(path) return True elif type == PHYS_TYPE or type == UNALLOCATED_TYPE or type == UNINITIALIZED_TYPE: if vgname == '' and lvpath == '' and pvpath != '': pv = model.get_value(iter, OBJ_COL) if pvpath in pv.get_paths(): self.treeview.expand_to_path(path) selection.select_path(path) return True return False def prepare_tree(self): treemodel = self.treeview.get_model() treemodel.clear() self.model_factory.reload() self.mirror_sync_progress.initiate() vg_list = self.model_factory.get_VGs() if len(vg_list) > 0: vg_iter = treemodel.append(None) vg_string = "<span size=\"11000\"><b>" + VOLUME_GROUPS + "</b></span>" treemodel.set(vg_iter, NAME_COL, vg_string, TYPE_COL, UNSELECTABLE_TYPE) self.__sort_list_by_get_name_fcn(vg_list) for vg in vg_list: vg_child_iter = treemodel.append(vg_iter) vg_name = vg.get_name() vg_name_marked = vg_name if vg.clustered(): vg_name_marked += '<span foreground="#FF00FF"> (' + _( 'Clustered VG') + ')</span>' treemodel.set(vg_child_iter, NAME_COL, vg_name_marked, TYPE_COL, VG_TYPE, OBJ_COL, vg) phys_iter = treemodel.append(vg_child_iter) log_iter = treemodel.append(vg_child_iter) pview_string = "<span foreground=\"#ED1C2A\"><i> " + PHYSICAL_VIEW + "</i></span>" treemodel.set(phys_iter, NAME_COL, pview_string, TYPE_COL, VG_PHYS_TYPE, PATH_COL, vg_name, OBJ_COL, vg) lview_string = "<span foreground=\"#43ACF6\"><i> " + LOGICAL_VIEW + "</i></span>" treemodel.set(log_iter, NAME_COL, lview_string, TYPE_COL, VG_LOG_TYPE, PATH_COL, vg_name, OBJ_COL, vg) pv_list = vg.get_pvs().values() grouped_dir, ungrouped_list = self.__group_by_device(pv_list) grouped_dir_sorted = grouped_dir.keys() grouped_dir_sorted.sort() for main_dev in grouped_dir_sorted: dev_iter = treemodel.append(phys_iter) pvs = grouped_dir[main_dev] devnames = pvs[0].getDevnames() devnames_str = devnames[0] for devname in devnames[1:]: devnames_str = devnames_str + ', ' + devname if len(devnames) > 1: devnames_str = str( pvs[0].getMultipath()) + ' [' + devnames_str + ']' treemodel.set(dev_iter, NAME_COL, devnames_str, TYPE_COL, UNSELECTABLE_TYPE) for pv in pvs: iter = treemodel.append(dev_iter) phys_string = "<span foreground=\"#ED1C2A\">" + pv.get_name( ) + "</span>" treemodel.set(iter, NAME_COL, phys_string, TYPE_COL, PHYS_TYPE, PATH_COL, pv.get_path(), OBJ_COL, pv) for pv in ungrouped_list: iter = treemodel.append(phys_iter) phys_string = "<span foreground=\"#ED1C2A\">" + pv.get_name( ) + "</span>" treemodel.set(iter, NAME_COL, phys_string, TYPE_COL, PHYS_TYPE, PATH_COL, pv.get_path(), OBJ_COL, pv) lv_list = vg.get_lvs().values() self.__sort_list_by_get_name_fcn(lv_list) for lv in lv_list: if lv.is_used(): iter = treemodel.append(log_iter) log_string = "<span foreground=\"#43ACF6\">" + lv.get_name( ) + "</span>" treemodel.set(iter, NAME_COL, log_string, TYPE_COL, LOG_TYPE, PATH_COL, lv.get_path(), SIMPLE_LV_NAME_COL, lv.get_name(), OBJ_COL, lv) #Expand if there are entries self.treeview.expand_row(treemodel.get_path(vg_iter), False) unalloc_list = self.model_factory.query_unallocated() if len(unalloc_list) > 0: unallocated_iter = treemodel.append(None) unalloc_string = "<span size=\"11000\"><b>" + UNALLOCATED_VOLUMES + "</b></span>" treemodel.set(unallocated_iter, NAME_COL, unalloc_string, TYPE_COL, UNSELECTABLE_TYPE) grouped_dir, ungrouped_list = self.__group_by_device(unalloc_list) grouped_dir_sorted = grouped_dir.keys() grouped_dir_sorted.sort() for main_dev in grouped_dir_sorted: dev_iter = treemodel.append(unallocated_iter) pvs = grouped_dir[main_dev] devnames = pvs[0].getDevnames() devnames_str = devnames[0] for devname in devnames[1:]: devnames_str = devnames_str + ', ' + devname if len(devnames) > 1: devnames_str = str( pvs[0].getMultipath()) + ' [' + devnames_str + ']' treemodel.set(dev_iter, NAME_COL, devnames_str, TYPE_COL, UNSELECTABLE_TYPE) for pv in pvs: iter = treemodel.append(dev_iter) phys_string = "<span foreground=\"#ED1C2A\">" + pv.get_name( ) + "</span>" treemodel.set(iter, NAME_COL, phys_string, TYPE_COL, UNALLOCATED_TYPE, PATH_COL, pv.get_path(), OBJ_COL, pv) for pv in ungrouped_list: iter = treemodel.append(unallocated_iter) phys_string = "<span foreground=\"#ED1C2A\">" + pv.get_path( ) + "</span>" treemodel.set(iter, NAME_COL, phys_string, TYPE_COL, UNALLOCATED_TYPE, PATH_COL, pv.get_path(), OBJ_COL, pv) uninit_list = self.model_factory.query_uninitialized() if len(uninit_list) > 0: uninitialized_iter = treemodel.append(None) uninit_string = "<span size=\"11000\"><b>" + UNINITIALIZED_ENTITIES + "</b></span>" treemodel.set(uninitialized_iter, NAME_COL, uninit_string, TYPE_COL, UNSELECTABLE_TYPE) grouped_dir, ungrouped_list = self.__group_by_device(uninit_list) grouped_dir_sorted = grouped_dir.keys() grouped_dir_sorted.sort() for main_dev in grouped_dir_sorted: dev_iter = treemodel.append(uninitialized_iter) pvs = grouped_dir[main_dev] devnames = pvs[0].getDevnames() devnames_str = devnames[0] for devname in devnames[1:]: devnames_str = devnames_str + ', ' + devname if len(devnames) > 1: devnames_str = str( pvs[0].getMultipath()) + ' [' + devnames_str + ']' treemodel.set(dev_iter, NAME_COL, devnames_str, TYPE_COL, UNSELECTABLE_TYPE) for pv in grouped_dir[main_dev]: iter = treemodel.append(dev_iter) treemodel.set(iter, NAME_COL, pv.get_name(), TYPE_COL, UNINITIALIZED_TYPE, PATH_COL, pv.get_path(), OBJ_COL, pv) for pv in ungrouped_list: iter = treemodel.append(uninitialized_iter) treemodel.set(iter, NAME_COL, pv.get_path(), TYPE_COL, UNINITIALIZED_TYPE, PATH_COL, pv.get_path(), OBJ_COL, pv) #self.treeview.expand_all() self.clear_all_buttonpanels() # returns {main_dev : [pv1, pv2, ...], ...} def __group_by_device(self, pvlist): grouped = {} ungrouped = [] for pv in pvlist: if len(pv.getDevnames()) == 0 or pv.wholeDevice(): ungrouped.append(pv) continue if pv.getDevnames()[0] in grouped.keys(): grouped[pv.getDevnames()[0]].append(pv) else: grouped[pv.getDevnames()[0]] = [pv] # sort lists for main_dev in grouped: self.__sort_list_by_get_name_fcn(grouped[main_dev]) self.__sort_list_by_get_name_fcn(ungrouped) return grouped, ungrouped def __sort_list_by_get_name_fcn(self, some_list): d = {} l = [] while len(some_list) != 0: o = some_list.pop() name = o.get_name() if name in d: d[name].append(o) else: d[name] = [o] l.append(name) l.sort() for name in l: for o in d[name]: some_list.append(o) return some_list def on_tree_selection_changed(self, *args): selection = self.treeview.get_selection() model, iter = selection.get_selected() if iter == None: self.glade_xml.get_widget('zoom_box').set_sensitive(False) self.display_view.render_no_selection() self.display_view.draw() return treepath = model.get_path(iter) self.treeview.expand_row(treepath, False) type = model.get_value(iter, TYPE_COL) if type == VG_PHYS_TYPE: self.input_controller.clear_highlighted_sections() self.clear_all_buttonpanels() self.phys_vol_view_panel.show() vg = model.get_value(iter, OBJ_COL) pv_list = vg.get_pvs().values() self.display_view.render_pvs(pv_list) self.on_best_fit(None) self.glade_xml.get_widget('zoom_box').set_sensitive(True) elif type == VG_LOG_TYPE: self.input_controller.clear_highlighted_sections() self.clear_all_buttonpanels() vg = model.get_value(iter, OBJ_COL) lv_list = vg.get_lvs().values() self.show_log_vol_view_panel(lv_list) self.display_view.render_lvs(lv_list) self.on_best_fit(None) self.glade_xml.get_widget('zoom_box').set_sensitive(True) elif type == VG_TYPE: self.clear_all_buttonpanels() self.input_controller.clear_highlighted_sections() vg = model.get_value(iter, OBJ_COL) try: self.display_view.render_vg(vg) self.on_best_fit(None) self.glade_xml.get_widget('zoom_box').set_sensitive(True) except: print "Unable to show VG because it contains features that are not supported in current version of system-config-lvm" elif type == LOG_TYPE: self.input_controller.clear_highlighted_sections() self.clear_all_buttonpanels() self.log_panel.show() lv = model.get_value(iter, OBJ_COL) self.display_view.render_lv(lv) self.on_best_fit(None) self.glade_xml.get_widget('zoom_box').set_sensitive(False) elif type == PHYS_TYPE: self.input_controller.clear_highlighted_sections() self.clear_all_buttonpanels() self.phys_panel.show() pv = model.get_value(iter, OBJ_COL) self.display_view.render_pv(pv) self.on_best_fit(None) self.glade_xml.get_widget('zoom_box').set_sensitive(True) elif type == UNALLOCATED_TYPE: self.input_controller.clear_highlighted_sections() self.clear_all_buttonpanels() self.unalloc_panel.show() pv = model.get_value(iter, OBJ_COL) self.display_view.render_unalloc_pv(pv) self.on_best_fit(None) self.glade_xml.get_widget('zoom_box').set_sensitive(False) elif type == UNINITIALIZED_TYPE: self.input_controller.clear_highlighted_sections() self.clear_all_buttonpanels() button = self.input_controller.init_entity_button uv = model.get_value(iter, OBJ_COL) if uv.initializable: button.set_sensitive(True) else: button.set_sensitive(False) self.uninit_panel.show() self.display_view.render_uninit_pv(uv) self.on_best_fit(None) self.glade_xml.get_widget('zoom_box').set_sensitive(False) else: self.input_controller.clear_highlighted_sections() self.clear_all_buttonpanels() self.display_view.render_no_selection() self.display_view.draw() self.glade_xml.get_widget('zoom_box').set_sensitive(False) def on_row_expand_collapse(self, treeview, logical, expand, openall, *params): treeview.get_model() selection = treeview.get_selection() model, iter = selection.get_selected() # if model.iter_parent(iter) == None: #Top level return True # else: # return False def show_log_vol_view_panel(self, lv_list): #This is a wrapper for self.log_vol_view_panel.show() #If the VG has no LVs, then a proxy LV is returned as an 'Unused' LV. #We do not want to allow the deletion of this unused LV. #So we'll gray out the button. self.on_rm_select_lvs_button.set_sensitive(True) if len(lv_list) == 1: if lv_list[0].is_used() == False: self.on_rm_select_lvs_button.set_sensitive(False) self.log_vol_view_panel.show() def clear_all_buttonpanels(self): self.unalloc_panel.hide() self.uninit_panel.hide() self.log_vol_view_panel.hide() self.phys_vol_view_panel.hide() self.log_panel.hide() self.phys_panel.hide() def on_best_fit(self, obj): if (self.try_not_best_fit == True): if self.display_view.display != None: self.display_view.display.respect_smallest_selectable_width( False) return self.on_resize_drawing_area(None, None) self.__set_zoom_buttons( self.display_view.set_best_fit(self.try_not_best_fit)) self.display_view.draw() def on_zoom_in(self, obj): self.__set_zoom_buttons(self.display_view.zoom_in()) self.display_view.draw() def on_zoom_out(self, obj): self.__set_zoom_buttons(self.display_view.zoom_out()) self.display_view.draw() def __set_zoom_buttons(self, (z_in, z_out)): if z_in: self.glade_xml.get_widget('zoom_in_button').set_sensitive(True) else: self.glade_xml.get_widget('zoom_in_button').set_sensitive(False) if z_out: self.glade_xml.get_widget('zoom_out_button').set_sensitive(True) else: self.glade_xml.get_widget('zoom_out_button').set_sensitive(False)
class MainController: def __init__(self): self.input_controller = InputController() self.original_formulas_file = sys.argv[1] self.researched_formulas_file = sys.argv[2] self.optimized_original_file = sys.argv[3] self.optimized_researched_file = sys.argv[4] self.result_of_testing_original_file = sys.argv[5] self.result_of_testing_researched_file = sys.argv[6] self.analyzer_results = sys.argv[7] def start(self): self.input_controller.fault_tolerance_request() self.input_controller.initial_groups_request() self.input_controller.blocked_vector_request() tested_faults = len(max(self.input_controller.initial_groups, key=len)) processors = Processors(self.input_controller.initial_groups) generator = FormulasGenerator(processors, self.input_controller.fault_tolerance) selector = Selector(self.input_controller.blocked_vectors) tester = PrTester(processors) blocker = Blocker(self.input_controller.blocked_vectors, tester, selector, processors) ''' For original formulas ''' generator.generate(self.input_controller.initial_groups, self.original_formulas_file) optimizer_original = Optimizer(self.input_controller.fault_tolerance, processors, self.optimized_original_file) optimizer_original.optimize(generator.origin_formulas_arr) blocking_original_formulas = blocker.block_original( selector.select_group(optimizer_original.result_formulas)) tester.test(self.result_of_testing_original_file, blocking_original_formulas, tested_faults, self.input_controller.fault_tolerance) ''' For researched formulas ''' self.input_controller.researched_way_request() if self.input_controller.researched_way: generator.generate( processors.form_groups_according_to_blocked_vector( self.input_controller.blocked_vectors), self.researched_formulas_file) optimizer_researched = Optimizer( self.input_controller.fault_tolerance, processors, self.optimized_researched_file) optimizer_researched.optimize(generator.origin_formulas_arr) #selector.select_group(optimizer_researched.result_formulas) blocking_researched_formulas = blocker.block_researched( selector.select_group(optimizer_researched.result_formulas)) tester.test(self.result_of_testing_researched_file, blocking_researched_formulas, tested_faults, self.input_controller.fault_tolerance) self.input_controller.repeat_request() return self.input_controller.repeat
def __init__(self, owner): InputController.__init__(self, owner) self.turn = 0
def __init__(self, controller_spec, keyboard_layout): InputController.__init__(self, controller_spec) self.setup_key_listeners(keyboard_layout)