Ejemplo n.º 1
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
Ejemplo n.º 2
0
 def carregaDuasCaixasPDB(self):
     diret = "./inputFiles/"
     arqTreino = diret + "pdbsProteinaTreino.txt"
     arqTeste = diret + "pdbsProteinaTeste.txt"
     listaTraining = leCsv(arqTreino)
     listaTeste = leCsv(arqTeste)
     textoTraining = ', '.join(listaTraining)
     textoTeste = ', '.join(listaTeste)
     self.plainTextEdit_pdbsTestSet.setPlainText(textoTeste)
     self.plainTextEdit_pdbs.setPlainText(textoTraining)
Ejemplo n.º 3
0
def separaLiganteProteina(diretorio, arquivo, tipo, ligante):

    proteina = leCsv(
        diretorio +
        arquivo)  # le arquivo com os pdbs a serem processados como proteinas
    contHetatm1 = 0
    for prot in proteina:
        protArq = prot.strip()
        protArq = protArq.lower() + ".pdb"
        separa(protArq)
    '''
    print ("|-------------------------------------------------|")
    print ("| * Foram criados arquivos so com Hetatm          |")
    print ("| * Foram criados arquivos so com Atomo           |")
    print ("|-------------------------------------------------|") 
    print(".....Em processamento!(2)")
    '''

    for prot in proteina:
        protArq = prot.strip()
        protArq = protArq.lower()
        cont1 = filtraHetatm(
            protArq, tipo, ligante
        )  # filtra os arquivos dos Hetero atomos para ficar so os que tem ki
        contHetatm1 = contHetatm1 + cont1
    '''
Ejemplo n.º 4
0
def excluiLigantesRepetidos():
    listaEstruturasFicam = []
    listaExclusao = []
    nomePdbs = leCsv("./inputFiles/pdbsProteina.txt")
    listaNova = criaListaUnicaLigantes(nomePdbs)
    for l in listaNova:
        # deixamos mesmo os que nao teem ki -> estou retirando essas
        a = search(listaEstruturasFicam,
                   l[2])  # procura valor da lista em llistaEstruturasficam
        if len(a) > 0:
            ind = a[0][0]  # pega o indice onde foi encontrado valor igual
            resolucaoNovo = float(l[1])
            resolucaoAnterior = float(listaEstruturasFicam[ind][1])
            if resolucaoNovo < resolucaoAnterior:  # fica o que tem menor valor de resolucao cristalografica em REMARK 2
                listaEstruturasFicam[ind] = l
        elif l[2] != None:
            listaEstruturasFicam.append(l)
        else:
            pass
    for i in nomePdbs:
        if not search(listaEstruturasFicam, i):
            listaExclusao.append(i)
    if len(listaEstruturasFicam) < 20:
        return False, 0
    else:
        excluiArquivosRepetidos(listaExclusao)
        gravaArqProteina(listaEstruturasFicam)
        gravaConfig("quantidadeProteinas", str(len(listaEstruturasFicam)))
        return True, len(listaExclusao)
Ejemplo n.º 5
0
 def carregaUmacaixaPDB(self):
     diret = "./inputFiles/"
     arqPdb = diret + "pdbsProteina.txt"
     listaPdb = leCsv(arqPdb)
     textoPdb = ', '.join(listaPdb)
     self.plainTextEdit_pdbs.setPlainText(textoPdb)
     self.textoInicalPdb = textoPdb
Ejemplo n.º 6
0
def geraArquivoTesteTreino(diret, arquivo, seed):
    conteudo = []
    semConteudo = []  # arquivo de pdbs sem ki
    arquivoParaLer = leCsv(
        diret +
        arquivo)  # le arquivo com os pdbs a serem processados como proteinas
    tamLista = len(arquivoParaLer)
    tamTreino = int(tamLista * 0.7) + 1  # pega 70% para treino
    random.seed(seed)
    lista_aleatoria = random.sample(range(0, tamLista), tamTreino)
    #lista_aleatoria = numpy.random.seed()(range(0,tamLista), tamTreino,100)
    listaTreino = []
    listaTeste = []
    x = 0
    QtGui.QApplication.processEvents()  # para não travar usar antes de loops
    for prot in arquivoParaLer:
        if x in lista_aleatoria:
            listaTreino.append(prot)
        else:
            listaTeste.append(prot)
        x += 1  # acresce posição
    textoTreino = ', '.join(listaTreino)
    textoTeste = ', '.join(listaTeste)
    grava(textoTreino, diret + "pdbsProteinaTreino.txt")
    grava(textoTeste, diret + "pdbsProteinaTeste.txt")
Ejemplo n.º 7
0
 def apagaFake(self, arq):
     # verifica se o arquivo ki eh fake e apaga
     lista = leCsv(arq)
     if lista:
         texto = ''.join(lista)
         if "FAKE" in texto:
             apagaArquivo(arq)
     else:
         pass
Ejemplo n.º 8
0
 def caixatexto(self, textoModelo, textoInformacoes, nomeModelo):
     if self.window12 is None:
         diret = "./results/"
         arqTeste = diret + "binding_affinity_test_set_" + nomeModelo + ".csv"
         arqTreino = diret + "binding_affinity_training_set_" + nomeModelo + ".csv"
         self.window12 = winCaixaTexto.textos(self)
         self.window12.label.setText("Visualization for " + nomeModelo)
         self.window12.textBrowser_modelo.setPlainText(textoModelo)
         self.window12.textBrowser_informacoes.setPlainText(
             textoInformacoes)
         list = leCsv(arqTreino)
         texto = self.formataTextoCaixa(list)
         self.window12.textBrowser_treino.setPlainText(texto)
         list = leCsv(arqTeste)
         texto = self.formataTextoCaixa(list)
         self.window12.textBrowser_teste.setPlainText(texto)
         self.window12.show()
         self.window12 = None
     else:
         pass
Ejemplo n.º 9
0
 def existePdbSeparado(self):
     '''
     verifica se foi gerado o arquivo teste e training,  pois a variavel de configuracao "geraSets" pode nao estar criada ainda
     '''
     arquivo = "./inputFiles/" + "pdbsProteinaTreino.txt"
     texto = leCsv(arquivo)
     #input("Press Enter to continue...")
     if len(texto) > 10:
         return True
     else:
         return False
Ejemplo n.º 10
0
def gravaArqProteina(listaEstruturasFicam):
    # cria novo arquivo proteinas
    textoPdb = ''
    listaEstruturasFicam = sorted(listaEstruturasFicam)
    for i in listaEstruturasFicam:
        textoPdb = textoPdb + i[0] + ","
    # retira ultima virgula
    pos = textoPdb.rfind(',')
    t1 = list(textoPdb)
    t1[pos] = ''
    textoPdb = "".join(t1)
    arqProteina = "./inputFiles/pdbsProteina.txt"
    arqTreino = "./inputFiles/pdbsProteinaTreino.txt"
    arqTeste = "./inputFiles/pdbsProteinaTeste.txt"
    grava(textoPdb, arqProteina)
    #retira estruturas no arquivo treino
    listaTreinoNova = []
    textoTreino = leCsv(arqTreino)
    if len(textoTreino
           ) > 0:  # ve se ja tem os arquivos ou se serao gerados apos preparo
        listaTreino = textoTreino
        for s in listaEstruturasFicam:
            if str(s[0]) in listaTreino:
                listaTreinoNova.append(s[0])

        # retira estrutura arquivo teste
        listaTesteNova = []
        textoTeste = leCsv(arqTeste)
        listaTeste = textoTeste
        for s in listaEstruturasFicam:
            if str(s[0]) in listaTeste:
                listaTesteNova.append(s[0])

        textoTreino = ",".join(listaTreinoNova)
        textoTeste = ",".join(listaTesteNova)
        grava(textoTreino, arqTreino)
        grava(textoTeste, arqTeste)
    """
Ejemplo n.º 11
0
    def geraArquivoKiFake(self,
                          ligante):  # caso a proteina não tenha arquivo Ki

        arquivo = "./inputFiles/pdbsProteinaUsu.txt"
        texto = leCsv(arquivo)
        estrutura = ''.join(texto).upper()
        arq = "./ki/" + estrutura.lower() + ".csv"
        self.apagaFake(arq)
        if not (existeArquivo(arq)):
            cab = "structureId" + "," + "chainId" + "," + "ligandId" + "," + "KiFake" + "\n"
            textoInibidor = cab + '"' + estrutura + '","' + "A" + '","' + ligante + '","' "10000000(BDB)FAKE" + '"' + "\n"
            open(arq, 'a').close()  # cria arquivo Ki da estrutura
            try:
                my_PDB_fo = open(arq, "w")
                my_PDB_fo.write(
                    textoInibidor)  # grava dados fake de ki para a estrutura
                my_PDB_fo.close()
            except IOError:
                sys.exit("\nI can't file " + arq + " file!")
        else:
            pass
Ejemplo n.º 12
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
Ejemplo n.º 13
0
def geraArquivoProteinaFinal(diret, arquivo, tipo):
    progresso = 0
    conteudo = []
    semConteudo = []  # arquivo de pdbs sem ki
    arquivoParaLer = leCsv(
        diret +
        arquivo)  # le arquivo com os pdbs a serem processados como proteinas
    for prot in arquivoParaLer:
        arquivo = prot.strip()  # nome do arquivo pdb que esta em pdbsProteinas
        arquivo = arquivo.lower() + ".csv"
        #print (arquivo)
        if le(arquivo) == "S":
            conteudo.append(prot)
            conteudo.append(",")
        else:
            semConteudo.append(prot)
            semConteudo.append(",")
    tam = len(conteudo)
    tam2 = len(semConteudo)
    conteudo.pop(tam - 1)  # para retirar a ultima virgula
    grava(conteudo, diret + "pdbsProteinaFinal" + tipo + ".txt")
    if semConteudo:
        semConteudo.pop(tam2 - 1)  # para retirar a ultima virgula
    '''
