Biopython 简明教程

Biopython - Sequence

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

让我们像下面那样在 Biopython 中创建一个简单的序列 −

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

在这里,我们创建了一个简单的蛋白质序列 AGCT ,每个字母分别表示*A*兰ine、*G*lycine、*C*ysteine 和 *T*hreonine。

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

  1. data − 实际的序列字符串 (AGCT)

  2. alphabet − 用于表示序列类型。例如,DNA 序列、RNA 序列等。默认情况下,它不表示任何序列,并且本质上是通用的。

Alphabet Module

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

>>> from Bio.Seq import Seq
>>> myseq = Seq("AGCT")
>>> myseq
Seq('AGCT')
>>> myseq.alphabet
Alphabet()

Alphabet 模块提供了以下类来表示不同类型的序列。Alphabet - 所有类型字母表的基本类。

SingleLetterAlphabet - 通用字母表,字母大小为一。它源自 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 社区定义的基本序列类型。它包含以下类别 −

  1. IUPACProtein (protein) − IUPAC 20 个标准氨基酸蛋白质字母表。

  2. ExtendedIUPACProtein (extended_protein) − 扩展的大写 IUPAC 蛋白质单字母字母表,包括 X。

  3. IUPACAmbiguousDNA (ambiguous_dna) − 大写 IUPAC 含混 DNA。

  4. IUPACUnambiguousDNA (unambiguous_dna) − 大写 IUPAC 明确 DNA (GATC)。

  5. ExtendedIUPACDNA (extended_dna) − 扩展 IUPAC DNA 字母表。

  6. IUPACAmbiguousRNA (ambiguous_rna) − 大写 IUPAC 含混 RNA。

  7. 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'

Basic Operations

本节简要地阐述了 Seq 类中可用的所有基本操作。序列类似于 python 字符串。我们可以在序列中执行 python 字符串操作,如切片、计数、连接、查找、拆分和去除。

使用以下代码可获得各种输出。

To get the first value in sequence.

>>> seq_string = Seq("AGCTAGCT")
>>> seq_string[0]
'A'

To print the first two values.

>>> seq_string[0:2]
Seq('AG')

To print all the values.

>>> seq_string[ : ]
Seq('AGCTAGCT')

To perform length and count operations.

>>> len(seq_string)
8
>>> seq_string.count('A')
2

To add two sequences.

>>> 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())

在下文中给出了各种代码以根据要求获得输出。

To change the case of sequence.

>>> from Bio.Alphabet import generic_rna
>>> rna = Seq("agct", generic_rna)
>>> rna.upper()
Seq('AGCT', RNAAlphabet())

To check python membership and identity operator.

>>> rna = Seq("agct", generic_rna)
>>> 'a' in rna
True
>>> 'A' in rna
False
>>> rna1 = Seq("AGCT", generic_dna)
>>> rna is rna1
False

To find single letter or sequence of letter inside the given sequence.

>>> protein_seq = Seq('AGUACACUGGU', generic_protein)
>>> protein_seq.find('G')
1
>>> protein_seq.find('GG')
8

To perform splitting operation.

>>> protein_seq = Seq('AGUACACUGGU', generic_protein)
>>> protein_seq.split('A')
[Seq('', ProteinAlphabet()), Seq('GU', ProteinAlphabet()),
   Seq('C', ProteinAlphabet()), Seq('CUGGU', ProteinAlphabet())]

To perform strip operations in the sequence.

>>> strip_seq = Seq(" AGCT ")
>>> strip_seq
Seq(' AGCT ')
>>> strip_seq.strip()
Seq('AGCT')