之前一直在用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项,填写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 使用简单说明:
其中-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./?p=10 |
|