基于GWAS与群体进化分析挖掘大豆相关基因,遗传

相信经常做SNP或者SNV突变位点研究的人,对GATK的名字一定很熟悉,它的全称是Genome Analysis ToolKit,是一款从高通量测序数据中分析变异信息的软件。GATK主要用于人类的全基因组和外显子组的测序数据,目前大部分数据来源于Illumina测序平台。当然,随着技术不断发展,现在也可以用于其他物种的分析,也支持Copy Number Variation和Structure Variation的检测。目前最新版本是4.0.4.0, 即GATK4,与之前的版本相比,版本4在算法上进行了优化,运行速率有所提高,同时也整合了picard软件的功能。

  GATK现在最新的稳定版已经到了3.8,测试版是4.03.8版和之前的版本还是有比较大的不同的,但核心算法与4.0的差异不大,4.0主要整合GATKpicard工具并实现并行运算,所以4.0更趋向于流程化。
  但可以看到网上很多的教程并没有对GATK3.8做出相应的更新,比如IndelRealigner工具在HaplotypeCallerMuTect2中不再建议被使用了(在UnifiedGenotyperMuTect2中依然被要求使用);还有UnifiedGenotyper已经全面被HaplotypeCaller取代了,官方已经弃用了。
  本期详细介绍GATK3.8版本的详细的遗传突变分析流程(包括代码)

1.什么是GATK

9778818威尼斯官网 1

GATK是Genome Analysis Toolkit的缩写,是用来处理高通量测序数据的一套软件。最初,GATK被设计用来分析人类基因组和外显子,主要用来寻找SNP和indel。后开,GATK的功能越来越丰富,增加了short variant calling、计算copy number(CNV)和结构变异(SV)等新功能。同时,GATK也越来越广泛地应用于其他物种的数据分析中。现在,GATK已经成为了基因组和RNA-seq分析过程中,寻找变异的行业标准。

Resequencing 302 wild and cultivated accessions identifies genes related to domestication and improvement in soybean

9778818威尼斯官网 2

9778818威尼斯官网 3

9778818威尼斯官网 4

2. GATK分析的pepline

9778818威尼斯官网 5

用GATK寻找SNP和Indel,有一个标准的分析流程叫做GATK Best Practise主要包括以下几个步骤:

数据预处理:对从测序仪下机后的数据进行质控,去除低质量的reads,将过滤后的reads比对到参考基因组上,产生BAM格式的比对文件。

寻找变异:进行variant calling,寻找SNP和Indel,将比对数据存储在VCF格式的文件中。

使用寻找出的变异位点进行后续的分析。

中文名:基于GWAS与群体进化分析挖掘大豆驯化及改良相关基因

NGSCheckMate

GATK软件提供了5套完整分析流程,我们一般叫它 GATK Best Practices: 1) Germline SNPs Indels; 2) Somatic SNVs Indels; 3) RNAseq SNPs Indels; 4) Germline CNVs; 5) Somatic CNVs。 可以看到,GATK 更多的是倾向于DNA 测序数据的分析,主要识别SNP和CNV 两大类型的变异。详细可以见官网的描述:

GATK pipeline

3.计算机平台和运行环境

9778818威尼斯官网 6

GATK支持Linux和MacOS X,不支持Windows系统。GATK是用java语言写的,所以需要系统安装Java 1.8,其中的一些工具还依赖R和Python。

发表期刊杂志:nature biotechnology
影响因子:41.514
发表时间:2015年2月
发表单位:中科院遗传与发育生物学研究所  

当一个 NGS 项目中对同一个样本进行了 WGS 和 RNA-seq 测序,或者对同一个肿瘤患者的肿瘤组织和癌旁组织同时进行 WGS / WES / RNA-seq / Chip-seq 测序,或者由于第一次测序数据量不够而进行加测得到了两批数据,为了排除实验过程中可能的样本弄混或者标签贴错,就需要验证这不同维度或不同批次的数据是否相互匹配。NGSCheckMate 就是这样一款数据质控软件,可以满足以上所有的需求。

9778818威尼斯官网 7

一、使用bwa进行序列比对

  在对reads质控后使用bwamem算法将reads比对到基因组上,在进行这一步的时候需要注意的一点就是需要添加"read group"信息到每个bam文件,并且这一步在生成bam文件后使用bamtools添加也可以的。
  bam文件的"read group"信息可以通过以下命令获取:

samtools view -H sample.bam | grep '@RG'

"read group"信息以@RG开头:

@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

"read group"信息每部分所代表的信息如下:

ID = Read group的ID,必须唯一
PU = Platform Unit,这个可以没有,因为ID已经是唯一的了,PU的优先级要比ID高,并且其表示的也是flowcell line barcode.
SM = Sample样本序号
PL = Platform/technology used to produce the read 测序技术或机构:
LB = DNA preparation library identifier 表示这个文件是文库的哪一部分,同一文库在不同的flowcell中测,在这里可以标识出来。

