ncbi-blast 本地安裝


詳見: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代替)。

[shenwei@mu01 blast]$ pwd # 查看當前目錄的絕對路徑
/db/home/shenwei/local/app/blast
[shenwei@mu01 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 ,看看是否如下顯示:

[shenwei@mu01 blast]$ blastn -version
blastn: 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全局配置文件(在家目錄),內容如下:

[shenwei@mu01 ~]$ cat .ncbirc  # 這是查看文件內容的命令,下面才是內容
; Start the section for BLAST configuration

[BLAST]

; Specifies the path where BLAST databases are installed
BLASTDB=/db/home/shenwei/data/blast

; Specifies the data sources to use for automatic resolution

; for sequence identifiers
DATA_LOADERS=blastdb

; Specifies the BLAST database to use resolve protein sequences
BLASTDB_PROT_DATA_LOADER=/db/home/shenwei/data/blast/nr

; Specifies the BLAST database to use resolve protein sequences
BLASTDB_NUCL_DATA_LOADER=/db/home/shenwei/data/blast/nt

BATCH_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 "test.blastn@nr.asn" -num_threads 8

 

其中輸出文件名test.blastn@nr.asn是個人習慣,即“序列文件名.blast子程序名@庫名.結果格式”,這樣是不是很直觀?

轉換格式(如自定義表格格式):

blast_formatter -archive "test.blastn@nr.asn" -outfmt "7 qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore staxids salltitles" > "test.blastn@nr.tab"

 

轉為默認格式 :

blast_formatter -archive "test.blastn@nr.asn" -outfmt 0 > "test.blastn@nr.blast"

 

2)如果沒有本地化nt庫,可添加-remote選項(就不能使用-num_threads參數了),進行在線比對(當然要慢一些,適合數據不多的情況):

blastn -query test.fa -db nt -outfmt 11 -out "test.blastn@nr.asn" -remote

 

3)用自己的序列建庫

makeblastdb -in db.fasta -dbtype nucl -parse_seqids -out dbname

 

如果該庫需要經常使用,可將庫文件移到前面配置的庫文件的目錄,今后在其它目錄運行blast的時候,便可直接輸入庫名(不用輸入絕對路徑),直接使用。

mv dbname.* ~/data/blast

  

————- [ 在實踐中學習,不會的請google、看手冊] ————-

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM