Biopython 高级序列操作
在本章中,我们将讨论Biopython提供的一些高级序列功能。
补体和反补体
核苷酸序列可以被反向互补以得到新的序列。同时,补足的序列也可以通过反向补足来获得原始序列。Biopython提供了两种方法来实现这个功能 - 补全 和 反向补全 这方面的代码给出如下
>>> from Bio.Alphabet import IUPAC
>>> nucleotide = Seq('TCGAAGTCAGTC', IUPAC.ambiguous_dna)
>>> nucleotide.complement()
Seq('AGCTTCAGTCAG', IUPACAmbiguousDNA())
>>>
这里,complement()方法允许对DNA或RNA序列进行补充。reverse_complement()方法对结果序列从左到右进行补全和反转。它显示如下 –
>>> nucleotide.reverse_complement()
Seq('GACTGACTTCGA', IUPACAmbiguousDNA())
Biopython使用Bio.Data.IUPACData提供的ambiguous_dna_complement变量来进行补全操作。
>>> from Bio.Data import IUPACData
>>> import pprint
>>> pprint.pprint(IUPACData.ambiguous_dna_complement) {
'A': 'T',
'B': 'V',
'C': 'G',
'D': 'H',
'G': 'C',
'H': 'D',
'K': 'M',
'M': 'K',
'N': 'N',
'R': 'Y',
'S': 'S',
'T': 'A',
'V': 'B',
'W': 'W',
'X': 'X',
'Y': 'R'}
>>>
GC含量
预测基因组DNA碱基组成(GC含量)会显著影响基因组功能和物种生态学。GC含量是GC核苷酸的数量除以总核苷酸。
为了获得GC核苷酸含量,请导入以下模块并执行以下步骤 −
>>> from Bio.SeqUtils import GC
>>> nucleotide = Seq("GACTGACTTCGA",IUPAC.unambiguous_dna)
>>> GC(nucleotide)
50.0
转录
转录是将DNA序列变为RNA序列的过程。实际的生物转录过程是进行反补(TCAG→CUGA)以获得mRNA,考虑到DNA作为模板链。然而,在生物信息学和Biopython中,我们通常直接使用编码链,我们可以通过将字母T改为U来获得mRNA序列。
上述的简单例子如下
>>> from Bio.Seq import Seq
>>> from Bio.Seq import transcribe
>>> from Bio.Alphabet import IUPAC
>>> dna_seq = Seq("ATGCCGATCGTAT",IUPAC.unambiguous_dna) >>> transcribe(dna_seq)
Seq('AUGCCGAUCGUAU', IUPACUnambiguousRNA())
>>>
为了逆转转录,T被改为U,如下面的代码所示-
>>> rna_seq = transcribe(dna_seq)
>>> rna_seq.back_transcribe()
Seq('ATGCCGATCGTAT', IUPACUnambiguousDNA())
为了得到DNA模板链,按照下面的方法对反转录的RNA进行反补。
>>> rna_seq.back_transcribe().reverse_complement()
Seq('ATACGATCGGCAT', IUPACUnambiguousDNA())
翻译
翻译是一个将RNA序列翻译成蛋白质序列的过程。考虑一个RNA序列,如下图所示
>>> rna_seq = Seq("AUGGCCAUUGUAAU",IUPAC.unambiguous_rna)
>>> rna_seq
Seq('AUGGCCAUUGUAAUGGGCCGCUGAAAGGGUGCCCGAUAG', IUPACUnambiguousRNA())
现在,将translate()函数应用于上面的代码–
>>> rna_seq.translate()
Seq('MAIV', IUPACProtein())
上述RNA序列很简单。考虑RNA序列,AUGGCCAUUGUAAUGGGCCGCUGAAAGGGUGCCCGA并应用translate() –
>>> rna = Seq('AUGGCCAUUGUAAUGGGCCGCUGAAAGGGUGCCCGA', IUPAC.unambiguous_rna)
>>> rna.translate()
Seq('MAIVMGR*KGAR', HasStopCodon(IUPACProtein(), '*'))
这里,停止密码子用星号 *
表示。
在translate()方法中,有可能在第一个终止密码子处停止。要做到这一点,你可以在translate()中指定to_stop=True,如下所示
>>> rna.translate(to_stop = True)
Seq('MAIVMGR', IUPACProtein())
这里,终止密码子不包括在结果序列中,因为它不包含一个密码子。
翻译表
NCBI的遗传代码页面提供了Biopython使用的翻译表的完整列表。让我们来看看一个标准表的例子,以直观地了解代码 —
>>> from Bio.Data import CodonTable
>>> table = CodonTable.unambiguous_dna_by_name["Standard"]
>>> print(table)
Table 1 Standard, SGC0
| 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 Stop| A
T | TTG L(s)| 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(s)| CCG P | CAG Q | CGG R | G
--+---------+---------+---------+---------+--
A | ATT I | ACT T | AAT N | AGT S | T
A | ATC I | ACC T | AAC N | AGC S | C
A | ATA I | ACA T | AAA K | AGA R | A
A | ATG M(s)| ACG T | AAG K | AGG R | 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 | GCG A | GAG E | GGG G | G
--+---------+---------+---------+---------+--
>>>
Biopython使用这个表格将DNA翻译成蛋白质,并找到停止密码子。