一文详解GATK-HaplotypeCaller 变异检测原理和实战

 要点

1. GATK-HaplotypeCaller简介

2. GATK-HaplotypeCaller的基本组装原理

3. GATK-HaplotypeCaller的安装和使用

4. GATK-HaplotypeCaller实战

hello,大家好,今天为大家带来关于变异检测工具GATK-HaplotypeCaller超详细安装及应用教程。

我们将持续为大家带来生物医疗大数据分析一文详解系列文章,欢迎大家关注并星标我们,可以更及时的看到我们的文章哦。

1.GATK-HaplotypeCaller简介

基因组变异检测是基因组学领域一个非常重要的问题,是遗传性疾病溯源,物种进化等分析的前提。而目前最主流、使用最广泛的变异检测软件当属 Broad Institute 开发的 GATK(Genome Analysis ToolKit) 组件。GATK 设计之初是用于分析人类的全外显子和全基因组数据,随着不断发展,现在也可以应用于其他的物种。

GATK官网提供了一整套完整的变异检测分析流程:GATK Best Practices。如下

图示:

其中,HaplotypeCaller 是 GATK 检测变异(SNP/INDEL)的核心模块,主要通过单倍型的局部重组来实现准确的 SNP 和 INDEL 检测。GATK-HaplotypeCaller参考网址[1]

HaplotypeCaller 能够从头组装变异活跃的区域(active region)并进行 SNP/INDEL检测。即每当程序遇到显示出变异迹象的区域时,它就会丢弃现有的比对信息并完全重新组装该区域中的reads。因此 HaplotypeCaller 在一些传统方法难以检测的区域上会更加准确,也使得在检测 indel 方面比 UnifiedGenotyper(gatk旧版变异检测模块) 等基于位置的变异检测工具效果更好。

HaplotypeCaller 能够处理非二倍体生物以及混合的实验数据,还能够正确处理可变剪切,可以适用 RNAseq数据。

2. GATK-HaplotypeCaller的变异检测的基本原理

GATK-HaplotypeCaller 模块进行 SNP/indel 检测的基本工作流程包含四个主要步骤: 

1) 识别活跃区域 

2) 通过重组装活跃区域确定单体型 

3) 确定每个read的单倍型的似然值 

4) 确定基因型。

2.1 识别活跃区域

沿着参考基因组以一定的窗口滑动,统计比对的 mismatches, indels 和 softclips等信息计算基因组每个位置的活跃得分,使用平滑算法进行处理,此处相当于测定该区域熵值。当熵值达到某个设定的阈值时即确定该区域为active region,用于后续组装。

2.2 通过重组装活跃区域确定单体型

对于每个活动区域,忽略之前的read比对结果,重新利用该区域的reads构建一个类似 De Bruijn 的图来组装活跃区域并识别数据中可能存在的单倍型。然后,使用 Smith-Waterman 算法将每个单倍型与参考单倍型重新对齐,以识别潜在的变异位点。如下图示:最优的路径通过构图的方式进行打分,得到候选的单体型路径。

2.3 确定每个read的单倍型的似然值

对于每个活动区域,程序使用 PairHMM 算法将每个read与每个单倍型进行成对比对, 产生一个单倍型似然值矩阵。然后将这些似然值边缘化以获得给定reads的每个潜在变异位点的等位基因可能性。

2.4 确定基因型

将前面 PairHMM 步骤得到的候选单倍型的似然值应用贝叶斯算法转化为每个位点基因型的似然值,如下图所示:

3. GATK-HaplotypeCaller的安装和使用

目前GATK已更新到GATK4。和GATK3相比,GATK4在算法上进行了优化,运行速率有所提高,而且整合了picard 软件的功能。github地址[2].

3.1. 安装

GATK软件运行有两种方式一种是运行通过java 调用jar包运行,一种是使用gatk脚本文件,此时需要安装Python 2.6以上版本,不管是哪种方式,都需要机器上安装java 8或以上版本。

wget https://github.com/broadinstitute/gatk/releases/download/4.1.5.0/gatk-4.1.5.0.zip unzip gatk-4.1.5.0.zip

注意此处下载最好是直接下载gatk-**.zip包,而不要下载Source code (zip) 和 Source code (tar.gz)两个源码包,不然还需要重新build gatk。当然如果你的环境无法支持那就另说了。下载完解压即可看到可执行程序gatk, 以及对应的jar包,可以运行./gatk --list测试下是否可运行。

3.2. 使用说明

运行./gatk HaplotypeCaller -h查看 HaplotypeCaller 的参数细节,详细说明到官网查看会更清晰一些https://gatk.broadinstitute.org/hc/en-us/articles/360040096812-HaplotypeCaller

尽管HaplotypeCaller官网参数非常多,但实际用上的却不多,大部分按默认参数即最佳,这里列举常用参数进行说明:

--input-I []    # BAM/SAM/CRAM file containing reads 指定输入的bam、sam、cram文件--output -O    null    # File to which variants should be written 指定输出vcf名字--reference -R    null    # Reference sequence file 指定参考序列,需要和比对时候使用的参考基因组一致--intervals -L    []    #One or more genomic intervals over which to operate 指定变异检测的区间,可以是bed文件也可以是染色体名字--emit-ref-confidence -ERC    NONE    # Mode for emitting reference confidence scores 包含以下三种变异检测模式:    #1. NONE:只记录变异位点    #2. BP_RESOLUTION:记录变异和非变异位点,每个位点信息都展示    #3. GVCF:记录变异和非变异位点,其中非变异位点以block块展示--pcr-indel-model CONSERVATIVE    #The PCR indel model to use设置针对PCR indel的矫正模型,包含以下几种模式    #1. NONE:不会应用专门的 PCR 错误模型;如果存在碱基插入/删除质量,它们将被使用    #2. HOSTILE:将应用一个最激进的模型,该模型会牺牲真阳性以消除更多的假阳性    #3. AGGRESSIVE:将应用相对激进的模型,牺牲真阳性以消除更多的假阳性    #4. CONSERVATIVE:将应用一个不那么激进的模型,该模型试图以允许更多误报为代价来保持较高的真阳性率

注意

1)对于队列分析,通常会使用-ERC GVCF参数来生成gvcf文件以支持下游多样本联合分析

2)对于PCR-free的样本需要使用-pcr_indel_model NONE取消PCR indel模型。

运行命令如下:

gatk --java-options "-Xmx4g" HaplotypeCaller  \  -R Homo_sapiens_assembly38.fasta \  -I input.bam \  -O output.g.vcf.gz \  -ERC GVCF \  -L chr1

4. GATK-HaplotypeCaller实战

下面我们找个NA12878样本的bam 文件数据,具体来实践一下吧。

4.1 数据下载

下载运行所需的数据:参考基因组及其索引,bam文件

wget http://www.sixoclock.net/resources/data/NGS/Homo_sapiens/Reference/hg19.chrM.fasta_BwaMem_index/hg19.chrM.fastawget http://www.sixoclock.net/resources/data/NGS/Homo_sapiens/Reference/hg19.chrM.fasta_BwaMem_index/hg19.chrM.dictwget http://www.sixoclock.net/resources/data/NGS/Homo_sapiens/Reference/hg19.chrM.fasta_BwaMem_index/hg19.chrM.fasta.faiwget http://www.sixoclock.net/resources/data/NGS/Homo_sapiens/WGS/hg19.chrM.bwa-mem.sort.rmdup.BQSR.bamwget http://www.sixoclock.net/resources/data/NGS/Homo_sapiens/WGS/hg19.chrM.bwa-mem.sort.rmdup.BQSR.bai

4.2 运行命令

此处我们使用Gvcf模式,且只检测chrM的变异

gatk --java-options "-Xmx4g" HaplotypeCaller  \  -R hg19.chrM.fasta \  -I hg19.chrM.bwa-mem.sort.rmdup.BQSR.bam \  -O chrM.g.vcf.gz \  -ERC GVCF \  -L chrM

