序列比對,不止BLAST

之前我們介紹了序列比對的常用工具: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ù):

  • -tileSize and -stepSize 。其中 -tileSize決定tiles/kmers的大小,一般設(shè)定范圍是:8-12,預(yù)設(shè)DNA為11,蛋白質(zhì)為5
  • -stepSize 決定tiles/kmers移動的步長。
BLAT

軟件下載與安裝

簡單方便,只需無腦輸入以下命令:

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ù)器跑崩了~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容