Bio.SearchIO.BlastIO 套件
子模組
模組內容
Bio.SearchIO 支援 BLAST+ 輸出格式。
此模組新增了對解析 BLAST+ 輸出的支援。BLAST+ 是 NCBI 傳統 BLAST(基本局部比對搜尋工具)的重寫版本,基於 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 |
target |
BlastOutput_db |
program |
BlastOutput_program |
|
reference |
BlastOutput_reference |
|
version |
BlastOutput_version [1] |
|
description |
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_accession |
description |
Hit_def |
|
id |
Hit_id |
|
seq_len |
Hit_len |
|
HSP |
bitscore |
Hsp_bit-score |
density |
Hsp_density |
|
evalue |
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 |
|
hit |
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 |
|
query |
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」。
無論如何,始終可以使用查詢或命中物件的「blast_id」屬性存取原始 BLAST ID。
blast-xml 寫入函數也接受「use_raw_query_ids」和「use_raw_hit_ids」參數。但是,請注意,寫入器的預設值設定為「True」。這是因為寫入器的目的是盡可能模仿原生 BLAST 結果。
blast-tab
blast-tab 支援的預設格式是不帶註解的變體(-m 6 旗標)。可以使用設定為 True 的關鍵字引數「comments」來解析、索引或寫入帶註解的 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 |
accession |
qacc |
accession_version |
qaccver |
|
gi |
qgi |
|
seq_len |
qlen |
|
id |
qseqid |
|
Hit |
accession |
sacc |
accession_version |
sacc_ver |
|
gi |
sgi |
|
gi_all |
sallgi |
|
id_all |
sallseqid |
|
seq_len |
slen |
|
id |
sseqid |
|
HSP |
bitscore |
bitscore |
btop |
btop |
|
evalue |
evalue |
|
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 |
|
query |
qseq |
|
query_start |
qstart |
|
hit_end |
send |
|
hit_frame |
sframe |
|
hit |
sseq |
|
hit_start |
sstart |
如果解析的檔案帶有註解,則以下屬性也可能可用:
物件 |
屬性 |
值 |
---|---|---|
QueryResult |
description |
查詢描述 |
fields |
輸出檔案中的欄位 |
|
program |
BLAST 版本 |
|
rid |
遠端搜尋 ID |
|
target |
目標資料庫 |
|
version |
BLAST 版本 |