美文网首页
GATK4+mutect2 call somatic mutat

GATK4+mutect2 call somatic mutat

作者: 花生米yangyang | 来源:发表于2021-02-09 11:36 被阅读0次

最近看了GATK的网站,以前经常用GATK call somatic mutation, 但是用的版本太老了,另外服务器最近换了盘,很多代码路径都变了,网上关于GATK4的教程比较少,不想做伸手党,于是尝试自己写代码试一试。

1 Getting start with GATK

GATK是Genome AnalysisToolkit的缩写,它搜集了一系列分析高通量测序数据的工具,主要目的是在于发现变异,这个工具可以单独的用,但是也可以和其他的workflow合在一起。

contents:

1. 安装GATK

GATK 工具具有相当简单的软件需求: 一个Unix-style OS 以及java 1.8 版本以上,其他的工具需要额外的R和python的依赖。 可以在这个网址下载: https://github.com/broadinstitute/gatk/releases
最新版本的GATK可以按照如下命令下载:

   wget https://github.com/broadinstitute/gatk/releases/download/4.1.9.0/gatk-4.1.9.0.zip

如果需要其他版本,可以自行在在这个网址下载。 一旦你下载了解压这个文件夹,里面一般会有这四个文件:

gatk
gatk-package-[version]-local.jar
gatk-package-[version]-spark.jar
README.md

这个时候你可能会问,为什么会有两个jar, 就像名字里一样,gatk-package-[version]-spark.jar 是在Spark cluster上专门跑Spark tools 设计的。
而 gatk-package-[version]-local.jar是为了跑其他的设计的。那么这是否意味着你必须每次跑程序时指定你要跑哪一个,大可不必,在文件夹中有gatk这个参数,这是一个可执行的脚本将会根据你的命令行选择适当的jar,如果你想的话,当然可以用一个specific的jar,但是用gatk会简单一些。 它会根据你的情况帮你设置一些你需要的参数。

2. 是否安装成功

为了测试你是否成功的安装了GATK,在你的终端跑下面的命令行,

./gatk -- help 

3.跑GATK和picard 的命令行

 gatk [--java-options "jvm args like -Xmx4G go here"] ToolName [GATK args go here]

比如说:

gatk --java-options "-Xmx8G" HaplotypeCaller -R reference.fasta -I input.bam -O output.vcf

4.GATK Best Practices

GATK的输入文件需要做一些预处理。

(1)数据预处理

在所有call 点突变的步骤前必须的一个阶段,数据的预处理。 他包括处理原始的测序数据(FASTQ或者uBAM格式)去产生可以分析的BAM文件。 这些步骤包含了比对到reference 基因组上,以及一些数据清理的操作,矫正技术偏差,将数据更加合适分析。

输入格式

希望输入的read data的格式是unmapped BAM (uBAM) 格式。 转换工具可以将数据从FASTQ转换到uBAM。

(2)主要步骤

首先,我们把这个测序reads reads 比对到ref 基因组上去产生一个SAM/BAM格式的文件,这个SAM/BAM格式的数据根据坐标顺序排列。下一步,我们标记了重复序列为了减轻由于数据产出步骤而带来的误差(PCR扩增)。 最后我们矫正了碱基的质量得分,因为call 突变的算法严重依赖每条测序read中每个碱基的质量得分。

1 比对

在这里需要用到的工具是BWA

$RG_string="@RG ID:H0164.2  PL:illumina PU:H0164ALXX140820.2    LB:Solexa-272222    PI:0    DT:2014-08-20T00:00:00-0400 SM:NA12878  CN:BI"
$RG_LB="sample_name"
bwa mem -t 16 -M -R "$RG_string"  fq.1.gz fq.2.gz -o $RG_LB.sam"
2 mark duplicates (标记重复)
gatk --java-options "-Xmx20G" MarkDuplicatesSpark
-I $sample.bam -O ${sample}_marked.bam \
-M $sample.metrics \
1>log.mark 2>&1
3 FixMateInformation
gatk --java-options "-Xmx20G -Djava.io.tmpdir=./" FixMateInformation \
    -I ${sample}_marked.bam \
    -O ${sample}_marked_fixed.bam \
    -SO coordinate \
    1>${sample}_log.fix 2>&1 
4 GATK碱基质量重矫正(BQSR):

下载所需要的参考基因组

wget ftp://gsapubftp-anonymous@ftp.broadinstitute.org/bundle/hg38/*

此时会下载如下文件

1000G_phase1.snps.high_confidence.hg38.vcf
dbsnp_146.hg38.vcf
Mills_and_1000G_gold_standard.indels.hg38.vcf

然后对碱基进行矫正

gatk --java-options "-Xmx20G" BaseRecalibrator \
   -I ${sample}_marked_fixed.bam \
   -R reference.fasta \
   --known-sites 1000G_phase1.snps.high_confidence.hg38.vcf\
   --known-sites dbsnp_146.hg38.vcf\
   --known-sites Mills_and_1000G_gold_standard.indels.hg38.vcf\
   -O recal_data.table1

gatk  --java-options "-Xmx20G" ApplyBQSR \
   -R reference.fasta \
   -I ${sample}_marked_fixed.bam \
   --bqsr-recal-file  recal_data.table1 \
   -O ${sample}_marked_fixed_BQSR.bam

