def __init__(self, parent = None): QtGui.QWidget.__init__(self, parent) self.setupUi(self) self.window1 = None self.setFixedSize(950,600) nome = pegaConfig("nomeExperimento").strip() self.label_outliers.setText(pegaConfig("outlier").strip()) self.label_estruturaInicial.setText(pegaConfig("quantidadeInicialProteinas").strip()) self.listaExperimentos = [] now = str(datetime.now()) now = now.replace(" ", "") now = now.replace("-", "") now = now.replace(":", "") #d = "_"+now[0:14] self.atualizaNomes() self.atualizaNomesDeletar() #self.lineEdit_experimento.setText(nome+d) self.lineEdit_experimento.setText(nome) self.recuperaInfos() self.label_relogio.hide() self.movie = QtGui.QMovie("./img/gifTempo.gif") self.label_relogio.setMovie(self.movie) if pegaConfigTaba('atalho').strip() == 'yes': self.checkBox_atalho.setChecked(True) else: self.checkBox_atalho.setChecked(False) if not ('LINUX' in get_platform().upper()): # ve se nao e linux e esconde botal de criacao de atalho self.checkBox_atalho.hide() else: if self.checkBox_atalho.isChecked(): self.criaAtalho()
def recuperarExperimentos(self): self.escondeBotoes() reply = QtGui.QMessageBox.question(self, 'Message',"Attention: It is important to save the current experiment before!!!"+"\n"+"\n"+"Do you really want to recover this experiment?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes: QtGui.QApplication.processEvents() # para não travar usar antes de loops self.label_relogio.show() self.movie.start() QtGui.QApplication.processEvents() # para não travar self.nomeConjunto = self.comboBox_arquivos.currentText() # copia pastas para o novo conjunto origem = "./setsExperiments/"+self.nomeConjunto+"/outputFiles/" destino = "./outputFiles/" removePasta(destino) manip.copiaPasta(origem, destino) origem = "./setsExperiments/"+self.nomeConjunto+"/pdbs/" destino = "./pdbs/" removePasta(destino) manip.copiaPasta(origem, destino) origem = "./setsExperiments/"+self.nomeConjunto+"/ki/" destino = "./ki/" removePasta(destino) manip.copiaPasta(origem, destino) origem = "./setsExperiments/"+self.nomeConjunto+"/inputFiles/" destino = "./inputFiles/" removePasta(destino) manip.copiaPasta(origem, destino) origem = "./setsExperiments/"+self.nomeConjunto+"/models/" destino = "./models/" removePasta(destino) manip.copiaPasta(origem, destino) origem = "./setsExperiments/"+self.nomeConjunto+"/results/" destino = "./results/" removePasta(destino) manip.copiaPasta(origem, destino) # as funcoes abaixo demv ficar nesta ordem completaPastas() # cria pastas que nao existam completaArquivoConfig() # novas versões podem conter novas tags self.recuperaInfos() now = str(datetime.now()) now = now.replace(" ", "") now = now.replace("-", "") now = now.replace(":", "") #d = "_"+now[0:14] self.lineEdit_experimento.setText(pegaConfig("nomeExperimento").strip()) self.label_comentarios.setText(pegaConfig("comentarios").replace("<vg>", ",")) self.label_quantia.setText(pegaConfig("quantidadeProteinas").strip()) self.label_estruturaInicial.setText(pegaConfig("quantidadeInicialProteinas").strip()) QtGui.QMessageBox.information(self, "Message", "Operation completed") self.label_relogio.hide() self.movie.stop self.mostraBotoes() self.label_outliers.setText(pegaConfig("outlier").strip()) else: self.mostraBotoes() pass
def limpaArquivoProteinas(self): diret1 = "./outputFiles/" diret2 = "./inputFiles/" proteinas = leCsv(diret2+"pdbsProteina.txt") outliers = leCsv(diret1+"outliers.txt") listProt = [] listOutliers = [] listNovoProt = [] tamInicial = (len(proteinas)) #gravaConfig("quantidadeInicialProteinas", str(tamInicial).strip()) for x in proteinas: listProt.append(x.strip()) for x in outliers: listOutliers.append(x.strip()) for x in listProt: if not(x in listOutliers): listNovoProt.append(x+",".strip()) tam = len(listNovoProt) if tamInicial-tam < 1: QtGui.QMessageBox.information(self, "Message", "There are no outliers"+"\n"+"\n"+"Try to reducing the percentual value in the slider.") pass elif tam <20: QtGui.QMessageBox.information(self, "Message", "After this operation, the number of structures will be very small (only "+str(tam)+" structures)."+"\n"+"Is not possible exclude outliers!"+"\n"+"\n"+"Try increasing the percentage on the slider,") pass else: listNovoProt[tam-1] = listNovoProt[tam-1].replace(",","") # retira ultima virgula distancia = pegaConfig("distanciaAtual").strip() txtOut = str(outliers).replace("'", "") txtOut = txtOut.replace("[", "") txtOut = txtOut.replace("]", "") txtOut = txtOut.lower() tracos = "-"*90 tamOut = tamInicial-tam texto = "This "+str(tamOut)+" structures will be excluded:"+"\n" +tracos+"\n" + txtOut texto = texto+"\n"+tracos texto = texto+"\n" +"\n"+"These outliers are considering only experiments with distances < "+distancia+u'\u212b' texto = texto +"\n"+"\n" + "Do you want to proceed?" reply = QtGui.QMessageBox.question(self, "List of Outliers",texto,QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes: self.toolButton_iniciar.setEnabled(False) self.horizontalSlider_percent.setEnabled(False) limpaArquivosOutlier() limpaPastasSaidaOutlier() grava(listNovoProt, diret2+"pdbsProteina.txt") gravaConfig("outlier", "yes") gravaConfig ("quantidadeProteinas",str(tam) ) self.label_inicial.setText(pegaConfig('quantidadeInicialProteinas').strip()) self.label_final.setText(pegaConfig('quantidadeProteinas').strip()) QtGui.QMessageBox.information(self, "Important !!!", "Operation completed"+"\n"+"\n"+'You must redo "Make File" and "Regression" again!') else: pass
def recuperaInfos(self): completaArquivoConfig() descricao = pegaConfig("descricaoDataset").strip() afinidade = pegaConfig("tipoAfinidade").strip() afinidade = converteStringDeltaG(afinidade) data = pegaConfig("data").strip() experimento = pegaConfig("nomeExperimento").strip() self.label_descricao.setText(descricao) self.label_afinidade.setText(afinidade) self.label_toExperiment.setText(experimento) self.label_experimento.setText(experimento) self.label_experimento.setText(experimento) self.label_data.setText(data) excluiLigantes = pegaConfig("excluiLigantes").strip() if excluiLigantes != "yes": self.label_deleteLigand.setText("no") else: self.label_deleteLigand.setText("yes") if not(pegaConfig("spearman") is None): self.label_comentarios.setText(pegaConfig("comentarios").replace("<vg>", ",")) self.label_quantia.setText(pegaConfig("quantidadeProteinas").strip()) else: self.label_comentarios.setText("null") self.label_spearman.setText("null") self.label_quantia.setText("null")
def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.setupUi(self) self.window1 = None self.setFixedSize(900, 500) self.radioButton_45.setChecked(True) self.label_cabecalho.setText("") self.label_textoProgresso.setText("") nome = pegaConfig("descricaoDataset").strip() quantia = pegaConfig("quantidadeProteinas").strip() afinidade = pegaConfig("tipoAfinidade").strip() afinidade = converteStringDeltaG(afinidade) self.label_distanciaUsada.setText("Cut Distances Already Used (" + chr(197) + ")") self.groupBox.setTitle("Cut Distance (" + chr(197) + ")") self.label_system.setText(nome) self.label_afinidade.setText(afinidade) self.label_quantia.setText(quantia) self.label_relogio.hide() self.label_distanciasUsadas.setText(self.get_distanciasUsadas()) if pegaConfig("tipoMedia").strip() == 'individual': self.label_tipoMedia.setText("Both sets") elif pegaConfig("tipoMedia").strip() == 'training': self.label_tipoMedia.setText("Training set") self.label_outliers.setText(pegaConfig("outlier").strip()) self.label_estruturaInicial.setText( pegaConfig("quantidadeInicialProteinas").strip()) self.setWindowTitle(self.windowTitle() + " to Experiment: " + pegaConfig("nomeExperimento").strip()) self.movie = QtGui.QMovie("./img/gifTempo.gif") self.label_relogio.setMovie(self.movie)
def geraArquivoComTermoDeEnergia(self, arquivosParaLer, distancia, tipo): if tipo == "Tre": tipoCheio = "Training" elif tipo == "Tes": tipoCheio = "Test" self.label_textoProgresso.setText('') self.label_cabecalho.setText("Generating average distance for " + tipoCheio + ". Please wait!") if tipo == 'Tre': self.progressBar.setValue(0) mediaDistanciaTodosPdb( arquivosParaLer, distancia, "TRE", self.progressBar) # gera arquivo com medias do conjunto treino elif (tipo == 'Tes') and ( self.tipoMedia == "ALL" ): # se for somente media treino nao entra aqui e nao calcula media teste self.progressBar.setValue(0) mediaDistanciaTodosPdb(arquivosParaLer, distancia, "TES", self.progressBar) now = datetime.now() progresso = 0 self.label_cabecalho.setText("Generating " + tipoCheio + " Files") QtGui.QApplication.processEvents( ) # para não travar usar antes de loops if pegaConfig("tipoMedia").strip() == "training": self.tipoMedia = 'TRE' else: self.tipoMedia = 'ALL' inter_mol_term(distancia, tipo, self.tipoMedia)
def baixaPdb(self): conj = (self.plainTextEdit_pdbs.toPlainText()) conj = conj.replace(',', ', ') conj = conj.replace(' ', ' ') list = (conj.split()) if (len(list)) < 20: reply = QtGui.QMessageBox.warning( self, 'Alert', "The amount of structures is insufficient (<20) for performing experiments." + "\n" + "The download will not be performed.", QtGui.QMessageBox.Ok) pass else: reply = QtGui.QMessageBox.question( self, 'Download Structures', "This operation may take several minutes. Do you want to proceed?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes: quantIni = self.label_quantia.text() if pegaConfig("quantidadeInicialProteinas").strip() == "null": gravaConfig("quantidadeInicialProteinas", quantIni) self.label_estruturaInicial.setText(quantIni) else: pass self.label_relogio.show() self.movie.start() self.baixaPdbOk(self) else: pass completaArquivoConfig()
def __init__(self, parent = None): QtGui.QWidget.__init__(self, parent) self.setupUi(self) self.setFixedSize(600,350) self.window7 = None self.horizontalSlider_percent.setValue(40) listCol = get_listaColunasDistancia("./outputFiles/") self.label_inicial.setText(pegaConfig('quantidadeProteinas').strip()) self.label_final.setText('')
def edita(self): if (pegaConfig("descricaoDataset").strip() == 'novaVersao') and (pegaConfig("comentarios").strip() == 'novaVersao'): QtGui.QMessageBox.information( self, "Message", "This is a new Taba installation." + "\n" + "To edit, you must first create a new experiment or retrieve an existing experiment from Manage Experiments" ) pass else: self.habilitaCampos() self.toolButton_saveText.setEnabled(True) self.toolButton_ClearText.setEnabled(True) self.toolButton_baixa.setEnabled(False) self.toolButton_cancela.setEnabled(True) self.toolButton_edita.setEnabled(False) self.toolButton_refina.setEnabled(True) self.toolButton_novo.setEnabled(False) self.toolButton_exit.setEnabled(False)
def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.setupUi(self) self.window1 = None self.setFixedSize(900, 645) completaArquivoConfig() self.label_cabecalho.setText("") self.label_textoProgresso.setText("") quantia = pegaConfig("quantidadeProteinas").strip() self.label_estruturaInicial.setText( pegaConfig("quantidadeInicialProteinas").strip()) if quantia != None: self.label_quantia.setText(quantia.strip()) self.desabilitaCampos() self.toolButton_saveText.setEnabled(False) self.toolButton_ClearText.setEnabled(False) self.toolButton_baixa.setEnabled(True) self.toolButton_cancela.setEnabled(False) self.toolButton_refina.setEnabled(False) self.groupBox.setEnabled(False) self.groupBox_2.setEnabled(False) self.groupBox_3.setEnabled(False) self.label_relogio.hide() self.label_experimentName.setText( pegaConfig("nomeExperimento").strip()) if self.label_experimentName.text() == "": self.label_experimentName.setText( "*** Experiment not saved yet ***") self.label_outliers.setText(pegaConfig("outlier").strip()) self.movie = QtGui.QMovie("./img/gifTempo.gif") self.label_relogio.setMovie(self.movie) self.radioButton_deltaG.setText(converteStringDeltaG('deltaG')) if pegaConfig("geraSets").strip() == "y": self.radioButton_trainingTest.setChecked(True) else: self.radioButton_unico.setChecked(True) self.carrega() if not (self.radioButton_trainingTest.isChecked() ): # o usuário nao separou os arquivos self.habilitaUmaCaixaPDB() self.carregaUmacaixaPDB( ) # carrega uma caixa pois os arquvivos teste e treino serão separados depois
def marcaTipoMedia(self): self.med = pegaConfig("tipoMedia").strip() if self.med == None: self.med = "training" self.med = self.med.replace(" ", "") self.med = self.med.replace("\n", "") if self.med == "training": self.radioButton_training.setChecked(True) if self.med == "individual": self.radioButton_individual.setChecked(True)
def habilitaDuasCaixasPDB(self): self.plainTextEdit_pdbsTestSet.show() self.label_editPdbTest.show() self.label_editPdb.setText("PDBs to Download (Training set)") if pegaConfig("geraSets").strip() == "y": self.radioButton_trainingTest.setChecked(True) self.radioButton_unico.setChecked(False) else: self.radioButton_unico.setChecked(True) self.radioButton_trainingTest.setChecked(False) self.plainTextEdit_pdbs.setGeometry(QtCore.QRect(10, 82, 475, 85))
def novo(self): self.escondeBotoes() self.groupBox_PdbEntrada.setDisabled(False) self.checkBox_eliminateLigand.setChecked(True) mensagem = "The current experiment will be cleaned. It's important to save it before." + "\n" if (pegaConfig("descricaoDataset")).strip() == 'null': mensagem = '' reply = QtGui.QMessageBox.question( self, 'Creates a new experiment', mensagem + "Do you want to proceed?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes: self.textoInicalPdb = '' self.textoInicalPdbTestSet = '' self.textoInicialComentarios = 'null' self.textoInicialConfig = 'null' limpaPastas() completaArquivoConfig() self.limpaTexto() self.label_experimentName.clear() self.label_quantia.setText('') self.label_outliers.setText('no') self.label_estruturaInicial.setText('') self.habilitaCampos() self.toolButton_novo.setEnabled(False) self.toolButton_edita.setEnabled(False) self.toolButton_exit.setEnabled(False) self.toolButton_saveText.setEnabled(True) self.toolButton_cancela.setEnabled(True) self.groupBox.setEnabled(True) self.groupBox_2.setEnabled(True) self.groupBox_3.setEnabled(True) self.radioButton_training.setChecked(True) self.radioButton_Ki.setChecked(True) self.plainTextEdit_descricao.setPlainText('null') self.plainTextEdit_pdbs.insertPlainText('') gravaConfig("quantidadeInicialProteinas", 'null') self.habilitaUmaCaixaPDB() self.label_experimentName.setText( "*** Experiment not saved yet ***") else: self.toolButton_novo.setEnabled(True) self.toolButton_edita.setEnabled(True) self.toolButton_exit.setEnabled(True) self.toolButton_baixa.setEnabled(True) self.toolButton_saveText.setEnabled(False) self.toolButton_cancela.setEnabled(False) self.groupBox.setEnabled(False) self.groupBox_2.setEnabled(False) self.groupBox_3.setEnabled(False) self.radioButton_training.setChecked(False) self.radioButton_Ki.setChecked(False) pass
def chamaRotinasPreparacao(self, diretorio): seed = int(self.comboBox_seed.currentText()) if not (pegaConfig("geraSets").strip() == "y"): geraArquivoTesteTreino(diretorio, "pdbsProteina.txt", seed) geraArquivoProteinaFinal( diretorio, "pdbsProteinaTreino.txt", "Tre" ) # gera arquivo so com proteinas que tem arquivo de ki correspondente separaLiganteProteina( diretorio, "pdbsProteinaTreino.txt", "Tre", "") # separa PDB em 2 arquivos: proteina(Atom), ligante(Hetatm) geraArquivoProteinaFinal( diretorio, "pdbsProteinaTeste.txt", "Tes" ) # gera arquivo so com proteinas que tem arquivo de ki correspondente separaLiganteProteina(diretorio, "pdbsProteinaTeste.txt", "Tes", "")
def marcaAfinidade(self): inib = pegaConfig("tipoAfinidade").strip() inib = inib.replace(" ", "") inib = inib.replace("\n", "") if inib == "Kd": self.radioButton_Kd.setChecked(True) if inib == "Ki": self.radioButton_Ki.setChecked(True) if inib == "IC50": self.radioButton_IC50.setChecked(True) if inib == "EC50": self.radioButton_EC50.setChecked(True) if inib == "deltaG": self.radioButton_deltaG.setChecked(True)
def carrega(self): completaArquivoConfig() self.plainTextEdit_descricao.setPlainText( pegaConfig("descricaoDataset").strip()) self.plainTextEdit_Comentarios.setPlainText( pegaConfig("comentarios").replace("<vg>", ",")) self.marcaAfinidade() self.marcaTipoMedia() self.marcaExluiLigantesRepetidos() self.label_estruturaInicial.setText( pegaConfig("quantidadeInicialProteinas").strip()) self.label_quantia.setText(pegaConfig("quantidadeProteinas").strip()) if self.existePdbSeparado(): self.habilitaDuasCaixasPDB() self.carregaDuasCaixasPDB() else: self.habilitaUmaCaixaPDB() self.carregaUmacaixaPDB() self.textoInicalPdb = self.plainTextEdit_pdbs.toPlainText() self.textoInicalPdbTestSet = self.plainTextEdit_pdbsTestSet.toPlainText( ) self.textoInicialConfig = self.plainTextEdit_descricao.toPlainText() self.textoInicialComentarios = self.plainTextEdit_Comentarios.toPlainText( )
def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.setupUi(self) self.window1 = None self.setFixedSize(900, 600) self.list1 = get_listaDistancias("./outputFiles/") self.modeloEscolhido = "" nome = pegaConfig("descricaoDataset") quantia = pegaConfig("quantidadeProteinas") self.label_estruturaInicial.setText( pegaConfig("quantidadeInicialProteinas").strip()) self.afinidade = pegaConfig("tipoAfinidade").strip() self.label_system.setText(nome) self.label_afinidade.setText(converteStringDeltaG(self.afinidade)) self.label_quantia.setText(quantia) self.checkBox_aceitaNomeLongo.setChecked(False) self.carregaModelos() self.lineEdit_estrutura.setFocus() if pegaConfig("tipoMedia").strip() == 'individual': self.label_tipoMedia.setText("Both sets") elif pegaConfig("tipoMedia").strip() == 'training': self.label_tipoMedia.setText("Training set") self.label_outliers.setText(pegaConfig("outlier").strip()) self.label_logTeorico.clear() self.label_relogio.hide() self.inibidor = pegaConfig("tipoAfinidade").strip() if self.inibidor == "": # erro ao achar um inibidor reply = QtGui.QMessageBox.question( self, 'Message', "This PDB file was not downloaded yet. Please, do this first using 'Download' button in the main window.", QtGui.QMessageBox.Ok, QtGui.QMessageBox.Ok) if reply == QtGui.QMessageBox.Ok: self.sair() self.setWindowTitle(self.windowTitle() + " to Experiment: " + pegaConfig("nomeExperimento").strip()) self.movie = QtGui.QMovie("./img/gifTempo.gif") self.label_relogio.setMovie(self.movie) self.movie.stop()
def pegaElementosMelhorEquacao(self): eq = pegaConfig("melhorEquacao") eq = eq.replace("-", ",-") eq = eq.replace("+", ",+") eq = eq.replace("\n", "") eq = eq.replace(",", "", 1) #retira a primeira virgula lista = eq.split(',') alfa = [] alfa.append(lista[0]) atom = [] for i in lista[1:]: e = i.split('*') alfa.append(e[0]) at = e[1] at = at.replace("(", "") at = at.replace(")", "") atom.append(at) return alfa, atom
def salva(self): pastaParaSalvar = "TABA/setsExperiments/"+self.nomeConjunto reply = QtGui.QMessageBox.question(self, 'Message',"All files from this experiment will be saved in: "+pastaParaSalvar+"\n"+"\n"+"Do you really want to save this experiment?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No) if reply == QtGui.QMessageBox.Yes: nomePasta = "./setsExperiments/"+self.nomeConjunto gravaConfig("nomeExperimento", self.nomeConjunto) manip.criaPasta(nomePasta) # copia pastas para o novo conjunto origem = "./outputFiles/" destino = nomePasta+origem.replace(".", "") removePasta(destino) manip.copiaPasta(origem, destino) origem = "./pdbs/" destino = nomePasta+origem.replace(".", "") removePasta(destino) manip.copiaPasta(origem, destino) origem = "./ki/" destino = nomePasta+origem.replace(".", "") removePasta(destino) manip.copiaPasta(origem, destino) origem = "./inputFiles/" destino = nomePasta+origem.replace(".", "") removePasta(destino) manip.copiaPasta(origem, destino) origem = "./models/" destino = nomePasta+origem.replace(".", "") removePasta(destino) manip.copiaPasta(origem, destino) origem = "./results/" destino = nomePasta+origem.replace(".", "") removePasta(destino) manip.copiaPasta(origem, destino) self.atualizaNomes() self.atualizaNomesDeletar() experimento = pegaConfig("nomeExperimento").strip() self.label_experimento.setText(experimento) QtGui.QMessageBox.information(self, "Message", "Operation completed") data = datetime.now() data = str(data.strftime("%Y-%m-%d %H:%M:%S")) gravaConfig("data", data) self.recuperaInfos() else: pass
def fazCorrelacao(self, listaArq): self.escondeBotoes() if self.fineTuning: self.testaEquacao() self.calculaCorelacaoTeste() self.calculaCorelacaoTreino() elif fazCorrelacao.melhorEquacao( self, listaArq) == True: # prestar atencao como chamear o mettodo self.testaEquacao() self.calculaCorelacaoTeste() self.calculaCorelacaoTreino() else: pass self.mostraBotoes() if not (pegaConfig("outlier").strip() == "yes"): self.toolButton_outlier.setEnabled(True) else: self.toolButton_outlier.setEnabled(False) self.pushButton_adiciona.setEnabled(True)
def calculaKi(arquivo): liganteAtivo, kiBDB, kiPDBbind, kiBMOAD = separaKi(arquivo) liganteAtivo = "[" + liganteAtivo + "]" #para identificar ligantes numericos mediaKiBDB = calculaMedia(kiBDB) mediaKiPDBbind = calculaMedia(kiPDBbind) mediaKiBMOAD = calculaMedia(kiBMOAD) mediaKiTodos = 0 items = [] if mediaKiBDB != 0: items.append(mediaKiBDB) if mediaKiPDBbind != 0: items.append(mediaKiPDBbind) if mediaKiBMOAD != 0: items.append(mediaKiBMOAD) if len(items) > 0: mediaKiTodos = np.average(items) if pegaConfig("tipoAfinidade").strip( ) == "deltaG": ## se for deltaG nao calcula o log return liganteAtivo, mediaKiBDB, mediaKiPDBbind, mediaKiBMOAD, mediaKiTodos else: return liganteAtivo, calculaLog(mediaKiBDB), calculaLog( mediaKiPDBbind), calculaLog(mediaKiBMOAD), calculaLog(mediaKiTodos)
def fazExperimento(self): logText = "The theoretical log " + self.inibidor + " for:" self.label_log.setText(logText) diretorio = "./inputFiles/" # define diretorio para salvar o download self.ligante = self.lineEdit_Ligante.text().upper().strip() self.chamaRotinasPreparacao( diretorio, self.ligante ) # chama runcoes para preparar arquivos para processamento arquivosParaLerUsu = leCsv( diretorio + "pdbsProteinaUsu.txt" ) # le arquivo com os pdbs a serem processados como proteinas. Este arquvivo so contem pdbs que tem arquivo de KI correspondente arqModelo = self.modeloEscolhido if temLigante("./pdbs/", arquivosParaLerUsu) == False: reply = QtGui.QMessageBox.question( self, 'Message', "The estructure to experiment don't have the ligand " + self.ligante, QtGui.QMessageBox.Ok, QtGui.QMessageBox.Ok) pass else: # entra o valor da distância distancia = float(pegaModelo(arqModelo, "distancia").strip()) tipoMedia = pegaConfig("tipoMedia") mediaDistanciaPorPdb( arquivosParaLerUsu, distancia, "USU", self.progressBar) # gera arquivo com medias do conjunto treino diretorio, arquivo = geraArquivoComTermoDeEnergiaExperimento( arquivosParaLerUsu, distancia, "Usu", tipoMedia, self.ligante) #gera arquivo de treino if diretorio == "nok": # significa que nao existe o ligante return False formula = pegaModelo(arqModelo, "equacao") pdbNome, logKi, ki = geraExperimento("", arquivo, formula) logKiS = ("%.3f" % logKi) # vamos pegar só um valor calculado de ki pois a funcçao e utilizada tambem para conjunto teste logText = "The theoretical log " + self.inibidor + " for:" self.label_log.setText(logText.replace("\n", "") + "\n" + pdbNome) self.label_logTeorico.setText(str(logKiS)) return True
def cancela(self): self.toolButton_baixa.setEnabled(True) self.desabilitaCampos() self.toolButton_saveText.setEnabled(False) self.toolButton_ClearText.setEnabled(False) self.toolButton_baixa.setEnabled(True) self.toolButton_cancela.setEnabled(False) self.toolButton_refina.setEnabled(False) self.toolButton_edita.setEnabled(True) self.groupBox.setEnabled(False) self.groupBox_2.setEnabled(False) self.groupBox_3.setEnabled(False) self.toolButton_novo.setEnabled(True) self.toolButton_exit.setEnabled(True) self.plainTextEdit_pdbs.setPlainText(self.textoInicalPdb) self.plainTextEdit_pdbsTestSet.setPlainText(self.textoInicalPdbTestSet) self.plainTextEdit_Comentarios.setPlainText( self.textoInicialComentarios) self.plainTextEdit_descricao.setPlainText(self.textoInicialConfig) self.label_experimentName.setText( pegaConfig("nomeExperimento").strip()) if self.label_experimentName.text() == "": self.label_experimentName.setText("null")
def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.setupUi(self) self.window1 = None self.setFixedSize(900, 600) self.comboBox_dataBase.clear() self.comboBox_distance.clear() self.label_tempoInicio.clear() self.label_tempoTranscrorrido.clear() self.label_arquivoEmProcesso.clear() self.label_tempoEstimado.clear() self.label_seed.clear() self.label_distancia.setText("Cut Distance (" + chr(197) + ")") if pegaConfig("tipoMedia").strip() == 'individual': self.label_tipoMedia.setText("Both sets") elif pegaConfig("tipoMedia").strip() == 'training': self.label_tipoMedia.setText("Training set") self.escondeLabels() self.checkBox_rl.setChecked(True) list1 = get_arquivosTreino("./outputFiles/") self.listDist = [] listDb = [] nome = pegaConfig("descricaoDataset").strip() quantia = pegaConfig("quantidadeProteinas").strip() self.label_estruturaInicial.setText( pegaConfig("quantidadeInicialProteinas").strip()) afinidade = pegaConfig("tipoAfinidade").strip() afinidade = converteStringDeltaG(afinidade) self.label_outliers.setText(pegaConfig("outlier").strip()) self.label_system.setText(nome) self.label_afinidade.setText(afinidade) self.label_quantia.setText(quantia) for text in list1: numero = str(extraiNumeros(text) / 10) textDist = numero.replace("0.0", ".0") text = text.replace("./outputFiles/", "") text2 = text.replace("_TE_Tre.csv", "") text2 = text2.replace("saida", "") textDB = text2.replace(textDist, "") textDB = textDB.replace("Todos", "All") # para ficar em inglês if textDB not in listDb: self.comboBox_dataBase.addItem( textDB) # pega dbmoad,pdbbind, tex listDb.append(textDB) if textDist not in self.listDist: self.listDist.append(textDist) self.listDist.sort(key=float) for item in self.listDist: self.comboBox_distance.addItem(item) # pega ditanica self.comboBox_distance.setCurrentIndex(0) self.comboBox_dataBase.model().sort(0) self.comboBox_dataBase.setCurrentIndex(0) #self.preencheColunas() get_listaColunasDistancia("./outputFiles/") self.setWindowTitle(self.windowTitle() + " to Experiment: " + pegaConfig("nomeExperimento").strip()) self.movie = QtGui.QMovie("./img/gifTempo.gif") self.label_relogio.setMovie(self.movie) self.label_relogio.hide() self.movie.stop()
def marcaExluiLigantesRepetidos(self): excluiLigantes = pegaConfig("excluiLigantes").strip() if excluiLigantes == "yes": self.checkBox_eliminateLigand.setChecked(True) else: self.checkBox_eliminateLigand.setChecked(False)
def salvaOk(self): diretorio = "./inputFiles/" arquivo = "pdbsProteina.txt" arquivoSai = diretorio + arquivo self.textoConfig = self.plainTextEdit_descricao.toPlainText() self.textoConfig = self.textoConfig.strip() textoPdbTraining = self.plainTextEdit_pdbs.toPlainText() textoPdbTraining = textoPdbTraining.replace(" ", "") textoPdbTraining = textoPdbTraining.replace( ",,", ",") # caso tenha esquecido alguma virgula textoPdbTraining = textoPdbTraining.upper() textoPdbTraining = textoPdbTraining.strip() self.plainTextEdit_pdbs.setPlainText(textoPdbTraining) if textoPdbTraining.endswith(','): # retira virgula se apos o texto textoPdbTraining = textoPdbTraining[:-1] self.plainTextEdit_pdbs.setPlainText(textoPdbTraining) textoPdbTest = self.plainTextEdit_pdbsTestSet.toPlainText() textoPdbTest = textoPdbTest.replace(" ", "") textoPdbTest = textoPdbTest.replace(",,", ",") textoPdbTest = textoPdbTest.upper() textoPdbTest = textoPdbTest.strip() self.plainTextEdit_pdbsTestSet.setPlainText(textoPdbTest) if textoPdbTest.endswith(','): # retira virgula se apos o texto textoPdbTest = textoPdbTest[:-1] self.plainTextEdit_pdbsTestSet.setPlainText(textoPdbTest) if len(textoPdbTest) > 0: # se conjunto teste existe coloca virgula vg = "," else: vg = "" if self.radioButton_trainingTest.isChecked(): textoPdb = textoPdbTraining + vg + textoPdbTest #une os dois conjunttos else: textoPdb = textoPdbTraining grava(textoPdb, arquivoSai) if self.radioButton_trainingTest.isChecked( ): # o usuário separou os arquivos self.gravaTreinoSet(textoPdbTraining, textoPdbTest, diretorio) else: self.habilitaUmaCaixaPDB() self.carregaUmacaixaPDB( ) # carrea uma caixa pois os arquvivos teste e treino serão separados depois lista = leCsv(arquivoSai) self.quantidadeProteinas = len(lista) self.salvaConfig() self.label_quantia.setText(pegaConfig("quantidadeProteinas").strip()) # define tipo inibidor if self.radioButton_Kd.isChecked(): self.inibidor = "Kd" elif self.radioButton_Ki.isChecked(): self.inibidor = "Ki" elif self.radioButton_IC50.isChecked(): self.inibidor = "IC50" elif self.radioButton_EC50.isChecked(): self.inibidor = "EC50" elif self.radioButton_deltaG.isChecked(): self.inibidor = "deltaG" gravaConfig("tipoAfinidade", self.inibidor.strip()) #define tipo media if self.radioButton_training.isChecked(): self.media = "training" elif self.radioButton_individual.isChecked(): self.media = "individual" gravaConfig("tipoMedia", self.media.strip()) comentarios = self.plainTextEdit_Comentarios.toPlainText() comentarios = comentarios.replace(",", "<vg>") gravaConfig("comentarios", comentarios) completaArquivoConfig() self.toolButton_baixa.setEnabled(True) self.desabilitaCampos() self.toolButton_saveText.setEnabled(False) self.toolButton_ClearText.setEnabled(False) self.toolButton_baixa.setEnabled(True) self.toolButton_cancela.setEnabled(False) self.toolButton_edita.setEnabled(True) self.toolButton_refina.setEnabled(False) self.toolButton_novo.setEnabled(True) self.toolButton_exit.setEnabled(True) # para poder desfazer self.textoInicalPdb = self.plainTextEdit_pdbs.toPlainText() self.textoInicalPdbTestSet = self.plainTextEdit_pdbsTestSet.toPlainText( ) self.textoInicialConfig = self.plainTextEdit_descricao.toPlainText() self.textoInicialComentarios = self.plainTextEdit_Comentarios.toPlainText( ) self.plainTextEdit_pdbs.setEnabled(False)
def __init__(self, parent=None): diret = "./outputFiles/" QtGui.QWidget.__init__(self, parent) self.setupUi(self) self.setFixedSize(1000, 670) self.window1 = None self.window10 = None self.window11 = None # graficos self.window12 = None # caixa texto self.window0 = None self.melhorArquivo = None self.melhorCoeficiente = None self.limpaCampos() self.desabilitaSetas() self.carregaModelos() self.comboBox_dataBase.clear() self.toolButton_outlier.setEnabled(False) self.pushButton_deleta.setEnabled(True) self.pushButton_adiciona.setEnabled(False) self.toolButton_graficos.setEnabled(False) self.label_nomeModelo.setText("") self.percentualReducaoTreino = 0 self.percentualReducaoTeste = 0 self.fineTuning = False self.tuned = False self.label_tuned.hide() distancia = "" list1 = get_arquivosSf( diret, distancia) # manda a distancia nula pois interessa todas self.listDist = [] listDb = [] nome = pegaConfig("descricaoDataset").strip() self.label_estruturaInicial.setText( pegaConfig("quantidadeInicialProteinas").strip()) quantia = pegaConfig("quantidadeProteinas").strip() if quantia != None: quantia = quantia.strip() afinidade = pegaConfig("tipoAfinidade").strip() afinidade = converteStringDeltaG(afinidade) self.label_system.setText(nome) self.label_afinidade.setText(afinidade) self.label_quantia.setText(quantia) if pegaConfig("tipoMedia").strip() == 'individual': self.label_tipoMedia.setText("Both sets") elif pegaConfig("tipoMedia").strip() == 'training': self.label_tipoMedia.setText("Training set") self.label_outliers.setText(pegaConfig("outlier").strip()) for text in list1: #pega variaveis arquivos if text.find("SF_") > -1: tam = text.find("_TE_Tre") text = (text[:tam]) text = text.replace("./outputFiles/", "") text = text.replace("saida", "") text = text.replace("_saidaBMOAD", "") text = text.replace("_saidaTodos", "") text = text.replace("_saidaPDBbind", "") text = text.replace("_saidaTodos", "") text = text.replace("SF_", "") textDist = str(extraiNumeros(text) / 10) textDB = text.replace(textDist, "") textDB = textDB.replace("Todos", "All") # para ficar em inglês if textDB not in listDb: self.comboBox_dataBase.addItem( textDB) # pega dbmoad,pdbbind, tex listDb.append(textDB) self.listDist.append(textDist) list3 = get_listaColunasDistancia("./outputFiles/") for text in list3: self.comboBox_distCol.addItem(text) self.comboBox_dataBase.model().sort(0) self.comboBox_distCol.model().sort(0) self.comboBox_distCol.setCurrentIndex(0) tam = self.comboBox_dataBase.count() self.comboBox_dataBase.setCurrentIndex(0) self.setWindowTitle(self.windowTitle() + ": " + pegaConfig("nomeExperimento").strip())