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