def addNew(): if (len(contactNo1Var.get()) == 0): messagebox.showwarning("Warning", "Fill in missing details") elif (len(contactNo1Var.get()) != 0): noContacts_Lbl.configure(text="All Contacts") Backend.addRec(contactTypeVar.get(), contactNo1Var.get(),nameVar.get()\ ,cityVar.get(),addressVar.get(),emailVar.get()) messagebox.showinfo("Contact Management System", "Contact added successfully !") clear()
def Delete(): if (len(contactNo1Var.get()) == 0 and len(nameVar.get()) == 0): messagebox.showwarning("Warning", "Fill in ContactNo. or Name to delete") elif (len(contactNo1Var.get()) != 0 or len(nameVar.get()) != 0): Backend.deleteRec(contactNo1Var.get(), nameVar.get()) messagebox.showinfo("Contact Management System", "Contact deleted successfully !") clear() display()
def getRecommendations(self): pauseMenu = tk.Toplevel(self.root) pauseMenu.title("") width, height = 200, 100 x = int(self.root.winfo_screenwidth() / 2 - width / 2) y = int(self.root.winfo_screenheight() / 2 - height / 2) pauseMenu.geometry('%dx%d+%d+%d' % (width, height, x, y)) pauseMenu.resizable(False, False) pauseMenu.attributes('-topmost', True) label = tk.Label( pauseMenu, text="\nGenerating recommendations...\n(takes ~15 seconds)") label.pack() label.wait_visibility() pauseMenu.update() if self.titleTree.focus() != '': item = self.titleTree.item(self.titleTree.focus()) else: item = self.titleTree.item('0') titleID = item['values'][0] titleName = item['values'][1] medium = item['tags'][0] userList = Backend.getSimilarUsers(titleID, medium) if len(userList) == 0: tk.messagebox.showinfo(title='No reference data.', message=str(titleName) + " has no user reviews to reference.", parent=pauseMenu) pauseMenu.destroy() return recommendedList = Backend.getRecommendedList(userList, self._settings, medium) if len(recommendedList) == 0: tk.messagebox.showinfo( title='No results.', message= "There were no results with the current search settings.", parent=pauseMenu) pauseMenu.destroy() return if titleName in recommendedList: recommendedList.remove(titleName) self._displayRec(recommendedList, titleName, self._settings) pauseMenu.destroy()
def addData(): if (len(stdID.get()) != 0): Backend.addstdRec(stdID.get(), first_name.get(), sur_name.get(), date_of_birth.get(), age.get(), gender.get(), address.get(), mobile_no.get()) student_list.delete(0, END) student_list.insert(END, stdID.get(), first_name.get(), sur_name.get(), date_of_birth.get(), age.get(), gender.get(), address.get(), mobile_no.get())
def getreply(self, event=None): usertextstr = self.userinputentry.get() self.printmessage(usertextstr, "right") backend = Backend() replytext = backend.process(usertextstr) self.userinputentry.delete(0, 'end') self.userinputentry.focus() self.printmessage(replytext, "left")
def delete_command(): dd0, dd11, text1, text2, text3, dd1, dd2, text4, text5, text6, text7, text8, text9 = getdata( ) if dd0 != "" or dd11 == "" or text1 == "": tdsno = dd0 + "_" + text1 + "_" + dd11 Backend.delete(tdsno) view_command() usermsg("Data successfully deleted from the database", "Green")
def add_command(): Backend.insert(Student_Name_text.get(), Hours_bought_text.get(), First_class_text.get(), Grade_text.get(), Subject1_text.get(), Subject2_text.get(), Subject3_text.get(), Days_of_attendace_text.get(), Hours_of_attendance_text.get(), Comments_text.get()) list1.delete(0, END) list1.insert(END, Student_Name_text.get(), Hours_bought_text.get(), First_class_text.get(), Grade_text.get(), Subject1_text.get(), Subject2_text.get(), Subject3_text.get(), Days_of_attendace_text.get(), Hours_of_attendance_text.get(), Comments_text.get())
def Update_Points(game_window, player, comp): global points points += 1 # sets the variable string into the new points score display_points.set(str(points)) game_window.update() # Inserting game details to history user_id = Backend.Get_User_id(user_name) Backend.insert_game(user_id, options[player], options[comp], "User")
def check_group(message): group = str(message.text) group_id = bk.get_group_id(group) if group_id == 'Ошибка, такой группы нет': bot.send_message(message.chat.id, 'Ошибка, такой группы нет, введи группу снова') else: bk.izm(str(message.chat.id), str(message.text)) bot.send_message( message.chat.id, 'Можешь посмотреть свое расписание на завтра или на следующий день с помощью кнопок внизу \n' 'Чтобы сменить группу, просто введи название другой группы\n', reply_markup=keyboard_func)
def add_command(): try: list1.delete(*list1.get_children()) except: pass Backend.connect1() Backend.connect2() dd0, dd11, text1, text2, text3, dd1, dd2, text4, text5, text6, text7, text8, text9 = getdata( ) if dd0 != "" or dd11 != "" or text1 != "": tdsno = dd0 + "_" + text1 + "_" + dd11 myList = Backend.backup1("%" + dd0 + "_" + text1 + "%") err = Backend.insert(var0.get(), TDS_text.get(), var11.get(), tdsno, text2, text3, dd1, dd2, text4, text5, text6, text7, text8, text9) if err == "22007" or err == "22P02" or err == "23502": usermsg( "Error Possibilities:\n 1. All entries are mandatory \n 2. Data format error", "Red") #popupmsg("ERROR", "Error Possibilities:\n 1. All entries are mandatory \n 2. Data format error") elif err == "22008": usermsg("Date format entered seems to be incorrect", "Red") #popupmsg("ERROR", "Date format entered seems to be incorrect") elif err == "23505": usermsg( "There is already data with the given TDS No.\n TDS No. should be unique.", "Red") #popupmsg("ERROR", "There is already data with the given TDS No.\n TDS No. should be unique.") else: usermsg("Data successfully added to the database", "Green") for row in range(len(myList)): Backend.backup2(myList[row][0], myList[row][1], myList[row][2], myList[row][3], myList[row][4], myList[row][5], myList[row][6], myList[row][7], myList[row][8], myList[row][9], myList[row][10], myList[row][11], myList[row][12], myList[row][13]) Backend.backup3(myList[row][3]) list1.insert("", "end", values=(tdsno, start_text.get(), end_text.get(), var1.get(), var2.get(), nonexp_text.get(), Onexp_text.get(), Offexp_text.get(), Offper_text.get(), TarOffper_text.get(), remarks_text.get())) clear_data()
def OnSavePlanButtonButton(self, event): self.InputLabel.SetLabel('Saving Test Cases...') name = self.PlanName.GetValue() pickname = name try: PickleLoad = pickle.load(open('SavedTestPlan.pkl', 'rb')) except: PickleLoad = {} #print "Pickle Load: ", PickleLoad name = "*API* " + name #print name #print self.CurrentProjectName #print "Prefix=",self.CurrentProjectPrefix response = Backend.CreateTestPlan(name, self.CurrentProjectName) #print response response_id = response[0]['id'] response = Backend.CreateBuild(response_id, "Auto Build", "This build was created automatically by the API to avoid execution issues...") #print "Build creation response...", response #print "Response ID: ", response_id i = 0 for case in self.QueueIDList: summary = Backend.GetCaseFromID(case) #print case, ":", summary external_id = summary[0]['tc_external_id'] external_id = self.CurrentProjectPrefix + "-" + external_id #print "New external id...", external_id version = summary[0]['version'] version = int(version) #print "external id, version", external_id, version print "args = ", (self.CurrentProject, response_id, external_id, version) response = Backend.AddCaseToTestPlan(self.CurrentProject, response_id, external_id, version) #print response i = i + 1 total = len(self.QueueIDList) progress = float(i)/float(total) progress = progress * 100.0 #print progress self.SavingGauge.SetValue(progress) PlanPickle = {'testplanid':response_id, 'cases': self.QueueIDList, 'project': self.CurrentProject } PickleLoad[pickname] = PlanPickle #print "Plan Pickle", PlanPickle pickle.dump(PickleLoad, open('SavedTestPlan.pkl', 'wb')) self.SavingGauge.SetValue(0) self.InputLabel.SetLabel('Test Case Name')
def RPS_Algo(comp, player, options, game_window, user_name): try: global points if options[player] == "Rock" and options[comp] == "Scissors": Update_Points(game_window, player, comp) elif options[player] == "Paper" and options[comp] == "Rock": Update_Points(game_window, player, comp) elif options[player] == "Scissors" and options[comp] == "Paper": Update_Points(game_window, player, comp) elif player == comp: user_id = Backend.Get_User_id(user_name) Backend.insert_game(user_id, options[player], options[comp], "Tie") pass else: # Player lost so score is reset to 0 Backend.insert_User(user_name, points) points = 0 display_points.set(str(points)) game_window.update() # Inserting game details to history user_id = Backend.Get_User_id(user_name) Backend.insert_game(user_id, options[player], options[comp], "Computer") except Exception as e: print(e)
def OnLoadTestPlanButton(self, event): #print "Current Project", self.CurrentProject self.dlg3 = Dialog3.Dialog3(self) try: self.dlg3.ShowModal() finally: try: self.CurrentPlanDetails = self.dlg3.CurrentPlanDetails self.CasesList = self.dlg3.CaseList #print self.CurrentPlanDetails self.QueueList = [] self.QueueIDList = [] self.CasesList = [] self.CasesIDList = [] self.ExecutionList.Set(self.QueueList) self.CaseList.Set(self.CasesList) self.CurrentProject = self.CurrentPlanDetails['project'] self.CurrentProjectName = self.ProjectName[self.ProjectIndex.index(self.CurrentProject)] self.CurrentProjectPrefix = self.ProjectPrefix[self.ProjectIndex.index(self.CurrentProject)] self.CurrentCount = Backend.GetCaseCountForProject(self.CurrentProjectName) Suites = Backend.GetSuitesInProject(self.CurrentProject) self.SuiteList = [] self.SuiteIDList = [] for suite in Suites: #print suite['name'] self.SuiteList.append(suite['name']) self.SuiteIDList.append(suite['id']) self.SuitesList.Set(self.SuiteList) self.RankTracker = [self.CurrentProjectName] self.RankIDTracker = [self.CurrentProject] self.UpdateSuiteListLabel() choice = self.ExecutionList.GetSelection() self.QueueIDList = self.CurrentPlanDetails['cases'] self.QueueList = [] plan = self.CurrentPlanDetails['testplanid'] testplancases = Backend.GetCasesFromPlan(plan) for i in self.QueueIDList: #print i self.QueueList.append(testplancases[i][0]['name']) #print self.CurrentProjectName, self.CurrentProjectPrefix #print self.QueueList self.LoadQueueList = self.QueueList self.LoadQueueIDList = self.QueueIDList self.ExecutionList.Set(self.QueueList) self.UpdateQueueCount() finally: pass
def saveSettings(self, event=None): try: self.settings.minYear = int( self.minYearBox.get('1.0', 'end').rstrip()) self.settings.maxYear = int( self.maxYearBox.get('1.0', 'end').rstrip()) if self.settings.maxYear < self.settings.minYear: temp = self.settings.maxYear self.settings.maxYear = self.settings.minYear self.settings.minYear = temp username = self.usernameBox.get('1.0', 'end').rstrip() if username != self.settings.MALUsername: pauseMenu = tk.Toplevel(self.root) pauseMenu.title("") width, height = 200, 100 x = int(self.root.winfo_screenwidth() / 2 - width / 2) y = int(self.root.winfo_screenheight() / 2 - height / 2) pauseMenu.geometry('%dx%d+%d+%d' % (width, height, x, y)) pauseMenu.resizable(False, False) pauseMenu.attributes('-topmost', True) label = tk.Label( pauseMenu, text= "\nRetrieving user list...\n(big lists take longer to retrieve)" ) label.pack() label.wait_visibility() pauseMenu.update() self.settings.MALUsername = username Backend.filterUserList(self.settings) pauseMenu.destroy() self.settingsWindow.destroy() except ValueError: tk.messagebox.showinfo(title='Invaild Date', message='Please enter a valid date range.', parent=self.settingsWindow) except: pauseMenu.destroy() tk.messagebox.showinfo(title='Username Error', message='Failed to retrieve user list.', parent=self.settingsWindow)
def OnCreateSuiteButtonButton(self, event): if self.CurrentProject != 'x': print "Create Suite", self.CurrentProject self.dlg4 = Dialog4.Dialog4(self) try: self.dlg4.ShowModal() finally: try: self.Entry = self.dlg4.Entry print self.Entry print "Should be closed" print len(self.RankIDTracker) if len(self.RankIDTracker) == 1: print "Top Level Suite" parentid = False else: parentid = self.RankIDTracker[-1] response = Backend.CreateTestSuite(self.CurrentProject, self.Entry[0], self.Entry[1], parentid) print response response_id = response[0]['id'] self.SuiteList.append(self.Entry[0]) self.SuiteIDList.append(response_id) self.SuitesList.Set(self.SuiteList) finally: pass
def viewCommand(): #Ensures the list box is empty before displaying records list1.delete(0, END) #Iterates through records and appends them to list box for row in Backend.view(): list1.insert(END, row)
def generateCode(self): gemmName = "gemm_" + str(self.m_context["nVar"]) + "_" + str( self.m_context["nDof"]) + "_" + str(self.m_context["nDof"]) self.m_context["gemm_gradQ_x"] = gemmName + "_gradQ_x" self.m_context["gemm_gradQ_y"] = gemmName + "_gradQ_y" self.m_context["gemm_gradQ_z"] = gemmName + "_gradQ_z" if (self.m_context["isLinear"]): self.m_context["ncpOutputShift"] = Backend.getSizeWithPadding( self.m_context["nVar"] * self.m_context["nDim"] ) #shift used to split the tmpArray into input and output for NCP # size of the tmpArray self.m_context["tmpArraySize"] = max((self.m_context["nDof"]*self.m_context["nVarPad"] if self.m_context["useFlux"] else 0), \ (self.m_context["nVar"]*self.m_context["nDim"] if self.m_context["useMaterialParam"] else 0), \ (2*self.m_context["ncpOutputShift"] if self.m_context["useNCP"] else 0)) self.m_context["gemm_flux_x"] = gemmName + "_flux_x" self.m_context["gemm_flux_y"] = gemmName + "_flux_y" self.m_context["gemm_flux_z"] = gemmName + "_flux_z" TemplatingUtils.renderAsFile( "spaceTimePredictorLinear_cpp.template", self.m_filename_linear, self.m_context) else: self.m_context["nDof_seq"] = range(0, self.m_context["nDof"]) self.m_context["gemm_rhs_x"] = gemmName + "_rhs_x" self.m_context["gemm_rhs_y"] = gemmName + "_rhs_y" self.m_context["gemm_rhs_z"] = gemmName + "_rhs_z" self.m_context["gemm_lqi"] = gemmName + "_lqi" TemplatingUtils.renderAsFile( "spaceTimePredictorNonLinear_cpp.template", self.m_filename_nonlinear, self.m_context) # generates gemms if (self.m_context["useLibxsmm"]): self.generateGemms()
def cal(c): result, key, step = DetailedTelegramCalendar(locale='ru', calendar_id=2).process(c.data) if not result and key: bot.edit_message_text(f"Выберите конец периода", c.message.chat.id, c.message.message_id, reply_markup=key) elif result: bot.edit_message_text(f"Конец периода: {result}", c.message.chat.id, c.message.message_id) finish_date = result.strftime("%Y.%m.%d") group_id = bk.output(c.message.chat.id) global start_date s = bk.get_schedule(str(group_id), start_date, finish_date) bot.send_message(c.message.chat.id, s)
def searchMangaTitle(self): pauseMenu = tk.Toplevel(self.root) pauseMenu.title("") width, height = 200, 100 x = int(self.root.winfo_screenwidth() / 2 - width / 2) y = int(self.root.winfo_screenheight() / 2 - height / 2) pauseMenu.geometry('%dx%d+%d+%d' % (width, height, x, y)) pauseMenu.resizable(False, False) pauseMenu.attributes('-topmost', True) label = tk.Label(pauseMenu, text="\nSearching manga...") label.pack() label.wait_visibility() pauseMenu.update() for item in self.titleTree.get_children(): self.titleTree.delete(item) query = self.searchBox.get('1.0', 'end').rstrip() try: results = Backend.searchTitles(query, "manga") for x in range(len(results)): self.insertIntoTree(x, results[x], "manga") self.searchBox.delete('1.0', 'end') pauseMenu.destroy() except: tk.messagebox.showinfo(title='No results.', message="There were no search results.", parent=pauseMenu) pauseMenu.destroy()
def search_command(): app.listClientes.delete(0, END) rows = core.search(app.txtNome.get(), app.txtScore.get(), app.txtEmail.get(), app.txtCPF.get()) for r in rows: app.listClientes.insert(END, r) return print(rows)
def search_command(): list.delete(0, END) for row in Backend.search(Name_text.get(), RollNo_text.get(), Branch_text.get(), Grade_text.get(), ContactNo_text.get(), EmailId_text.get(), Address_text.get()): list.insert(END, row)
def searchDatabase(): student_list.delete(0, END) for row in Backend.searchData(stdID.get(), first_name.get(), sur_name.get(), date_of_birth.get(), age.get(), gender.get(), address.get(), mobile_no.get()): student_list.insert(END, row, str(""))
def search_command(): app.listPacientes.delete(0, END) rows = core.search(app.txtNome.get(), app.txtCodigo.get(), app.txtEndereco.get(), app.txtCPF.get(), app.txtObservacao.get()) for r in rows: app.listClientes.insert(END, r)
def all_banks(dates_mass1): filename = sys.path[0] + "\\main.py" csv_p = filename.replace("\\", "/") for name in dates_mass1: # Параищоыикщпиыщшкп фигня с переводом дбф в цсв и путь найти dbf_p = csv_p[:-15] + "Data/"+name+".dbf" csv_path = Backend.dbf_to_csv(dbf_p) wb = Workbook() ws = wb.active prev_row = 1 i = 1 ws.append(["rot"]) ######## with open(csv_path, 'r') as f: for row in csv.reader(f, dialect='excel', delimiter=','): if row[0] != prev_row: ws = wb.create_sheet(str(row[0])) i = 1 prev_row = row[0] ws.append(row) elif row[0] == prev_row: ws.append(row) ws.row_dimensions[i].hidden = False i += 1 wb.save(csv_p[:-15] + 'Graphics/'+ name +'.xlsx')
def thread_set(self): self.backend_firebase = BK.BackendThreadFirebase() # 建立執行緒 self.backend_firebase.update_agv_signal.connect( self.handle_agv) # 連線訊號 self.backend_firebase.update_arm_signal.connect( self.handle_arm) # 連線訊號 self.backend_firebase.start() # 開始執行緒
def search_command(): ''' Clears listbox and calls search from backend, textfield is populated from results. ''' list1.delete(0, END) for row in bd.search(e1val.get(), e2val.get(), e3val.get(), e4val.get()): list1.insert(END, row)
def show_frame_alt(self, cont): if cont.__name__ == "DashBoard": self.title(config.currentUser + "'s " + cont.__name__) elif cont.__name__ == "WeekData": self.title(config.currentUser + "'s " + cont.__name__) config.destroy_frame_widgits(self.frames[cont]) if bool(config.weekData): self.frames[cont].buildCurrentPage() else: back.buildEmptyPage(self.frames[cont]) self.toggleMenu(cont) frame = self.frames[cont] frame.configure(bg="light grey") frame.tkraise()
def email_command(): app.listClientes.delete(0, END) rows = core.search(app.txtNome.get(), app.txtScore.get(), app.txtEmail.get(), app.txtCPF.get()) for r in rows: app.listClientes.insert(END, r) smtp_ssl_host = 'smtp.gmail.com' smtp_ssl_port = 465 username = '******' password = '******' from_addr = '*****@*****.**' to_addrs = app.txtEmail.get() scoreemail = str(app.txtScore.get()) nomecliente = str(app.txtNome.get()) if int(scoreemail) < 300: message = MIMEText( '------------SPC Brasil--------------- \n' 'Saudações:' + nomecliente + '\n' 'Informamos que seu score apresenta queda recorrente, seu score atual é de: ' + scoreemail + '\n' 'confira o nosso site para obter mais informações sobre o que é o seu score: https://guilherme4garcia.github.io/PI_SPC/' ) message['subject'] = app.txtNome.get() message['from'] = from_addr message['to'] = ', '.join(to_addrs) elif int(scoreemail) < 600: message = MIMEText( '------------SPC Brasil--------------- \n' 'Saudações:' + nomecliente + '\n' 'Informamos que seu score está mediano, sua situação atual é de: ' + scoreemail + ' pontos\n' 'confira o nosso site para obter mais informações sobre o que é o seu score: https://guilherme4garcia.github.io/PI_SPC/' ) message['subject'] = app.txtNome.get() message['from'] = from_addr message['to'] = ', '.join(to_addrs) else: message = MIMEText( '------------SPC Brasil--------------- \n' 'Saudações:' + nomecliente + '\n' 'Informamos que seu score está bom, sua situação atual é de: ' + scoreemail + ' pontos\n' 'confira o nosso site para obter mais informações sobre o que é o seu score: https://guilherme4garcia.github.io/PI_SPC/' ) message['subject'] = app.txtNome.get() message['from'] = from_addr message['to'] = ', '.join(to_addrs) server = smtplib.SMTP_SSL(smtp_ssl_host, smtp_ssl_port) server.login(username, password) server.sendmail(from_addr, to_addrs, message.as_string()) server.quit() Mbox('email enviado', 'Email enviado com sucesso', 0) return print(rows)
def view_command(): ''' Clears listbox and populates it with all the rows from the table using view method defined in backend. ''' list1.delete(0, END) for row in bd.view(): list1.insert(END, row)
def view_command(): list1.delete(0, END) for row in Backend.view(): list1.insert(END, row) e1.delete(0, END) e2.delete(0, END) e3.delete(0, END) e4.delete(0, END)
#!/usr/bin/etc python import Backend import sys import socket import time Backend.init_resource() #dummy intro to get messy stuff out of the way #todo: fix error messages ans = Backend.get_response("initializing") #oov_state =1 #name_entity_state =1 #anaphra_state =1 #short_answer_state=1 #previous_history ={} #word2vec_ranking_state =1 #tfidf_state =1 #policy_mode =1 #user_list =[] #theme = {} while True: serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Log('serversocket') serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) serversocket.bind(('localhost', 13113)) serversocket.listen(5) connection, address = serversocket.accept() #Log('connection established') print connection user_input = connection.recv(1024) print user_input
#!/usr/bin/etc python import Backend print("Initializing...please be patient...\n") Backend.init_resource() #dummy intro to get messy stuff out of the way #todo: fix error messages ans = Backend.get_response("initializing") #Intro text print("\n\nWelcome! Type below to have a conversation with TickTock. Make sure to put your input inside quotation marks. Type exit() to stop.\n") print("TickTock: \"Hi! I'm TickTock. Ask me some questions.\"") while(1): question = input('You: ') ans = Backend.get_response(question) print("TickTock: \"" + ans + "\"")
def __init__(self,parent, settings, loadfile=None): self.parent = parent self.currentConcept='dummy-concept' self.recentPatients = {} self.displayMode=StringVar() self.displayMode.set('sort') self.nProcs = 2 self.settings = readSettings(settings) self.logfile = file(self.settings.find('logfile').attrib['path'], 'a') self.dictionaries = [] for dat in self.settings.findall('dataTypes/datum'): if not 'dictionary' in dat.attrib: continue else: dct = dat.attrib['dictionary'] self.dictionaries.append((dat.attrib['type'], pickle.load(file(dct)))) m1 = PanedWindow() m1.pack(fill=BOTH, expand=1) self.leftDisplay = PanedWindow(m1, orient=VERTICAL) m1.add(self.leftDisplay) m2 = PanedWindow(m1, orient=VERTICAL) m1.add(m2) #left pane -- anchor showing self.conceptListbox = ConceptListbox(self.leftDisplay, self) self.buttons = [] b = Button(self.leftDisplay, text='new variable', command=self.addConceptWindow) self.leftDisplay.add(b) b.pack(side=TOP) self.displayString = Label(self.leftDisplay, text='') self.displayString.pack(side=TOP) b = Radiobutton(self.leftDisplay, text="view recently anchored", variable=self.displayMode, value="recent", command=self.refresh) self.leftDisplay.add(b) b.pack(side=BOTTOM) b = Radiobutton(self.leftDisplay, text="view selected anchored", variable=self.displayMode, value="select", command=self.refresh) self.leftDisplay.add(b) b.pack(side=BOTTOM) b = Radiobutton(self.leftDisplay, text="view all anchored", variable=self.displayMode, value="filter", command=self.refresh) self.leftDisplay.add(b) b.pack(side=BOTTOM) b = Radiobutton(self.leftDisplay, text="view not anchored", variable=self.displayMode, value="sort", command=self.refresh) self.leftDisplay.add(b) b.pack(side=BOTTOM) #b = Radiobutton(self.leftDisplay, text="do labeling", variable=self.displayMode, value="label", command=self.refresh) #self.leftDisplay.add(b) #b.pack(side=BOTTOM) self.anchorDisplay = AnchorDisplay(m2, self) self.patientDetailDisplay = PatientDetailDisplay(m2, self) self.patientListDisplay = PatientListDisplay(m2, self) self.backend = Backend(self, loadfile) self.refresh()
class Display: def __init__(self,parent, settings, loadfile=None): self.parent = parent self.currentConcept='dummy-concept' self.recentPatients = {} self.displayMode=StringVar() self.displayMode.set('sort') self.nProcs = 2 self.settings = readSettings(settings) self.logfile = file(self.settings.find('logfile').attrib['path'], 'a') self.dictionaries = [] for dat in self.settings.findall('dataTypes/datum'): if not 'dictionary' in dat.attrib: continue else: dct = dat.attrib['dictionary'] self.dictionaries.append((dat.attrib['type'], pickle.load(file(dct)))) m1 = PanedWindow() m1.pack(fill=BOTH, expand=1) self.leftDisplay = PanedWindow(m1, orient=VERTICAL) m1.add(self.leftDisplay) m2 = PanedWindow(m1, orient=VERTICAL) m1.add(m2) #left pane -- anchor showing self.conceptListbox = ConceptListbox(self.leftDisplay, self) self.buttons = [] b = Button(self.leftDisplay, text='new variable', command=self.addConceptWindow) self.leftDisplay.add(b) b.pack(side=TOP) self.displayString = Label(self.leftDisplay, text='') self.displayString.pack(side=TOP) b = Radiobutton(self.leftDisplay, text="view recently anchored", variable=self.displayMode, value="recent", command=self.refresh) self.leftDisplay.add(b) b.pack(side=BOTTOM) b = Radiobutton(self.leftDisplay, text="view selected anchored", variable=self.displayMode, value="select", command=self.refresh) self.leftDisplay.add(b) b.pack(side=BOTTOM) b = Radiobutton(self.leftDisplay, text="view all anchored", variable=self.displayMode, value="filter", command=self.refresh) self.leftDisplay.add(b) b.pack(side=BOTTOM) b = Radiobutton(self.leftDisplay, text="view not anchored", variable=self.displayMode, value="sort", command=self.refresh) self.leftDisplay.add(b) b.pack(side=BOTTOM) #b = Radiobutton(self.leftDisplay, text="do labeling", variable=self.displayMode, value="label", command=self.refresh) #self.leftDisplay.add(b) #b.pack(side=BOTTOM) self.anchorDisplay = AnchorDisplay(m2, self) self.patientDetailDisplay = PatientDetailDisplay(m2, self) self.patientListDisplay = PatientListDisplay(m2, self) self.backend = Backend(self, loadfile) self.refresh() def displayConcept(self, conceptID=None): if conceptID == None: conceptID = self.currentConcept else: self.currentConcept = conceptID self.backend.initConcept(conceptID) self.anchorDisplay.showAnchors(conceptID) self.patientListDisplay.displayPatients() self.patientDetailDisplay.clear() self.showStats() def showStats(self): displayString = "" displayString += "current var is "+ self.currentConcept+'\n' displayString += 'anchored patients: ' +str(len(union(self.backend.concepts[self.currentConcept].anchoredPatients.values()))) +'\n' displayString += 'hand labeled patients: ' + str(len(self.backend.concepts[self.currentConcept].human_labels.keys())) +'\n' #displayString += 'evaluator patients: ' + str(len(union(self.backend.concepts[self.currentConcept].evaluatorPatients.values()))) +'\n' #displayString += 'precision@'+str(self.backend.concepts[self.currentConcept].recall)+': ' + str(self.backend.concepts[self.currentConcept].get_precision()) + '\n' self.displayString.config(text=displayString) def debug(self): #IPython.getipython.get_ipython().launch_new_instance({'self':self}) print "done with debugging session" def calculateStats(self): nAnchored = 0 for pat in self.patients.values(): if self.currentConcept in pat['anchors']: self.anchored_patients[self.currentConcept].add(pat['index']) nAnchored += 1 else: self.anchored_patients[self.currentConcept].discard(pat['index']) display_str = "" if self.currentConcept in self.weights and self.weights[self.currentConcept]: status = 'up to date.' else: status = 'out of date!' display_str += "model is "+status+'\n' #display_str += "validate set size "+str(self.validate_size)+'\n' display_str += "anchored patients="+str(nAnchored)+'\n' display_str += "human labels (pos/neg)= ("+str(len([i for i in self.human_labels[self.currentConcept].values() if i == 1])) + '/' display_str += str(len([i for i in self.human_labels[self.currentConcept].values() if i == 0])) + ')\n' display_str += "display size is="+str(self.nDisplay)+'\n' display_str += "train size is="+str(self.nTrain)+'\n' self.stat_str.set(display_str) def addConceptWindow(self): display = Tk() display.title('Add a new variable') new_window = PanedWindow(display, orient=VERTICAL) new_window.pack(fill=BOTH, expand=1) label = Label(new_window, text = "Enter a new variable") new_window.add(label) l = Entry(new_window) l.bind("<Return>", self.addConcept) new_window.add(l) def addConcept(self, event): new_concept = event.widget.get().lower() self.backend.newConcept(new_concept) self.displayConcept(new_concept) event.widget.master.master.destroy() def suggestConcept(self): pass #select a patient and display def patientSelect(self, event): for p in event.widget.curselection(): self.displayPatient(self.toplistIDs[int(p)]) def onStructuredAnchorSuggest(self, event): for p in event.widget.selection(): item = event.widget.item(p) self.enterAnchor.delete(0,END) self.enterAnchor.insert(0, item['values'][0]) event.widget.master.master.destroy() def refresh(self): self.displayConcept() def resetModel(self, conceptID): self.weights[conceptID] = None self.orderedPatients[conceptID] = None