示例#1
0
 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()
示例#2
0
    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            
示例#3
0
  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
示例#4
0
 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")
示例#5
0
 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)
示例#6
0
    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)
示例#7
0
    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()
示例#8
0
 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('')
示例#9
0
 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)
示例#10
0
 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
示例#11
0
    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)
示例#12
0
 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))
示例#13
0
    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
示例#14
0
 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", "")
示例#15
0
 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)
示例#16
0
 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(
     )
示例#17
0
 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()
示例#18
0
 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
示例#19
0
 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              
示例#20
0
 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)
示例#21
0
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)
示例#22
0
 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
示例#23
0
 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")
示例#24
0
    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()
示例#25
0
 def marcaExluiLigantesRepetidos(self):
     excluiLigantes = pegaConfig("excluiLigantes").strip()
     if excluiLigantes == "yes":
         self.checkBox_eliminateLigand.setChecked(True)
     else:
         self.checkBox_eliminateLigand.setChecked(False)
示例#26
0
    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)
示例#27
0
    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())