专栏首页生信修炼手册GATK BQSR的意义与作用

GATK BQSR的意义与作用

BQSR 全称叫做 Base Quality Score Recalibration, 可以理解为碱基质量校正。对于变异位点的鉴定,碱基质量是非常重要的。比如测序识别到的一个位点,其碱基和参考基因组上的碱基不同,但是其质量值特别低,此时可以认为是一个测序错误,而不是一个SNP位点。

在测序的原始数据中,本身就提供了每个碱基对应的质量值,但是GATK官方认为测序仪提供的碱基质量值,是不准确的,存在误差的。

某个位点前后的碱基的种类,称之为上下文环境,会对这个碱基的质量值产生影响。对于A,T,C,G 4种碱基,共有4 x 4 =16 种上下文环境,左侧的图是利用fastq文件中测序仪给出的碱基质量值做的图,可以看到,对于不同的上下文环境,碱基质量值分布不同;右图为经过BQSR校正之后,不同上下文环境中碱基质量的分布。可以看到,校正之后,不同的上下文环境的碱基质量分布基本相同。也就是说,BQSR消除了上下文环境对碱基质量的影响。

在碱基质量校正时,主要考虑下列3个因素:

  1. 碱基在reads中的位置
  2. 碱基的上下文环境
  3. 碱基原始的质量值

根据这3这个因素,首先计算出原始碱基质量中错误的分布模型,然后利用这个模型对碱基质量校正,生成新的碱基质量值。

执行BQSR分析包含以下三步

1. 根据原始bam文件中的碱基质量值计算出系统误差的分布

命令如下

gatk BaseRecalibrator \
   -R ${ref_fasta} \
   -I ${input_bam} \
   --use-original-qualities \
   -O ${recalibration_report_filename} \
   --known-sites ${dbSNP_vcf} \
   --known-sites ${sep=" --known-sites " known_indels_sites_VCFs}

在计算的过程中, 不考虑已知的变异位点的碱基质量,--known-sites指定已知变异位点对应的vcf文件。这一步对单个样本进行操作,每个样本生成一个错误模型文件。

2. 综合多个样本的模型,生成一个总的模型

命令如下

gatk GatherBQSRReports \
   -I ${sep=' -I ' input_bqsr_reports} \
   -O ${output_report_filename}

3. 根据之前计算的模型对碱基质量进行校正

命令如下:

gatk ApplyBQSR \
   -R ${ref_fasta} \
   -I ${input_bam} \
   -O ${output_bam_basename}.bam \
   -bqsr ${recalibration_report} \
   --static-quantized-quals 10 --static-quantized-quals 20 --static-quantized-quals 30 \
   --add-output-sam-program-record \
   --create-output-bam-md5 \
   --use-original-qualities

BQSR会对输入的bam文件中的碱基质量值进行替换,替换为校正之后的质量值,而原先的质量值保存在OQtag 中,示意图如下

本文分享自微信公众号 - 生信修炼手册(shengxinxiulian),作者:庐州月光

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-05-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 关于motif你需要知道的事

    在chip_seq数据分析中,motif分析是一项重要的分析内容。通过motif分析,我们可以对转录因子结合位点的序列模式有进一步的了解,那么什么是motif呢...

    生信修炼手册
  • HGVS制订的变异位点命名规则

    HGVS指定了一套完整的变异位点命名规则,统一的命名方便了学术沟通与交流。官网链接如下:

    生信修炼手册
  • 详解motif的PWM矩阵

    通过一致性序列和sequence logo可以直观的表示某个motif的情况,但是在预测motif结合的位点时,只根据这些信息无法准确的判断查询序列上存在对应的...

    生信修炼手册
  • 前端切图|点击按钮div变色

    祈澈菇凉
  • GPU编程2--CUDA核函数和线程配置

      在GPU上执行的函数称为CUDA核函数(Kernel Function),核函数会被GPU上多个线程执行,我们可以在核函数中获取当前线程的ID。

    猫叔Rex
  • python网络编程之socketser

      在进行网络编程前我们先来说说在网络中服务器与客户端是如何交互的,也就是传说中的TCP三次握手。

    py3study
  • Python 读取excel指定的列

    https://www.cnblogs.com/xiao987334176/p/9330368.html#autoid-4-5-2

    py3study
  • ES6系列笔记-面向对象/继承

    ES6面向对象写法 好处: 1:class关键字,构造器 constructor和类User分开写 2:class里面直接写方法,方法不需要再外挂出去了

    祈澈菇凉
  • 大数据教你在哪买房最保值

    关于房地产的消息每天都飞来漂去,包括哪房价跌了,哪又放开限购了,哪里又打砸售楼处了,这也都算是敏感时期的一个特征。 今天突然看到安居客做的可视...

    小莹莹
  • ⒉设置 Bash 选项[3-1]

    
 <!--
 /* Font Definitions */
 @font-face
 {font-family:宋...

    py3study

扫码关注云+社区

领取腾讯云代金券