gatk --java-options "-Xmx20G" BaseRecalibrator \
   -I ${sample}_marked_fixed_BQSR.bam \
   -R reference.fasta \
   --known-sites 1000G_phase1.snps.high_confidence.hg38.vcf\
   --known-sites dbsnp_146.hg38.vcf\
   --known-sites Mills_and_1000G_gold_standard.indels.hg38.vcf\
   -O recal_data.table2

gatk --java-options "-Xmx20G" AnalyzeCovariates \
     -before recal_data.table1 \
     -after recal_data.table2 \
     -plots AnalyzeCovariates.pdf

5. 用mutect2 call点突变

目前mutect2 v4.1.0.0是支持多个样本的综合分析的。 里面有三种模式(1)tumor-normal mode。 (2) tumor-only mode。 (3) mitochondrial mode。

a 在v4.1,不再需要用-tumor 这个参数去特异的设置tumor 样本。 仅仅是需要用-normal 这个参数去设置正常样本,如果你有正常样本的话。
b 在4.0.4.0 开始,GATK提倡使用默认参数--af-of-alleles-not-in-resource, 工具中不同的模型的参数设置不同。 tumor-only calling 设置默认的是5e-8. tumor-normal calling 设置的是1e-6。 以及mitochondrial mode设置的是4e-3。 在以前的版本里,默认这是的是0.001, 这个是人类的平均异质性。 关于其他的物种,把--af-of-alleles-not-in-resource 改成1。

在这里,假设你已经有了normal.bam和tumor.bam, 参考文件是ref.fasta, 目标区域文件是intervals.interval.list .
(0) 构建normal panel
如果你有多个normal.bam做对照,在开始之前,可以利用这些normal bam构建normal panel作为第二步的原始候选变异检测输入集。

gatk Mutect2 -R ref.fasta  -I normal1.bam -max-mnp-distance 0 -O normal1.vcf.gz

gatk GenomicsDBImport \
-R reference.fasta \
-L intervals.interval_list \
--genomicsdb-workspace-path pon_db \
-V normal1.vcf.gz

gatk CreateSomaticPanelOfNormals \
-R reference.fasta \
-V gendb://pon_db \
-O pon.vcf.gz

(I)Tumor with matched normal
如果有一个匹配的normal, mutect2是被设计仅仅是用来call somatic mutation的。这个工具可以自动的跳过那些已知的存在于germline中的突变。 这样可以避免一些计算资源的浪费。 如果一个突变处于germline的边缘。mutect2会把这个变量放到callset数据集中,被FilterMutectCalls用来做进一步的过滤,或者review。

 gatk --java-options "-Xmx20G" Mutect2 \
     -R reference.fa \
     -I tumor.bam \
     -I normal.bam \
     -normal normal_sample_name \
     --germline-resource af-only-gnomad.vcf.gz \
     --panel-of-normals pon.vcf.gz \
     --f1r2-tar-gz f1r2.tar.gz \
     -O somatic.vcf.gz

这个命令产生的输出文件还需要用FiterMutectCalls过滤。
同时在mutect2的v4.1还支持来自于同一个人的多个肿瘤和正常样本。 但是必须要设置这个-I和-normal参数。

gatk --java-options "-Xmx20G" Mutect2 \
     -R reference.fa \
     -I tumor1.bam \
     -I tumor2.bam \
     -I normal1.bam \
     -I normal2.bam \
     -normal normal1_sample_name \
     -normal normal2_sample_name \
     --germline-resource af-only-gnomad.vcf.gz \
     --panel-of-normals pon.vcf.gz \
     -O somatic.vcf.gz

估计配对样本的交叉污染估计

gatk Pileup \
-R reference.fasta \
-L intervals.interval_list \
-I normal.bam \
-O normal-pileups.table

gatk Pileup \   
-R reference.fasta \   
-L intervals.interval_list \   
-I tumor.bam \   
-O tumor-pileups.table

gatk CalculateContamination \   
-I tumor-pileups.table \   
-matched normal-pileups.table \   
-O contamination.table

测序偏好矫正以及过滤

gatk LearnReadOrientationModel \
-I f1r2.tar.gz \
-O read-orientation-model.tar.gz

gatk FilterMutectCalls \
-R reference.fasta \
-V somatic.vcf.gz \
--contamination-table contamination.table \
--ob-priors read-orientation-model.tar.gz \
-O filtered.vcf.gz\

最后得到的filtered.vcf.gz就是过滤好的结果啦,vep注释起来,发现GATK4.1也提供了一个注释的工具Funcotator,有兴趣也可以尝试一下。
(ii)Tumor-only mode
这个模型是针对一个样本。

 gatk --java-options "-Xmx20G"  Mutect2 \
   -R reference.fa \
   -I sample.bam \
   -O single_sample.vcf.gz

(iii) Mitochondrial mode

 gatk Mutect2 \
  -R reference.fa \
  -L chrM \
  --mitochondria-mode \
  -I mitochondria.bam \
  -O mitochondria.vcf.gz

相关文章

网友评论

      本文标题:GATK4+mutect2 call somatic mutat

      本文链接:https://www.haomeiwen.com/subject/suiqxltx.html