4.3 输出结果

运行完即可看到chrM.g.vcf.gz文件的生成。

此外,我们的sixoclock官网基于CWL (common workflow language) 对 GATK-HaplotypeCaller 软件进行了封装,通过我们开发的sixbox软件可以快速进行软件的运行。对sixbox不了解可以通过六点了官网了https://docs.sixoclock.net/clients/sixbox-linux.html解下。下面是具体的运行步骤如下:

1)下载cwl 源码sixbox pull 2e932c25-8c36-4733-bb91-79a137282013或 点击下载按钮下载 gatk_HaplotypeCaller.cwl https://www.sixoclock.net/application/pipe/2e932c25-8c36-4733-bb91-79a137282013

2) 使用sixbox生成参数模板文件(YAML) , 并配置yaml文件

sixbox run --make-template ./HaplotypeCaller.cwl > HaplotypeCaller.job.yamlvim HaplotypeCaller.job.yaml # 编辑参数配置文件,替换或设置参数以实现个性化分析

可以直接粘贴下方示例内容到HaplotypeCaller.job.yaml

reference:  # type "File"    class: File    path: http://www.sixoclock.net/resources/data/NGS/Homo_sapiens/Reference/hg19.chrM.fasta_BwaMem_index/hg19.chrM.fasta    secondaryFiles:      - class: File        path: http://www.sixoclock.net/resources/data/NGS/Homo_sapiens/Reference/hg19.chrM.fasta_BwaMem_index/hg19.chrM.dict      - class: File        path: http://www.sixoclock.net/resources/data/NGS/Homo_sapiens/Reference/hg19.chrM.fasta_BwaMem_index/hg19.chrM.fasta.faioutput_vcf: chrM.g.vcf.gz  # type "string"#java_options: '-Xmx6g -XX:ParallelGCThreads=4'  # type "string"intervals:  # array of type "string" (optional)  - "chrM"input_bam:  # array of type "File"    class: File    path: http://www.sixoclock.net/resources/data/NGS/Homo_sapiens/WGS/hg19.chrM.bwa-mem.sort.rmdup.BQSR.bam    secondaryFiles:      - class: File        path:  http://www.sixoclock.net/resources/data/NGS/Homo_sapiens/WGS/hg19.chrM.bwa-mem.sort.rmdup.BQSR.baiERC: 'GVCF'  # type "string"

3) 使用sixbox运行

sixbox run ./HaplotypeCaller.cwl ./HaplotypeCaller.job.yaml#或者指定输出目录sixbox run --outdir /home/path ./HaplotypeCaller.cwl ./HaplotypeCaller.job.yaml

运行结果即可看到当前目录或者指定的输出目录输出chrM.g.vcf.gz结果。

以上为我们给大家带来的宏基因组组装工具Megahit基本原理知识,以及运行详细操作过程。

如果对生物医疗健康大数据相关内容感兴趣也可以持续关注我们。想要探索更多生物医疗大数据分析工具和软件的介绍和使用请看六点了官网[3]。(👉点击阅读原文)

References

[1]GATK-HaplotypeCaller参考网址:https://gatk.broadinstitute.org/hc/en-us/articles/360037225632-HaplotypeCaller

[2]github地址:https://github.com/broadinstitute/gatk

[3] https://www.sixoclock.net

推荐阅读

一文详解基因组denovo组装原理和实战

首发!生信分析--入门实践一条龙的CWL中文教程来了

第三期 Gatk snp calling流程的配置及使用

第四期 GATK最佳实践之流程运行

欢迎关注我们的公众号“六点了”,原创生物医疗大数据分析技术文章第一时间推送。

六点了 

生物医疗数据处理云平台,创建,使用,分享,团队协作。提供海量数据处理算法下载、可视化编辑与配置,在线流程组合、自动生成功能,以及基于解耦合的一站式生信解决方案私有云的本地化部署服务。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容