1)blast產生背景
雙序列比對可以采用是基於動態規划算法的Needleman-Wunsch(NW)和Smith-Waterman algorithm(SW)算法,雖然精度高,但計算消耗大。當與數據庫比對的時候,該算法就顯得不切實際。因此TASTA,blast采用啟發式算法使得通過大幅度丟失靈敏度來減少運行時間。與FASTA軟件相比,blast通過把搜索限制在狹隘的矩陣對角線條帶上,來改進FASTA進行數據庫搜索的速度。
2)blast的大致原理
blast 程序首先查詢query序列的所有子序列,儲存在哈希表中。收索數據庫中所有與子序列精確匹配的序列,作為種子,向兩個方向繼續延伸每個精確匹配。期間不允許有空位和錯配的情況。然后在限制性區域內;連接延伸的匹配序列,期間允許空位和錯配,比對分值要大於設定的閾值。閾值越大,需要匹配的計算越小,軟件計算速度越快。僅僅對對延伸匹配進行連接的區域(限制性區域),而不是整個矩陣,是blast 相對於其他算法速度提高的關鍵,是以犧牲對角線帶以外的任何匹配信息為代價,因此並不能確保query序列與數據庫比對結果是最優的比對結果。
3)blast的格式解讀
blast 輸出格式:有18個格式,其中常用的outfmt
6
其中,格式6
、格式7
、格式10
、格式17
的輸出條目是可以修改的。輸出格式選擇 6 (--outfmt 6) ,默認輸出為:qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore 。
這12列對應的信息分別是:
Query id:查詢序列ID標識
Subject id:比對上的目標序列ID標識
% identity:序列比對的一致性百分比
alignment length:符合比對的比對區域的長度
mismatches:比對區域的錯配數
gap openings:比對區域的gap數目
q. start:比對區域在查詢序列(Query id)上的起始位點
q. end:比對區域在查詢序列(Query id)上的終止位點
s. start:比對區域在目標序列(Subject id)上的起始位點
s. end:比對區域在目標序列(Subject id)上的終止位點
e-value:比對結果的期望值,將比對序列隨機打亂重新組合,和數據庫進行比對,如果功能越保守,則該值越低;該E值越高說明比對的高得分值是由GC區域,重復序列導致的。對於判斷同源性是非常有意義的幾個參數。
bit score:比對結果的bit score值
如果想要獲取比對物種信息 taxid ,則需要在建立索引時添加物種分類信息,同時比對時自定義添加一些輸出信息,詳細說明參見軟件手冊,示例如下:
# 建立索引 diamond makedb --in nr.gz --db nr --taxonmap prot.accession2taxid.gz --taxonnodes Taxonomy/nodes.dmp --taxonnames Taxonomy/names.dmp ## 蛋白序列比對 NR 全庫 diamond blastp --db nr --out test_pep_vs_nr.out --outfmt 6 qseqid qlen sseqid slen pident length mismatch gapopen qstart qend sstart send evalue bitscore staxids sscinames salltitles --query test_pep.fa --max-target-seqs 1 --evalue 1e-5 --max-hsps 1 --threads 45 --block-size 20 --index-chunks 1 --tmpdir tmp --more-sensitive
5)參考資源
https://en.wikipedia.org/wiki/BLAST#Output
第二代測序信息處理