所以对于一个被分成4部分在不同flowcell中测序的样本,其使用bwa进行序列比对并添加"read group"9778818威尼斯官网,信息的代码如下:

# 获得@RG的ID:
RG_ID=ID1
# SM:用样本序号来表示:
RG_SM="sample_1"
# PL表示测序技术或机构:
RG_PL="Illumina"
for((j=1;j<5;j  ))
    do
        # RG_LB在每个分割的样本里是不一样的.先提取文件的library part ID
        LB_ID=$j
        # LB表示这个文件是library的哪一部分.
        RG_LB="LB_$LB_ID"
        # 合并RG string:
        RG_string="@RGtID:$RG_IDtSM:$RG_SMtPL:$RG_PLtLB:$RG_LB"
        echo $RG_string
        # 使用bwa进行map:
       bwa mem -t 16 -M -R "$RG_string" ./GRCh38/Homo_38 ./Clean/"$i"/CL10002*_L?_B5EHUMwkyEAAA?AAA-"$LB_ID"_1.fq.gz  ./Clean/"$i"/CL10002*_L?_B5EHUMwkyEAAA?AAA-"$LB_ID"_2.fq.gz -o ./Outcome/bwa_out/Clean/"$i"/"$RG_LB.sam"
    done

4.GATK4中的工具

9778818威尼斯官网 8

GATK中提供了丰富的工具,供我们对数据进行操作和处理,主要涵盖以下方面:

Copy Number Variant Discovery

Coverage Analysis

Diagnostics and Quality Control

Intervals Manipulation

Metagenomics

Other

Read Data Manipulation

Reference

Short Variant Discovery

Structural Variant Discovery

Variant Evaluation and Refinement

Variant Filtering

Variant Manipulation

Base Calling

Read Filters

Variant Annotations

具体的工具和使用方法可参考官网。

另外,在GATK4中新增加了Picard Toolkit,用来对测序数据进行质控。所有的Picard工具都可以使用GATK命令行调用。

一、      研究取材
62株野生大豆、130株地方种和110个驯化品种构建的一个自然群体

为了判断不同测序数据之间的关系,我之前用过 Mendel(Kinship),KING ,VCFtools (relatedness2 ),但是由于软件接受的输入数据格式问题或者输出结果不直观,都不是很好用,直到我发现了 NGSCheckMate 。NGSCheckMate 可以接受 Fastq/BAM/VCF 作为输入文件,输出文件包含样本聚类关系图,样本之间的相关性系数,样本是否配对说明,比之前我用过的其他软件友好多了。

这里我们主要讨论一下 Somatic SNVs Indels这套分析流程中的故事。研究癌症,寻找somatic 突变是必不可少的一步。 通常癌症研究是将正常组织和癌症组织一起进行全基因组测序或者全外显子组测序,然后过滤掉种系突变(Germline mutation),从而获得肿瘤组织的体细胞突变(Somatic mutation)。当然,我们也要注意很多影响因素对我们寻找somatic突变的作用,包括受到测序文库、测序深度、肿瘤纯度以及软件缺陷等等因素的影响。例如,由于一些肿瘤切片组织含有过多的正常组织细胞,会对肿瘤细胞造成干扰;肿瘤突变可能是异质性的;一些突变常常是非整倍性的,如拷贝数变异导致的。所以选择好的软件,很好的理解软件的使用,对得到可靠的结果,并做出合理解释是非常有帮助的。

二、标记duplicates并合并bam文件:

  在制备文库的过程中,由于PCR扩增过程中会存在一些偏差,也就是说有的序列会被过量扩增。这样在比对的时候,这些过量扩增出来的完全相同的序列就会比对到基因组的相同位置。而这些过量扩增的reads并不是基因组自身固有序列,不能作为变异检测的证据。因此,要尽量去除这些由PCR扩增所形成的duplicates, 使用picard-tools来给这些序列设置一个Flag以标志它们,方便给后面做variants calling时的GATK所识别。这里定义的重复序列是这样的:如果两条reads具有相同的长度而且比对到了基因组的同一位置,那么就认为这样的reads是由PCR扩增而来,就会被GATK标记。
  对于一个样本在多个Flowcell下测序得到的多个bam文件,需要先sort bam文件,然后mark duplicates再进行合并多个bam文件为一个。代码及注释如下:

# 对于单样本4个bam文件:
for((i=1;i<=4;i  ))
do
   # 先对每个bam文件排序:
    java  -jar picard.jar SortSam I=./"$i"/cleaned.bam O=./"$i"/cleaned_sorted.bam SORT_ORDER=coordinate
    # 鉴定重复的reads:
    java -jar picard.jar MarkDuplicates I=./"$i"/cleaned_sorted.bam O=./"$i"/marked_duplicates.bam  M=./"$i"/marked_dup_metrics.txt
