之前我們介紹了序列比對(duì)的常用工具:BLAST径缅,但是其運(yùn)行速度慢的令人捉急。
當(dāng)我們遇到問題姜胖,要么解決問題缸棵,要么解決導(dǎo)致問題產(chǎn)生的人。如果不是給導(dǎo)師打工谭期,怎么會(huì)出現(xiàn)這種問題(手動(dòng)狗頭)堵第。但是解決老板的難度有點(diǎn)大(畢竟解決掉之后就沒人給發(fā)錢了),所以我們只能退而求其次隧出,嘗試解決一下問題踏志。
為了效率,為了不辜負(fù)這本就不多的讀研補(bǔ)貼胀瞪,于是我們找到了BLAT 和DIAMOND~
DIAMOND
DIAMOND作為一個(gè)和BLAST具有相似功能的軟件针余,具有以下特點(diǎn):
- 比BLAST快500到20,000倍
- 長(zhǎng)序列的移框聯(lián)配分析(frameshift alignment)
- 資源消耗小饲鄙,普通臺(tái)式機(jī)和筆記本都能運(yùn)行
- 輸出格式多樣
對(duì)于科研工作者來說,時(shí)間就是生命圆雁,看到速度這么快忍级,其他的優(yōu)點(diǎn)都可以四舍五入忽略不計(jì)了。軟件的安裝很簡(jiǎn)單伪朽,以下是具體命令:
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ù)庫(kù)進(jìn)行比對(duì)轴咱,與blast相比功能單一,但也讓它的使用格外的簡(jiǎn)單烈涮。
不推薦將核苷酸序列與蛋白質(zhì)數(shù)據(jù)庫(kù)進(jìn)行比對(duì)朴肺,因?yàn)榭赡苡性S多序列是比對(duì)到非編碼序列上的,利用蛋白質(zhì)數(shù)據(jù)庫(kù)進(jìn)行比對(duì)坚洽,將導(dǎo)致假陰性過高戈稿。
下載nr數(shù)據(jù)庫(kù)并建庫(kù)
具體命令如下:
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ù)庫(kù) -
--db
: 指定生成的diamond數(shù)據(jù)庫(kù)名稱
比對(duì)搜索
相當(dāng)簡(jiǎn)單,只有兩個(gè)子命令讶舰,blastx和blastp鞍盗,前者比對(duì)DNA序列,后者比對(duì)蛋白
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ù)簡(jiǎn)單介紹:
-
-q
: 輸入的待檢索序列 -
-o
:指定輸出文件跳昼,默認(rèn)以 --outfmt 6 格式進(jìn)行輸出 -
--db
: 后面跟著我們建立好的diamond 蛋白數(shù)據(jù)庫(kù)
BLAT
Blat橡疼,全稱 The BLAST-Like Alignment Tool,可以稱為"類BLAST 比對(duì)工具"庐舟,對(duì)于DNA序列欣除,BLAT是用來設(shè)計(jì)尋找95%及以上相似至少40個(gè)堿基的序列。對(duì)于蛋白序列挪略,BLAT是用來設(shè)計(jì)尋找80%及以上相似至少20個(gè)氨基酸的序列历帚。
Blat 的主要特點(diǎn)就是:速度快,共線性輸出結(jié)果簡(jiǎn)單易讀杠娱。
對(duì)于比較小的序列(如 cDNA 等)對(duì)大基因組的blat與blast比較比對(duì)挽牢,blat 無疑是首選。Blat 把相關(guān)的呈共線性的比對(duì)結(jié)果連接成為更大的 比對(duì)結(jié)果摊求,從中也可以很容易的找到 exons 和 introns禽拔。因此,在相近物種的基因同源性分析和EST 分析中室叉,blat 得到了廣泛的應(yīng)用睹栖。
Blat的比對(duì)速度之所以能比Blast快幾百倍,是因?yàn)榇藘烧咧g的比對(duì)機(jī)制有著本質(zhì)的差別。Blast是將查詢序列索引化茧痕,然后線性搜索龐大的目標(biāo)數(shù)據(jù)庫(kù)野来,期間頻繁地訪問硬盤數(shù)據(jù),時(shí)間和空間上的數(shù)據(jù)相關(guān)性較凶倏酢曼氛;
Blat則將龐大的目標(biāo)數(shù)據(jù)庫(kù)索引化豁辉,然后線性搜索查詢序列,這種搜索方式在時(shí)間和空間上的數(shù)據(jù)相關(guān)性比較大舀患。Blat將數(shù)據(jù)庫(kù)索引一次性讀入內(nèi)存徽级,可以反復(fù)地高速調(diào)用,無需訪問硬盤聊浅,占用的系統(tǒng)資源很少餐抢。只要索引建立,查詢序列的量越大狗超,Blat的優(yōu)勢(shì)就越明顯。
基本原理
首先blat將參考序列拆分成tiles/kmers朴下,其拆分的方式取決于兩個(gè)參數(shù):
-
-tileSize
and-stepSize
努咐。其中 -tileSize決定tiles/kmers的大小,一般設(shè)定范圍是:8-12殴胧,預(yù)設(shè)DNA為11渗稍,蛋白質(zhì)為5 -
-stepSize
決定tiles/kmers移動(dòng)的步長(zhǎng)。
軟件下載與安裝
簡(jiǎn)單方便团滥,只需無腦輸入以下命令:
wget http://hgdownload.soe.ucsc.edu/admin/exe/linux.x86_64/blat/blat
chmod u+x blat
軟件運(yùn)行(比對(duì))
命令如下:
blat nt test.fa test.out -out=blast8
blat有很多參數(shù)可以選擇竿屹,但大部分時(shí)候我們按照默認(rèn)的即可。
blat的輸入文件和待查詢數(shù)據(jù)庫(kù)的格式灸姊,可以是fa/nib/2bit三種格式中的任意一種拱燃。運(yùn)行時(shí)十分簡(jiǎn)單,不需要進(jìn)行建庫(kù)就可以直接比對(duì)力惯。
軟件運(yùn)行時(shí)碗誉,依次輸入軟件名(軟件執(zhí)行路徑),待比對(duì)的數(shù)據(jù)庫(kù)父晶,待搜索的序列哮缺,輸出結(jié)果。順序前后不能顛倒甲喝。這樣就可以開始比對(duì)了
程序開始運(yùn)行后尝苇,會(huì)在讀完database 中的所有subject 序列時(shí)在屏幕輸出database的統(tǒng)計(jì)結(jié)果。
以下是一些常用的參數(shù):
-
-noHead
: 不輸出表頭信息埠胖,有助于結(jié)果文件的后續(xù)處理 -
-out
: 指定輸出的文件格式糠溜,此處使用的是blast的m8格式 -
-t
: 指定數(shù)據(jù)庫(kù)的類型,dna/prot/dnax -
-q
: 指定序列類型直撤,dna/rna/prot/dnax/rna
內(nèi)存溢出
值得關(guān)注的是诵冒,因?yàn)閎lat的算法原理,它是將整個(gè)帶查詢數(shù)據(jù)庫(kù)全部讀入內(nèi)存進(jìn)行比對(duì)谊惭。因此如果你的服務(wù)器內(nèi)存不大汽馋,不建議使用blat進(jìn)行nt/nr庫(kù)的比對(duì)侮东。
下面給出一個(gè)簡(jiǎn)單的計(jì)算方法,用于評(píng)估自己的服務(wù)器是否可以順溜的run blat豹芯。對(duì)于帶查詢基因組悄雅,平均每個(gè)堿基,需要2bytes的內(nèi)存铁蹈。wiki給出的人類基因組大小為3100Mb宽闲,因此我們大概需要6.2G的內(nèi)存才可以順利的對(duì)人類基因組進(jìn)行blat查詢。
年少無知的我握牧,用128G內(nèi)存的服務(wù)器跑nt數(shù)據(jù)庫(kù)容诬,理所當(dāng)然的把我們課題組的服務(wù)器跑崩了~