
在上一节中,我们研究咯转录 ,现在让我们来把这个mRNA 翻译成蛋白质序列-我们再次利用Seq 对象的一个生物学方法:
>>> from Bio.Seq import Seq
>>> from Bio.Alphabet import IUPAC
>>> messenger_rna = Seq("AUGGCCAUUGUAAUGGGCCGCUGAAAGGGUGCCCGAUAG", IUPAC.unambiguous_rna)
>>> messenger_rna
Seq('AUGGCCAUUGUAAUGGGCCGCUGAAAGGGUGCCCGAUAG', IUPACUnambiguousRNA())
>>> messenger_rna.translate()
Seq('MAIVMGR*KGAR*', HasStopCodon(IUPACProtein(), '*'))
你还可以直接从编码链DNA 序列翻译过来:
>>> from Bio.Seq import Seq
>>> from Bio.Alphabet import IUPAC
>>> coding_dna = Seq("ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG", IUPAC.unambiguous_dna)
>>> coding_dna
Seq('ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG', IUPACUnambiguousDNA())
>>> coding_dna.translate()
Seq('MAIVMGR*KGAR*', HasStopCodon(IUPACProtein(), '*'))
应当注意,在上面的蛋白质序列中,除咯最后的停止符号以外 ,在中间也有一个停止字符。这个例子是有意设计的 ,因为它能引出某些可选参数,包括不同的翻译表 (基因编码 (Genetic Codes) )。
Biopython 中可用的翻译表是基于NCBI 上的翻译表的(参见此教程的下一小节)。默认情况下 ,在翻译过程中会使用 标准 基因编码(编号为 1 的NCBI编码表)。假设我们在处理一个线粒体序列。我们需 要告诉翻译函数要使用适当的基因编码:
>>> coding_dna.translate(table="Vertebrate Mitochondrial")
Seq('MAIVMGRWKGAR*', HasStopCodon(IUPACProtein(), '*'))
你还可以使用NCBI 编码表编号来指定编码表,它更短,并且通常会包含在GenBank 文件的特性注释中 :
>>> coding_dna.translate(table=2)
Seq('MAIVMGRWKGAR*', HasStopCodon(IUPACProtein(), '*'))
现在,你可能想要翻译到第一个停止符号就结束(自然界就是这样的):
>>> coding_dna.translate()
Seq('MAIVMGR*KGAR*', HasStopCodon(IUPACProtein(), '*'))
>>> coding_dna.translate(to_stop=True)
Seq('MAIVMGR', IUPACProtein())
>>> coding_dna.translate(table=2)
Seq('MAIVMGRWKGAR*', HasStopCodon(IUPACProtein(), '*'))
>>> coding_dna.translate(table=2, to_stop=True)
Seq('MAIVMGRWKGAR', IUPACProtein())
注意,当你使用to_stop 参数时,终止密码子本身不会被翻译出来-因此停止符号也不会出现在你的蛋白质序列的末尾。
如果你不喜欢采用默认的星号做停止符号的话,你甚至还可以指定一个停止字符:
>>> coding_dna.translate(table=2, stop_symbol="@")
Seq('MAIVMGRWKGAR@', HasStopCodon(IUPACProtein(), '@'))
现在,假设你有一个完整编码序列CDS,它是一个有整数个数的密码子(也就是说 ,长度是3的整数倍 )的核苷酸序列(比如说 ,信使 RNA–已经过修剪),以一个启动密码子开始,以一个终止密码子结束,并且在中间没有终止密码子 。一般来说 ,给定一个完整的编码序列的话 ,默认的翻译方法会为你做出正确的事 (也许你会指定 to_stop 选项)。然而,要是你的序列使用咯一个非标准的启动密码子勒 ?对于细菌经常发生这种事–比如说E. coli K12:中的基因yaaX:
>>> from Bio.Seq import Seq
>>> from Bio.Alphabet import generic_dna
>>> gene = Seq("GTGAAAAAGATGCAATCTATCGTACTCGCACTTTCCCTGGTTCTGGTCGCTCCCATGGCA" +
... "GCACAGGCTGCGGAAATTACGTTAGTCCCGTCAGTAAAATTACAGATAGGCGATCGTGAT" +
... "AATCGTGGCTATTACTGGGATGGAGGTCACTGGCGCGACCACGGCTGGTGGAAACAACAT" +
... "TATGAATGGCGAGGCAATCGCTGGCACCTACACGGACCGCCGCCACCGCCGCGCCACCAT" +
... "AAGAAAGCTCCTCATGATCATCACGGCGGTCATGGTCCAGGCAAACATCACCGCTAA",
... generic_dna)
>>> gene.translate(table="Bacterial")
Seq('VKKMQSIVLALSLVLVAPMAAQAAEITLVPSVKLQIGDRDNRGYYWDGGHWRDH...HR*',
HasStopCodon(ExtendedIUPACProtein(), '*')
>>> gene.translate(table="Bacterial", to_stop=True)
Seq('VKKMQSIVLALSLVLVAPMAAQAAEITLVPSVKLQIGDRDNRGYYWDGGHWRDH...HHR',
ExtendedIUPACProtein())
在细菌的基因编码中, GTG 是一个有效的启动密码子,而且,尽管它 一般情况下 是编码 缬氨酸 的 ,但是如果是用作启动密码子的话,它应当被翻译成 甲硫氨酸 。如果你告诉Biopython 说你的序列是一个完整 的CDS 的话 ,就会发生这种事:
>>> gene.translate(table="Bacterial", cds=True)
Seq('MKKMQSIVLALSLVLVAPMAAQAAEITLVPSVKLQIGDRDNRGYYWDGGHWRDH...HHR',
ExtendedIUPACProtein())
除咯告诉将某个启动密码子翻译成甲硫氨酸之外 ,使用这个选项还能确认你的序列真的是一个有效的CDS (如果不是的话 ,你会遇到一个异常 )。
在16.1.2 小节中的例子将 Seq 对象的翻译方法与Bio.SeqIO 结合,以进行序列的输入/输出。
注意: Seq对象的translate 方法是在Biopython 1.49 中新加的。对于旧版本 ,你需要使用 Bio.Seq 模块的 translate 函数,参见 3.14 小节。 cds 选项是在Biopython 1.51 中新加的 ,并且在旧版本的Biopython 中,无法轻易地做到这一点 。
HxLauncher: Launch Android applications by voice commands