done

# 合并bam文件:,USE_THREADING参数会多占20%的CPU,但可以加快速度.
java -jar picard.jar MergeSamFiles USE_THREADING=true  I=./1/marked_duplicates.bam I=./2/marked_duplicates.bam I=./3/marked_duplicates.bam I=./4/marked_duplicates.bam O=./marked_duplicates.bam  

  顺便还可以看看文库的插入片段Insert size)是多少:

java -jar  picard.jar CollectInsertSizeMetrics I=./marked_duplicates.bam  O=./insert_size_metrics.txt H=./insert_size_histogram.pdf M=0.5

9778818威尼斯官网 9

Insert size Histogram

可以看出这个样本插入片段主要分布在100-300bp之间,插入片段长度的峰在150bp左右。

二、      方法流程
Illumina HiSeq 2000 测序平台,测序文库300bp,样本平均测序深度达到11X

NGSCheckMate 运行需要 samtools 在系统路径中, 安装之后运行也很简单,以 VCF 输入文件为例:

9778818威尼斯官网 10

三、GATK碱基质量值重校正(BQSR):

  这一步是对bam文件里reads的碱基质量值进行重新校正,使最后输出的bam文件中reads中碱基的质量值能够更加接近真实的与参考基因组之间错配的概率。还需要准备两类外部文件。
  一类是knownSites,已知的SNP位点数据在GATK Resource Bundle中下载, 下载地址为:ftp://ftp.broadinstitute.org/bundle/
  另一类是-L参数指定的基因组区域,GATK将在这个参数指定的区域进行variants calling,如果是外显子测序,则此区域为全基因组外显子区域,但GATK并不支持bed格式,所以这里需要使用PicardBedToIntervalList工具将bed格式转为GATK能够识别的IntervalList文件。注意,这个intervalList文件在后面要用到多次,设置UNIQUE=true对于结果无影响,因为后续的步骤中GATK将自动将intervalList转为UNIQUE(注意后缀必须被命名为.interval_list)。
代码如下:

# 对exon bed文件排序:
sortBed -i ./ref_files/GENCODEv24_exons.bed  >./ref_files/GENCODEv24_exons_sorted.bed

# 将exon的bed格式转为picard格式:
java -jar  picard.jar BedToIntervalList 
I=./ref_files/GENCODEv24_exons_sorted.bed 
O=./ref_files/GENCODEv24_exons.interval_list 
SD=./GRCh38/Homo_38.dict 
UNIQUE=true

三、      生物信息学分析
群体结构分析、选择清除分析、重要性状的全基因组关联分析

python ncm.py -V –l INPUT_FILE_list -bed BED_FILE -N test_output –O OUTPUT_DIR
# -l 参数,INPUT_FILE_list 包含所有输入 VCF 文件的绝对路径
# -bed 参数,BED_FILE 软件本身自带,包括使用的所有 SNP marker 位点
# -N 参数,test_output 输出文件前缀
# -O 参数,OUTPUT_DIR 指定输出路径

这里我们讨论一下GATK最新版本GATK4的Mutect2与之前的版本GATK3的MuTect2之间的差异。

接下来进行BQSR:

Base Quality Score Recalibration (BQSR) 第一步

$JAVA_HOME/bin/java -jar ./GenomeAnalysisTK.jar 
    -T BaseRecalibrator 
    -R ref.fasta 
    -I input.Bam 
    -knownSites 1000G_phase1.snps.high_confidence.hg38.vcf 
    -knownSites dbsnp_146.hg38.vcf 
    -knownSites Mills_and_1000G_gold_standard.indels.hg38.vcf 
    -L GENCODEv24_exons.interval_list 
    -o  BQSR_1_out_grp

Base Quality Score Recalibration (BQSR) 第二步

$JAVA_HOME/bin/java -jar ./GenomeAnalysisTK.jar 
    -T BaseRecalibrator 
    -R ref.fasta 
    -I input.Bam 
    -knownSites 1000G_phase1.snps.high_confidence.hg38.vcf 
    -knownSites dbsnp_146.hg38.vcf 
    -knownSites Mills_and_1000G_gold_standard.indels.hg38.vcf 
    -L  GENCODEv24_exons.interval_list 
    -o  BQSR_2_out_grp
    -BQSR  BQSR_1_out_grp

下面这一步是可选的基于GWAS与群体进化分析挖掘大豆相关基因,遗传突变分析流程。,画图并产生.csv中间结果文件:

 $JAVA_HOME/bin/java -jar ./GenomeAnalysisTK.jar 
    -T AnalyzeCovariates 
    -R ref.fasta 
    -before BQSR_1_out_grp 
    -after BQSR_2_out_grp 
    -csv AnalyzeCovariates.csv 
    -plots AnalyzeCovariates.png

最后一步:将recal后的PrintReads写入bam文件:

