为了与 BioPerl 的命名方式保持一致,Biopython 拥有一个用于序列文件输入/输出的 SeqIO
模块,以及用于多序列比对输入/输出的 AlignIO
模块。BioPerl 三人组的第三个成员是 SearchIO,Biopython 的等效模块是在 2012 年夏季由 谷歌夏季代码 学生 Wibowo Arindrarto 开发的(博客)。
它涵盖了成对序列搜索文件的输入/输出,例如来自 BLAST、HMMER、BLAT 或 Bill Pearson 的 FASTA 套件。参见 BioPerl SearchIO HOWTO 获取背景信息。
Bio.SearchIO
从 Biopython 1.61 开始被包含在内,作为 实验性 模块,并在 Biopython 1.72 中取消了该警告。
本维基描述了一些重要部分,并附带一些小型示例。有关完整的参考,请查阅 API 文档。
下表列出了 Bio.SearchIO
支持的所有格式。请注意,对于写入支持,写入器假设正在写入的对象的所有必要属性都存在。例如,无法直接将 BLAST XML 数据写入 HMMER 3.0 纯文本输出。
格式名称 | 读取 | 写入 | 索引 | 备注 |
---|---|---|---|---|
blast-tab | 1.61 | 1.61 | 1.61 | BLAST+ 表格输出(支持 -m 6 和 -m 7 标记)。 |
blast-text | 1.61 | n/a | n/a | BLAST+ 纯文本输出(直到版本 2.2.26+)。较新的版本可能并不总是有效。 |
blast-xml | 1.61 | 1.61 | 1.61 | BLAST+ XML 输出。 |
blat-psl | 1.61 | 1.61 | 1.61 | BLAT 默认输出(PSL 格式)。支持带或不带标题的变体。PSL + 序列的 PSLX 也受支持。 |
exonerate-text | 1.61 | n/a | 1.61 | Exonerate 纯文本输出。由于 Biopython 存储序列的方式,目前仅支持不包含分裂密码子的文本输出(用于蛋白质查询)。如果解析的是包含分裂密码子比对的蛋白质查询文本输出(例如,来自 protein2genome 比对模式),解析器将失败。 |
exonerate-cigar | 1.61 | n/a | 1.61 | Exonerate 雪茄字符串。 |
exonerate-vulgar | 1.61 | n/a | 1.61 | Exonerate 粗俗字符串。 |
fasta-m10 | 1.61 | n/a | 1.61 | Bill Pearson 的 FASTA -m 10 输出。 |
hmmer3-domtab | 1.61 | 1.61 | 1.61 | HMMER3.0 域表格输出格式。名称 hmmer3-domtab 本身实际上没有使用,因为必须指定程序名称。例如,解析 hmmscan 输出时,格式名称将为 hmmscan-domtab 。 |
hmmer3-tab | 1.61 | 1.61 | 1.61 | HMMER 3.0 表格输出格式。 |
hmmer3-text | 1.61 | n/a | 1.61 | HMMER 3.0 纯文本输出格式。 |
hmmer2-text | 1.61 | n/a | 1.61 | HMMER 2.x 纯文本输出格式。 |
interproscan-xml | 1.71 | n/a | n/a | InterProScan XML 输出。 |
尽管与 Biopython 的 SeqIO
和 AlignIO
模块非常相似,但 Bio.SearchIO
的主要函数之间存在一些细微差别。根据使用的文件格式,您可以传递额外的关键字参数来确定解析器/索引器/写入器的工作方式。下面列出了一些接受额外关键字参数的格式。
格式名称 | 参数名称 | 默认值 | 适用于 | 说明 | |
---|---|---|---|---|---|
blast-tab | 注释 | False | 读取、写入、索引 | 布尔值,表示输入/输出文件是否为带注释的变体。 | |
fields | 默认 BLAST 表格输出字段名称 | 读取、写入、索引 | 空格分隔的字符串,输入/输出文件中字段/列的列表。 | ||
blast-xml | encoding | “utf-8” | 写入 | XML 编码名称。 | |
indent | ” “(空格) | 写入 | 用于缩进 XML 的字符。 | ||
increment | 2 | 写入 | 打印子元素时,indent 中定义的字符打印的次数。 |
||
blat-psl | pslx | False | 读取、写入、索引 | 布尔值,表示输入/输出文件是否包含序列。 | |
header | False | 写入 | 布尔值,表示是否写入 PSL 标头。 |
创建 Bio.SearchIO
的主要目标是在不同的搜索输出文件之间拥有一个通用且易于使用的界面。因此,我们还为 Bio.SearchIO
创建了一些约定/标准,这些标准超出了通用对象模型。这些约定适用于 Bio.SearchIO
解析的所有文件,无论其各自的格式如何。
存储序列坐标(起始值和结束值)时,Bio.SearchIO
使用 Python 风格的切片约定:从零开始,半开区间。例如,如果在 BLAST XML 输出文件中,HSP 的起始值和结束值分别是 10 和 28,则它们将在 Bio.SearchIO
中变为 9 和 28。起始值变为 9 是因为 Python 索引从零开始,而结束值保持 28,因为 Python 切片会省略区间中的最后一个项目。
除了为您提供标准化的优势之外,此约定还使坐标可用于切片序列。例如,给定完整的查询序列以及 HSP 的起始值和结束值,您可以使用这些坐标来提取查询序列中产生数据库命中的一部分。
使用 Bio.SearchIO.write
将这些对象写入输出文件时,坐标值会恢复到其各自格式的约定。使用上面的示例,如果 HSP 被写入 XML 文件,起始值和结束值将再次变为 10 和 28。
一些搜索输出格式会根据序列的链反转起始值和结束值序列的顺序。例如,在 BLAST 纯文本格式中,如果匹配链位于减号方向,则起始值将始终大于结束值。
在 Bio.SearchIO
中,起始值始终小于结束值,无论其来源链如何。这确保在使用坐标切片完整序列时的一致性。
请注意,此坐标顺序约定仅在 HSPFragment 级别强制执行。如果 HSP 对象有多个 HSPFragment 对象,则每个单独的片段都将符合此约定。但是,HSP 对象中片段的顺序遵循搜索输出文件使用的顺序。
与坐标样式约定类似,在使用 Bio.SearchIO.write
将对象写入时,起始值和结束值的顺序会恢复到其各自的格式。
Bio.SearchIO
仅允许 -1、0、1 和 None
作为链值。对于框架,唯一允许的值是从 -3 到 3(含)的整数以及 None
。这两者都是 Biopython 的标准约定。
Bio.SearchIO
与 Bio.Blast.NCBIXML
有什么区别??
这两个模块基于完全不同的对象模型,彼此不兼容。不仅如此,底层解析器和写入器也不同(Bio.Blast.NCBIXML
不支持索引)。最后,Bio.SearchIO
计划替换 Bio.Blast.NCBIXML
。
Bio.SearchIO
与 Bio.Blast.NCBIStandalone
有什么区别??
同样,它们提供了不同的对象模型。但是,Bio.SearchIO
目前在内部使用 Bio.Blast.NCBIStandalone
中的解析器,但该旧模块将被弃用。