在 GitHub 上编辑此页面

使用 Seq 类处理序列。

在 Biopython 中,序列通常存储为 `Seq` 对象,这些对象在字符串行为之上添加了各种生物学方法。

此页面描述了 Biopython Seq 对象,它定义在 Bio.Seq 模块中(以及相关的对象,例如 MutableSeq,以及一些通用序列函数)。除了此 wiki 页面之外,教程 (PDF) 中有一整章关于 Seq 对象 - 以及它的 API 文档(可以在线阅读,或者在 Python 中使用帮助命令阅读)。

如果您需要存储额外的信息,例如序列标识符或名称,甚至更多详细信息,例如描述或注释,那么我们使用 SeqRecord 对象代替。这些是 SeqIO 模块用于读取和写入序列文件使用的序列记录。

Seq 对象

Seq 对象本质上将 Python 字符串与生物学方法结合在一起。例如

>>> from Bio.Seq import Seq
>>> my_seq = Seq("AGTACACTGGT")
>>> my_seq
Seq('AGTACACTGGT')

Biopython 不知道这是否是核苷酸序列或富含丙氨酸、甘氨酸、半胱氨酸和苏氨酸的蛋白质。如果您知道,在调用诸如(反向)互补之类的方法时请牢记这一点 - 请参见下文。

通用方法

Seq 对象具有一些方法,这些方法的行为与 Python 字符串的方法完全一样,例如 find 方法

>>> from Bio.Seq import Seq
>>> my_dna = Seq("AGTACACTGGT")
>>> my_dna
Seq('AGTACACTGGT')
>>> my_dna.find("ACT")
5
>>> my_dna.find("TAG")
-1

还有一个 count 方法

>>> my_dna.count("A")
3
>>> my_dna.count("ACT")
1

但是,请注意,就像 Python 字符串的 count 一样,这是一个非重叠计数!

>>> "AAAA".count("AA")
2
>>> Seq("AAAA").count("AA")
2

在某些生物学情况下,您可能更喜欢使用 count_overlap 进行重叠计数,对于此示例,它将给出三个。

核苷酸方法

如果您有一个核苷酸序列,您可能希望执行诸如取反向互补或进行翻译之类的操作。请注意,此处描述的一些方法仅在 Biopython 1.49 及更高版本中可用。

互补和反向互补

这些非常简单 - 这些方法返回一个具有适当序列的新 Seq 对象

>>> from Bio.Seq import Seq
>>> my_dna = Seq("AGTACACTGGT")
>>> my_dna
Seq('AGTACACTGGT')
>>> my_dna.complement()
Seq('TCATGTGACCA')
>>> my_dna.reverse_complement()
Seq('ACCAGTGTACT')

转录和反转录

如果您有一个 DNA 序列,您可能希望将其转换为 RNA。在生物信息学中,我们通常假设 DNA 是编码链(而不是模板链),因此这只是将所有胸腺嘧啶替换为尿嘧啶的简单问题

>>> my_dna
Seq('AGTACACTGGT')
>>> my_dna.transcribe()
Seq('AGUACACUGGU')

自然地,给定一些 RNA,您可能需要相关的 DNA - 并且 Biopython 再次进行了简单的 U/T 替换

>>> my_rna = my_dna.transcribe()
>>> my_rna
Seq('AGUACACUGGU')
>>> my_rna.back_transcribe()
Seq('AGTACACTGGT')

如果您确实想要模板链,则需要在顶部进行反向互补

>>> my_rna
Seq('AGUACACUGGU')
>>> my_rna.back_transcribe().reverse_complement()
Seq('ACCAGTGTACT')

教程 (PDF) 中的章节更详细地介绍了这种链问题。

翻译

您可以翻译 RNA

>>> from Bio.Seq import Seq
>>> messenger_rna = Seq("AUGGCCAUUGUAAUGGGCCGCUGAAAGGGUGCCCGAUAG")
>>> messenger_rna.translate()
Seq('MAIVMGR*KGAR*')

或 DNA - 假设它是编码链

>>> from Bio.Seq import Seq
>>> coding_dna = Seq("ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG")
>>> coding_dna.translate()
Seq('MAIVMGR*KGAR*')

在这两种情况下,都有几个有用的选项 - 默认情况下,您会注意到上面的示例中翻译会继续贯穿所有终止密码子,但这可选

>>> coding_dna.translate(to_stop=True)
Seq('MAIVMGR')

然后是翻译表,您可以为此提供 NCBI 遗传密码号或名称

>>> coding_dna.translate(table=2)
Seq('MAIVMGRWKGAR*')
>>> coding_dna.translate(table="Vertebrate Mitochondrial")
Seq('MAIVMGRWKGAR*')

您当然可以组合这些选项

>>> coding_dna.translate(table=2, to_stop=True)
Seq('MAIVMGRWKGAR')

查阅教程以获取更多示例和参数(例如,为终止密码子指定不同的符号),或查看内置帮助

>>> help(coding_dna.translate)
...