$JAVA_HOME/bin/java -jar ./GenomeAnalysisTK.jar 
    -T PrintReads 
    -R ref.fasta 
    -I input.Bam 
    -o PrintReads_out.Bam 
    -BQSR BQSR_1_out_grp

四、      研究结果
1)使用BWA软件将原始数据与参考基因组进行比对,使用samtools将sam格式转化为bam,使用picard软件去掉Duplicated reads。

NGSCheckMate 的文章是 2017 年 3 月份发表在 Nucleic Acids Research 上的,影响因子 10.162。

9778818威尼斯官网 11

四、使用HaplotypeCaller进行varinats calling:

  目前寻找SNPindel的工具有很多,但对于生殖遗传(germline)的突变位点识别,使用最多、准确率最高并且是GATK最推荐使用的是HaplotypeCallerHaplotypeCaller寻找活跃区域,也就是和参考基因组差异较多的区域,对该区域进行局部重组装,确定单倍型(haplotypes),在给定的read数据下,计算单倍型的可能性,分配样本的基因型(genotype)。对于每一个样本,代码如下:

 $JAVA_HOME/bin/java -jar ./GenomeAnalysisTK.jar 
     -R ref.fasta 
     -T HaplotypeCaller 
     -I PrintReads_out.Bam 
     --emitRefConfidence GVCF 
     --dbsnp 1000G_phase1.snps.high_confidence.hg38.vcf 
     -L GENCODEv24_exons.interval_list 
     -o HaplotypeCaller_out.g.vcf

2)SNP calling使用GATK和samtools,取两者结果的交集。对于GATK参数设置:-stand_call_conf 30。MAF设置为0.01。


首先,我们可以从名字的设定上就有差别:GATK3的MuTect2是大写的T,而GATK4的Mutect2是小写的t。这样的设计,可以让我们很好地区分它们是不同的版本软件,另外我们在type输入命令的时候也很容易,不用切换大小写。

五、使用GenotypeGVCFs进行joint genotype

  上一步通过HaplotypeCaller产生的.gVCF文件需要合并每个样本的突变信息到单一vcf文件来方便进行下一步的过滤分析。

# 假设我有8个样本:
$JAVA_HOME/bin/java -jar ./GenomeAnalysisTK.jar 
  -T GenotypeGVCFs 
  -R ref.fasta 
  --variant ./1/HaplotypeCaller_out.g.vcf 
  --variant ./2/HaplotypeCaller_out.g.vcf 
  --variant ./3/HaplotypeCaller_out.g.vcf 
  --variant ./4/HaplotypeCaller_out.g.vcf 
  --variant ./5/HaplotypeCaller_out.g.vcf 
  --variant ./6/HaplotypeCaller_out.g.vcf 
  --variant ./7/HaplotypeCaller_out.g.vcf 
  --variant ./8/HaplotypeCaller_out.g.vcf 
  -o GenotypeGVCFs_out.vcf

提取SNV:

$JAVA_HOME/bin/java -jar ./GenomeAnalysisTK.jar 
  -T SelectVariants 
  -R ref.fasta 
  --variant GenotypeGVCFs_out.vcf 
  -o GenotypeGVCFs_out_snp.vcf 
  --selectTypeToInclude SNP

提取INDEL:

$JAVA_HOME/bin/java -jar ~/software_source/GATK3.8/GenomeAnalysisTK.jar 
  -T SelectVariants 
  -R ref.fasta 
  --variant GenotypeGVCFs_out.vcf 
  -o GenotypeGVCFs_out_indel.vcf 
  --selectTypeToInclude INDEL

3) Indel calling类似于SNP calling,使用GATK的UnifiedGenotyper程序,起参数设置为-glm INDEL,只考虑6bp范围内的缺失和插入。

摘要

在很多利用 NGS 技术的研究中,会对同一个人的不同组织进行测序,或者对同一个组织进行不同水平的测序,例如 DNA-seq,RNA-seq,Chip-seq。在这种项目中需要添加一个质控环节,来确保不同的数据来自同一个人。我们开发了一款简洁易用的软件 NGSCheckMate,利用 SNP 基因型来鉴定数据来源,它可以利用多种格式的数据,如 Fastq,BAM,VCF 来验证不同的数据是否来自同一个人。软件利用已知的单核苷酸多态性位点(SNP)基因型和等位频率信息,即使测序深度不同等位频率不会出现太大波动,以此来鉴定数据是来自同一个体还是分别来自不同的人。我们的测试表明,NGSCheckMate 适用于多种不同水平的数据,包括 WES、WGS、RNA-seq、Chip-seq、靶向捕获测序和单细胞全基因组测序,并且在测序深度低至 0.5X 时依然表现良好。软件有免比对模式,可以直接利用 Fastq 原始数据快速进行数据来源鉴定的模块。我们推荐在 NGS 项目中使用这款工具进行数据质控。软件可以通过github 项目主页获取。


