比较基因组学专题 - 1 :Achelous 平台上运行 MPIBlast
前序:
随着大量测序数据的积累,基因组组装已经成为了微生物研究领域和动植物科研工作者常规操作。但是伴随而来的,则是比较基因组学计算负荷的激增。传统比对工具和进化分析工具,从设计初衷上对大规模计算并不友好,因此很多用户在使用这些软件的时候,存在“跑不动”的情况。
虽然理论上,这些问题可以通过胖节点解决,但实际应用层面,胖节点的高昂费用,比跑得慢更不友好。这对这一矛盾,作者在此提供比较基因组学的一些解决方案,希望对广大科研工作者有所帮助。
MPIBlast
简介
BLAST(Basic Local Alignment Search Tool) 作为应用最为广泛的序列比对软件之一,广泛应用于生命科研的各个领域。但是其本身算法的原因,其计算速度存在较大的缺陷。虽然目前有diamond 软件对相同类型的比对进行加速,但是其灵敏度上存在一定的差异,BLAST依然是比较基因组学,尤其是动植物基因组分析和微生物基因组学重要的应用工具。
为了解决BLAST 计算速度问题,目前比较主流就是采用MPI框架进行计算加速,其对应程序 mpiBlast
已得到广泛的应用。下面将向大家介绍如何在Achelous 平台上运行MPIBlast。
MPIBlast 镜像获取
用户可以通过xtaohub 下载所使用的镜像资源。
作业配置文件编写
上述镜像资源部署完成后,下一步开始编写任务对应的作业配置文件,示例如下:
{
"Procs": 3,
"Cpu": 5,
"Mem": 1000,
"WorkDir": "/autofs/vol6/Bioinformatics-pipeline/mpi/",
"Volmap" : {"/autofs/vol6/" : "/autofs/vol6/"},
"Cmd": "/bio/MPI-blast/Release/mpiblastn /autofs/vol6/Bioinformatics-pipeline/software/MPI-blastn-master/examples/Entrada30.fasta /autofs/vol6/Bioinformatics-pipeline/software/MPI-blastn-master/examples/NCBI-ntnr_18S_all mpiblast-demo.out.txt 5",
"Image": "mpiblast:xtao-3"
}
[!TIP|style:flat] 1) Procs 项是指MPI 运行的实例数量
2) WorkDir 项指代程序运行所在的目录
3) Volmap 项指存储卷映射。 命令种Entrada30.fasta
文件为提交查询的序列文件,NCBI-ntnr_18S_all
为数据库名称,由于partisaner 的存储映射功能,因此用户可根据映射路径进行应用
4) Cmd 项指运行任务命令行,由于partisaner 会对mpi任务进行分配,因此用户无需再填写 mpirun
5) Image 项指示程序所在镜像名称
任务提交
任务提交采用Achelous 中 partisaner
进行
[user@Cc7Apc] mkdir mpi-blast-demo-job
[user@Cc7Apc] cd mpi-blast-demo-job
[user@Cc7Apc] partisaner -c mpiblast-job.json -t mpich -i
mpiexec -n 3 -hosts Cc1Apc,Cc4Apc,Cc8Apc -launcher manual -wdir /autofs/vol6/Bioinformatics-pipeline/mpi/ /bio/MPI-blast/Release/mpiblastn /autofs/vol6/Bioinformatics-pipeline/software/MPI-blastn-master/examples/Entrada30.fasta /autofs/vol6/Bioinformatics-pipeline/software/MPI-blastn-master/examples/NCBI-ntnr_18S_all mpiblast-demo.out.txt 5
proc 0: ../src/parallel.c - mpiBlastnExecute(101): Splitting sequences ...
proc 0: ../src/parallel.c - mpiBlastnSplitBase(17): Entering
proc 0: ../src/parallel.c - mpiBlastnSplitBase(76): Exiting
proc 0: ../src/parallel.c - mpiBlastnExecute(106): done.
proc 1: ../src/parallel.c - mpiBlastnExecute(126): Start computation
The path of the program is: /bio/MPI-blast/Release
proc 1: ../src/parallel.c - mpiBlastnExecute(158): /bio/MPI-blast/Release/blastn -query tmp_1.fasta -db /autofs/vol6/Bioinformatics-pipeline/software/MPI-blastn-master/examples/NCBI-ntnr_18S_all -out out.1.tmp -outfmt 6 -max_target_seqs 1 -num_threads 5
proc 0: ../src/parallel.c - mpiBlastnExecute(126): Start computation
The path of the program is: /bio/MPI-blast/Release
proc 0: ../src/parallel.c - mpiBlastnExecute(158): /bio/MPI-blast/Release/blastn -query tmp_0.fasta -db /autofs/vol6/Bioinformatics-pipeline/software/MPI-blastn-master/examples/NCBI-ntnr_18S_all -out out.0.tmp -outfmt 6 -max_target_seqs 1 -num_threads 5
proc 2: ../src/parallel.c - mpiBlastnExecute(126): Start computation
The path of the program is: /bio/MPI-blast/Release
proc 2: ../src/parallel.c - mpiBlastnExecute(158): /bio/MPI-blast/Release/blastn -query tmp_2.fasta -db /autofs/vol6/Bioinformatics-pipeline/software/MPI-blastn-master/examples/NCBI-ntnr_18S_all -out out.2.tmp -outfmt 6 -max_target_seqs 1 -num_threads 5
任务提交后,partisaner
会在任务提交目录(上述例子中为 my-mpi-demo-job )下,生成任务对应的数据库文件partisaner_db
。
第四步:结果查看
上述任务提交后,会在WorkDir 所在目录下生成对应文件 :
[user@Cc7Apc] cd /autofs/vol6/Bioinformatics-pipeline/mpi/
[user@Cc7Apc] head mpiblast-demo.out.txt
gi|283837872|ref|NR_033238.1| gi|283837872|ref|NR_033238.1| 100.00 1863 0 0 1 1863 1 1863 0.0 3441
gi|2588|emb|X58571.1| gi|2588|emb|X58571.1| 100.00 1713 0 0 1 1713 1 1713 0.0 3164
gi|2743|emb|X58725.1| gi|2743|emb|X58725.1| 100.00 1747 0 0 1 1747 1 1747 0.0 3227
gi|3094|emb|X65199.1| gi|363411516|gb|JN396946.1| 100.00 150 0 0 1 150 94 243 8e-74 278
gi|4851|emb|Z12124.1| gi|4851|emb|Z12124.1| 100.00 600 0 0 1 600 1 600 0.0 1109
gi|5257|emb|X58057.1| gi|5257|emb|X58057.1| 100.00 1801 0 0 1 1801 1 1801 0.0 3326
gi|5616|emb|X05836.1| gi|5616|emb|X05836.1| 100.00 2041 0 0 1 2041 1 2041 0.0 3770
gi|5700|emb|X05627.1| gi|5700|emb|X05627.1| 100.00 270 0 0 1 270 1 270 3e-140 499
gi|5704|emb|X53498.1| gi|5704|emb|X53498.1| 100.00 1799 0 0 1 1799 1 1799 0.0 3323
gi|5908|emb|X05086.1| gi|5908|emb|X05086.1| 100.00 1675 0 0 1 1675 1 1675 0.0 3090
上面结果既为查询序列与参考序列库blast 比对结果。
总结:
MPIBlast 作为大规模比对的常用工具,可以在Achelous 平台上轻松运行。而其代码设计原理,可以应用于各类可拆分的序列比对程序(例如:bwa 、hisat2等短序列比对工具)。同时,进化树构建常用软件RAxML
也有MPI 版本。在后续的内容种也会为读者陆续介绍。
对于序列比对的另一个领域:多重序列比对(MSA),也可以通过计算加速进行优化。笔者将在《比较基因组学专题 - 2》 中进行介绍,敬请期待 :)