用途: 检测碱基质量分数中的系统错误。
分类: 序列数据处理工具
概要: 所谓的变异位点,就是与参考基因组不同的部分,假设原始数据中就存在着一些由于测序仪器产生的系统性误差,那么变异位点识别过程中找到的variant,就会存在大量的假阳性。即便机器说他识别的5亿个碱基有99%的概率是对,那么也就说有5千万可能是错的。
碱基质量分数重校准(Base quality score recalibration,BQSR),就是利用机器学习的方式调整原始碱基的质量分数。它分为两个步骤:
注:如果不是人类基因组,并且也缺少相应的已知SNP数据库,可以通过严格SNP筛选过程(例如结合GATK和samtools)建立一个snp数据库。
GATK可能会报告许多表格:
java -jar GenomeAnalysisTK.jar \
-T BaseRecalibrator \
-R reference.fasta \
-I my_reads.bam \
-knownSites latest_dbsnp.vcf \
-o recal_data.table
参数说明:
-T : 运行的工具
-R : 参考基因组
-I : 输入的BAM文件
-knownSites 已知SNP的vcf文件
-o : 输出的重校准表
首先我用BaseRecalibrator
根据snp数据建立了重校准表,然后又做了一次重校准,用AnalyzeCovariates作图
(要有R环境)观察前后变化,最后用PrintReads
应用。
# Analyze patterns of covariation in the sequence dataset
java -Xmx16g -jar $gatk -T BaseRecalibrator -R $reference \
-I $file -knownSites $dbsnp -o ${file%%.*}_recal_data.table
# Do a second pass to analyze covariation remaining after recalibration
java -Xmx16g -jar $gatk -T BaseRecalibrator -R $reference \
-I $file -knownSites $dbsnp -BQSR ${file%%.*}_recal_data.table \
-o ${file%%.*}_post_recal_data.table
# Generate before/after plots, need configure your R environment
java -Xmx16g -jar $gatk -T AnalyzeCovariates \
-R $reference -before ${file%%.*}_recal_data.table \
-after ${file%%.*}_post_recal_data.table \
-plots ${file%%.*}_recalibration_plots.pdf
# Apply the recalibration to your sequence data
java -Xmx16g -jar $gatk -T PrintReads \
-R $reference -I $file \
-BQSR ${file%%.*}_recal_data.table \
-o ${file%%.*}_recal_reads.bam