比较基因组学专题 - 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》 中进行介绍,敬请期待 :)

Powered by XTAO TechnologyLast Modified On:2021 2023-03-24 09:05:16

results matching ""

    No results matching ""