9778818威尼斯官网 12

四、突变位点质量值重矫正(VQSR)

  这一步是基于"true sites"(如HapMap 3Omni的sites等)建立混合高斯模型来对突变位点质量值重新矫正,并评估该位点作为一个真实突变的可能性。这一步最少样本量为30,但对于INDEL来说,即使有30个样本,也有可能由于突变位点太少也有可能导致建模失败,解决方法是从千人基因组中添加样本进行VQSR,笔者在对16个样本的INDEL进行VQSR时,一度增加至40个样本才成功建模。代码如下:

4)SNP注释使用的软件为ANNOVAR。SNP被注释到内含子(overlap- ping with an intron)、外显子、基因间区,可变剪切位点(within 2 bp of a splicing junction)、5′UTRs 、3′UTRs,, upstream and downstream regions (within a 1 kb region upstream or downstream from the transcription start site).注释在外显子区域的SNP又分为同义和非同义突变。注释到外显子的Indel又分为移码突变和非移码突变。

背景介绍

在很多利用 NGS 技术的研究中,会比较或者整合来源于同一个人的多次测序数据,例如对不同的组织或同一组织不同生理状态下的取样进行测序,比较相同的基因组水平下不同组织间转录组水平的变化,或者检测组织特异性的突变(例如 somatic)。例如在一些癌症研究项目中,同一个患者的肿瘤组织和癌旁组织都会进行 WGS 和 RNA-seq 测序,来检测肿瘤中的体细胞突变及其对基因表达水平的影响。还有一些情况也需要鉴定数据是否来之同一个体,例如重复实验,或者合并不同 lane 上测得的数据(不同 run?)。

质控检查样本与标签是否匹配对于数据分析的重要性不言而喻,特别是对于应用于临床疾病的项目,患者可能需要根据数据分析的结果制定治疗方案。尽管我们有标准的实验质控和数据质控环节,但是在手工操作环节仍有可能出现标签与实际样本不匹配的情况,一旦出现这样的情况,要么丢弃这个可疑样本的数据,要么只能重头开始。样本配对检测应该作为一个数据 QC 环节添加进流程中,而且位于流程的越上游越好。

检测数据是否跟一个个体匹配有多种方法,例如微卫星序列(STR)检测,TCGA 数据库就是利用 PCR 检测 CODIS 数据库中人群高度多态性 STR 的方法来验证肿瘤组织和对应的对照组织是否配对。但是检测 STR 的方法对于 NGS 项目来说并不是很好用,由于大部分 STR 都位于基因组的非编码区,因此对于 RNA-seq 和 WES 测序不适用,另外很多 STR 序列的长度都比 NGS 的测序读长要长。

还有一种比较普遍的方法,就是利用人群高度多态性的 SNP 位点来验证两组数据是否配对。利用 SNP 位点来验证数据已经用于 RNA-seq 和 WES 数据中。NGS 项目中一个人的数据可以来之不同的 lane,还有利用 SNP 位点来检验不同 lane 产出的数据是否来之同一个人的研究。另外,VCFtools 软件也提供了一个功能(relatedness2 模块),可以利用 VCF 文件检验两个个体之间的亲缘系数。但是目前这些方法都只适用于特定的数据类型,不能用来验证不同类型的数据是否来源同一个人。

因此,我们开发了 NGSCheckMate ,一个数据配对 QC 软件,适用于多种数据类型:原始数据 FASTQ、比对数据 BAM 和变异数据 VCF。此外 NGSCheckMate 也支持多组学数据之间的配对检测,例如 WES 数据和 RNA-seq 数据。还有一个免比对功能,可以直接利用两组 FASTQ 数据检测是否匹配。NGSCheckMate 可以利用多种类型的数据,不同测序深度的数据(> 0.5X),而且运行速度非常快,适用范围也很广。


下面我们再给出两个版本GATK 的不同工作流程参数用法:

对于SNP:
# 第一步:Variant recalibrat for SNP:
$JAVA_HOME/bin/java -jar ./GenomeAnalysisTK.jar 
  -T VariantRecalibrator 
  -R $ref_fasta 
  -input GenotypeGVCFs_out_snp.vcf 
  -resource:hapmap,known=false,training=true,truth=true,prior=15.0 hapmap_3.3_grch38_pop_stratified_af.vcf 
  -resource:omni,known=false,training=true,truth=true,prior=12.0 1000G_omni2.5.hg38.vcf 
  -resource:1000G,known=false,training=true,truth=false,prior=10.0 1000G_phase1.snps.high_confidence.hg38.vcf
  -resource:dbsnp,known=true,training=false,truth=false,prior=2.0 dbsnp_146.hg38.vcf 
  -an QD 
  -an FS 
  -an SOR 
  -an MQ 
  -an MQRankSum 
  -an ReadPosRankSum 
  -an InbreedingCoeff 
  -mode SNP  
  -tranche 100.0 
  -tranche 99.9 
  -tranche 99.0 
  -tranche 90.0 
  -recalFile VQSR_recal_out_snp 
  -tranchesFile VQSR_tranch_out_snp 
  -rscriptFile VQSR_rscript_out_snp 

