突变注释工具SnpEff,Annovar,VEP,oncotator比较分析--转载
https://www.jianshu.com/p/6284f57664b9
目前对于variant进行注释的软件主要有4个: Annovar
, SnpEff
, VEP(variant Effect Predictor)
, Oncotator
, 选择合适的软件注释variants对于下游分析是很关键的, 今天我们来比较下这4种软件在variants 注释上的差异,进而帮助我们选择更合适的注释软件.
首先简要介绍下这4个软件的一些特点:
Oncotator
: 主要用于癌症特异性突变位点的注释,下面不做过多解释.注释结果为MAF格式(也是TCGA使用的突变注释格式),也可以用于格式转换(将VCF文件转为MAF格式).但基因组文件使用的是hg19(GENCODE)版本,截止到目前并没有更新到GRCh38.(基于python)SnpEff
: 支持超过38000个基因组, 并且目前已经支持肿瘤突变分析.之前是与gatk不兼容的,但现在已经修复.并且还有衍生工具SnpSift
用于过滤和操作SnpEff
的结果文件(VCF格式).现在还发布了集成了SnpEff
和Snpsift
的专业版软件ClinEff
,这个主要是面向临床和精准医疗的.(基于java)Annovar
: 也支持多个基因组(包括 hg18, hg19, hg38,也有小鼠,虫等物种),能够确定SNP或CNV是否导致蛋白质编码变化以及受影响的氨基酸,并且能够自主的选择基因定义系统(如RefSeq/UCSC/Ensemble等).也能识别特定基因组区域的variants,如保守性区域,TFBS,DHS,组蛋白结合修饰区域. 也能关联其他数据库对variants进行注释,如dbSNP/1000 Genome Project等. 还能检索用户自定义的基因组位置,识别孟德尔疾病的可能的基因列表.(基于perl)VEP(Variant Effect Predictor)
: 最初发布于2010年(PMID:20562413),16年(PMID:27268795)时又发布了新的版本做了很大改进,现在主要可以进行序列变异和结构变异注释.(基于perl)
Software | citation | Journal | IF | Year | Pebmed ID |
---|---|---|---|---|---|
snpEff | 1,232 | FLY | 0.9 | 2012 | 22728672 |
Annovar | 1814 | NAR | 10 | 2012 | 20601685 |
VEP | 80 | Genome Biol | 11.3 | 2016 | 27268795 |
运行时间的比较:
![](http://upload-images.jianshu.io/upload_images/903467-023c1a527142a8f8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/408)
基因组的选择对于variants的注释的影响:
首先说明的是,基因组的选择对于variants的注释具有很大的影响, 在《Choiceof transcripts and software has a large effect on variantannotation》(Genome Medicine,IF 7.1)
这篇文献里,作者对WGS的8千万个variants, 分别使用基因组REFseq
和Ensemble
注释的时候,发现两个基因组注释出的loss-of-function variants
部分仅有44%的一致性,并且loss-of-function
和nonsymnonymous
加起来的一致性是79%,exonic variants
的一致性是83%.
而我们一般关注较多的部分是loss-of-function
,两个基因组文件注释结果仅有不到一半的一致性(44%), 作者给出的解释是:基因组间的差异是由于Ensemble
和REFseq
的转录本数量不同造成的,而Ensemble
中有更多的转录本,Ensemble
试图对每个基因都产生全面完整的转录本注释,而并非高可信度的转录本. 这意味着Ensemble
注释存在更多的剪切位点,是造成差异的主要原因. 并且有些转录本起始于开放阅读框之外,如果variant 注释工具不处理这些开放阅读框之外的部分将会导致不准确的注释.
不同注释软件(Annovar和VEP)对于注释的影响:
不同注释软件对于注释的影响很大,还是上面那篇文献,以Ensemble
为参考基因组,使用Annovar
和VEP
分别注释后,loss-of-function
部分的matching只有65%,所有exonic variants
的matchig是87%. 并且在一些位点的注释两个软件都不准确,具体看下面的例子:
![](http://upload-images.jianshu.io/upload_images/903467-08ff456e1014ffbc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
上图图A是是rs7103033
突变示例,最后一个外显子的最后一个碱基由A
变为G
,所以导致的结果就是由TGA(终止子)
变为TGG(色氨酸)
,导致终止子缺失,所以应该被注释为stop-loss
.Annovar
和VEP
的注释都是对的. 但是看图B,也是最后一个外显子(最后是TGA终止密码子)突变,但这次是插入突变,在第二个碱基的后插入了一个A,单碱基插入应该被注释为framethift
,并且插入的位置是一个终止子,所以也是个stop-loss
,但事实上,即使插入A
后这依旧还是个终止子,这其实是个同义突变.然而Annovar
将其注释为frameshift insertion
,VEP
将其注释为stop-loss
,都是不准确的.
需要说明的一点是:但这篇文献是13年的了,这两个软件是10年发布的,在这几年里这两个软件已经做了很多更新,做出了很多修正, 但对于一些重要的值得关注的突变,我们还是需要在基因组浏览器里看下突变的印象究竟是什么而不能全部信任软件的注释结果.
为什么这么说呢,在14年的一篇博客上(点击左下角阅读全文查看)博主比较了三大主流注释软件(Annovar
,snpEff
和VEP
),并通过几个例子阐述了这三个软件注释结果存在的一些问题,例子如下:
![](http://upload-images.jianshu.io/upload_images/903467-2c71adbb9987ebb8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
上图例一中,Annovar
和VEP
将这个突变注释为frameshift
,然而SnpEff
将其注释为stop gain
,哪一个是正确的?严格来说,这是一个frameshift
,但称为stop gain
要更精确一些.
![](http://upload-images.jianshu.io/upload_images/903467-0718f01d0f08958a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
上图例二中,T是CFTR外显子上的第一个碱基,Annovar
将其注释为intergenic
; SnpEff
将其注释为Exon, intergenic和upstream
,这个例子说明SnpEff
注释出了所有的可能性,即使有些注释是相互矛盾的(exon
和intergenic
).
![](http://upload-images.jianshu.io/upload_images/903467-58d89f7d1c761231.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
上图例三中,Annovar
和VEP
都将这个缺失注释为stop loss
,这是正确的,然而SnpEff
将其注释为frameshift
,虽然这缺失是个frameshift
但是不够精确的.
![](http://upload-images.jianshu.io/upload_images/903467-0aefe50cd39ebe73.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
上图例四中, 这是一个很有趣且很微妙的例子来说明为什么三个软件在剪切位点上的突变差异很大,SnpEff
将这个插入突变注释为一个splice_site_acceptor
,这很明显是不对的,因为an acceptor site
是3' end of the intron
,而插入的这个T并非在末端.VEP
将其注释为a splice_site_region
,这是正确的.Annovar
将其注释为intron
,这也是正确的但不精确.
三个软件在splicing variant
上的一致性如下图所示:
![](http://upload-images.jianshu.io/upload_images/903467-c72e550c22375f3d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/613)
可以看出三个软件对splicing variant
的注释结果差异较大,很大一部分原因是由于对同一个variant
的描述使用了不同的术语所造成的.
![](http://upload-images.jianshu.io/upload_images/903467-f7c1fa3f6d47d7da.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
上图例五中,出现了一个3甲基缺失,SnpEff
将其注释为一个frameshift
,根据上面任何一个转录本都不能得出这样的结论,SnpEff
做出这个注释是根据第一个转录本.而这个转录本的末端是X
,表示任意未知氨基酸.所以这个缺失并不能导致frameshift
,所以这个注释是错误的,VEP
根据第一个转录本将其注释为3_prime_UTR_variant
,这是对的,Annovar
将其准确的注释为nonframeshift deletion
.
上面这篇博客是金螺旋(Golden Helix)
的人所写, 博客中有个例子是有明显错误的我就不放了.金螺旋也开发了一个variants注释工具Varseq
,然后作者在评论里就说他们的Varseq
更好,结果很多人问Annovar
的作者Kai Wang
对这篇博客的意见,然后Kai Wang
在博客下的评论里说:金螺旋用这篇博客攻击Annovar
/VEP
/snpEff
是不合适的,并且给研究者们发了大量邮件来给这篇博客打广告,这可能给许多科学家造成误导.然后对博客中对Annovar解释不当的地方一一反驳,最后说Annovar
注释的没什么不对,最多就是有些地方不够精确.也对博主所做的工作表示感谢~. 大家有兴趣可以看下博文原文(左下角阅读全文).
作者:生信杂谈
链接:https://www.jianshu.com/p/6284f57664b9
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。