导读/目录
1、什么是BQSR?
2、碱基校正算法
3、BaseRecalibr安装与使用:安装、说明、配置、运行
4、BaseRecalibr案例实战:数据下载、配置、运行、输出
hello,大家好,今天为大家带来关于碱基质量矫正工具BQSR的超详细原理、安装及应用教程。
我们将持续为大家带来生物医疗健康大数据分析的一文详解系列文章,欢迎大家关注我们,可以更及时的看到我们的文章哦。
1.什么是BQSR?
BQSR (Base Quality Score Recalibration),指对bam文件中的碱基质量进行校正。在基于二代测序数据进行变异位点检测时,碱基质量是非常重要的。比如测序识别到的一个位点,其碱基和参考基因组上的碱基不同,但是其质量值特别低,此时可以认为是一个测序错误,而不是一个SNP位点。
在测序的原始下机数据中,提供了每个碱基对应的质量值用于评估碱基可靠性,但由测序仪由产生的系统性误差,在直接用于SNP检测时,可能带来误差,需要校正。
注:碱基质量系统误差可能来源于文库制备、测序过程、测序仪flowcell制造误差、测序使用的试剂等造成。
2. 碱基校正算法
以GATK BQSR算法为例, 碱基质量分数重校准(Base quality score recalibration,BQSR)算法,本质上就是利用机器学习的方式调整原始碱基的质量分数。它分为两个步骤:
•利用已有的snp数据库,建立相关性模型,产生重校准表( recalibration table)•根据这个模型对原始碱基进行调整,只会调整非已知SNP区域。
注:如果不是人类基因组,并且也缺少相应的已知SNP数据库,可以通过严格SNP筛选过程(例如结合GATK和samtools)建立一个snp数据库。
首先来理解一个概念: 碱基上下文,我们将一个碱基位点前后的碱基种类称为碱基上下文环境。
理论上,如果没有误差,不同上下文环境得到的碱基质量应该是一样的,如图1右图所示,而真实下机数据统计出的碱基质量分布图如图1左图所示,可以看到,对于不同的上下文环境,碱基质量值分布不同,显然是有误差的。
BQSR基于这样的假设,碱基上下文会对这个碱基的质量值产生影响。对于A,T,C,G 4种碱基,共有4 x 4 =16 种上下文环境,因而,BQSR需要做的就是消除了上下文环境对碱基质量的影响。在碱基质量校正时,主要考虑下列3个因素:
•碱基在reads中的位置
•碱基的上下文环境
•碱基原始的质量值
根据这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 中,示意图如下: