2017-07-21孙兴强

初探 GATK4 beta

(本文是根据GeneDock基因数据工程师孙兴强对GATK4 beta版的调研结果整理,转载请保留转载信息和原文作者及链接。)


注: 本文是根据阅读GATK4在GitHub上的说明文档和版本开发记录并加上对该版本软件对生物信息研发和生产的一些体验组成的。GATK4 GitHub的官网内容会有引用标识,其余内容为笔者的理解内容。由于GATK4还在开发中,本文的时效性会受该项目的开发进度影响,请谨慎阅读。

1. GATK4 概览

虽然GATK4开源的消息已经放出了很长时间,但是从GATK4的GitHub 代码仓库来看,却是另外一番光景。
首页最为醒目的是:

This project is in a pre-release stage of development. It is subject to change without warning. Do not use this code for production work.

所以,目前版本只能用来做开发或者欣赏代码,不推荐用做生产。所以,要用GATK3去进行生产。

The contents of this repository are 100% open source and released under the BSD 3-Clause license (see LICENSE.TXT).

如上面引文所示,GATK4的开源协议是 BSD-3-Clause license。根据LICENSE.TXT的条款内容结合wiki百科翻译如下:

  • 对于本软件源代码的再散播,必须保留上述的版权宣告、此三条件表列,以及下述的免责声明;
  • 对于本套件二进位可执行形式的再散播,必须连带以文件以及/或者其他附于散播包装中的媒介方式,重制上述之版权宣告、此三条件表列,以及下述的免责声明;
  • 未获事前取得书面许可,不得使用Broad Institute, Inc或本软件贡献者之名称,来为本软件之衍生物做任何表示支持、认可或推广、促销之行为。

GATK4 aims to bring together well-established tools from the GATK and Picard codebases under a streamlined framework, and to enable selected tools to be run in a massively parallel way on local clusters or in the cloud using Apache Spark. It also contains many newly developed tools not present in earlier releases of the toolkit.

如引文所示,由于GATK3已经和Picard被认为是黄金组合,GATK4果断将这两个软件包合二为一,方便用户使用。为了加快运行速度,GATK4支持本地集群并行和Apache Spark云端并行计算。另外,新的小工具也会放到这个包里面。

2. GATK4 的主要Issues

2017年6月29日,GATK团队放出 4.beta.1 Pre-release版本。并且该版本的docker镜像已经发布在Docker Hub,喜欢docker的用户可以直接到Docker Hub里面选择自己需要的tagpull下来。

主要更新内容如下(翻译原文):

  • 1 GCS (Google Cloud Storage) 目前部分工具支持谷歌云存储作为输入和输出,一般来说GCS和 Spark连接比较紧密,方便并行计算。
  • 2 正如下面官网内容所示,HaplotypeCallerHaplotypeCallerSpark还在开发中,不能用在生产环境,并且目前GATK4的HaplotypeCaller的结果和GATK3 HaplotypeCaller的不具有可比性。

    HaplotypeCaller and HaplotypeCallerSpark are still in development and not ready for production use. Their output does not currently match the output of the GATK3 version of the tool in all respects.

  • 3 GATK4.beta.1的整合的Picard是旧版Picard,后续GATK团队会整合最新版本的Picard。
  • 4 CRAM reading can fail with an MD5 mismatch when the reference or reads contain ambiguity codes (#3154)
  • 5 由于htsjdk的严重bug,IndexFeatureFile工具目前不能用。
  • 6 GATK4 用GenomicsDBImport来取代CombineGVCFs,在大规模并行计算的时候,会导致GCS 部分任务故障。
  • 7 外显子测序数据可以使用GATK4的CNV工作流并通过评估验证,但对全基因组的测序数据评估还在进行中。对于somatic 数据,通过调整PerformSegmentation or AllelicCNV的参数,可以提升全基因组数据的运行效率或者降低运行时间。
  • 8 对于正常人群做GermlineCNVCaller的时候建议使用Spark cluster。
  • 9 原计划上线的SV工作流功能,由于一些问题,只能做基于局部组装判断断点的方法去查找删除,插入和倒位。

3. GATK4 的部分体验

  • 1 软件的依赖
    • Java8
    • R 3.1.3 部分工具需要R来做图【推荐但非必须安装】
    • git-lfs 方便用户下载GATK4 git 仓库的测试数据【推荐但非必须安装】
  • 2 GATK4 获取
    • 下载未build的软件。
    • 通过./gradlew bundlebuild目录下面生成 gatk-VERSION.zip
    • 或者通过./gradlew localJar./gradlew sparkJar 生成本地版和spark版的java jar包。
  • 3 GATK使用体验

    • GATK4没有UnifiedGenotyper,只有HaplotypeCaller
    • 就像之前提过,GATK4 新增了CNV和SV的分析。
    • jar包的使用习惯和之前GATK3类似,但是新的运行方式为:java -jar gatk-package-4.beta.1-local.jar HaplotypeCaller,并且HaplotypeCaller部分的参数与GATK3还是有差别的。
    • 速度比较

      • 测试数据:CEUTrio.HiSeq.WGS.b37.NA12878.20.21.bam human_g1k_v37.20.21.fasta dbsnp_138.b37.20.21.vcf

      • 测试机器: 普通4c16g的ECS机子。

指标 GATK3.6 GATK4
参数 -T HaplotypeCaller
-stand_call_conf 30
–emitRefConfidence GVCF
-variant_index_type LINEAR
-variant_index_parameter 128000
HaplotypeCaller
-stand_call_conf 30
–emitRefConfidence GVCF
vcf变异位点个数 19,910 19,943
运行时间 6.86 min 9.25 min
运行内存 2.60G 1.60G

使用 GATK3.6的GenotypeConcordance命令,比较GATK3.6和GATk4 beta1的结果,发现(Overall_Genotype_Concordance)整体基因型一致率为100%。

注:
1、这次测试并没有严格按照beachmark的方式去比较,本文开始也讲了,GATK3和GATK4的结果不具有可比性。

2、GenotypeConcordance

4 GATK4 使用总结

  • 1 GATK4开放了源代码,大家可以旁观大牛们如何提issue,如何回复comments,在旁边观战也很涨知识。
  • 2 GATK4慎用,由于不是稳定版,各种bug可能会出现在莫名奇妙的角落里,还是耐心等待正式版的发布。当然GATK3还得照样用。由于GATK3的速度慢,推荐大家使用GeneDock HG或者GeneDock Somatic,加速基因数据分析,早日将结果交付到客户或者患者手里。
  • 3 持续关注GATK4, 但愿GATK4正式版早日发出,技术比较厉害的小伙伴可以fork下来,提交代码,加速开发。