
阿升
2023/02/12阅读:23主题:默认主题
Biopython教程--生物序列对象1
简单理解Biopython是一个Python实现的生物信息学类库,Biopython安装命令为pip3 install biopython
。
1.核苷酸序列和(反向)互补序列
下面实现核苷酸序列的互补或反向互补序列:
from Bio.Seq import Seq
my_seq = Seq("GATCGATGGGCCTATATAGGATCGAAAATCGC")
# 互补序列
# CTAGCTACCCGGATATATCCTAGCTTTTAGCG
print(my_seq.complement())
# 反向序列
# CGCTAAAAGCTAGGATATATCCGGGTAGCTAG
print(my_seq[::-1])
# 反向互补序列
# GCGATTTTCGATCCTATATAGGCCCATCGATC
print(my_seq.reverse_complement())
举个例子,假如原序列为AATTCCGG,那么反向序列就是GGCCTTAA(原序列反过来),互补序列就是TTAAGGCC(与原序列互补);反向互补序列就是CCGGAATT(与反向序列互补)。其中,互补的概念就是A-T、C-G配对。
2.转录
实际转录过程是将模板链反向互补(TCAG → CUGA)生成mRNA。但是通常会直接利用编码链,因为可以通过T→ U的转换获得mRNA。分别创建DNA序列的编码链和模板链的Seq对象:
from Bio.Seq import Seq
coding_dna = Seq("ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG")
# 反向互补序列
# CTATCGGGCACCCTTTCAGCGGCCCATTACAATGGCCAT
template_dna = coding_dna.reverse_complement()
print(template_dna)
将编码链转录成对应的mRNA:
# 将编码链转录成对应的mRNA
# 将T->U转换,并调整字母表
# AUGGCCAUUGUAAUGGGCCGCUGAAAGGGUGCCCGAUAG
messenger_rna = coding_dna.transcribe()
print(messenger_rna)
从模板链去做一个真正的生物学上的转录需要两步:
# 反向互补序列+转录
template_dna.reverse_complement().transcribe()
print(template_dna)
从mRNA逆向转录为DNA编码链,即从U → T的替代并伴随着字母表的变化:
from Bio.Seq import Seq
messenger_rna = Seq("AUGGCCAUUGUAAUGGGCCGCUGAAAGGGUGCCCGAUAG")
# 逆向转录
# ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG
print(messenger_rna.back_transcribe())
3.翻译
from Bio.Seq import Seq
messenger_rna = Seq("AUGGCCAUUGUAAUGGGCCGCUGAAAGGGUGCCCGAUAG")
# 将mRNA翻译为蛋白质序列
# MAIVMGR*KGAR*
print(messenger_rna.translate())
还可以直接从编码DNA链进行翻译:
from Bio.Seq import Seq
coding_dna = Seq("ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG")
# MAIVMGR*KGAR*
print(coding_dna.translate())
默认使用的是标准遗传密码(NCBI上table id 1)。假设要翻译一个线粒体序列,就需要告诉翻译函数使用相关的遗传密码:
# MAIVMGRWKGAR*
print(coding_dna.translate(table="Vertebrate Mitochondrial"))
如果将上面的核苷酸序列仅翻译到阅读框的第一个终止密码子后停止,那么需使用to_stop=True
参数:
# MAIVMGR*KGAR*
print(coding_dna.translate())
# MAIVMGR
coding_dna.translate(to_stop=True)
什么是CDS编码序列呢?DNA转录成mRNA,mRNA经剪接等加工后翻译出蛋白质,所谓CDS(Coding sequence)就是与蛋白质序列一一对应的DNA序列,且该序列中间不含其它非该蛋白质对应的序列,不考虑mRNA加工等过程中的序列变化,总之,就是与蛋白质的密码子完全对应。
4.翻译表
主要介绍标准的翻译表和脊椎动物线粒体DNA的翻译表:
from Bio.Data import CodonTable
standard_table = CodonTable.unambiguous_dna_by_name["Standard"]
mito_table = CodonTable.unambiguous_dna_by_name["Vertebrate Mitochondrial"]
脊椎动物线粒体DNA的翻译表如下所示:
Table 2 Vertebrate Mitochondrial, SGC1
| T | C | A | G |
--+---------+---------+---------+---------+--
T | TTT F | TCT S | TAT Y | TGT C | T
T | TTC F | TCC S | TAC Y | TGC C | C
T | TTA L | TCA S | TAA Stop| TGA W | A
T | TTG L | TCG S | TAG Stop| TGG W | G
--+---------+---------+---------+---------+--
C | CTT L | CCT P | CAT H | CGT R | T
C | CTC L | CCC P | CAC H | CGC R | C
C | CTA L | CCA P | CAA Q | CGA R | A
C | CTG L | CCG P | CAG Q | CGG R | G
--+---------+---------+---------+---------+--
A | ATT I(s)| ACT T | AAT N | AGT S | T
A | ATC I(s)| ACC T | AAC N | AGC S | C
A | ATA M(s)| ACA T | AAA K | AGA Stop| A
A | ATG M(s)| ACG T | AAG K | AGG Stop| G
--+---------+---------+---------+---------+--
G | GTT V | GCT A | GAT D | GGT G | T
G | GTC V | GCC A | GAC D | GGC G | C
G | GTA V | GCA A | GAA E | GGA G | A
G | GTG V(s)| GCG A | GAG E | GGG G | G
--+---------+---------+---------+---------+--
当查找新基因时,下面的特性很有用:
print(mito_table.stop_codons)
# ['TAA', 'TAG', 'AGA', 'AGG']
print(mito_table.start_codons)
# ['ATT', 'ATC', 'ATA', 'ATG', 'GTG']
print(mito_table.forward_table["ACG"])
# 'T'
5.比较Seq对象
比较两个Seq对象意味着既要考虑两个序列的字符串又要考虑字母表。MutableSeq对象不可以作为字典的键值,但是Python字符串或者Seq对象可以。
参考文献:
[1]Biopython教程:https://www.yiibai.com/biopython
[2]Biopython官网:https://biopython.org/
[3]Biopython中文文档:https://biopython-cn.readthedocs.io/zh_CN/latest/index.html
[4]The Genetic Codes:https://www.ncbi.nlm.nih.gov/Taxonomy/Utils/wprintgc.cgi
作者介绍

阿升
吾爱DotNet(公众号)