美文网首页
GATK太慢?利用GPU加速让WGS/WES分析按分钟交付

GATK太慢?利用GPU加速让WGS/WES分析按分钟交付

作者: xizzy | 来源:发表于2023-07-29 15:16 被阅读0次

    目前,随着测序成本的降低,越来越多的WGS/WES项目开始普及,也更多的课题组拥有自己的服务器,但是大数据带来的计算缓慢问题也越发凸显。这里和大家分享基于英伟达GPU的 Clara Parabricks ,但是需要注意的是非英伟达的GPU是无法使用的。

    1 安装

    1. 首先需要确保自己安装好了英伟达的官方驱动,这里不赘述安装方法,请自行安装。如果正确安装了只需要输入nvidia-smi命令即可看到类似下面的信息:
      nvidia-smi
    2. 安装docker,或singularity,这里也不赘述,请自行百度,推荐上我个人比较推荐singularity,无论是和snakemake的配合还是权限管理上都更方便
    3. 获取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
    4. 安装 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
    5. 准备WGS/WES分析所需的fastq,gtf和参考基因组等;

    2 使用

    1. 先对原始文件质控,这里使用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
    2. 比对参考基因组,并进行碱基矫正(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文件路径,根据实际填写。

    1. 进行碱基矫正(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秒
    2. 鉴定突变位点
      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秒
    3. 后续如果需要进行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的工具同样可以用在其他的组学中进行加速。
    这里仅仅是介绍了该工具集的一小部分内容,该工具较为丰富,提供以下功能,大家可以自己去尝试:


    更多工具

    相关文章

      网友评论

          本文标题:GATK太慢?利用GPU加速让WGS/WES分析按分钟交付

          本文链接:https://www.haomeiwen.com/subject/pghjpdtx.html