之前我們介紹了序列比對的常用工具:BLAST,但是其運行速度慢的令人捉急。
當我們遇到問題,要么解決問題,要么解決導(dǎo)致問題產(chǎn)生的人。如果不是給導(dǎo)師打工,怎么會出現(xiàn)這種問題(手動狗頭)。但是解決老板的難度有點大(畢竟解決掉之后就沒人給發(fā)錢了),所以我們只能退而求其次,嘗試解決一下問題。
為了效率,為了不辜負這本就不多的讀研補貼,于是我們找到了BLAT 和DIAMOND~

DIAMOND
DIAMOND作為一個和BLAST具有相似功能的軟件,具有以下特點:
- 比BLAST快500到20,000倍
- 長序列的移框聯(lián)配分析(frameshift alignment)
- 資源消耗小,普通臺式機和筆記本都能運行
- 輸出格式多樣
對于科研工作者來說,時間就是生命,看到速度這么快,其他的優(yōu)點都可以四舍五入忽略不計了。軟件的安裝很簡單,以下是具體命令:
wget http://github.com/bbuchfink/diamond/releases/download/v0.9.25/diamond-linux64.tar.gz
tar -zxzf diamond-linux64.tar.gz
DIAMOND的功能是將蛋白序列或者其翻譯后的核苷酸和蛋白質(zhì)數(shù)據(jù)庫進行比對,與blast相比功能單一,但也讓它的使用格外的簡單。
不推薦將核苷酸序列與蛋白質(zhì)數(shù)據(jù)庫進行比對,因為可能有許多序列是比對到非編碼序列上的,利用蛋白質(zhì)數(shù)據(jù)庫進行比對,將導(dǎo)致假陰性過高。
下載nr數(shù)據(jù)庫并建庫
具體命令如下:
wget ftp://ftp.ncbi.nlm.nih.gov/blast/db/FASTA/nr.gz
gunzip nr.gz
diamond makedb --in nr --db nr
-
--in: 后面跟蛋白質(zhì)數(shù)據(jù)庫 -
--db: 指定生成的diamond數(shù)據(jù)庫名稱
比對搜索
相當簡單,只有兩個子命令,blastx和blastp,前者比對DNA序列,后者比對蛋白
diamond blastx --db nr -q reads.fna -o dna_matches_fmt6.txt
diamond blastp --db nr -q reads.faa -o protein_matches_fmt6.txt
參數(shù)簡單介紹:
-
-q: 輸入的待檢索序列 -
-o:指定輸出文件,默認以 --outfmt 6 格式進行輸出 -
--db: 后面跟著我們建立好的diamond 蛋白數(shù)據(jù)庫
BLAT
Blat,全稱 The BLAST-Like Alignment Tool,可以稱為"類BLAST 比對工具",對于DNA序列,BLAT是用來設(shè)計尋找95%及以上相似至少40個堿基的序列。對于蛋白序列,BLAT是用來設(shè)計尋找80%及以上相似至少20個氨基酸的序列。
Blat 的主要特點就是:速度快,共線性輸出結(jié)果簡單易讀。
對于比較小的序列(如 cDNA 等)對大基因組的blat與blast比較比對,blat 無疑是首選。Blat 把相關(guān)的呈共線性的比對結(jié)果連接成為更大的 比對結(jié)果,從中也可以很容易的找到 exons 和 introns。因此,在相近物種的基因同源性分析和EST 分析中,blat 得到了廣泛的應(yīng)用。
Blat的比對速度之所以能比Blast快幾百倍,是因為此兩者之間的比對機制有著本質(zhì)的差別。Blast是將查詢序列索引化,然后線性搜索龐大的目標數(shù)據(jù)庫,期間頻繁地訪問硬盤數(shù)據(jù),時間和空間上的數(shù)據(jù)相關(guān)性較??;
Blat則將龐大的目標數(shù)據(jù)庫索引化,然后線性搜索查詢序列,這種搜索方式在時間和空間上的數(shù)據(jù)相關(guān)性比較大。Blat將數(shù)據(jù)庫索引一次性讀入內(nèi)存,可以反復(fù)地高速調(diào)用,無需訪問硬盤,占用的系統(tǒng)資源很少。只要索引建立,查詢序列的量越大,Blat的優(yōu)勢就越明顯。
基本原理
首先blat將參考序列拆分成tiles/kmers,其拆分的方式取決于兩個參數(shù):
-
-tileSizeand-stepSize。其中 -tileSize決定tiles/kmers的大小,一般設(shè)定范圍是:8-12,預(yù)設(shè)DNA為11,蛋白質(zhì)為5 -
-stepSize決定tiles/kmers移動的步長。

軟件下載與安裝
簡單方便,只需無腦輸入以下命令:
wget http://hgdownload.soe.ucsc.edu/admin/exe/linux.x86_64/blat/blat
chmod u+x blat
軟件運行(比對)
命令如下:
blat nt test.fa test.out -out=blast8
blat有很多參數(shù)可以選擇,但大部分時候我們按照默認的即可。
blat的輸入文件和待查詢數(shù)據(jù)庫的格式,可以是fa/nib/2bit三種格式中的任意一種。運行時十分簡單,不需要進行建庫就可以直接比對。
軟件運行時,依次輸入軟件名(軟件執(zhí)行路徑),待比對的數(shù)據(jù)庫,待搜索的序列,輸出結(jié)果。順序前后不能顛倒。這樣就可以開始比對了
程序開始運行后,會在讀完database 中的所有subject 序列時在屏幕輸出database的統(tǒng)計結(jié)果。
以下是一些常用的參數(shù):
-
-noHead: 不輸出表頭信息,有助于結(jié)果文件的后續(xù)處理 -
-out: 指定輸出的文件格式,此處使用的是blast的m8格式 -
-t: 指定數(shù)據(jù)庫的類型,dna/prot/dnax -
-q: 指定序列類型,dna/rna/prot/dnax/rna
內(nèi)存溢出
值得關(guān)注的是,因為blat的算法原理,它是將整個帶查詢數(shù)據(jù)庫全部讀入內(nèi)存進行比對。因此如果你的服務(wù)器內(nèi)存不大,不建議使用blat進行nt/nr庫的比對。
下面給出一個簡單的計算方法,用于評估自己的服務(wù)器是否可以順溜的run blat。對于帶查詢基因組,平均每個堿基,需要2bytes的內(nèi)存。wiki給出的人類基因組大小為3100Mb,因此我們大概需要6.2G的內(nèi)存才可以順利的對人類基因組進行blat查詢。
年少無知的我,用128G內(nèi)存的服務(wù)器跑nt數(shù)據(jù)庫,理所當然的把我們課題組的服務(wù)器跑崩了~