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