標籤:
詳見:http://blog.shenwei.me/local-blast-installation/
Linux系統中NCBI BLAST+本地化教程
本文面向初學者(最好還是懂得基本的linux使用),高手可直接忽視。不介紹Windows系統中的安裝方法,一是因為思路一樣,二是因為Linux中BLAST效率更高,系統更穩定,不會卡死。所以,請用Linux伺服器,我想你也不忍心讓自己心愛的本本跑幾十個小時的程式吧。
請不要因為篇幅長,而覺得很困難,只是為了初學者能懂,敘述比較詳(luo)細(suo)而已
——————-[ 做好心理準備,開始了]——————-
1. 安裝配置BLAST+程式
在ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/中下載最新的BLAST可執行程式(不要下載原始碼`,源碼編譯非常慢),選擇先行編譯版本,如ncbi-blast-2.2.30+-x64-linux.tar.gz。如果伺服器能連網,可直接用wget下載。或者,下載後用SFTP用戶端傳輸到伺服器上。
wget ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ncbi-blast-2.2.30+-x64-linux.tar.gz解壓縮:tar -zxvf ncbi-blast-2.2.30+-x64-linux.tar.gz
(按理說解壓縮後就可以通過絕對路徑直接使用了,但為了今後的方便,還是繼續配置吧)為了方便,將其移動到我安裝本地程式的目錄(參考《[Linux上設定良好的目錄結構][1]》),並重新命名(固定命名,不帶版本號碼,避免因升級而修改設定檔),統一管理。
mv ncbi-blast-2.2.30+ ~/local/app/ # 移動cd ~/local/app/ # 進入本地程式安裝路徑mv ncbi-blast-2.2.30+ blast # 修改目錄名
現在,已經將BLAST+安裝到~/local/app/blast
中了(~知道吧,就是使用者的家目錄,可用環境變數$HOME代替)。
[[email protected] blast]$ pwd # 查看目前的目錄的絕對路徑/db/home/shenwei/local/app/blast[[email protected] blast]$ ls # 查看目前的目錄的內容bin ChangeLog doc LICENSE ncbi_package_info README
將BLAST+可執行程式所在目錄(bin)的絕對路徑加入到環境變數$PATH中,方便通過程式名直接調用。編輯~/.bashrc檔案,在最後加入以下行:
export PATH=/db/home/shenwei/local/app/blast/bin:$PATH
如果不會使用vi/vim等編輯器,可直接運行下列一行命令,將上述內容添加到~/.bashrc檔案(看清楚,和上面不同的是:$被轉義了的):
echo "export PATH=/db/home/shenwei/local/app/blast/bin:\$PATH" >> ~/.bashrc
讓配置生效:
source ~/.bashrc
到此,你就可以直接輸入BLAST的子程式,如blastn進行比對了。試試輸入blast -version
,看看是否如下顯示:
[[email protected] blast]$ blastn -versionblastn: 2.2.30+Package: blast 2.2.30, build Dec 10 2013 14:41:40
——————-[ 休息一下,鼓勵一下自己 ] ——————-
2. 配置本地BLAST庫
當需要進行大量比對的時候,將BLAST資料庫本地化能極大提高效率。
我存放庫檔案的目錄為~/data/blast
。建立並編輯(如果還不會編輯,就複製到本地的一個文字檔ncbirc.txt,然後傳到伺服器,再改名mv ncbirc.txt .ncbirc
)NCBI BLAST全域設定檔(在家目錄),內容如下:
[[email protected] ~]$ cat .ncbirc # 這是查看檔案內容的命令,下面才是內容; Start the section for BLAST configuration[BLAST]; Specifies the path where BLAST databases are installedBLASTDB=/db/home/shenwei/data/blast; Specifies the data sources to use for automatic resolution; for sequence identifiersDATA_LOADERS=blastdb; Specifies the BLAST database to use resolve protein sequencesBLASTDB_PROT_DATA_LOADER=/db/home/shenwei/data/blast/nr; Specifies the BLAST database to use resolve protein sequencesBLASTDB_NUCL_DATA_LOADER=/db/home/shenwei/data/blast/ntBATCH_SIZE=10G; Windowmasker settings[WINDOW_MASKER]WINDOW_MASKER_PATH=/db/home/shenwei/data/blast/windowmasker; end of file
配置好後,後面選擇庫的時候就可以只輸入名稱(比如nr),不用輸入絕對路徑了。
3. 下載庫檔案
配置好之後,使用BLAST+內建的update_blastdb.pl指令碼下載nr和nt等庫檔案(不建議下載序列檔案,一是因為後者檔案更大,二是因為可以從庫檔案中提取序列blastdbcmd -db nr -dbtype prot -entry all -outfmt "%f" -out nr.fa
,最主要是建庫需要花費很長時間),直接運行下列命令即可自動下載。
update_blastdb.pl nt nr
提醒:下載檔案較大,耗費時間較長,最好將任務轉入後台。詳見《Shell Note》中“用screen運行大量背景工作”部分。簡單的做法,也可用nohup命令(下面nohup後面用了time命令,是為了看看整個消耗的時間):
nohup time update_blastdb.pl nt nr > log &
監控庫檔案是否下載完成,如何判斷? 1. 查看log檔案是否有提示;2. 查看update_blastdb.pl是否還在運行:執行ps -aef | grep update_blastdb.pl | grep -v update_blastdb.pl
命令,如過沒有結果,則說明沒有運行了。
下載完成後解壓所有tar.gz檔案(用萬用字元)即可:
nohup time tar -zxvf *.tar.gz > log2 &
提示:今後要更新庫檔案的時候,按照上述方法重新下載解壓即可。
常用的BLAST庫檔案(比如基因組參考序列)也可以加入其中,今後調用的時候就不用輸入庫 檔案的絕對路徑了。
——————-[ 讚揚一下自己 ] ——————-
4. 基本用法
可直接Google中文教程。更權威,更詳細的請參考BLAST手冊《BLAST Command Line Applications User Manual》。具體參數資訊可直接輸入blastn -help` 查閱。
提示:blast輸出格式有多種,其中11包含資訊最全,其它格式都可用blast_formatter程式由11轉化為其它格式。所以,比對結果請使用11格式。
1)如果本地化了nt庫,直接在nt庫中比對,部分參數的中文意義可見《BLAST+使用方法》。
blastn -query test.fa -db nt -outfmt 11 -out "[email protected]" -num_threads 8
其中輸出檔案名[email protected]是個人習慣,即“序列檔案名稱.blast子程式名@庫名.結果格式”,這樣是不是很直觀?
轉換格式(如自訂表格格格式):
blast_formatter -archive "[email protected]" -outfmt "7 qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore staxids salltitles" > "[email protected]"
轉為預設格式 :
blast_formatter -archive "[email protected]" -outfmt 0 > "[email protected]"
2)如果沒有本地化nt庫,可添加-remote選項(就不能使用-num_threads參數了),進行線上比對(當然要慢一些,適合資料不多的情況):
blastn -query test.fa -db nt -outfmt 11 -out "[email protected]" -remote
3)用自己的序列建庫
makeblastdb -in db.fasta -dbtype nucl -parse_seqids -out dbname
如果該庫需要經常使用,可將庫檔案移到前面配置的庫檔案的目錄,今後在其它目錄運行blast的時候,便可直接輸入庫名(不用輸入絕對路徑),直接使用。
mv dbname.* ~/data/blast
————- [ 在實踐中學習,不會的請google、看手冊] ————-
ncbi-blast 本地安裝