【ROSALIND】【练Python,学生信】08 RNA翻译为蛋白质

如果第一次阅读本系列文档请先移步阅读【ROSALIND】【练Python,学生信】00 写在前面 谢谢配合~

题目:
把RNA翻译为蛋白质(Translating RNA into Protein)
Given: An RNA string s corresponding to a strand of mRNA (of length at most 10 kbp).
所给:一条mRNA序列,长度不超过10kb。
Return: The protein string encoded by s.
需得:s编码的蛋白质。
测试数据
AUGGCCAUGGCGCCCAGAACUGAGAUCAAUAGUACCCGUAUUAACGGGUGA
测试输出
MAMAPRTEINSTRING
背景
基因表达时每三个核苷酸对应一个氨基酸,共有64个密码子,对应20个组成蛋白质的基本氨基酸和终止密码子。游离的碱基以mRNA为直接模板,tRNA为氨基酸运载体,核糖体为装配场所,共同协调完成蛋白质生物合成,这个过程称为翻译。
思路
首先将密码子和氨基酸的对照表定义好。因为本题给出的已是mRNA,所以直接从第一个核苷酸开始,三个三个逐个译成氨基酸即可
Python知识点
字典是Python中的一种存储无序对象的容器,由键(key)和对应值(value)成对组成,可存储任意类型对象,如字符串、数字、元组。其中键应唯一。
代码
# 定义字典包含所有密码子及对应的氨基酸
codon_table = {
'GCU':'A', 'GCC':'A', 'GCA':'A', 'GCG':'A', 'CGU':'R', 'CGC':'R',
'CGA':'R', 'CGG':'R', 'AGA':'R', 'AGG':'R', 'UCU':'S', 'UCC':'S',
'UCA':'S', 'UCG':'S', 'AGU':'S', 'AGC':'S', 'AUU':'I', 'AUC':'I',
'AUA':'I', 'UUA':'L', 'UUG':'L', 'CUU':'L', 'CUC':'L', 'CUA':'L',
'CUG':'L', 'GGU':'G', 'GGC':'G', 'GGA':'G', 'GGG':'G', 'GUU':'V',
'GUC':'V', 'GUA':'V', 'GUG':'V', 'ACU':'T', 'ACC':'T', 'ACA':'T',
'ACG':'T', 'CCU':'P', 'CCC':'P', 'CCA':'P', 'CCG':'P', 'AAU':'N',
'AAC':'N', 'GAU':'D', 'GAC':'D', 'UGU':'C', 'UGC':'C', 'CAA':'Q',
'CAG':'Q', 'GAA':'E', 'GAG':'E', 'CAU':'H', 'CAC':'H', 'AAA':'K',
'AAG':'K', 'UUU':'F', 'UUC':'F', 'UAU':'Y', 'UAC':'Y', 'AUG':'M',
'UGG':'W',
'UAG':'', 'UGA':'', 'UAA':''
}
def trans(seq):
"""定义翻译mRNA为蛋白质的函数""
i = 0
p = ""
while i < len(seq)/3 - 1:
n = seq[3 * i] +seq[3*i+1] + seq[3*i+2] # 将三联密码子逐个取出
r = codon_table[n] # 将密码子译成氨基酸
i += 1
p = p + r
return p
f = open('rosalind_prot.txt', 'r')
s = f.read()
f.close()
peptide = trans(s)
f = open('output.txt', 'w')
f.write(peptide) # 将结果写入一个文件
f.close()