GATK4 最佳实践-生殖细胞突变的检测与识别

欢迎关注"生信修炼手册"!

GATK4 对于体细胞突变和生殖细胞突变的检测分别给出了对应的pipeline:

  1. Germline SNPs+Indels

  2. Somatic SNVs + Indels


本篇主要关注生殖细胞突变的分析流程Germline SNPs+Indels。示意图如下:

图中红色方框部分的从Analysis-Ready Bam 到,主要包括以下4步

  1. HaplotyperCaller in GVCF mode

  2. ImportGenomicsDB Consolidate GVCFs

  3. GenotypeGVCFs

  4. Filter Variants by Variabt Recalibration


官网给出了6套用于参考的pipeline

主要分析步骤都差不多,这里我选择第4个通用的流程 ,网址如下

https://github.com/gatk-workflows/gatk4-germline-snps-indels

1.  HaplotyperCaller in GVCF mode

对于每个样本,采用HaplotyperCaller计算突变位点,命令如下

gatk --java-options "-Xmx6G -XX:GCTimeLimit=50 -XX:GCHeapFreeLimit=10" \
    HaplotypeCaller \
    -R ${ref_fasta} \
    -I ${input_bam} \
    -L ${interval_list} \
    -O ${output_filename} \
    -contamination 0 -ERC GVCF

ref_fasta代表参考基因组的fasta文件;input_bam代表预处理阶段产生的 bam文件;interval代表interval list文件,如果指定这个参数,只会输出指定区域的突变信息。对于全基因组测序,不需要这个参数,对于外显子和目的区域捕获测序, 则需要这个参数;output_filename代表每个样本输出的gvcf文件的名字。

2. ImportGenomicsDB Consolidate GVCFs

将所有样本的gvcf文件合并,产生一个总的gvcf文件,命令如下:

gatk --java-options -Xmx2G  \
    MergeVcfs \
    --INPUT ${sep=' --INPUT ' input_vcfs} \
    --OUTPUT ${output_filename}

3. GenotypeGVCFs

包括两个步骤,第一步,导入MergeVcfs合并好的gvcf文件, 命令如下

gatk --java-options "-Xmx4g -Xms4g" \
    GenomicsDBImport \
    --genomicsdb-workspace-path ${workspace_dir_name} \
    --batch-size ${batch_size} \
    -L ${interval} \
    --sample-name-map ${sample_name_map} \
    --reader-threads 5 \
    -ip 500

workspace_dir_name代表输出目录;batch_size指定同时访问的最大文件数,默认值为0,表示同时访问所有样本的文件;interval代表interval list文件,如果指定这个参数,只会输出指定区域的突变信息。对于全基因组测序,不需要这个参数,对于外显子和目的区域捕获测序, 则需要这个参数;sampple_name_map是一个文件,记录了样本名称和每个样本对应的gvcf文件的路径。格式如下

sample1      sample1.vcf.gz
sample2      sample2.vcf.gz
sample3      sample3.vcf.gz

第二步, 运行GenotypeGVCFs,命令如下

gatk --java-options "-Xmx5g -Xms5g" \
    GenotypeGVCFs \
    -R ${ref_fasta} \
    -O ${output_vcf_filename} \
    -D ${dbsnp_vcf} \
    -G StandardAnnotation \
    --only-output-calls-starting-in-intervals \
    --use-new-qual-calculator \
    -V gendb://$WORKSPACE \
    -L ${interval}

需要注意-V 参数,指定的是GenomicsDBImport输出目录的路径。

4. Filter Variants by Variabt Recalibration

第一步,过滤vcf文件,条件为ExcessHet大于给定的阈值,命令如下:

gatk --java-options "-Xmx3g -Xms3g" \
    VariantFiltration \
    --filter-expression "ExcessHet > ${excess_het_threshold}" \
    --filter-name ExcessHet \
    -O ${variant_filtered_vcf_filename} \
    -V ${vcf}

excess_het_threshold指定ExcessHet的阈值;variant_filtered_vcf_filename代表输出的vcf文件的名字;vcf代表GenotypeGVCFs 生成的vcf文件的名字。注意,不满足条件的记录也会出现在最终生成的vcf文件中, 只不过对应的Filter字段的信息不是PASS

第二步,删除vcf文件中的基因型信息,命令如下

gatk --java-options "-Xmx3g -Xms3g" \
    MakeSitesOnlyVcf \
    --INPUT ${variant_filtered_vcf_filename} \
    --OUTPUT ${sites_only_vcf_filename}

第三步,合并不同区间的vcf文件,并建立索引

gatk --java-options "-Xmx6g -Xms6g" \
  GatherVcfsCloud \
  --ignore-safety-checks \
  --gather-type BLOCK \
  --input ${inputs.list} \
  --output ${output_vcf_name}
gatk --java-options "-Xmx6g -Xms6g" \
   IndexFeatureFile \
   --feature-file ${output_vcf_name}

output_vcf_name代表输出的vcf文件;inputs.list指定不同区间的vcf文件的路径,格式如下

cohortA_chr1.vcf.gz
cohortA_chr2.vcf.gz

第四步,分别评估SNP和INDEL突变位点的质量, 命令如下

gatk --java-options "-Xmx24g -Xms24g" \
    VariantRecalibrator \
    -V ${sites_only_variant_filtered_vcf} \
    -O ${recalibration_filename} \
    --tranches-file ${tranches_filename} \
    --trust-all-polymorphic \
    -tranche ${sep=' -tranche ' recalibration_tranche_values} \
    -an ${sep=' -an ' recalibration_annotation_values} \
    -mode INDEL \
    --max-gaussians 4 \
    -resource mills,known=false,training=true,truth=true,prior=12:${mills_resource_vcf} \
    -resource axiomPoly,known=false,training=true,truth=false,prior=10:${axiomPoly_resource_vcf} \
    -resource dbsnp,known=true,training=false,truth=false,prior=2:${dbsnp_resource_vcf}
gatk --java-options "-Xmx100g -Xms100g" \
      VariantRecalibrator \
      -V ${sites_only_variant_filtered_vcf} \
      -O ${recalibration_filename} \
      --tranches-file ${tranches_filename} \
      --trust-all-polymorphic \
      -tranche ${sep=' -tranche ' recalibration_tranche_values} \
      -an ${sep=' -an ' recalibration_annotation_values} \
      -mode SNP \
      --sample-every-Nth-variant ${downsampleFactor} \
      --output-model ${model_report_filename} \
      --max-gaussians 6 \
      -resource hapmap,known=false,training=true,truth=true,prior=15:${hapmap_resource_vcf} \
      -resource omni,known=false,training=true,truth=true,prior=12:${omni_resource_vcf} \
      -resource 1000G,known=false,training=true,truth=false,prior=10:${one_thousand_genomes_resource_vcf} \
      -resource dbsnp,known=true,training=false,truth=false,prior=7:${dbsnp_resource_vcf}

resource指定建模时参考的vcf文件,可以看到对于indel和snp, 参考的数据库不一样。这一步只是建模,会输出一个recalibration table文件,用于ApplyVQSR命令。

第五步,运行VQSR, 命令如下

gatk --java-options "-Xmx5g -Xms5g" \
    ApplyVQSR \
    -O tmp.indel.recalibrated.vcf \
    -V ${input_vcf} \
    --recal-file ${indels_recalibration} \
    --tranches-file ${indels_tranches} \
    --truth-sensitivity-filter-level ${indel_filter_level} \
    --create-output-variant-index true \
    -mode INDEL
gatk_path --java-options "-Xmx5g -Xms5g" \
    ApplyVQSR \
    -O ${recalibrated_vcf_filename} \
    -V tmp.indel.recalibrated.vcf \
    --recal-file ${snps_recalibration} \
    --tranches-file ${snps_tranches} \
    --truth-sensitivity-filter-level ${snp_filter_level} \
    --create-output-variant-index true \
    -mode SNP

input_vcf文件为GatherVcfsCloud生成的vcf文件,先校正INDEL位点,后校正SNP位点。

扫描关注微信号,更多精彩内容等着你!


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,290评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,107评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,872评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,415评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,453评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,784评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,927评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,691评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,137评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,472评论 2 326
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,622评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,289评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,887评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,741评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,316评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,490评论 2 348

推荐阅读更多精彩内容