【ROSALIND】【練Python,學(xué)生信】08 RNA翻譯為蛋白質(zhì)

如果第一次閱讀本系列文檔請(qǐng)先移步閱讀【ROSALIND】【練Python,學(xué)生信】00 寫在前面 ?謝謝配合~

題目:
把RNA翻譯為蛋白質(zhì)(Translating RNA into Protein)
Given: An RNA string s corresponding to a strand of mRNA (of length at most 10 kbp).
所給:一條mRNA序列,長(zhǎng)度不超過(guò)10kb。
Return: The protein string encoded by s.
需得:s編碼的蛋白質(zhì)。
?
測(cè)試數(shù)據(jù)
AUGGCCAUGGCGCCCAGAACUGAGAUCAAUAGUACCCGUAUUAACGGGUGA
測(cè)試輸出
MAMAPRTEINSTRING
?
背景
基因表達(dá)時(shí)每三個(gè)核苷酸對(duì)應(yīng)一個(gè)氨基酸,共有64個(gè)密碼子,對(duì)應(yīng)20個(gè)組成蛋白質(zhì)的基本氨基酸和終止密碼子。游離的堿基以mRNA為直接模板,tRNA為氨基酸運(yùn)載體,核糖體為裝配場(chǎng)所,共同協(xié)調(diào)完成蛋白質(zhì)生物合成,這個(gè)過(guò)程稱為翻譯。
?
思路
首先將密碼子和氨基酸的對(duì)照表定義好。因?yàn)楸绢}給出的已是mRNA,所以直接從第一個(gè)核苷酸開(kāi)始,三個(gè)三個(gè)逐個(gè)譯成氨基酸即可
?
Python知識(shí)點(diǎn)
字典是Python中的一種存儲(chǔ)無(wú)序?qū)ο蟮娜萜?,由鍵(key)和對(duì)應(yīng)值(value)成對(duì)組成,可存儲(chǔ)任意類型對(duì)象,如字符串、數(shù)字、元組。其中鍵應(yīng)唯一。
?
代碼
# 定義字典包含所有密碼子及對(duì)應(yīng)的氨基酸
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為蛋白質(zhì)的函數(shù)""
?? ?i = 0
??? p = ""
??? while i < len(seq)/3 - 1:
??????? n = seq[3 * i] +seq[3*i+1] + seq[3*i+2] # 將三聯(lián)密碼子逐個(gè)取出
??????? 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)? # 將結(jié)果寫入一個(gè)文件
f.close()