# 第二步:ApplyRecalibration for SNP:
$JAVA_HOME/bin/java -jar ./GenomeAnalysisTK.jar 
  -T ApplyRecalibration 
  -R ref.fasta 
  -input GenotypeGVCFs_out_snp.vcf 
  -mode SNP 
  --ts_filter_level 99.0 
  -recalFile VQSR_recal_out_snp 
  -tranchesFile VQSR_tranch_out_snp 
  -o VQSR_recalibrated_out_snp

5)群体结构分析中,PCA使用的是EIGENSOFT 4.2 的smartpca 程序,neighbor-joining tree 使用PHYLIP 3.68软件。结构分层使用FRAPPE,其中k值选取2到7.连锁不平衡分析使用plink软件。关联分析使用的GAPIT 分析软件。
9778818威尼斯官网 13

NGSCheckMate 流程和原理

下图展示了 NGSCheckMate 的基本流程, 输入文件支持三种格式:Fastq、BAM、VCF,输出文件也有三个:一个文本文件,包含样本是否配对检测结果和基因型相关性系数;一个 PDF 文件,包含所有样本聚类关系图;一个样本聚类关系 XGMML 文件,可以导入可视化软件中查看,例如 Cytospace。

9778818威尼斯官网 14

NGSCheckMate 流程图

NGSCheckMate 通过计算两组输入数据在某些 SNP 位点的 VAF(variant allele fraction) 皮尔森相关系数来判断是否来源同一个人。

VAF = 支持 ALT 的 reads 数量 / 覆盖该 SNP 位点的所有 reads 数量

下图展示了 NGSCheckMate 计算原理。如果输入的是 BAM 文件,NGSCheckMate 会利用 SAMtools mpileup 默认参数来计算 VAF;如果输入的是 FASTQ 文件,软件会自己搜索覆盖 SNP 位点的 reads ,并统计支持 ALT 的 reads 数量和支持 REF 的 reads 数量,以此计算 VAF,当然耗时会长些。

9778818威尼斯官网 15

NGSCheckMate 计算原理

NGSCheckMate 有一个通过配对和不配对的 WGS 数据训练好的 VAF 相关性系数分布模型,包括 0.01~60X 的测序深度下的相关性系数分布情况,及配对和不配对的相关性系数阈值,只需要将输入数据计算的 VAF 相关性系数与模型分布比较即可得出样本是否匹配的结论。


9778818威尼斯官网 16

对于INDEL:
# 第一步:Variant recalibrat for INDEL: 
$JAVA_HOME/bin/java -jar ./GenomeAnalysisTK.jar 
    -T VariantRecalibrator 
    -R $ref_fasta 
    -input GenotypeGVCFs_out_indel.vcf  
    -resource:mills,known=false,training=true,truth=true,prior=12.0 dbsnp_146.hg38.vcf 
    -resource:dbsnp,known=true,training=false,truth=false,prior=2.0 Mills_and_1000G_gold_standard.indels.hg38.vcf 
    -an QD 
    -an FS 
    -an SOR 
    -an MQRankSum 
    -an ReadPosRankSum 
    -an InbreedingCoeff 
    -mode INDEL 
    -tranche 100.0 
    -tranche 99.9 
    -tranche 99.0 
    -tranche 90.0 
    --maxGaussians 4 
    -recalFile  VQSR_recal_out_indel 
    -tranchesFile VQSR_tranch_out_indel 
    -rscriptFile VQSR_rscript_out_indel

# 第二步:ApplyRecalibration for INDEL:
$JAVA_HOME/bin/java  -jar ~/software_source/GATK3.8/GenomeAnalysisTK.jar 
    -T ApplyRecalibration 
    -R ref.fasta 
    -input GenotypeGVCFs_out_indel.vcf  
    -mode INDEL 
    --ts_filter_level 99.0 
    -recalFile VQSR_recal_out_indel 
    -tranchesFile VQSR_tranch_out_indel 
    -o  VQSR_recalibrated_out_indel.vcf

选择 SNP 作为鉴别不同个体的 marker

利用 TCGA 中 40 对 WGS 数据测试了 dbSNP138 的所有 SNP 位点之后,我们选择了 21067 个外显子区的 SNP 位点作为鉴别不同个体的 marker 集。对于免比对模式(以 FASTQ 为输入),是利用其中 11696 个 SNP 位点作为 marker 集。当然模拟数据显示,只使用其中 11696 个 SNP 位点也可以得到与 21067 个 SNP 相同的 VAF 相关性分布。


