mpiBlast的安装和使用

楼主  收藏   举报   帖子创建时间:  2018-06-04 00:00 回复:0 关注量:125

之前一直在用NCBI新的blast+,速度不错。但是blast的线程是内存空享的,即只能单节点运算。手头能使用的计算资源只能达到单节点16 threads。动辄上万条的对比实在是太慢了。遂萌生用mpiblast的想法。步骤简述如下:

1 安装MPI,我这里用的是OpenMPI,安装结束后运行example,确认成功;

2 下载mpiBlast,解压;

3 下载NCBI toolbox,我用的地址 ftp://ftp.ncbi.nih.gov/toolbox/ncbi_tools/ncbi.tar.gz,解压并mv到mpiblast下的ncbi directory里;

4 bulid NCBI : 在mpiblast下,./ncbi/make/makedis.csh;

5 configure mpiblast, 可能用到的@ARGV: –prefix, –with-mpi (指定位置为mpi的bin dir), –host=x86_64 (本来以为不需要加,但是出现了比较奇怪的error信息,加上就好了), 应该不需要加上别的帖子提到过的–with-ncbi;

6 make; make install;

7 修改~/.ncbirc文件,例子:

[NCBI]

Data=/public/home/gy/soft/mpiblast-1.6.0/ncbi/data

[BLAST]

BLASTDB=/public/home/gy/blast+/db

BLASTMAT=/public/home/gy/soft/mpiblast-1.6.0/ncbi/data

[mpiBLAST]

Shared=/public/home/gy/mpiblast_database

Local=/tmp/mpiblast

其中[NCBI]中的Data项,填写step3中安装的NCBI的data directory位置,主要包含了运行所需的打分矩阵和一些lib;BLASTMAT项一般与NCBI的Data相同; BLASTDB项是blast/blast+所用的database位置;而[mpiBLAST]下的shared和local才是mpiblast所使用的database位置 (shared是总数据库位置,而local一般是各工作节点把自己需要用到的那一部分db拿来存放的位置);

8 关于database: mpiblast不能使用blast formatdb创建的db,据称反之则可以,所以推荐用mpiformatdb格式化数据库,这样两者皆可使用;关于blast+是否可以兼容使用,尚未验证。我干脆又下载了fasta格式的nr database,mpiformat了一下。

9 使用简单说明:

mpirun -n 8 mpiblast -p blastp -d nr -i ../pro_seq.fa -m 8|9|0 -o pro_mpiblast_result

其中-n指定计算单元个数(进程数),当-n小于当前节点提供的计算单元数时,会仅用本节点;-p选择比对程序;-d选择database;-i为待比对序列;-o为结果文件;-m是输出格式,目前仅支持8(tab-delimited table with headers),9(tab-delimited table without headers),0(Normal)。若用m7输出xml格式,应该会输出多个文件(每节点一个),需要手动再放到一起。

From: http://www.letseq.com/?p=10