目前,随着测序成本的降低,越来越多的WGS/WES项目开始普及,也更多的课题组拥有自己的服务器,但是大数据带来的计算缓慢问题也越发凸显。这里和大家分享基于英伟达GPU的 Clara Parabricks ,但是需要注意的是非英伟达的GPU是无法使用的。
1 安装
- 首先需要确保自己安装好了英伟达的官方驱动,这里不赘述安装方法,请自行安装。如果正确安装了只需要输入
nvidia-smi
命令即可看到类似下面的信息:
nvidia-smi - 安装
docker
,或singularity
,这里也不赘述,请自行百度,推荐上我个人比较推荐singularity,无论是和snakemake的配合还是权限管理上都更方便 - 获取Clara Parabricks
如果使用docker则输入:
docker pull nvcr.io/nvidia/clara/clara-parabricks:4.1.1-1
如果使用singularity则输入:
singularity pull docker://nvcr.io/nvidia/clara/clara-parabricks:4.1.1-1
- 安装 nvidia-container-cli,如果是Ubuntu就
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit-base
如果是Centos/Redhat就
sudo dnf clean expire-cache && sudo dnf install -y nvidia-container-toolkit-base - 准备WGS/WES分析所需的fastq,gtf和参考基因组等;
2 使用
- 先对原始文件质控,这里使用
fastp
fastp -i homo_1.fq.gz -I homo_2.fq.gz -o homo_trim_1.fq.gz -O homo_trim_2.fq.gz -l 50 -q 20 -u 50 --detect_adapter_for_pe -w 4
- 比对参考基因组,并进行碱基矫正(GPU方法)
docker run --rm --user $(id -u ${USER}):$(id -g ${USER}) -v /data:/data --gpus all nvcr.io/nvidia/clara/clara-parabricks:4.1.1-1 pbrun fq2bam --in-fq homo_trim_1.fq.gz homo_trim_2.fq.gz '@RG\tID:homo\tLB:lib1\tPL:bar\tSM:homo\tPU:homo' --ref Homo_sapiens.fa --knownSites 1000G_phase1.snps.high_confidence.hg19.vcf --knownSites Mills_and_1000G_gold_standard.indels.hg19.vcf --knownSites dbsnp_138.hg19.vcf --out-bam homo.rmdup.bam --out-recal-file homo.baserecal.grp --tmp-dir /data/homo_tmp --interval-file panel-v1-targets-hg19.bed
这里需要注意一下,-v为需要映射到容器的目录,取决于自己输入文件的路径,只有把对应的目录传入容器,容器才可以读取,根据自己文件的实际文件进行修改,如这里把主机的/data映射到容器的/data,至于其他的knownSites
则是传统的GATK最佳实践老套路的金标准文件,--interval-file
是用于WES的外显子捕获区域,如果是WGS则不需要。这里一步相当于进行了bwa mem -> SAMtoBAM -> rmdup -> GATK BQSR
操作;
我这里使用V30显卡进行标准的WES结果显示耗时共12分钟*,在传统的CPU方法中难以想象!!
注意如果使用singularity则将
docker run --rm --user $(id -u ${USER}):$(id -g ${USER}) -v /data:/data --gpus all nvcr.io/nvidia/clara/clara-parabricks:4.1.1-1
替换为singularity run --nv --nvccli --bind /data:/data clara-parabricks_4.1.1-1.sif
,其他和上面的等价的,-v对应--bind,--nv --nvccli是开启GPU支持,sif就是通过pull生成的sif文件路径,根据实际填写。
- 进行碱基矫正(GPU方法)
docker run --rm --user $(id -u ${USER}):$(id -g ${USER}) -v /data:/data --gpus all nvcr.io/nvidia/clara/clara-parabricks:4.1.1-1 pbrun applybqsr --ref Homo_sapiens.fa --in-bam homo.rmdup.bam --in-recal-file homo.baserecal.grp --out-bam homo.bqsr.bam --tmp-dir /data/homo_tmp
这里的--in-bam是上一步得到的bam,--in-recal-file 是上一步得到的grp文件用于碱基矫正,--ref则是参考的基因组文件,这里是hg19。
我这里实测耗时1分30秒 - 鉴定突变位点
docker run --rm --user $(id -u ${{USER}}):$(id -g ${{USER}}) -v /data:/data --gpus all nvcr.io/nvidia/clara/clara-parabricks:4.1.1-1 pbrun haplotypecaller --ref Homo_sapiens.fa --in-bam homo.bqsr.bam --out-variants homo.vcf --tmp-dir /data/homo_tmp
我这里实测这一步耗时大约1分30秒 - 后续如果需要进行Mutect2、VariantFiltration等操作建议使用传统的CPU方法,这一部分目前截止至4.1.1版本,还没能提供较好的支持,能调用的参数较少,不大适合标准的分析流程。
如常见的Mutect2对应的方法为:
docker run --rm --gpus all -v /data:/data
nvcr.io/nvidia/clara/clara-parabricks:4.1.1-1 \
pbrun mutectcaller \
--ref /workdir/${REFERENCE_FILE} \
--tumor-name tumor \
--in-tumor-bam /workdir/${INPUT_TUMOR_BAM} \
--in-normal-bam /workdir/${INPUT_NORMAL_BAM} \
--normal-name normal \
--out-vcf /outputdir/${OUTPUT_VCF}
本方法全程完成了较为耗时的比对、去重、碱基矫正,突变鉴定,并利用GPU加速到了一个难以置信的地步,以笔者的v30显卡为例子,达到了30X的人WGS耗时2h内,WES更是按照分钟计算,这在以前是不敢相信的。此外,fq2bam的工具同样可以用在其他的组学中进行加速。
这里仅仅是介绍了该工具集的一小部分内容,该工具较为丰富,提供以下功能,大家可以自己去尝试:
更多工具
网友评论