【发布时间】:2021-03-10 18:31:29
【问题描述】:
我必须先找到密码子“ATG”,然后一旦找到密码子,它就应该使用字典进行翻译。我目前没有输出。我在 python 方面仍然缺乏经验,所以无法用正确的语法编写代码
def translate(line, table):
protein = ""
for i in range (0, len(line), 3):
codon = line[i:i+3]
protein += table[codon]
print(protein)
return protein
def find_start(sequence):
for line in sequence:
if line == "ATG":
translate(line)
return
table = {
'ATA':'I', 'ATC':'I', 'ATT':'I', 'ATG':'M',
'ACA':'T', 'ACC':'T', 'ACG':'T', 'ACT':'T',
'AAC':'N', 'AAT':'N', 'AAA':'K', 'AAG':'K',
'AGC':'S', 'AGT':'S', 'AGA':'R', 'AGG':'R',
'CTA':'L', 'CTC':'L', 'CTG':'L', 'CTT':'L',
'CCA':'P', 'CCC':'P', 'CCG':'P', 'CCT':'P',
'CAC':'H', 'CAT':'H', 'CAA':'Q', 'CAG':'Q',
'CGA':'R', 'CGC':'R', 'CGG':'R', 'CGT':'R',
'GTA':'V', 'GTC':'V', 'GTG':'V', 'GTT':'V',
'GCA':'A', 'GCC':'A', 'GCG':'A', 'GCT':'A',
'GAC':'D', 'GAT':'D', 'GAA':'E', 'GAG':'E',
'GGA':'G', 'GGC':'G', 'GGG':'G', 'GGT':'G',
'TCA':'S', 'TCC':'S', 'TCG':'S', 'TCT':'S',
'TTC':'F', 'TTT':'F', 'TTA':'L', 'TTG':'L',
'TAC':'Y', 'TAT':'Y', 'TAA':'_', 'TAG':'_',
'TGC':'C', 'TGT':'C', 'TGA':'_', 'TGG':'W',
}
sequence = "ggatcatagtcttgttgcattgtaggtgtttctttacagtatccttcttaatgaatcatgattatgttctaagtagaccagatcgattcttacgactacaatattttcttttgagccatcatagattttttttagtttcaaaccagccttgcattgtgttctcctcgatgatgtgttacggattctaggattactagctaacctttctgtatttctaccctccattgaacaatttaac"
sequence = sequence.upper()
find_start(sequence)
【问题讨论】:
-
当您执行
for line in sequence时,您实际上是按字符而不是按行进行迭代。因此,if line == "ATG"条件永远不会满足 -
不确定你在这里使用什么逻辑。如果我们有
ggat作为DNA序列,是否意味着它由2个密码子组成:gga和gat? -
好问题。但是,如果程序首先找到 ATG,那么我认为这并不重要。我认为第一步是实际将字符串分成三个。所以它会像 gga、tca 等。不知道该怎么做?
标签: python bioinformatics protein-database