从上表中我们可以看到,GATK3对calling variants和过滤somatic calls都是用的MuTect2,而GATK4则是选择Mutect2进行calling,而过滤用的是一个独立工具 FilterMutectCalls。另外一个很大的区别是如果一个突变位点在匹配的正常组织中出现,或者是在注释库如dbSNP中出现,则GATK3 MuTect2是不对这位点call somatic的;这是因为根据随机突变假说,这样的位点要么不太会是somatic突变。而GATK4 Mutect2会充分考虑germline的位点和是否与Tumor位点匹配。详见下表的解释:

五、对VCF文件进行过滤

  1. 如果在VQSR过程中加入了千人基因组的样本,需要通过SelectVariants选择自己样本相关的突变,去除与自己样本不想管的突变:
$JAVA_HOME/bin/java -jar ./GenomeAnalysisTK.jar 
   -T SelectVariants 
   -R ref.fasta 
   -V VQSR_recalibrated_out_snp.vcf 
   -o SelectVariants_out_snp.vcf 
   # 筛选条件为正则表达式,由于我的样本都是sample_1、sample_2这样的,所以正则为smple_. 。
   -se "sample_. " 
   -env 
   -ef
  1. 选择指定染色体的突变位点进行分析,如果只想选择1-24x y染色体的突变位点进行分析,可以使用vcftools进行过滤:
#首先使用vcftools提取24个染色体的variants,再进行下一步分析:
vcftools --vcf variantFiltered_Out_snp.vcf --recode --recode-INFO-all --chr chr1 --chr chr2 --chr chr3 --chr chr4 --chr chr5 --chr chr6 --chr chr7 --chr chr8 --chr chr9 --chr chr10 --chr chr11 --chr chr12 --chr chr13 --chr chr14 --chr chr15 --chr chr16 --chr chr17 --chr chr18 --chr chr19 --chr chr20  --chr chr21  --chr chr22 --chr chrX --chr chrY --out vcftools_24chrom_Out_snp.vcf
  1. 选择FILTER列为PASS并且reads深度大于10的突变位点,还是使用SelectVariants工具(SelectVariants是支持JEXL语法的):
$JAVA_HOME/bin/java -jar ~/software_source/GATK3.8/GenomeAnalysisTK.jar 
   -T SelectVariants 
   -R ref.fasta 
   -V vcftools_24chrom_Out_snp.recode.vcf" 
   -o SelectVariants_24_out_snp.vcf 
   -select "vc.isNotFiltered() && DP>10 "

免比对模式

免比对模式下,NGSCheckMate 对 reads 取 21bp k-mer 搜索,检测是否能与 SNP 附近的参考序列比对上(包括 ALT 和 REF 状态),为了确保 21bp k-mer 是唯一比对的,免比对模式下把所有参考基因组上下文不唯一的 SNP (SNP 附近的序列在基因组上有多处相同)位点都去掉了。此外为了提高效率,免比对模式会从输入的 FASTQ 中随机下采样,保证足够的准确率同时缩短运算时间。


9778818威尼斯官网 17

六、对结果进行进评估

可以通过VariantEval工具获得每个样本的TiTv Ratio:

# 对SNP结果进行评估:For SNP:
$JAVA_HOME/bin/java -jar ~/software_source/GATK3.8/GenomeAnalysisTK.jar 
   -T VariantEval 
   -R $ref_fasta 
   -o $VariantEval_Out_snp 
   --eval $SelectVariants_24_out_snp 

结果如下:

9778818威尼斯官网 18

TiTv Ratio

  一般来说全基因组范围内,颠换/转换一般是在2左右,而在编码区域,颠换/转换一般稍微高于3左右,较高的Ts/TV一般是由于密码子的第三个碱基上发生了颠换。


有段时间没有更新了,非常抱歉,立个Flag:以后至少每周一篇。

更多原创精彩视频敬请关注生信杂谈:

9778818威尼斯官网 19

构建 VAF 相关性系数分布模型

我们在 TCGA 数据库中选取了 40 对的配对样本数据和非配对样本数据,并对它们进行下采样(低至 0.01X),统计不同测序深度下的 VAF 相关性系数分布情况。得到了一个非常稳健的 VAF 相关性系数分布模型(上图 C 所示),我们就用这个分布模型来预测输入数据是否匹配。

对于输入的一组数据,计算它们 VAF 相关系系数,如果落在模型中相同测序深度下的配对系数的分布区间就预测为配对数据,反之亦然。对于不同测序深度数据,判定是否配对的 VAF 相关性系数阈值也不同,测序深度 <1, [1,2), [2,5), [5,10), >=10 阈值分别是 0.38, 0.41, 0.46, 0.55, 0.61 ;但如果样本都来来自同一个家庭(父母关系或兄弟姐妹关系),阈值会更严格一些,分别是 0.50, 0.54, 0.59, 0.69, 0.76 。如果输入的两组数据测序深度不同,则以低测序深度下的判定结果为准。


