欢迎光临散文网 会员登陆 & 注册

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

2019-02-04 15:48 作者:未琢  | 我要投稿

如果第一次阅读本系列文档请先移步阅读【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()


【ROSALIND】【练Python,学生信】08 RNA翻译为蛋白质的评论 (共 条)

分享到微博请遵守国家法律