Blast,全稱Basic Local Alignment Search Tool,即"基于局部比對算法的搜索工具",由Altschul等人于1990年發布。Blast能夠實現比較兩段核酸或者蛋白序列之間的同源性的功能,它能夠快速的找到兩段序列之間的同源序列并對比對區域進行打分以確定同源性的高低。
Blast的運行方式是先用目標序列建數據庫(這種數據庫稱為database,里面的每一條序列稱為subject),然后用待查的序列(稱為query)在database中搜索,每一條query與database中的每一條subject都要進行雙序列比對,從而得出全部比對結果。
Blast 是一個集成的程序包,通過調用不同的比對模塊,blast實現了五種可能的序列比對方式:
blastp:蛋白序列與蛋白庫做比對,直接比對蛋白序列的同源性。
blastx:核酸序列對蛋白庫的比對,先將核酸序列翻譯成蛋白序列(根據相位可以翻譯為6種可能的蛋白序列),然后再與蛋白庫做比對。
blastn:核酸序列對核酸庫的比對,直接比較核酸序列的同源性。
tblastn:蛋白序列對核酸庫的比對,將庫中的核酸翻譯成蛋白序列,然后進行比對。
tblastx:核酸序列對核酸庫在蛋白級別的比對,將庫和待查序列都翻譯成蛋白序列,然后對蛋白序列進行比對。
Blast提供了核酸和蛋白序列之間所有可能的比對方式,同時具有較快的比對速度和較高的比對精度,因此在常規雙序列比對分析中應用最為廣泛。可以毫不夸張的說,blast是做比較基因組學乃至整個生物信息學研究所必須掌握的一種比對工具。
BLAST程序常用的兩個評價指標
Score:
使用打分矩陣對匹配的片段進行打分,這是對各對氨基酸殘基(或堿基)打分求和的結果,一般來說,匹配片段越長、相似性越高則Score值越大,結果越可信。
E-value:
BLAST程序在搜索空間中可隨機找到獲得這樣高分的序列的可能性(期望值),因此E-value越高,則代表結果越有可能是隨機獲得的,也就越不可信。搜尋空間大小約略等于查詢序列的長度乘以全部database序列長度的總和,再乘以一些系數。我們在獲得一個Blast結果時需要看這兩個指標。
如果Blast獲得的目標序列的Score值越高并且E-value越低表明結果越可信,反之越不可信。
Blast的運行分為兩個步驟:第一,建立目標序列的數據庫;第二,做blast比對。
一.運行建庫程序formatdb:
建庫的過程是建立目標序列的索引文件,所用程序是formatdb。程序允許的輸入格式FASTA或者ASN.1格式,通常我們使用FASTA格式的序列作為輸入。用于建庫的FASTA序列是db.seq,formatdb的基本命令是:
formatdb -i db.seq [-options]
常用的參數有以下幾個:
-p (T/F):-p參數的意義是選擇建庫的類型,"T"表示蛋白庫,"F"表示核酸庫。缺省值為"T"。
-o (T/F):-o參數的意義是判斷是否分析序列名并建立序列名索引。"T"表示建立序列名索引,"F"表示不建立序列名索引。缺省值為"F"。
程序輸出:
如果建立的是核酸庫,輸出為db.seq.nhr、db.seq.nin、db.seq.nsq,如果選擇了參數"-o T",還會同時輸出db.seq.nsd、db.seq.nsi、db.seq.nni、db.seq.nnd。
蛋白庫和核酸庫的輸出類似,相應的輸出文件為:db.seq.phr、db.seq.pin、db.seq.psq和db.seq.psd、db.seq.psi、db.seq.pni、db.seq.pnd。
除了這些結果,程序還會輸出LOG文件(默認為formatdb.log),里面記錄了運行時間、版本號、序列數量等信息。
幾點需要注意的問題:
(1)、建庫以后,做blast比對的輸入文件就是建庫所得的文件db.seq.n或者db.seq.p,而不是原始的FASTA序列。也就是說,建庫以后,原始的序列文件是可以刪除的。
(2)、如果命令行中選擇了"-o T",并且目標序列中含有gi號重復的的序列名時,程序會停止建庫并報錯。例如,下列序列文件中出現了重復的序列名:
\>gi|112385745|gb|DQ859020.1| Oryza sativa (japonica cultivar-group) glutathione S-transferase 2 mRNA, complete cds
ATGGCGGAGGCGGCGGGGGCGGCGGTGGCGCCGGCGAAGCTGGGTCTGTACTCGTACTGGCGGAGCTCGT
GCTCGCACCGCGTCCGCATCGCCCTCAACCTCAAAGGATTGGAGTACGAGTACAAGGCGGTGAACCTGCT
CAAGGGGGAGCACTCTGATCCAGAATTCATGAAGGTTAATCCTATGAAGTTCGTCCCGGCATTGGTCGAT
......
CAAGCAGCACTCCCAGACAGACAACCAGATGCCCCTTCCTCTACCTAG
\>gi|112385745|gb|DQ859020.1| Oryza sativa (japonica cultivar-group) glutathione S-transferase 2 mRNA, complete cds
ATGGCGGAGGCGGCGGGGGCGGCGGTGGCGCCGGCGAAGCTGGGTCTGTACTCGTACTGGCGGAGCTCGT
GCTCGCACCGCGTCCGCATCGCCCTCAACCTCAAAGGATTGGAGTACGAGTACAAGGCGGTGAACCTGCT
CAAGGGGGAGCACTCTGATCCAGAATTCATGAAGGTTAATCCTATGAAGTTCGTCCCGGCATTGGTCGAT
......
運行時就會報如下錯誤:
[formatdb] ERROR: Failed to create index. Possibly a gi included more than once in the database.
(3)、如果輸入序列不符合FASTA格式或者ASN.1格式,程序會自動退出,并報錯:
[formatdb] ERROR: Could not open db
(4)、核酸序列可以用于建核酸庫和蛋白庫,但是蛋白序列不能用于建核酸庫。
其他參數簡介:
-l:"-l 文件名"用來改變LOG文件的命名
-n:"-n 文件名"可以自定義生成的庫文件命名
-a:輸入文件為ASN.1格式
命令示例:
formatdb -i ecoli.nt -p F -o T
運行此命令就會在當前目錄下產生用于BLAST搜索的7個文件,一旦如上的formatdb命令執行完畢,就不再需要ecoli.nt,可以移除。此時,blastall可以直接使用。
二.運行比對程序blastall:
Blast的主程序是blastall。程序的輸入文件是query序列(-i 參數)和庫文件(-d 參數),比對類型的選擇(-p 參數)和輸出文件(-o 參數)由用戶指定。其中“-p”參數有5種取值:
-p blastp:蛋白序列與蛋白庫做比對。
-p blastx:核酸序列對蛋白庫的比對。
-p blastn:核酸序列對核酸庫的比對。
-p tblastn:蛋白序列對核酸庫的比對。
-p tblastx:核酸序列對核酸庫在蛋白級別的比對。
這些元素就構成了blast的基本運行命令(以blastn為例):
blastall -i query.fasta -d database_prefix -o blast.out -p blastn
其中如果"-o"參數缺省,則結果輸出方式為屏幕輸出。
Blast的結果
包含的信息很豐富。每一個query的比對結果從"BLASTN"開始,記錄了版本和作者信息,"Query= "之后記錄了query名和序列長度。如果兩條序列沒有找到相關性信息,那么在"Searching.done"下方顯示"* No hits found **";反之,則在"Searching.done"下方記錄了該query序列和庫中每一條subject序列的比對概況列表,包括比對得分(Score)和期望值(E value)。期望值是一個大于0的正實數,代表兩條序列不相關的可能性。期望值是在整體上綜合評定兩條序列的相似性的參數,期望值數值越小,序列相似性就越高,反之期望值數值越大,相似性越低。比對的輸出結果會按照期望值從低到高的順序來排列。
Query序列和每一條subject序列比對結果的詳細信息以">"開始。需要注意的是同一個query和同一個subject可能會有多個比對結果,每一個具體的結果從"Score ="開始,記錄了比對得分、期望值、相似度百分比(identities)、比對的空位和兩條序列的比對方向,之后是比對條形圖,顯示了比對區域內每個堿基的比對情況。列出兩條序列的所有比對結果后,羅列比對的參數設置和統計信息,至此兩條序列間的比對結果輸出完畢。
對于蛋白相關的比對,需要在blastall的運行目錄下放置取代矩陣,并在運行時指定此替代矩陣,程序才能正常運行,否則blastall會報錯退出。一般來講,蛋白比對時最常用的取代矩陣是BLOSUM62矩陣。
參數
僅僅運行blast的基本運行命令,得到的結果往往不能清晰準確的表示出有用的信息。最大的問題就是有太多的冗余,很多很短的比對都會出現在輸出結果中,導致結果雜亂無章。
1.-e參數:
-e(value)參數是用來過濾比對較差的結果的,用"-e"參數指定一個實數,blast會過濾掉期望值大于這個數的比對結果。這樣不但簡化了結果,還縮短了運行時間和結果占用的空間。比如在上一個例子中,在命令行中加上限制期望值:
blastall -i query.fasta -d db.seq -o blast.out -p blastn -e 1e-10
2.-F參數:
-F(T/F)參數是用來屏蔽簡單重復和低復雜度序列的。如果選"T",程序在比對過程中會屏蔽掉query中的簡單重復和低復雜度序列;選"F"則不會屏蔽。缺省值為"T"。
3.-m參數:
“-e”參數能夠做到篩選適當的比對結果,但是即使如此,blast的輸出結果仍然非常龐大并且難以處理。為了精簡輸出、節省存儲空間、實現更多功能并使結果易于處理,blast提供了參數“-m (integer)”來設定輸出格式,可供選擇的值為0~11之間的整數,缺省為0。下面就通過實例逐個解析“-m”參數能夠實現的輸出功能。輸入文件的內容(針對-m 0到-m 7),其中:加粗的區域是三條序列的重合位置,注意subject1多一個堿基。
輸出:
-m 0:缺省參數,顯示一個query和一個subject兩兩比對的信息。
-m 1:顯示query在所有subjects上的定位信息,并顯示一致性比對信息,subject之間不同的堿基會被標出。
-m 2:顯示query在所有subjects上的定位信息但是不顯示一致性比對信息,subject之間不同的堿基會被標出。
-m 3:顯示query在所有subjects的定位和一致性比對信息,不顯示subjects之間的差異。
-m 4:顯示query在所有subjects上的定位信息但是不顯示一致性比對信息,不顯示subjects之間的差異。
-m 5:顯示query在所有subjects上的定位信息但是不顯示每個堿基的比對信息,補充"-"對齊比對區域,subjects之間不同的堿基會被標出。
-m 6:顯示query在所有subjects上的定位信息但是不顯示每個堿基的比對信息,補充"-"對齊比對區域,不顯示subjects之間的差異。
-m 7:輸出XML格式的blast結果。
-m 8:列表格式的比對結果。從左到右各列的意義依次是:query名、subject名、identity、比對長度、錯配數、空位數、query比對起始坐標、query比對終止坐標、subject比對起始坐標、subject比對終止坐標、期望值、比對得分。
-m 9:帶注釋行的列表格式。格式和-m 8一樣,只是在每個query的比對結果前面加了注釋行用以說明列表中各列的意義。
-m 10和11:分別是ASN格式的文本文件和二進制文件,這里就不做介紹了。
“-m”參數的值從1到6都是為了便于在subjects之間做比較而設立的功能;8和9保留了所有比對結果的原貌,只是統計成了列表的格式,從而大幅度降低了存儲空間的消耗,并使結果更加清晰易讀。但是m8/m9格式也有相應的缺點,就是損失了一部分比對信息,除了序列長度信息和比對條形圖以外,還會在blastx、tblastn和tblastx的比對中損失關鍵的相位信息,這是要盡量避免的。因此在大規模的blastn比對任務中,往往要采用m8格式的輸出結果來節省空間;而在小規模高精度比對中,通常用默認的輸出格式,再用其他程序來提取結果中的有用信息。
4.-v參數和-b參數:
這兩個參數都是限制輸出結果的數量的。
-v (integer):規定輸出中每一個query的比對列表最多顯示subject個數(即"Sequences producing significant alignments:"后面列出的subjects數目),缺省為500條。
-b (integer):規定輸出中每個query最多顯示與多少條subject的比對條形圖(即每條query的結果中">"的個數),缺省為250條。
如果同時使用"-m 8"參數,則輸出結果中的subjects數量和"-b"參數規定的數量一致。
在database數據中能和query比上的subjects過多的時候,這兩個參數就能夠幫助我們把其中比對結果最好的一部分挑出來,屏蔽掉相對差的結果。當然有些時候我們是不希望屏蔽掉這些結果的,比如在某個大基因組的Contig數據集中統計一條轉座子的重復次數,就需要把"-v"和"-b"參數定的足夠大以顯示所有結果。
5.-T參數:
-T (T/F)參數用于決定是否輸出html格式的比對結果,缺省值為"F"。選擇"-T T"就會輸出html格式的比對結果。如果在建庫過程中選擇了"-o T",并且database數據中的序列是以gi號命名的,那么在html結果中以gi號命名的相應序列會自動鏈接到NCBI的數據庫上。
6.-M參數:
做有關蛋白的比對時,需要用"-M"參數指定取代矩陣,比如BLOSUM45、BLOSUM62、BLOSUM80等,缺省值為BLOSUM62。這三個矩陣都可以在blast安裝目錄的data目錄下找到。BLOSUM矩陣后面的數字代表比對結果允許的最低相似度百分比,我們可以根據不同的精度需求選擇不同的取代矩陣。
7.-W參數:
-W(integer):指定做比對時的“字”的長度。缺省值是0(代表blastn的搜索字長為11,megablast是28,其他是3)。這個參數多數時候不用調整,但是需要做短序列的比對時,可能要適當調短字長,來增加比對的敏感度。
以上為blastall 的常用參數,對于一些不常用的參數,可以查找blast的參數表,此參數表可以通過直接運行blastall得到。
Blastall常用參數簡析
BLAST (Basic Local Alignment Search Tool) 基本局部比對搜索工具,是一套在蛋白質數據庫或DNA數據庫中進行相似性比較的分析工具,它是基于Altschul等人在J.Mol.Biol上發表的方 法(J.Mol.Biol.215:403-410(1990)),在序列數據庫中對查詢序列進行同源性比對工作。BLAST程序 能迅速與公開數據庫進行相似性序列比較,利用比較結果中的得分對序列相似性進行說明。 BLAST可以 對一條或多條序列(可以是 任何形式的序列)在一個 或多個核酸或蛋白序列庫中進行比對,并且從最初的BLAST發展到現在NCBI提供的BLAST2.0,已將有缺口 的比對序列也考慮在內了。BLAST可處理任何數量的序列,包括蛋白序列和核酸序列;也可選擇多個數據庫但數據庫必須是同一類型的,即要么都是蛋白數據庫要么都是核酸數據庫。所查詢的序 列和調用的數據庫則可以是任何形式的組合,既可以是核酸序列到蛋白庫中作查詢,也可以是蛋白序列到蛋白庫中作查詢,反之亦然。 由于Blast功能強大,檢索速度快, Blast工具流行于世界上幾乎所有的生物信息中心。
BLAST 提供的檢索功能:
BLASTn: 核酸序列到核酸庫中的一種查詢。庫中存在的每條已知序列都將同所查序列作一對一地核酸序列比對。 BLASTp: 蛋白序列到蛋白庫中的一種查詢。庫中存在的每條已知序列將逐一地同每條所查序列作一對一的序列比對。
BLASTx: 核酸序列到蛋白庫中的一種查詢。先將核酸序列翻譯成蛋白序列(一條核酸序列會被翻譯成可能的6條蛋白),再對每一條作一對一的蛋白序列比對。
TBLASTn: 蛋白序列到核酸庫中的一種查詢。與BLASTx相反,它是將庫中的核酸序列翻譯成蛋白序列,再同所查序列作蛋白與蛋白的比對。
TBLASTx: 核酸序列到核酸庫中的一種查詢。此種查詢將庫中的核酸序列和所查的核酸序列都翻譯成蛋白(每條核酸序列會產生6條可能的蛋白序列),這樣每次比對會產生36種比對陣列。
在使用blastall對測試序列在序列數據庫中進行查詢之前 ,用戶需要對blastall命令涉及的主要常用參數有充分的理解。
用戶可以在命令行方式下運行:blastall –
下面對blastall主要常用參數進行說明:
blastall -p blastn d db.fasta -i input.fasta -o output.blast -e 1e-30 -b 2 -v 2 -m 8 -I T -a 2
-p Program Name [String]
所用程序名稱[String],用戶可以根據需要從blastn,blastp,blastx, tblastn,tblastx中任選一程序。
-d Database [String] default = nr
所用序列數據庫的名稱 [String],默認為:nr,本文例為:ecoli.nt
-i Query File [File In] default = stdin
所用查詢序列文件[File In],默認為:stdin,本文例為 test.txt
-e Expectation value (E) [Real] default = 10.0
期望值[Real] 默認為10.0描述搜索某一特定數據庫時,隨機出現的匹配序列數目。
-m alignment view options:
比對顯示選項,其具體的說明可以用以下的比對實例說明 0 = pairwise, 顯示具體匹配信息(缺省)
-o BLAST report Output File [File Out] Optional default
=stdout
BLAST報告的輸出文件[File Out] 默認為:stdout
-F Filter query sequence (DUST with blastn, SEG with others) [String] default = T 查詢序列過濾,將那些給出影響比對結果的低 復雜度區域過濾掉。用blastn進行查詢的序列用DUST程序過濾,其他的用SEG過濾。對DUST和SEG的詳細情況,用戶可以自己查詢資料。
-G Cost to open a gap (zero invokes default behavior)
[Integer] default = 0 空位開放罰分[Integer]
(設為0則調用默認行為) 默認為0分.
-E Cost to extend a gap (zero invokes default behavior)
[Integer] default = 0
空位擴展罰分[Integer] (設為0則調用默認行為) 默認為0分
-X X dropoff value for gapped alignment (in bits) (zero invokes default behavior) blastn 30, megablast 20, tblastx 0, all others 15 [Integer],default = 0
-I Show GI's in deflines [T/F] default = F
提示行顯示GI number 默認不顯示
-q Penalty for a nucleotide mismatch (blastn only)
[Integer] default = -3
核酸序列基對不匹配所罰分數(blastn only) [Integer]默認罰3分
-r Reward for a nucleotide match (blastn only)
[Integer] default = 1
核苷酸序列基對匹配所加分數(blastn only) [Integer]默認加1分
-g Perfom gapped alignment (not available with tblastx) [T/F] default = T
是否執行帶缺口的比對(not available with tblastx)默認為是& nbsp;
-a Number of processors to use [Integer] default = 1
使用處理器的數目[Integer] 默認為單機
-B Number of concatenated queries, for blastn and tblastn
[Integer] Optional default = 0
需要聯配查詢的序列數目 for blastn and tblastn
[Integer]默認為單序列
以上所列只是blastall命令部分參數的說明,用戶在對自己的序列進行BLAST時可根據自己的需要選擇參數,以便得到自己需要的查詢報告。同時,參數選擇的正確與否也是blastall程序能否順利執行的關鍵。