Biopython - 序列


序列是用于表示生物体的蛋白质、DNA 或 RNA 的一系列字母。它由 Seq 类表示。Seq 类在 Bio.Seq 模块中定义。

让我们在 Biopython 中创建一个简单的序列,如下所示 -

>>> from Bio.Seq import Seq 
>>> seq = Seq("AGCT") 
>>> seq 
Seq('AGCT') 
>>> print(seq) 
AGCT

在这里,我们创建了一个简单的蛋白质序列AGCT,每个字母代表A丙氨酸、G赖氨酸、半胱氨酸T苏氨酸。

每个 Seq 对象都有两个重要的属性 -

  • 数据 - 实际序列字符串 (AGCT)

  • 字母表- 用于表示序列的类型。例如DNA序列、RNA序列等。默认情况下,它不代表任何序列,本质上是通用的。

字母模块

Seq 对象包含 Alphabet 属性来指定序列类型、字母和可能的操作。它在 Bio.Alphabet 模块中定义。字母表可以定义如下 -

>>> from Bio.Seq import Seq 
>>> myseq = Seq("AGCT") 
>>> myseq 
Seq('AGCT') 
>>> myseq.alphabet 
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(蛋白质) - 20 个标准氨基酸的 IUPAC 蛋白质字母表。

  • Extended IUPACProtein (extended_ Protein) - 扩展大写 IUPAC 蛋白质单字母字母表,包括 X。

  • IUPACAmbigeousDNA (ambiguously_dna) - 大写 IUPAC 模糊 DNA。

  • IUPACUnambiguousDNA (unambigously_dna) - 大写的 IUPAC 明确 DNA (GATC)。

  • ExtendedIUPACDNA (extended_dna) - 扩展的 IUPAC DNA 字母表。

  • IUPACAmbigouslyRNA (ambiguously_rna) - 大写 IUPAC 模糊 RNA。

  • IUPACUnambiguousRNA (unambigously_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')