搜索
12
返回列表 发新帖
楼主: bioinfo.dong

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

[复制链接]

20

主题

68

帖子

870

积分

版主

Rank: 7Rank: 7Rank: 7

积分
870
QQ
 楼主| 发表于 2016-10-14 02:44:53 来自手机 | 显示全部楼层
learnyoung 发表于 2016-10-14 01:30
python可读性强,perl乍一看有点恐怖。我觉得初学者(比如我)学习python上手会更快 ...

是的,Python比较适合入门,哈哈~
回复 支持 反对

使用道具 举报

0

主题

7

帖子

85

积分

注册会员

Rank: 2

积分
85
发表于 2017-11-18 18:37:33 | 显示全部楼层
先附上不用biopython的一个代码:
[Python] 纯文本查看 复制代码
import re
def mRNA_protein(RNA_string):
    '''将mRNA翻译成蛋白质'''
    start_code = 'AUG'
    end_code = ['UAA', 'UAG', 'UGA']
    protein_table = {'UUU': 'F', 'CUU': 'L', 'AUU': 'I', 'GUU': 'V', \
                     'UUC': 'F', 'CUC': 'L', 'AUC': 'I', 'GUC': 'V', \
                     'UUA': 'L', 'CUA': 'L', 'AUA': 'I', 'GUA': 'V', \
                     'UUG': 'L', 'CUG': 'L', 'AUG': 'M', 'GUG': 'V', \
                     'UCU': 'S', 'CCU': 'P', 'ACU': 'T', 'GCU': 'A', \
                     'UCC': 'S', 'CCC': 'P', 'ACC': 'T', 'GCC': 'A', \
                     'UCA': 'S', 'CCA': 'P', 'ACA': 'T', 'GCA': 'A', \
                     'UCG': 'S', 'CCG': 'P', 'ACG': 'T', 'GCG': 'A', \
                     'UAU': 'Y', 'CAU': 'H', 'AAU': 'N', 'GAU': 'D', \
                     'UAC': 'Y', 'CAC': 'H', 'AAC': 'N', 'GAC': 'D', \
                     'UAA': 'Stop', 'CAA': 'Q', 'AAA': 'K', 'GAA': 'E', \
                     'UAG': 'Stop', 'CAG': 'Q', 'AAG': 'K', 'GAG': 'E', \
                     'UGU': 'C', 'CGU': 'R', 'AGU': 'S', 'GGU': 'G', \
                     'UGC': 'C', 'CGC': 'R', 'AGC': 'S', 'GGC': 'G', \
                     'UGA': 'Stop', 'CGA': 'R', 'AGA': 'R', 'GGA': 'G', \
                     'UGG': 'W', 'CGG': 'R', 'AGG': 'R', 'GGG': 'G'
                     }
    #找到起始密码子的位置
    start_sit = re.search(start_code, RNA_string)
    protein = ''
    #按阅读框匹配蛋白质
    for sit in range(start_sit.end(), len(RNA_string), 3):
        protein = protein + protein_table[RNA_string[sit:sit+3]]
    print protein

if __name__ == '__main__':
    RNA_string = open('E:\\bioinfo\data\\rosalind_prot\\rosalind_prot.txt', 'r').read().strip()
    mRNA_protein(RNA_string)


下面是用biopython的一段代码,简介了很多,但是模块太多比较难记:
[Python] 纯文本查看 复制代码
#_*_ coding: utf-8 _*
from Bio import Seq
from Bio.Alphabet import generic_dna, generic_rna
from Bio import SeqIO
from Bio.Data import CodonTable
#载入mRNA序列
RNA_string = open('E:\\bioinfo\data\\rosalind_prot\\rosalind_prot.txt', 'r').read().strip()
my_seq = Seq.Seq(RNA_string, generic_rna)
#载入标准遗传密码表
standard_table = CodonTable.unambiguous_rna_by_name['Standard']
#将mRNA翻译成蛋白质
protein = my_seq.translate(table='Standard')
print protein

回复 支持 反对

使用道具 举报

1

主题

10

帖子

80

积分

注册会员

Rank: 2

积分
80
发表于 2018-4-24 17:02:18 | 显示全部楼层
感觉自己写的代码是和上面一样的,可不知道为什么总是报错
[Python] 纯文本查看 复制代码
def translate_RNA(seq):
    codon_table = {
    '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':'STOP', 'UAG':'STOP',
    'UGC':'C', 'UGU':'C', 'UGA':'STOP', 'UGG':'W',
    }
    # 翻译后的蛋白质序列
    pro_seq = ''
    for i in range(0,len(seq),3):
        # 氨基酸有对应的键
        if seq[i,i+3] in codon_table.keys():
            pro_seq += condon_table[seq[i,i+3]]
    return pro_seq
translate_RNA('AUG')
回复 支持 反对

使用道具 举报

1

主题

10

帖子

80

积分

注册会员

Rank: 2

积分
80
发表于 2018-4-24 18:05:21 | 显示全部楼层
A_rrow 发表于 2018-4-24 17:02
感觉自己写的代码是和上面一样的,可不知道为什么总是报错
[mw_shl_code=python,true]def translate_RNA( ...

找到原因了,逻辑没错 [i:i+3] 写成[i,i+3]了
回复 支持 反对

使用道具 举报

0

主题

3

帖子

89

积分

注册会员

Rank: 2

积分
89
发表于 2018-11-28 12:45:21 | 显示全部楼层
import re
import sys
args=sys.argv
codon={}
fp=open("rna_codon_table.txt","r")
for line in fp:
        lines=line.split()
        rna=lines[0]
        protein=lines[1]
        codon[rna]=protein

amin=[]
rna_seq="AUGCAGUGAUCGUAGCUAUGUGUGACUGAUCGAUCGAUCGAU"
i=0
while i < length(rna_seq):
        zl=rna_seq[i:i+3]
        if condon[zl] != "Stop":
          amin.append(condon[zl])
        i=i+3

protein_seq=''.join(amin)
print(protein_seq)
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|生信技能树    

GMT+8, 2019-3-23 13:15 , Processed in 0.046044 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.