DNA-seq学习GWAS专题基因组学

GATK4测试学习

2020-07-08  本文已影响0人  共由小兑

Getting-started-with-GATK4

GATK代表GenomeAnalysisToolkit。 它是用于分析高通量测序数据的命令行工具的集合,主要侧重于突变体发现。


Contents


快速入门


获取GATK

下载并解压缩软件包(名为gatk- [version])后,在结果目录中找到文件:

gatk
gatk-completion.sh
gatkcondaenv.yml
GATKConfig.EXAMPLE.properties
gatkdoc
gatk-package-4.1.3.0-local.jar
gatk-package-4.1.3.0-spark.jar
gatkPythonPackageArchive.zip
README.md
scripts

安装GATK

不需要安装,添加到环境变量就可以用啦!确保在路径中包含最后一个“/”!!!

> PATH="/path/to/gatk-package/:$PATH"
#测试它是否有效
> gatk --help

运行GATK和Picard命令

在“工具索引”部分列出并详细描述了可用的工具以及可用的选项。 调用任何GATK或Picard工具的基本语法如下:

> gatk [--java-options "jvm args like -Xmx4G go here"] ToolName [GATK args go here]
# for example, a simple GATK command would look like:
> gatk --java-options "-Xmx8G" HaplotypeCaller -R reference.fasta -I input.bam -O output.vcf

此处找到有关GATK命令行语法的更多信息。
Picard工具的语法

> gatk ValidateSamFile  -I input.bam -MODE SUMMARY

😀 😃 😄 😁 😆 😅 😂 🤣 😊 😇 🙂 分割线 🙃 😉 😌 😍 😘 😗 😋 😛 😝 😜


Base Quality Score Recalibration (BQSR)

BQSR代表“基本质量得分重新校准”。 简而言之,这是一个数据预处理步骤,它在估计每个碱基检出的准确性时检测测序机产生的系统性错误。

注意,此基本重新校准过程(BQSR)不应与变量重新校准(VQSR)混淆,后者是一种复杂的过滤技术。


Contents


概述

基本质量得分是测序机发出的每个碱基的错误估计值; 他们表示机器对每次调用正确的基准的信心如何。 例如,假设机器读取了一个A核苷酸,并分配了质量分数Q20(以Phred表示),这意味着它有99%的把握可以正确识别碱基。 这看似很高,但这确实意味着我们可以预期在100个案例中有1个是错误的。 因此,如果我们有数十亿个碱基调用(我们在30倍的基因组中获得约900亿个碱基),那么按照该速率,机器将在9亿个碱基中进行错误的调用-这是很多错误的碱基。

为什么这有关系? 因为我们的简短变体调用算法在很大程度上依赖于在每个读取序列中分配给各个碱基调用的质量得分。 这是因为质量得分告诉我们,我们可以信任该特定观察多少信息,以告知我们该碱基所在位置的生物学真相。 如果我们有一个质量得分较低的碱基检出,则意味着我们不确定我们是否正确地读取了A,也可能是其他原因。 因此,我们不会像其他具有更高质量的基本调用那样信任它。 换句话说,我们使用该分数来权衡我们对特定位点存在的变异等位基因的支持或反对的证据。

基本的重新校准过程涉及两个关键步骤:首先,BaseRecalibrator工具基于输入数据和一组已知变量构建协变量模型,从而生成重新校准文件。 然后ApplyBQSR工具会根据模型调整数据中的基本质量得分,从而生成一个新的BAM文件。 已知变体用于掩盖真实(预期)变异位点的碱基,以避免将真实变异算作错误。 在被屏蔽的站点之外,每个不匹配项都计为一个错误。 其余大部分是会计。有一个可选的但强烈建议的步骤,其中涉及建立第二个模型并生成绘图前后的图表,以可视化重新校准过程的效果。 这对于质量控制很有用。


基本重新校准程序详细信息

BaseRecalibrator建立模型
要构建重新校准模型,第一个工具将检查输入BAM文件中的所有读数,并以表格形式列出有关以下碱基特征的数据:

根据已知的变异资源(通常是 dbSNP) ,我们计算每个 bin 中的碱基数,以及这些碱基与参考碱基不匹配的频率,但不包括已知在人群中发生变异的位点。这些信息以 GATKReport 格式输出到一个重新校准的文件中。

ApplyBQSR调整分数
第二个工具再次执行所有读取,使用重新校准文件根据每个基地落入的箱子调整每个基地的分数。 因此,新的质量分数实际上是:

经过重新校正后,阅读质量分数比以前更接近他们的经验分数。 这意味着它们可以以统计上可靠的方式用于下游处理,例如变量调用。 此外,通过考虑循环和序列上下文的质量变化,我们可以在读数中识别真正高质量的碱基,经常找到碱基的子集,即使在最初没有碱基被标记为Q30的情况下也是如此。


重新校准成功的重要因素

Read groups
重新校准系统支持读取组,这意味着它使用@RG标记按读取组对数据进行分区。这允许它对每个读组执行重新校准,这反映读属于哪个库,以及它在flowcell上的哪个lane上排序。我们知道,系统偏差可能发生在一条车道上,但不会发生在另一条车道上,或者一个库可能发生在另一个库上,因此能够在每个序列数据单元内重新校准,可以使建模过程更加准确。作为一个必然结果,这意味着可以对具有多个读组的BAM文件运行BQSR。但是,请注意,内存需求随文件中的读组数量呈线性增长,因此具有许多读组的文件可能需要大量RAM来存储所有协变量数据。
Amount of data
重新校准质量的一个关键决定因素是观察到的碱基的数量和每个容器中的不匹配。这个过程在少量对齐读取时不能很好地工作。我们通常预计每个读组有超过1亿个碱基;根据经验,数字越大越好。
No excuses
应该总是对排序数据执行重新校准。在人类数据中,考虑到拥有的详尽的变异数据库,几乎所有剩余的不匹配项(甚至在癌症中)都将是错误,所以为你的数据确定一个准确的错误模型超级容易,这对下游分析是至关重要的。
你真的需要跳过BQSR的主要例子是当你有太少的数据(一些小的基因panel有这个问题),或者你正在处理一个非常奇怪的有机体,它显示出疯狂的变异量。


重新校准报告

重新校准报告包含以下5个表格:


分割线分割线分割线分割线分割线分割线分割线分割线分割线


GATK-4.1.3.0全基因组和全外显子组分析实战

[参考地址]https://cloud.tencent.com/developer/news/180158
注意点:

