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的運行分為兩個步驟:第一,建立目標序列的數據庫;第二,做blast比對。
1、運行建庫程序formatdb:
建庫的工程是建立目標序列的索引文件,所以程序是formatdb。formatdb處理的都是格式為 ASN.1和 FASTA,而且不論是核苷酸序列數據庫,還是蛋白質序列數據庫;不論是使用Blastall ,還是Blastpgp,Mega Blast應用程序,這一步都是不可少的。
主要參數的說明:
-i 輸入需要格式化的源數據庫名稱 Optional -p 選擇建庫的類型,“T”表示蛋白庫,“F”表示核算庫,缺省值為“T” T – protein F – nucleotide [T /F] Optional default = T -a 輸入數據庫的格式是 ASN .1 (否則是 FASTA) T – True F - False [T/F] Optional default = F -o 判斷是否分析序列名并建立序列名索引,缺省值為“F”。 T – True : 解析序列標識并且建立目錄 F – False : 與上相反 [T /F] Optional default = F 其他參數: -l : “-l 文件名”用來改變LOG文件的命名 -n : “-n 文件名”可以自定義生成的庫文件命名
?
命令示例:
formatdb -i ecoli.fa -p F -o T
程序輸出:
如果建立的是核算庫,“formatdb -i ecoli.fa”輸出為ecoli.fa.nhr、ecoli.fa.nin、ecoli.fa.nsq,三個文件,如果選擇了“-o? T”,還會同時輸出ecoli.fa.nsd、ecoli.fa.nsi、ecoli.fa.nni、ecoli.fa.nnd四個文件,一共七個。
蛋白庫和核算庫的輸出類似,相應的輸出文件為:ecoli.fa.nhr、ecoli.fa.nin、ecoli.fa.nsq和ecoli.fa.nsd、ecoli.fa.nsi、ecoli.fa.nni、ecoli.fa.nnd七個文件。
除了這個結果,程序還會輸出LOG文件(默認為formatdb.log),里面記錄了運行時間、版本號、序列數量等信息。
?
幾點需要注意的問題:
1)、建庫以后,做blast比對的輸入文件就是建庫所得的文件db.seq.n**或者db.seq.p**,而不是原始的FASTA序列,也就是說,建庫以后,原始序列文件是可以刪除的。
2)、如果命令行中選擇了“-o? T”,并且目標序列中好友gi號重復的序列名時,程序會停止建庫并報錯。
?????? 就是說庫文件中不能出現重復的序列(標志是序列號,跟具體的序列沒有關系)。
3)、如果輸入序列不符合FASTA格式或者ASN.1格式,程序會自動退出,并報錯。
?????? [formatdb] ERROR: Could not open db.
4)、核酸序列可以用于建核算庫和蛋白庫,但是蛋白序列不能用于建核算庫,這個是顯然的,密碼子的問題哦!
?
2、運行比對程序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.fa -d database -o blast.out -p blastn
其中如果"-o"參數缺省,則結果輸出方式為屏幕輸出。
?
參數:
僅僅運行blast的基本運行命令,得到的結果往往不能清晰準確的表示出有用的信息。最大的問題就是有太多的冗余,很多很短的比對都會出現在輸出結果中,導致結果雜亂無章。為了處理雜亂無章的比對結果,滿足各種比對需求,blast設置了很多參數來限制比對的范圍和輸出的形式。一下多數結果以blastn距離,如不做特殊說明,這些參數適合于所有比對方式。
-e 參數
-e(value)參數是用來過濾比對較差的結果的,用“-e”參數指定一個實數,blast會過濾掉期望值大于這個數的比對結果(就是說這個值越小比對結果就越好)。
blastall -i query.fa -d database -o blast.out -p blastn -e 1e-10
通常情況下,對于不同物種之間的比對,期望值設在1e-5左右即可;而對于同源性較高的物種或者同種的比對,可以適度將期望值調的更小來過濾垃圾結果。比對同一物種cDNA和染色體的比對,參數可用1e-10或更高。
-F 參數
-F(T/F)參數是用來屏蔽簡單重復和低復雜度序列的。如果選“T”,程序在比對過程中會屏蔽掉query中的簡單重復和低復雜度序列;選“F”則不會屏蔽。缺省值為“T”。
比較兩個結果,我們看出使用缺省參數的比對結果損失了一部分信息,得到的統計結果也
出現失真,期望值和 identity 都沒有反映出真實情況。有時較長的重復序列甚至會導致比對終止。加了"-F F"就保證了比對結果的完整性。通常在大規模、低精度的比對中,往往用缺省參數,這樣能避免程序把過多的時間浪費在無意義的簡單重復上,提高運行速度;而在小規模、高精度的比對中,需要加上參數"-F F",保證比對的精確度和完整性。
-m 參數
“-e”參數能夠做到篩選適當的比對結果,但是即使如此,blast的輸出結果仍然非常龐大并且難以處理。為了精簡輸出、節省存儲空間、實現更多功能并使結果易于處理,blast 提供了參數“-m (integer)”來設定輸出格式,可供選擇的值為 0~11 之間的整數,缺省為 0。下面就通過實例逐個解析“-m”參數能夠實現的輸出功能。
-m? 8 : 列表格式的比對結果。從左到右各列的意義依次是:query名/subject名/identify/比對長度/錯配數/空位數/query比對起始坐標/query比對終止坐標/subject比對起始坐標/subject比對終止坐標/期望值/比對得分
在 m8 格式中通過 subject 的比對起止位置可以判斷出序列的比對方向。判斷方法就是:query和subject的起始和終止坐標是否一致增減。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
