在 Biopython 中,序列通常存储为 `Seq` 对象,这些对象在字符串行为之上添加了各种生物学方法。
此页面描述了 Biopython Seq
对象,它定义在 Bio.Seq
模块中(以及相关的对象,例如 MutableSeq
,以及一些通用序列函数)。除了此 wiki 页面之外,教程 (PDF) 中有一整章关于 Seq
对象 - 以及它的 API 文档(可以在线阅读,或者在 Python 中使用帮助命令阅读)。
如果您需要存储额外的信息,例如序列标识符或名称,甚至更多详细信息,例如描述或注释,那么我们使用 SeqRecord
对象代替。这些是 SeqIO
模块用于读取和写入序列文件使用的序列记录。
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')
您可以翻译 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)
...