1.原始数据质控
2.数据预处理
序列比对
bwa mem -t 4 -R '@RG\tID:foo_lane\tPL:illumina\tLB:library\tSM:sample_name' /path/to/human.fasta read_1.fq.gz read_2.fq.gz | samtools view -S -b - > sample_name.bam
排序
gatk SortSam -I data.bam -O NGS171171.sort.bam -SO coordinate
去除重复序列(或者标记重复序列)
gatk MarkDuplicates -I NGS171171.sort.bam -O NGS171171.sort.dedup.bam -M NGS171171_metrics.txt
# 创建索引文件
gatk BuildBamIndex -I NGS171171.sort.dedup.bam
# 同个样本的所有比对结果合并成一个大的BAM文件
# samtools merge <out.bam> <in1.bam> [<in2.bam> ... <inN.bam>]
重新校正碱基质量值(BQSR)
# 下载参考文件
nohup wget ftp://gsapubftp-anonymous@ftp.broadinstitute.org/bundle/hg19/dbsnp_138.hg19.vcf.gz &
nohup wget ftp://gsapubftp-anonymous@ftp.broadinstitute.org/bundle/hg19/dbsnp_138.hg19.vcf.idx.gz &
nohup wget ftp://gsapubftp-anonymous@ftp.broadinstitute.org/bundle/hg19/Mills_and_1000G_gold_standard.indels.hg19.sites.vcf.gz &
nohup wget ftp://gsapubftp-anonymous@ftp.broadinstitute.org/bundle/hg19/Mills_and_1000G_gold_standard.indels.hg19.sites.vcf.idx.gz &
nohup wget ftp://gsapubftp-anonymous@ftp.broadinstitute.org/bundle/hg19/ucsc.hg19.fasta.gz &
nohup wget ftp://gsapubftp-anonymous@ftp.broadinstitute.org/bundle/hg19/ucsc.hg19.fasta.fai.gz &
nohup wget ftp://gsapubftp-anonymous@ftp.broadinstitute.org/bundle/hg19/ucsc.hg19.dict.gz &
nohup wget ftp://gsapubftp-anonymous@ftp.broadinstitute.org/bundle/hg19/1000G_phase1.snps.high_confidence.hg19.sites.vcf.gz &
nohup wget ftp://gsapubftp-anonymous@ftp.broadinstitute.org/bundle/hg19/1000G_phase1.snps.high_confidence.hg19.sites.vcf.idx.gz &
gatk BaseRecalibrator -I NGS171171.sort.dedup.bam -R ucsc.hg19.fasta --known-sites 1000G_phase1.snps.high_confidence.hg19.sites.vcf --known-sites Mills_and_1000G_gold_standard.indels.hg19.sites.vcf -O NGS171171.sort.dedup.recal_data.table --disable-sequence-dictionary-validation
gatk ApplyBQSR -R ucsc.hg19.fasta -I NGS171171.sort.dedup.bam -bqsr NGS171171.sort.dedup.recal_data.table -O NGS171171.sort.dedup.BQSR.bam --disable-sequence-dictionary-validation
gatk ValidateSamFile -I NGS171171.sort.dedup.BQSR.bam
samtools index NGS171171.sort.dedup.BQSR.bam NGS171171.sort.dedup.BQSR.bai
samtools mpileup -B -q 30 -Q 30 -f ucsc.hg19.fasta NGS171171.sort.dedup.BQSR.bam > NGS171171.sort.dedup.BQSR.bam.mpileup
> samtools flagstat NGS171171.sort.dedup.BQSR.bam > NGS171171.sort.dedup.BQSR.bam.DataStat
> bedtools2/bin/genomeCoverageBed -i NGS171171.sort.dedup.BQSR.bam -bga -max 100  > NGS171171.sort.dedup.BQSR.bam.coverage
> perl $Perlpath/statWGScoverage.pl -i NGS171171.sort.dedup.BQSR.bam.coverage -o NGS171171.sort.dedup.BQSR.bam.coverage.stat
HaplotypeCaller突变检测

有两种做法,区别在于是否生成中间文件gVCF

#(1)直接进行HaplotypeCaller,这适合于单样本,只执行一次HaplotypeCaller。
> nohup gatk HaplotypeCaller -R ucsc.hg19.fasta -I NGS171171.sort.dedup.BQSR.bam -D dbsnp_138.hg19.vcf -O NGS171171.g.vcf --disable-sequence-dictionary-validation &
# 如果有多个样本那么可以继续用-I参数输入-I sample1.bam [-I sample2.bam ...]
# 为了提高效率我们可以按照染色体一条条来独立执行这个步骤,最后再把结果合并起来就好了。但其实完整的算也挺快哈哈~
# (2)每个样本先各自生成gVCF,然后再进行群体joint-genotype。

gVCF全称是genome VCF,是每个样本用于变异检测的中间文件,格式类似于VCF,它把joint-genotype过程中所需的所有信息都记录在这里面,文件无论是大小还是数据量都远远小于原来的BAM文件。这样一旦新增加样本也不需要再重新去读取所有人的BAM文件了,只需为新样本生成一份gVCF,然后重新执行这个joint-genotype就行了。我用的第一种方法~

变异质控和过滤

质控的含义和目的是指通过一定的标准,最大可能地剔除假阳性的结果,并尽可能地保留最多的正确数据。
第一种方法
GATK VQSR,它通过机器学习的方法利用多个不同的数据特征训练一个模型(高斯混合模型)对变异数据进行质控,使用VQSR需要具备以下两个条件:

突变注释
MuTect

v4.1开始,不再需要使用-tumor指定肿瘤样本名称。 如果包括普通样品,则只需用-normal指定普通样品名称。

gatk Mutect2 -R ucsc.hg19.fasta -I NGS171171.sort.dedup.BQSR.bam -O NGS171171.vcf.gz --disable-sequence-dictionary-validation
上一篇下一篇

猜你喜欢

热点阅读