需要注意的是由于一些样品制备、测序以及序列配对过程中会产生系统性的误差,会在calling somatic突变中形成噪音。同时,GATK4 Mutect2主要是根据对正常-肿瘤样本进行位点比较寻找somatic突变,如果没有正常样本,虽然GATK4 Mutect2软件也能正常跑通产生结果,但假阳性或者说噪音也会很高。因此需要利用多个匹配的normal样本,然后使用GATK4 Mutect2中与癌症样本使用相同参数,构建一个PoN库;如果有了这种PoN库,GATK4 Mutect2会在局部重组装,有助于过滤掉常见的germline突变位点。这期就介绍到这里,敬请期待!

验证模型的准确性

从 TCGA 数据库和其他一些研究项目中取 160 对(肿瘤/对照) WGS 数据,984 对 WES 数据,170 对 RNA-seq 数据,85 对 panel-seq 数据,130 对单细胞 WGS 数据, 130 组 Chip-seq 数据,来进行测试。另外,除了 Illumina 平台的数据,也测试了 Ion Torrent 平台的两组数据。测试结果显示,在测序深度足够的情况下(>0.5X),NGSCheckMate 预测样本是否配对的准确度接近 100%。

对于有亲缘关系的个体之间的 VAF 相关性系数分布,我们也统计了 10 个家庭的 36 份 WES 数据,如下图 A 中绿色/紫色的点。下图 A 中显示在测序深度大于 0.5X 时,VAF 分布模型可以清晰地将同一个人的数据,有亲缘关系(父母关系和兄弟姐妹关系)的数据,陌生人的数据分开。有亲缘关系的那些数据,父母关系和兄弟姐妹关系的数据分布几乎是重叠的(当然也无法区分到底是什么关系)。

9778818威尼斯官网 20

NGSCheckMate-VAF-distributions

上图 B 中包含了使用 12K 个 SNP 和使用 20K 个 SNP 计算的 VAF 相关性系数分布,分布非常接近。同时也统计了 SNP 中纯合和杂合的比例对分布模型的影响,分布也几乎是重叠的。

上图 D 中显示了使用 66 对(肿瘤/对照) WGS 数据和 36 对单细胞 WGS 测序数据进行测试的准确度,利用下采样统计不同测序深度下的准确度。在 0.5X 以上测序深度时,模型判断两组数据是否配对的准确度接近 100%。


浙大生信博士团队倾力打造的一个科研人员学习交流的公众微信平台。我们致力于科研社区服务,分享前沿的科技进展,提供生信分析方法,解读经典分析案例,公众数据库的挖掘和临床数据统计分析。在此我们欢迎各位的加入!

NGSCheckMate 应用实例:肝癌 WGS 研究项目

在这个项目中对 21 个肝癌患者各自进行 3 种组织(肿瘤,癌旁,血液) WGS 测序,当分析每个患者的体细胞突变 SNV 时候,我们出乎意料地发现有不同的患者 somatic SNV 中有大量是相同的,之后进一步调查,发现可能是部分样本在操作过程中贴错了标签,利用 NGSCheckMate 可以鉴定出所有贴错标签的样本。对于可能弄混的样本重新测序之后,NGSCheckMate 对全部 21 个患者的各自 3 个样本给出了正确的聚类。

此外,利用 NGSCheckMate 也在 TCGA 一项利用低深度 WGS 测序检测胃癌中结构变异的项目中发现 1 例可能是混样的数据(242 个 BAM 文件的其中一个)。


加微信bioinformatics88拉您进生信交流群

NGSCheckMate 运行速度和内存需求

如果用 VCF 作为输入文件,NGSCheckMate 可以在约 3 分钟之内,利用不超过 200MB 内存,检测 80 个 WGS 测序数据之间的关系。运算速度很快。

如果用 FASTQ 作为输入文件,NGSCheckMate 为了提高速度,会进行下采样(取~2X 数据),也可以在 11 分钟左右,利用约 40 MB内存,检测两个 WGS 原始数据之间的关系。


9778818威尼斯官网 21

总结

NGSCheckMate 可以非常高效准确地判定两组数据是否来源与同一个人,适用于多组学数据,包括 WGS,WES,Chip-seq,RNA-seq,panel-seq,而且由于筛选出来的 20K 个 SNP marker 有足够的冗余度,只需要测序深度 >0.5X 就可以给出准确的判断结果。NGSCheckMate 的免比对模式可以在数据下机之后就对 FASTQ 进行检测,尽早发现可能的样本与标签弄混的事故。

本文由9778818威尼斯官网发布于9778818威尼斯官网,转载请注明出处:基于GWAS与群体进化分析挖掘大豆相关基因,遗传

您可能还会对下面的文章感兴趣: