搜索
查看: 5478|回复: 14

【菜鸟Python练习8】[ROSALIND-PROT] RNA翻译成蛋白质

[复制链接]

20

主题

68

帖子

870

积分

版主

Rank: 7Rank: 7Rank: 7

积分
870
QQ
发表于 2016-10-13 02:53:52 | 显示全部楼层 |阅读模式
本帖最后由 bioinfo.dong 于 2016-10-13 03:21 编辑

【8】Translating RNA into Protein

*首先我们要建立一个dictionary将RNA codon table存进去,key为RNA codon,value是对应的氨基酸。
*可以手动去建,也可以在网站上找个表存到文件里直接读取,省去一个个输入的麻烦。我把我用的codon table也贴上来
*Biopython里有包可以直接做蛋白翻译,但是为了练习嘛,就重复造个小轮子吧,哈哈




[Python] 纯文本查看 复制代码
### 8. Translating RNA into Protein ###
import re
from collections import OrderedDict

codonTable = OrderedDict()
with open('/Users/DONG/Downloads/rna_codon_table.txt') as f:
    for line in f:
        line = line.rstrip()
        lst = re.split('\s+', line)
        for i in [0,2,4,6]:
            codonTable[lst[i]] = lst[i+1]

rnaSeq = ''
with open('/Users/DONG/Downloads/rosalind_prot.txt', 'rt') as f:
    for line in f:
        line = line.rstrip()
        rnaSeq += line.upper()

aminoAcids = []
i = 0
while i < len(rnaSeq):
    codon = rnaSeq[i:i+3]
    if codonTable[codon] != 'Stop':
        aminoAcids.append(codonTable[codon])
    i+=3
    
peptide = ''.join(aminoAcids)

print (peptide)



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x



上一篇:TCGA数据基础下载问题
下一篇:【菜鸟Python练习9】[ROSALIND-SUBS] 寻找DNA Motif
You really shouldn't spend your time reinventing the wheel
回复

使用道具 举报

4

主题

51

帖子

327

积分

中级会员

Rank: 3Rank: 3

积分
327
发表于 2016-10-13 09:00:33 | 显示全部楼层
本帖最后由 xuehzh95 于 2016-10-13 09:02 编辑

这里我把密码子表贴出来。。。差不多
[Python] 纯文本查看 复制代码
def translate_rna(sequence):
    codonTable = {
    'AUA':'I', 'AUC':'I', 'AUU':'I', 'AUG':'M',
    'ACA':'T', 'ACC':'T', 'ACG':'T', 'ACU':'T',
    'AAC':'N', 'AAU':'N', 'AAA':'K', 'AAG':'K',
    'AGC':'S', 'AGU':'S', 'AGA':'R', 'AGG':'R',
    'CUA':'L', 'CUC':'L', 'CUG':'L', 'CUU':'L',
    'CCA':'P', 'CCC':'P', 'CCG':'P', 'CCU':'P',
    'CAC':'H', 'CAU':'H', 'CAA':'Q', 'CAG':'Q',
    'CGA':'R', 'CGC':'R', 'CGG':'R', 'CGU':'R',
    'GUA':'V', 'GUC':'V', 'GUG':'V', 'GUU':'V',
    'GCA':'A', 'GCC':'A', 'GCG':'A', 'GCU':'A',
    'GAC':'D', 'GAU':'D', 'GAA':'E', 'GAG':'E',
    'GGA':'G', 'GGC':'G', 'GGG':'G', 'GGU':'G',
    'UCA':'S', 'UCC':'S', 'UCG':'S', 'UCU':'S',
    'UUC':'F', 'UUU':'F', 'UUA':'L', 'UUG':'L',
    'UAC':'Y', 'UAU':'Y', 'UAA':'', 'UAG':'',
    'UGC':'C', 'UGU':'C', 'UGA':'', 'UGG':'W',
    }
    proteinsequence = ''
    for n in range(0,len(sequence),3):
        if sequence[n:n+3] in codonTable.keys():
            proteinsequence += codonTable[sequence[n:n+3]]
    return proteinsequence

se = open('rosalind_prot.txt').read().strip('\n') #sequence
fp = open('pro_r.txt','w')
fp.write(translate_rna(se))
fp.close()


回复 支持 1 反对 0

使用道具 举报

5

主题

24

帖子

161

积分

版主

Rank: 7Rank: 7Rank: 7

积分
161
发表于 2016-10-13 11:15:31 来自手机 | 显示全部楼层
其实把RosaLind上的rna对照表复制到本地,然后用perl oneline很快就能建一个哈希表,perl处理起文字来真的很方便
回复 支持 0 反对 1

使用道具 举报

20

主题

68

帖子

870

积分

版主

Rank: 7Rank: 7Rank: 7

积分
870
QQ
 楼主| 发表于 2016-10-13 12:00:56 | 显示全部楼层
侠客行 发表于 2016-10-13 11:15
其实把RosaLind上的rna对照表复制到本地,然后用perl oneline很快就能建一个哈希表,perl处理起文字来真的 ...

附件里的文件就是把rosalind的对照表复制到本地的。python处理文本不会比perl弱,Python可读性强,可用的包也非常多,这个比perl方便多了~
You really shouldn't spend your time reinventing the wheel
回复 支持 反对

使用道具 举报

20

主题

68

帖子

870

积分

版主

Rank: 7Rank: 7Rank: 7

积分
870
QQ
 楼主| 发表于 2016-10-13 12:04:12 | 显示全部楼层
侠客行 发表于 2016-10-13 11:15
其实把RosaLind上的rna对照表复制到本地,然后用perl oneline很快就能建一个哈希表,perl处理起文字来真的 ...

对啦,你看看练习9那个题目perl能不能oneline搞定~
You really shouldn't spend your time reinventing the wheel
回复 支持 反对

使用道具 举报

4

主题

51

帖子

327

积分

中级会员

Rank: 3Rank: 3

积分
327
发表于 2016-10-13 13:33:13 来自手机 | 显示全部楼层
这么说biopython也有现成的函数直接调用翻译好了。。
回复 支持 反对

使用道具 举报

20

主题

68

帖子

870

积分

版主

Rank: 7Rank: 7Rank: 7

积分
870
QQ
 楼主| 发表于 2016-10-13 13:54:15 | 显示全部楼层
本帖最后由 bioinfo.dong 于 2016-10-13 13:58 编辑
xuehzh95 发表于 2016-10-13 13:33
这么说biopython也有现成的函数直接调用翻译好了。。

哈哈,是啊,biopython连codon table都省了,一句话解决translation,一句话解决reverse complement
来,咱也show一下biopython。。。


[Python] 纯文本查看 复制代码
from Bio.Seq import Seq
from Bio.Alphabet import generic_dna, generic_rna

# translation
messenger_rna = Seq("AUGGCCAUUGUAAUGGGCCGCUGAAAGGGUGCCCGAUAG", generic_rna)
messenger_rna.translate()

#reverse complement
my_dna = Seq("AGTACACTGGT", generic_dna)
my_dna.reverse_complement()


You really shouldn't spend your time reinventing the wheel
回复 支持 反对

使用道具 举报

634

主题

1182

帖子

4030

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4030
发表于 2016-10-13 15:44:51 | 显示全部楼层
bioinfo.dong 发表于 2016-10-13 13:54
哈哈,是啊,biopython连codon table都省了,一句话解决translation,一句话解决reverse complement
来, ...

你加载的那个包里面,定义这个函数,也是用了十几行代码了的
你这个问题很复杂,需要打赏,请点击 http://www.bio-info-trainee.com/donate 进行打赏,谢谢
回复 支持 反对

使用道具 举报

20

主题

68

帖子

870

积分

版主

Rank: 7Rank: 7Rank: 7

积分
870
QQ
 楼主| 发表于 2016-10-13 23:01:08 来自手机 | 显示全部楼层
Jimmy 发表于 2016-10-13 15:44
你加载的那个包里面,定义这个函数,也是用了十几行代码了的

哈哈,我们能很方便的用Python或perl写脚本之前,这两门语言的发明者已经为我们写了无数行代码了~
回复 支持 反对

使用道具 举报

1

主题

41

帖子

285

积分

中级会员

Rank: 3Rank: 3

积分
285
发表于 2016-10-14 01:30:51 | 显示全部楼层
python可读性强,perl乍一看有点恐怖。我觉得初学者(比如我)学习python上手会更快
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树 ( 粤ICP备15016384号  

GMT+8, 2019-7-19 04:29 , Processed in 0.041533 second(s), 30 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.