Criou página com '= Código = <br> = Alterações para a última versão = <br> * 1. Obtenção de data a partir do sistema; * 2. Invalidação da tradução caso haja caracteres indevidos o...' |
|||
| Linha 1: | Linha 1: | ||
= Código = | = Código = | ||
<br> | <br> | ||
import sys | |||
import time | |||
seqaa = { | |||
'ATA':'Isoleucina-', 'ATC':'Isoleucina-', 'ATT':'Isoleucina-', 'ATG':'Metionina-', | |||
'ACA':'Tirosina-', 'ACC':'Tirosina-', 'ACG':'Tirosina-', 'ACT':'Tirosina-', | |||
'AAC':'Asparagina-', 'AAT':'Asparagina-', 'AAA':'Lisina-', 'AAG':'Lisina-', | |||
'AGC':'Serina-', 'AGT':'Serina-', 'AGA':'Arginina-', 'AGG':'Arginina-', | |||
'CTA':'Leucina-', 'CTC':'Leucina-', 'CTG':'Leucina-', 'CTT':'Leucina-', | |||
'CCA':'Prolina-', 'CCC':'Prolina-', 'CCG':'Prolina-', 'CCT':'Prolina-', | |||
'CAC':'Histidina-', 'CAT':'Histidina-', 'CAA':'Glutamina-', 'CAG':'Glutamina-', | |||
'CGA':'Arginina-', 'CGC':'Arginina-', 'CGG':'Arginina-', 'CGT':'Arginina-', | |||
'GTA':'Valina-', 'GTC':'Valina-', 'GTG':'Valina-', 'GTT':'Valina-', | |||
'GCA':'Alanina-', 'GCC':'Alanina-', 'GCG':'Alanina-', 'GCT':'Alanina-', | |||
'GAC':'Ácido Aspártico-', 'GAT':'Ácido Aspártico-', 'GAA':'Ácido Glutâmico-', 'GAG':'Ácido Glutâmico-', | |||
'GGA':'Glicina-', 'GGC':'Glicina-', 'GGG':'Glicina-', 'GGT':'Glicina-', | |||
'TCA':'Serina-', 'TCC':'Serina-', 'TCG':'Serina-', 'TCT':'Serina-', | |||
'TTC':'Fenilalanina-', 'TTT':'Fenilalanina-', 'TTA':'Leucina-', 'TTG':'Leucina-', | |||
'TAC':'Tirosina-', 'TAT':'Tirosina-', 'TAA':'Códon de Parada', 'TAG':'Códon de Parada', | |||
'TGC':'Cisteína-', 'TGT':'Cisteína-', 'TGA':'Códon de Parada', 'TGG':'Triptofano-', | |||
'A':'Error', 'T':'Error','C':'Error', 'G':'Error', 'AA':'Error', 'AT':'Error', 'AC':'Error', 'AG':'Error', | |||
'TA':'Error', 'TT':'Error', 'TC':'Error', 'TG':'Error', 'CA':'Error', 'CT':'Error', 'CC':'Error', 'CG':'Error', | |||
'GA':'Error', 'GT':'Error', 'GC':'Error', 'GG':'Error', | |||
} | |||
seq_parada = ['TGA','TAA','TAG'] | |||
cod_error = ['A', 'T', 'C', 'G', 'AA', 'AT', 'AC', 'AG', 'TA', 'TT', 'TC', 'TG', 'CA', 'CT', 'CC', 'CG', 'GA', 'GT', 'GC', 'GG'] | |||
def transcription(seqbruta): | |||
seqbruta = seqbruta.replace('A', 'Q') | |||
seqbruta = seqbruta.replace('T', 'A') | |||
seqbruta = seqbruta.replace('Q', 'T') | |||
seqbruta = seqbruta.replace('C', 'W') | |||
seqbruta = seqbruta.replace('G', 'C') | |||
seqbruta = seqbruta.replace('W', 'G') | |||
return seqbruta | |||
def translate(seq): | |||
proteina = "Metionina-" | |||
codon = "" | |||
seq = seq.split('ATG',1)[1] | |||
for i in range(0, len(seq), 3): | |||
if codon not in seq_parada: | |||
codon = seq[i : i+3] | |||
if codon in seqaa: | |||
proteina += seqaa[codon] | |||
if codon in cod_error: | |||
print(proteina) | |||
print("A sequência digitada está errada (O códon não está com o número de nucleotídeos adequado), verifique-a e tente novamente mais tarde. O programa será encerrado.") | |||
quit() | |||
elif codon not in seqaa: | |||
print("Sua sequência apresenta caracteres indevidos (outros além de 'A','T','G','C').Tente novamente mais tarde após correção. :)\n") | |||
quit() | |||
elif codon in seq_parada: | |||
break | |||
#codon = seq[i : i+3] | |||
#proteina += seqaa[codon] | |||
return proteina | |||
def read_sequencia(): | |||
x = input("Qual sua sequencia? ") | |||
lista = [] | |||
lista.append(x) | |||
y = translate(x) | |||
lista.append(y) | |||
print(y) | |||
return lista | |||
def read_file(): | |||
all_lines = "" | |||
lista = [] | |||
file_name = input("Nome do arquivo (inclua no nome a extensão. Exemplo, se for um arquivo FASTA, redigir '(nomedoarquivo).fasta'): ") | |||
fd = open(file_name,'r') | |||
all_lines = fd.read() | |||
all_lines = all_lines.replace('\n','') | |||
all_lines = all_lines.replace('\r','') | |||
lista.append(all_lines) | |||
y = translate(all_lines) | |||
lista.append(y) | |||
fd.close() | |||
print(y) | |||
return lista | |||
def read_sequenciaplustranscription(): | |||
x = input("Qual sua sequencia? ") | |||
lista = [] | |||
lista.append(x) | |||
z = transcription(x) | |||
y = translate(z) | |||
lista.append(y) | |||
print(y) | |||
return lista | |||
def read_fileplustranscription(): | |||
all_lines = "" | |||
lista = [] | |||
file_name = input("Nome do arquivo (inclua no nome a extensão. Exemplo, se for um arquivo FASTA, redigir '(nomedoarquivo).fasta'): ") | |||
fd = open(file_name,'r') | |||
all_lines = fd.read() | |||
all_lines = all_lines.replace('\n','') | |||
all_lines = all_lines.replace('\r','') | |||
lista.append(all_lines) | |||
z = transcription(all_lines) | |||
y = translate(z) | |||
lista.append(y) | |||
fd.close() | |||
print(y) | |||
return lista | |||
def arquivo(lista): | |||
nome_arquivo = input('Nome do arquivo a ser criado (Não é necessário adicionar extensão, será criado um arquivo .txt):\n') | |||
nome_arquivo += ".txt" | |||
arquivo = open(nome_arquivo, 'w+') | |||
texto = """Programa Utilizado: Thousand Translation (T.T), Versão 1.0 | |||
--- | |||
Requerente: %s | |||
--- | |||
Espécie Analisada: %s | |||
--- | |||
Analisado às %s | |||
--- | |||
Tipo de Sequência Analisada: %s | |||
--- | |||
Sequência: %s | |||
--- | |||
Sequência Traduzida: %s""" % (usuario, especie, data, tiposeq, lista[0], lista[1]) | |||
arquivo.write(texto) | |||
print(texto) | |||
arquivo.close() | |||
print("Bem-vindo ao programa Thousand Translation (T.T), responsável por ler sequências de nucleotídeos e traduzi-las!\nSiga as instruções para continuar a tradução de sua sequência.") | |||
print("Observação: Será necessário que sua sequência possua o codificante para Metionina, que é o códon de iniciação. Ou seja, para DNA, é necessário haver TAC. Para RNAm, ATG.") | |||
valor = '1' | |||
while valor == '1': | |||
usuario = input("Nome do requerente: ") | |||
especie = input("Espécie utilizada: ") | |||
data = time.strftime("%H:%M:%S do dia %d/%m/%Y") | |||
while True: | |||
tiposeq = input("A sequência a ser usada é do tipo (1)DNA ou (2)RNAm? (Digite apenas '1' ou '2')\n") | |||
conducaoseq = input("Você deseja digitar uma sequência(1) ou ler um arquivo com a sequência(2)?\nÉ importante ressaltar que para ler um arquivo, é necessário tranferí-lo para a pasta do programa.\n(Digite apenas '1' ou '2')\n") | |||
if tiposeq == '2': | |||
tiposeq = 'RNAm' | |||
if conducaoseq == '1': | |||
y = read_sequencia() | |||
break | |||
elif conducaoseq == '2': | |||
y = read_file() | |||
break | |||
elif tiposeq == '1': | |||
tiposeq = 'DNA' | |||
if conducaoseq == '1': | |||
y = read_sequenciaplustranscription() | |||
break | |||
elif conducaoseq == '2': | |||
y = read_fileplustranscription() | |||
break | |||
arquivo(y) | |||
valor = input("Deseja continuar traduzindo sequências? Digite apenas o número '1' para continuar, e qualquer outro caracter para sair.\n") | |||
= Alterações para a última versão = | = Alterações para a última versão = | ||
Edição atual tal como às 10h25min de 3 de dezembro de 2018
Código
import sys import time
seqaa = {
'ATA':'Isoleucina-', 'ATC':'Isoleucina-', 'ATT':'Isoleucina-', 'ATG':'Metionina-', 'ACA':'Tirosina-', 'ACC':'Tirosina-', 'ACG':'Tirosina-', 'ACT':'Tirosina-', 'AAC':'Asparagina-', 'AAT':'Asparagina-', 'AAA':'Lisina-', 'AAG':'Lisina-', 'AGC':'Serina-', 'AGT':'Serina-', 'AGA':'Arginina-', 'AGG':'Arginina-', 'CTA':'Leucina-', 'CTC':'Leucina-', 'CTG':'Leucina-', 'CTT':'Leucina-', 'CCA':'Prolina-', 'CCC':'Prolina-', 'CCG':'Prolina-', 'CCT':'Prolina-', 'CAC':'Histidina-', 'CAT':'Histidina-', 'CAA':'Glutamina-', 'CAG':'Glutamina-', 'CGA':'Arginina-', 'CGC':'Arginina-', 'CGG':'Arginina-', 'CGT':'Arginina-', 'GTA':'Valina-', 'GTC':'Valina-', 'GTG':'Valina-', 'GTT':'Valina-', 'GCA':'Alanina-', 'GCC':'Alanina-', 'GCG':'Alanina-', 'GCT':'Alanina-', 'GAC':'Ácido Aspártico-', 'GAT':'Ácido Aspártico-', 'GAA':'Ácido Glutâmico-', 'GAG':'Ácido Glutâmico-', 'GGA':'Glicina-', 'GGC':'Glicina-', 'GGG':'Glicina-', 'GGT':'Glicina-', 'TCA':'Serina-', 'TCC':'Serina-', 'TCG':'Serina-', 'TCT':'Serina-', 'TTC':'Fenilalanina-', 'TTT':'Fenilalanina-', 'TTA':'Leucina-', 'TTG':'Leucina-', 'TAC':'Tirosina-', 'TAT':'Tirosina-', 'TAA':'Códon de Parada', 'TAG':'Códon de Parada', 'TGC':'Cisteína-', 'TGT':'Cisteína-', 'TGA':'Códon de Parada', 'TGG':'Triptofano-', 'A':'Error', 'T':'Error','C':'Error', 'G':'Error', 'AA':'Error', 'AT':'Error', 'AC':'Error', 'AG':'Error', 'TA':'Error', 'TT':'Error', 'TC':'Error', 'TG':'Error', 'CA':'Error', 'CT':'Error', 'CC':'Error', 'CG':'Error', 'GA':'Error', 'GT':'Error', 'GC':'Error', 'GG':'Error', }
seq_parada = ['TGA','TAA','TAG'] cod_error = ['A', 'T', 'C', 'G', 'AA', 'AT', 'AC', 'AG', 'TA', 'TT', 'TC', 'TG', 'CA', 'CT', 'CC', 'CG', 'GA', 'GT', 'GC', 'GG']
def transcription(seqbruta):
seqbruta = seqbruta.replace('A', 'Q')
seqbruta = seqbruta.replace('T', 'A')
seqbruta = seqbruta.replace('Q', 'T')
seqbruta = seqbruta.replace('C', 'W')
seqbruta = seqbruta.replace('G', 'C')
seqbruta = seqbruta.replace('W', 'G')
return seqbruta
def translate(seq):
proteina = "Metionina-"
codon = ""
seq = seq.split('ATG',1)[1]
for i in range(0, len(seq), 3):
if codon not in seq_parada:
codon = seq[i : i+3]
if codon in seqaa:
proteina += seqaa[codon]
if codon in cod_error:
print(proteina)
print("A sequência digitada está errada (O códon não está com o número de nucleotídeos adequado), verifique-a e tente novamente mais tarde. O programa será encerrado.")
quit()
elif codon not in seqaa:
print("Sua sequência apresenta caracteres indevidos (outros além de 'A','T','G','C').Tente novamente mais tarde após correção. :)\n")
quit()
elif codon in seq_parada:
break
#codon = seq[i : i+3]
#proteina += seqaa[codon]
return proteina
def read_sequencia():
x = input("Qual sua sequencia? ")
lista = []
lista.append(x)
y = translate(x)
lista.append(y)
print(y)
return lista
def read_file():
all_lines = ""
lista = []
file_name = input("Nome do arquivo (inclua no nome a extensão. Exemplo, se for um arquivo FASTA, redigir '(nomedoarquivo).fasta'): ")
fd = open(file_name,'r')
all_lines = fd.read()
all_lines = all_lines.replace('\n',)
all_lines = all_lines.replace('\r',)
lista.append(all_lines)
y = translate(all_lines)
lista.append(y)
fd.close()
print(y)
return lista
def read_sequenciaplustranscription():
x = input("Qual sua sequencia? ")
lista = []
lista.append(x)
z = transcription(x)
y = translate(z)
lista.append(y)
print(y)
return lista
def read_fileplustranscription():
all_lines = ""
lista = []
file_name = input("Nome do arquivo (inclua no nome a extensão. Exemplo, se for um arquivo FASTA, redigir '(nomedoarquivo).fasta'): ")
fd = open(file_name,'r')
all_lines = fd.read()
all_lines = all_lines.replace('\n',)
all_lines = all_lines.replace('\r',)
lista.append(all_lines)
z = transcription(all_lines)
y = translate(z)
lista.append(y)
fd.close()
print(y)
return lista
def arquivo(lista):
nome_arquivo = input('Nome do arquivo a ser criado (Não é necessário adicionar extensão, será criado um arquivo .txt):\n')
nome_arquivo += ".txt"
arquivo = open(nome_arquivo, 'w+')
texto = """Programa Utilizado: Thousand Translation (T.T), Versão 1.0
--- Requerente: %s --- Espécie Analisada: %s --- Analisado às %s --- Tipo de Sequência Analisada: %s --- Sequência: %s --- Sequência Traduzida: %s""" % (usuario, especie, data, tiposeq, lista[0], lista[1])
arquivo.write(texto)
print(texto)
arquivo.close()
print("Bem-vindo ao programa Thousand Translation (T.T), responsável por ler sequências de nucleotídeos e traduzi-las!\nSiga as instruções para continuar a tradução de sua sequência.") print("Observação: Será necessário que sua sequência possua o codificante para Metionina, que é o códon de iniciação. Ou seja, para DNA, é necessário haver TAC. Para RNAm, ATG.") valor = '1'
while valor == '1':
usuario = input("Nome do requerente: ")
especie = input("Espécie utilizada: ")
data = time.strftime("%H:%M:%S do dia %d/%m/%Y")
while True:
tiposeq = input("A sequência a ser usada é do tipo (1)DNA ou (2)RNAm? (Digite apenas '1' ou '2')\n")
conducaoseq = input("Você deseja digitar uma sequência(1) ou ler um arquivo com a sequência(2)?\nÉ importante ressaltar que para ler um arquivo, é necessário tranferí-lo para a pasta do programa.\n(Digite apenas '1' ou '2')\n")
if tiposeq == '2':
tiposeq = 'RNAm'
if conducaoseq == '1':
y = read_sequencia()
break
elif conducaoseq == '2':
y = read_file()
break
elif tiposeq == '1':
tiposeq = 'DNA'
if conducaoseq == '1':
y = read_sequenciaplustranscription()
break
elif conducaoseq == '2':
y = read_fileplustranscription()
break
arquivo(y)
valor = input("Deseja continuar traduzindo sequências? Digite apenas o número '1' para continuar, e qualquer outro caracter para sair.\n")
Alterações para a última versão
- 1. Obtenção de data a partir do sistema;
- 2. Invalidação da tradução caso haja caracteres indevidos o usuário do programa.
- 3. Invalidação da tradução caso haja número incorreto de nucleotídeos na ausência do Códon de Parada seguida de mensagem ao usuário.