Biopython 序列
序列是用来表示生物体蛋白质、DNA或RNA的一系列字母。它由Seq类表示。Seq类被定义在Bio.Seq模块中。
让我们在Biopython中创建一个简单的序列,如下图所示。
>>> from Bio.Seq import Seq
>>> seq = Seq("AGCT")
>>> seq
Seq('AGCT')
>>> print(seq)
AGCT
这里,我们创建了一个简单的蛋白质序列 AGCT ,每个字母代表 A lanine、 G lycine、 C ysteine和 T hreonine。
每个Seq对象有两个重要的属性 –
- 数据 – 实际的序列字符串(AGCT)
-
字母 – 用来表示序列的类型。例如,DNA序列、RNA序列等。默认情况下,它不代表任何序列,在性质上是通用的。
字母表模块
Seq对象包含Alphabet属性,用于指定序列类型、字母和可能的操作。它被定义在Bio.Alphabet模块中。字母表可以被定义为以下内容
>>> from Bio.Seq import Seq
>>> myseq = Seq("AGCT")
>>> myseq
Seq('AGCT')
>>> myseq.alphabet
Alphabet()
字母表模块提供以下类来表示不同类型的序列。Alphabet – 所有类型的字母的基类。
SingleLetterAlphabet – 通用的字母表,字母大小为1。它派生自Alphabet,所有其他字母类型都派生自它。
>>> from Bio.Seq import Seq
>>> from Bio.Alphabet import single_letter_alphabet
>>> test_seq = Seq('AGTACACTGGT', single_letter_alphabet)
>>> test_seq
Seq('AGTACACTGGT', SingleLetterAlphabet())
ProteinAlphabet – 通用的单字母蛋白质字母表。
>>> from Bio.Seq import Seq
>>> from Bio.Alphabet import generic_protein
>>> test_seq = Seq('AGTACACTGGT', generic_protein)
>>> test_seq
Seq('AGTACACTGGT', ProteinAlphabet())
NucleotideAlphabet – 通用的单字母核苷酸字母表。
>>> from Bio.Seq import Seq
>>> from Bio.Alphabet import generic_nucleotide
>>> test_seq = Seq('AGTACACTGGT', generic_nucleotide) >>> test_seq
Seq('AGTACACTGGT', NucleotideAlphabet())
DNAAlphabet – 通用的单字母DNA字母表。
>>> from Bio.Seq import Seq
>>> from Bio.Alphabet import generic_dna
>>> test_seq = Seq('AGTACACTGGT', generic_dna)
>>> test_seq
Seq('AGTACACTGGT', DNAAlphabet())
RNAAlphabet – 通用的单字母RNA字母表。
>>> from Bio.Seq import Seq
>>> from Bio.Alphabet import generic_rna
>>> test_seq = Seq('AGTACACTGGT', generic_rna)
>>> test_seq
Seq('AGTACACTGGT', RNAAlphabet())
Biopython模块,Bio.Alphabet.IUPAC提供了由IUPAC社区定义的基本序列类型。它包含以下类别
- IUPACProtein (protein) – IUPAC蛋白质字母表的20个标准氨基酸。
-
ExtendedIUPACProtein (extended_protein) – 扩展的大写IUPAC蛋白质单字母字母表,包括X。
-
IUPACAmbiguousDNA (ambiguous_dna) – 大写的IUPAC模糊DNA。
-
IUPACUnambiguousDNA (unambiguous_dna) – 大写的IUPAC不含糊的DNA(GATC)。
-
ExtendedIUPACDNA (extended_dna) – 扩展的IUPAC DNA字母表。
-
IUPACAmbiguousRNA (ambiguous_rna) – 大写的IUPAC含糊RNA。
-
IUPACUnambiguousRNA (unambiguous_rna) – 大写的IUPAC非歧义RNA(GAUC)。
考虑一个简单的IUPACProtein类的例子,如下所示 –
>>> from Bio.Alphabet import IUPAC
>>> protein_seq = Seq("AGCT", IUPAC.protein)
>>> protein_seq
Seq('AGCT', IUPACProtein())
>>> protein_seq.alphabet
同时,Biopython通过Bio.Data模块公开了所有生物信息学相关的配置数据。例如,IUPACData.protein_letters具有IUPACProtein字母表的可能字母。
>>> from Bio.Data import IUPACData
>>> IUPACData.protein_letters
'ACDEFGHIKLMNPQRSTVWY'
基本操作
本节简要地解释了Seq类中的所有基本操作。序列类似于 python 字符串。我们可以在序列中执行python字符串操作,如切片、计数、串联、查找、分割和剥离。
使用下面的代码来获得各种输出。
要获得序列中的第一个值 。
>>> seq_string = Seq("AGCTAGCT")
>>> seq_string[0]
'A'
要打印前两个值 。
>>> seq_string[0:2]
Seq('AG')
要打印所有的数值 。
>>> seq_string[ : ]
Seq('AGCTAGCT')
要进行长度和计数操作 。
>>> len(seq_string)
8
>>> seq_string.count('A')
2
要添加两个序列 。
>>> from Bio.Alphabet import generic_dna, generic_protein
>>> seq1 = Seq("AGCT", generic_dna)
>>> seq2 = Seq("TCGA", generic_dna)
>>> seq1+seq2
Seq('AGCTTCGA', DNAAlphabet())
在这里,上述两个序列对象,seq1,seq2是通用的DNA序列,因此你可以添加它们并产生新的序列。你不能添加具有不相容字母的序列,如下面指定的蛋白质序列和DNA序列。
>>> dna_seq = Seq('AGTACACTGGT', generic_dna)
>>> protein_seq = Seq('AGUACACUGGU', generic_protein)
>>> dna_seq + protein_seq
.....
.....
TypeError: Incompatible alphabets DNAAlphabet() and ProteinAlphabet()
>>>
要添加两个或更多的序列,首先将其存储在一个Python列表中,然后使用 “for循环 “进行检索,最后将其添加到一起,如下所示。
>>> from Bio.Alphabet import generic_dna
>>> list = [Seq("AGCT",generic_dna),Seq("TCGA",generic_dna),Seq("AAA",generic_dna)]
>>> for s in list:
... print(s)
...
AGCT
TCGA
AAA
>>> final_seq = Seq(" ",generic_dna)
>>> for s in list:
... final_seq = final_seq + s
...
>>> final_seq
Seq('AGCTTCGAAAA', DNAAlphabet())
在下面一节中,给出了各种代码,以根据要求获得输出。
为了改变序列的情况 。
>>> from Bio.Alphabet import generic_rna
>>> rna = Seq("agct", generic_rna)
>>> rna.upper()
Seq('AGCT', RNAAlphabet())
检查Python成员和身份操作员 。
>>> rna = Seq("agct", generic_rna)
>>> 'a' in rna
True
>>> 'A' in rna
False
>>> rna1 = Seq("AGCT", generic_dna)
>>> rna is rna1
False
在给定的序列中寻找单个字母或字母序列 。
>>> protein_seq = Seq('AGUACACUGGU', generic_protein)
>>> protein_seq.find('G')
1
>>> protein_seq.find('GG')
8
要执行分割操作 。
>>> protein_seq = Seq('AGUACACUGGU', generic_protein)
>>> protein_seq.split('A')
[Seq('', ProteinAlphabet()), Seq('GU', ProteinAlphabet()),
Seq('C', ProteinAlphabet()), Seq('CUGGU', ProteinAlphabet())]
要按顺序进行带状操作 。
>>> strip_seq = Seq(" AGCT ")
>>> strip_seq
Seq(' AGCT ')
>>> strip_seq.strip()
Seq('AGCT')