1.GATK-HaplotypeCaller简介

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

其中,HaplotypeCaller 是 GATK 检测变异(SNP/INDEL)的核心模块,主要通过单倍型的局部重组来实现准确的 SNP 和 INDEL 检测。
GATK-HaplotypeCaller参考网址
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地址.

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

GATK-HaplotypeCaller 变异检测详解相关推荐

  1. OpenCV-Python实战(14)——人脸检测详解(仅需6行代码学会4种人脸检测方法)

    OpenCV-Python实战(14)--人脸检测详解(仅需6行代码学会4种人脸检测方法) 0. 前言 1. 人脸处理简介 2. 安装人脸处理相关库 2.1 安装 dlib 2.2 安装 face_r ...

  2. OpenCV实战(16)——角点检测详解

    OpenCV实战(16)--角点检测详解 0. 前言 1. Harris 特征检测器 1.1 检测 Harris 角点 1.2 cv::cornerHarris 函数参数 2. 可追踪的良好特征 3. ...

  3. APP漏洞扫描器之本地拒绝服务检测详解

    APP漏洞扫描器之本地拒绝服务检测详解 作者:伊樵@阿里聚安全 阿里聚安全的Android应用漏洞扫描器有一个检测项是本地拒绝服务漏洞的检测,采用的是静态分析加动态模糊测试的方法来检测,检测结果准确全 ...

  4. 阿里聚安全Android应用漏洞扫描器解析:本地拒绝服务检测详解

    阿里聚安全Android应用漏洞扫描器解析:本地拒绝服务检测详解 阿里聚安全的Android应用漏洞扫描器有一个检测项是本地拒绝服务漏洞的检测,采用的是静态分析加动态模糊测试的方法来检测,检测结果准确 ...

  5. OpenCV实战(15)——轮廓检测详解

    OpenCV实战(15)--轮廓检测详解 0. 前言 1. 提取区域轮廓 1.1 轮廓提取 1.2 复杂轮廓分析 2. 计算区域形状描述符 2.1 四边形检测 3. 完整代码 小结 系列链接 0. 前 ...

  6. Java版人脸检测详解下篇:开发java应用并做成docker镜像

    本篇概览 如果您看过<Java版人脸检测上篇>一文,甚至动手实际操作过,那么你应该会对背后的技术细节感兴趣,开发这样一个应用,咱们总共要做以下三件事: 1.准备好docker基础镜像 2. ...

  7. Java版人脸检测详解下篇:编码

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 如果您看过<三分钟极速体验:Java版 ...

  8. 用GATK进行二代测序数据 SNP Calling 流程:(二)bwa比对和HaplotypeCaller 变异检测

    1. 创建基因组索引 bwa index genome.fa 2. 查看read group信息,按read group分组, 比对.合并,生成gvcf 由于数据太多,无法存储过多的中间文件,因此写了 ...

  9. VJ框架 与 人脸检测/物体检测 详解

    Viola-Jones Object Detection Framework 1. VJ Framework 1.1 Overview 本文详细阐述 Viola-Joines 人脸检测/物体检测 实时 ...

  10. 【OpenCV实战】OpenCV实现人脸检测详解(含代码)

    OpenCV中有许多可以进行人脸.人眼检测的特征文件,今天我们利用OpenCV中自带的特征文件haarcascade_frontalface_default.xml来进行人脸检测. [OpenCV实战 ...

最新文章

  1. HDU1285拓扑排序模版题
  2. 为你的组织设计自己的障碍消除流程
  3. 将C#编译为javascript
  4. python自动搜索爬取下载文件-python批量爬取下载抖音视频
  5. Java,Math类中的ceil、floor和round函数源码解析以及自己重写实现
  6. ArrayList遍历
  7. 凸优化函数的一些概念(转)
  8. 安卓开发面试题及答案,一次哔哩哔哩面试经历,年薪50W
  9. 如何实现Punycode中文域名转码
  10. 网络编程基础知识之单线程与多线程
  11. day5--numpy
  12. 《Programming WPF》翻译 第8章 3.Storyboard
  13. 计算机主机前耳机没声音,win7系统电脑前面耳机没声音怎么办
  14. 雷电模拟器安装xposed框架
  15. 4.1 手工编写第一个性能测试脚本
  16. 计算机保研面试 / 考研复试常见问题整理
  17. [Docer]docker镜像操作
  18. Mybatis遇到的报错集合
  19. 量子计算为算法指数加速:Shor‘s algorithm
  20. npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。

热门文章

  1. 用Java计算黄金分割率_java 实现黄金分割数的示例详解
  2. Open3DCGAL DTM(数字地形模型)
  3. VC2008+OpenCV2.3.1 的安装配置
  4. 计算机网络中处理通信控制功能的是,在计算机网络中处理通信控制功能的计算机是()。A.通信线路B.终端C.主计算机D.通信控制处理机...
  5. 数据结构之一元多项式相加
  6. 像素深度、分辨率与图片大小的关系?图片大小怎么计算?
  7. mt4双线macd_极少人知道指标之王MACD的精髓用法:“上涨之眼(买入),下跌之眼(卖出)”,反复牢记,买卖不求人...
  8. 802.11协议总结
  9. C#简单游戏外挂制作(以Warcraft Ⅲ为例)
  10. linux授读写权限,Linux系统中,设定资料读写权限