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 版本 |