Ejemplo n.º 14
0
    def baixaPdbOk(self, event):
        ############ baixa PDBs ##############

        self.escondeBotoes()
        # Set up PDB url
        url_in = 'https://files.rcsb.org/download/'

        # Set up PDB access code
        nomePdbs = leCsv("./inputFiles/pdbsProteina.txt")
        totalArquivos = nomePdbs.__len__()
        varia = 100 / totalArquivos
        progresso = 0
        count = 0
        contaPausa = 0
        mensagem = "Starting download PDB protein files from the site " + url_in
        self.label_cabecalho.setText(mensagem)
        self.progressBar.setValue(0)
        QtGui.QApplication.processEvents(
        )  # para não travar usar antes de loops
        for linha in nomePdbs:
            pdb_access = linha.strip()
            mensagem = pdb_access
            self.label_textoProgresso.setText(mensagem)
            # Call download_PDB_file()
            count = count + 1
            my_dir_in = "./pdbs/"
            flag_4_file_present = pre_download(
                my_dir_in, pdb_access + ".pdb")  #verifica se ja existe arquvio
            if not flag_4_file_present:
                download_PDB_file(url_in, pdb_access + ".pdb")
                progresso = progresso + varia
                self.progressBar.setValue(progresso)
                contaPausa = contaPausa + 1
                if contaPausa > 100:
                    contaPausa = 0
                    mensagem = "---> pausa tecnica. Aguarde que o programa continuara a rodar automaticamente..."
                    self.label_textoProgresso.setText(mensagem)
                    sleep(
                        30
                    )  # pausa para por exigencia do site se nao nao baixa todos

        mensagem = str(count) + ' files were correctly downloaded'
        self.label_textoProgresso.setText(mensagem)
        self.progressBar.setValue(100)
        ########## BAIXA ki ###################################
        # limpar diretorio
        self.progressBar.setValue(0)
        progresso = 0
        files = glob.glob('./ki/*')
        QtGui.QApplication.processEvents()  # para não travar
        '''
        for f in files:
            os.remove(f)
        '''
        my_dir_in = "./ki/"  # futuramente e melhor ajustar o nome do diretorio para abranger todos os inibidores
        # 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"
        binding_info = self.inibidor
        # Set up PDB url
        url_in = 'http://files.rcsb.org/download/'

        # Set up PDB access code
        nomePdbs = leCsv("./inputFiles/pdbsProteina.txt")
        totalArquivos = nomePdbs.__len__()
        count = 0
        mensagem = "Starting download PDB " + binding_info + " files (constant interation):" + url_in
        self.label_cabecalho.setText(mensagem)
        QtGui.QApplication.processEvents(
        )  # para não travar usar antes de loops
        for linha in nomePdbs:
            pdb_access = linha.strip()
            mensagem = "File: " + pdb_access
            self.label_textoProgresso.setText(mensagem)
            structureId = linha.strip()
            # Call download_PDB_file()
            get_Bind(my_dir_in, structureId, binding_info)
            progresso = progresso + varia
            self.progressBar.setValue(progresso)
        ## muda cor caixa texto
        self.progressBar.setValue(100)
        self.movie.stop()
        self.label_relogio.hide()
        self.movie.stop()
        if self.checkBox_eliminateLigand.isChecked():
            excluido, quantia = excluiLigantesRepetidos()
            if excluido == True:
                gravaConfig("excluiLigantes", "yes")
                QtGui.QMessageBox.information(
                    self, "Message",
                    str(quantia) + " repeated ligands were eliminated")
                self.carrega()
            else:
                QtGui.QMessageBox.information(
                    self, "Message",
                    "It is not possible to exclude repeated ligands because the amount of remaining structures is insufficient to obtain satisfactory results."
                    + "\n" + "The download was successful.")
        QtGui.QMessageBox.information(self, "Message", "Operation completed")
        ## exclui arquivos que retornaram vazios
        arqKiVazio = kiVazio()
        textoKi = ','.join(arqKiVazio)
        textoKi = textoKi.replace(",", ", ")
        arqPdbVazio = pdbVazio()
        textoPdb = ','.join(arqPdbVazio)
        textoPdb = textoPdb.replace(",", ", ")
        mensagem = "The following files contain no information and have been discarded:" + "\n" + "Ki files:" + "\n" + textoKi
        mensagem = mensagem + "\n" + "PDB file:" + "\n" + textoPdb
        mensagem = mensagem + "\n" + "You must edit the PDB code boxes and delete them manually."
        if arqKiVazio or arqPdbVazio:
            QtGui.QMessageBox.information(self, "Message", mensagem)
        diret = "./ki/"
        for i in arqKiVazio:
            apagaArquivo(diret + i)  # apaga arquivos ki que nao tem informação
        diret = "./pdbs/"
        for i in arqPdbVazio:
            apagaArquivo(diret +
                         i)  # apaga arquivos pdb que nao tem informação

        self.mostraBotoes()
        self.toolButton_ClearText.setEnabled(False)
        self.toolButton_saveText.setEnabled(False)
        self.progressBar.setValue(0)
        self.plainTextEdit_pdbs.setEnabled(False)
Ejemplo n.º 15
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)
Ejemplo n.º 16
0
    def geraArquivos(self):
        self.escondeBotoes()
        diretorio = "./inputFiles/"  # define diretorio para salvar o download
        self.chamaRotinasPreparacao(
            diretorio
        )  # chama runcoes para preparar arquivos para processamento
        arquivosParaLerTes = leCsv(
            diretorio + "pdbsProteinaFinalTes.txt"
        )  # le arquivo com os pdbs a serem processados como proteinas. Este arquvivo so contem pdbs que tem arquivo de KI correspondente
        arquivosParaLerTre = leCsv(diretorio + "pdbsProteinaFinalTre.txt")
        # entra o valor da distância
        # entra o valor da distância
        distancia = 4.5  # padrao
        seedNum = self.comboBox_seed.currentText()
        seed = 'seed45'  # semente que sera gravada no arquivo config.csv para usar no SF

        if self.radioButton_35.isChecked():
            distancia = 3.5
            seed = 'seed35'
        elif self.radioButton_45.isChecked():
            distancia = 4.5
            seed = 'seed45'
        elif self.radioButton_60.isChecked():
            distancia = 6.0
            seed = 'seed60'
        elif self.radioButton_75.isChecked():
            distancia = 7.5
            seed = 'seed75'
        elif self.radioButton_90.isChecked():
            distancia = 9.0
            seed = 'seed90'
        elif self.radioButton_120.isChecked():
            distancia = 12.0
            seed = 'seed120'
        elif self.radioButton_150.isChecked():
            distancia = 15.0
            seed = 'seed150'
        quantidadeArquivos = len(arquivosParaLerTes) + len(arquivosParaLerTre)
        if quantidadeArquivos < 20:
            QtGui.QMessageBox.information(
                self, "Message",
                "The number of structures is very small. Use another set!")
            self.mostraBotoes()
        else:
            self.geraArquivoMediaDistanciaPorPdb(
                arquivosParaLerTre, distancia,
                "TRE")  #gera medias distancias no arquivo PDB para treino
            self.geraArquivoMediaDistanciaPorPdb(
                arquivosParaLerTes, distancia,
                "TES")  #gera medias distancias no arquivo PDB para teste
            self.geraArquivoComTermoDeEnergia(arquivosParaLerTre, distancia,
                                              "Tre")  #gera arquivo de treino
            self.geraArquivoComTermoDeEnergia(arquivosParaLerTes, distancia,
                                              "Tes")  #gera arquivo de teste
            self.mostraBotoes()
            self.progressBar.setValue(0)
            self.label_cabecalho.setText('')
            self.label_textoProgresso.setText('')
            QtGui.QMessageBox.information(self, "Message",
                                          "Operation completed")
            self.label_distanciasUsadas.setText(self.get_distanciasUsadas())
        gravaConfig(
            seed, seedNum
        )  # salva valores de seed no arquivo config para usar no SF e substituir no Mml.in