Bio.SearchIO.BlastIO 包

子模块

模块内容

Bio.SearchIO 对 BLAST+ 输出格式的支持。

此模块添加了对解析 BLAST+ 输出的支持。BLAST+ 是 NCBI 遗留 BLAST (Basic Local Alignment Search Tool) 的重写版本,基于 NCBI C++ 工具包。BLAST+ 套件以命令行程序或 NCBI 网页的形式提供。

Bio.SearchIO.BlastIO 已在以下 BLAST+ 版本和版本上进行测试

  • 版本:blastn、blastp、blastx、tblastn、tblastx

  • 版本:2.2.22+、2.2.26+

您还应该能够解析来自本地 BLAST+ 搜索或 NCBI 网页界面的输出。虽然该模块尚未针对所有 BLAST+ 进行测试,但它应该仍然能够解析其他版本的输出。如果您遇到无法解析的文件,请提交错误报告。

BLAST 遗留套件(BLAST+ 的前身)的一些输出格式可能仍然可以通过此模块解析。但是,结果不能保证。您可以尝试使用 Bio.Blast 模块来解析它们。

有关 BLAST 的更多信息,请访问以下链接

支持的格式

Bio.SearchIO.BlastIO 支持以下 BLAST+ 输出格式

  • XML - 'blast-xml' - 解析、索引、写入

  • 表格 - 'blast-tab' - 解析、索引、写入

blast-xml

blast-xml 解析器遵循此处编写的 BLAST XML DTD:http://www.ncbi.nlm.nih.gov/dtd/NCBI_BlastOutput.mod.dtd

它为每个 SearchIO 对象提供以下属性

对象

属性

XML 元素

QueryResult

目标

BlastOutput_db

程序

BlastOutput_program

参考

BlastOutput_reference

版本

BlastOutput_version [1]

描述

Iteration_query-def

id

Iteration_query-ID

seq_len

Iteration_query-len

param_evalue_threshold

Parameters_expect

param_entrez_query

Parameters_entrez-query

param_filter

Parameters_filter

param_gap_extend

Parameters_gap-extend

param_gap_open

Parameters_gap-open

param_include

Parameters_include

param_matrix

Parameters_matrix

param_pattern

Parameters_pattern

param_score_match

Parameters_sc-match

param_score_mismatch

Parameters_sc-mismatch

stat_db_num

Statistics_db-num

stat_db_len

Statistics_db-len

stat_eff_space

Statistics_eff-space

stat_entropy

Statistics_entropy

stat_hsp_len

Statistics_hsp-len

stat_kappa

Statistics_kappa

stat_lambda

Statistics_lambda

命中

登录号

Hit_accession

描述

Hit_def

id

Hit_id

seq_len

Hit_len

HSP

位评分

Hsp_bit-score

密度

Hsp_density

e 值

Hsp_evalue

gap_num

Hsp_gaps

ident_num

Hsp_identity

pos_num

Hsp_positive

bitscore_raw

Hsp_score

HSPFragment (也通过 HSP)

aln_span

Hsp_align-len

hit_frame

Hsp_hit-frame

hit_start

Hsp_hit-from

hit_end

Hsp_hit-to

命中

Hsp_hseq

aln_annotation

Hsp_midline

pattern_start

Hsp_pattern-from

pattern_end

Hsp_pattern-to

query_frame

Hsp_query-frame

query_start

Hsp_query-from

query_end

Hsp_query-to

查询

Hsp_qseq

您可能会注意到,在 BLAST XML 文件中,BLAST 有时会用它自己生成的 ID 替换您的真实序列 ID。例如,查询 ID 变为 'Query_1'、'Query_2' 等。而命中 ID 有时变为 'gnl|BL_ORD_ID|1'、'gnl|BL_ORD_ID|2' 等。在这些情况下,BLAST 将真实的序列 ID 与它们的描述组合在一起。

blast-xml 解析器了解这些修改,并将尝试从描述中提取真实的序列 ID。因此,在访问 QueryResult 或 Hit 对象时,您将使用非 BLAST 生成的 ID。

可以使用 'use_raw_query_ids' 参数禁用查询 ID 上的此行为,可以使用 'use_raw_hit_ids' 参数禁用命中 ID 上的此行为。这两个都是布尔值,可以传递给 SearchIO.read 或 SearchIO.parse,默认值设置为 'False'。

无论如何,都可以使用 query 或 hit 对象的 'blast_id' 属性访问原始 BLAST ID。

blast-xml 写入函数也接受 'use_raw_query_ids' 和 'use_raw_hit_ids' 参数。但是,请注意,编写器的默认值设置为 'True'。这是因为编写器旨在尽可能地模仿本机 BLAST 结果。

blast-tab

blast-tab 支持的默认格式是无注释的变体(-m 6 标志)。可以使用 'comments' 关键字参数设置为 True 来解析、索引或写入带注释的 BLAST 表格文件。

>>> # blast-tab defaults to parsing uncommented files
>>> from Bio import SearchIO
>>> uncommented = 'Blast/tab_2226_tblastn_004.txt'
>>> qresult = SearchIO.read(uncommented, 'blast-tab')
>>> qresult
QueryResult(id='gi|11464971:4-101', 5 hits)
>>> # set the keyword argument to parse commented files
>>> commented = 'Blast/tab_2226_tblastn_008.txt'
>>> qresult = SearchIO.read(commented, 'blast-tab', comments=True)
>>> qresult
QueryResult(id='gi|11464971:4-101', 5 hits)

对于无注释文件,解析器默认使用 BLAST 的默认列排序:'qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore'。

如果您想使用自定义列顺序解析无注释文件,可以使用 'fields' 关键字参数传递自定义列顺序。列的名称遵循 BLAST 的命名。例如,'qseqid' 是查询序列 ID 的列。这些名称可以作为 Python 列表或空格分隔的字符串传递。

>>> # pass the custom column names as a Python list
>>> fname = 'Blast/tab_2226_tblastn_009.txt'
>>> custom_fields = ['qseqid', 'sseqid']
>>> qresult = next(SearchIO.parse(fname, 'blast-tab', fields=custom_fields))
>>> qresult
QueryResult(id='gi|16080617|ref|NP_391444.1|', 3 hits)
>>> # pass the custom column names as a space-separated string
>>> fname = 'Blast/tab_2226_tblastn_009.txt'
>>> custom_fields = 'qseqid sseqid'
>>> qresult = next(SearchIO.parse(fname, 'blast-tab', fields=custom_fields))
>>> qresult
QueryResult(id='gi|16080617|ref|NP_391444.1|', 3 hits)

您也可以使用 'std' 字段名称作为 BLAST 的默认 12 列的别名,就像您运行命令行 BLAST 搜索时一样。

请注意,如果解析的文件是带注释的,则会忽略 'fields' 关键字参数。带注释的文件在文件中明确说明了其列排序,因此无需在 SearchIO 中再次指定它。

'comments' 和 'fields' 关键字参数都适用于解析、索引和写入。

blast-tab 为每个 SearchIO 对象提供以下属性

对象

属性

列名

QueryResult

登录号

qacc

登录号版本

qaccver

gi

qgi

seq_len

qlen

id

qseqid

命中

登录号

sacc

登录号版本

sacc_ver

gi

sgi

gi_all

sallgi

id_all

sallseqid

seq_len

slen

id

sseqid

HSP

位评分

位评分

btop

btop

e 值

e 值

gapopen_num

gapopen

gap_num

gaps

ident_num

nident

ident_pct

pident

mismatch_num

mismatch

pos_pct

ppos

pos_num

positive

bitscore_raw

score

HSPFragment (也通过 HSP)

frames

frames [2]

aln_span

length

query_end

qend

query_frame

qframe

查询

qseq

query_start

qstart

hit_end

send

hit_frame

sframe

命中

sseq

hit_start

sstart

如果解析的文件是带注释的,则以下属性也可能可用

对象

属性

QueryResult

描述

查询描述

字段

输出文件中的列

程序

BLAST 版本

rid

远程搜索 ID

目标

目标数据库

版本

BLAST 版本