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格式).现在还发布了集成了SnpEffSnpsift的专业版软件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

运行时间的比较:

 
运行时间比较(来源:PMID:27268795)

基因组的选择对于variants的注释的影响:

首先说明的是,基因组的选择对于variants的注释具有很大的影响, 在《Choiceof transcripts and software has a large effect on variantannotation》(Genome Medicine,IF 7.1)这篇文献里,作者对WGS的8千万个variants, 分别使用基因组REFseqEnsemble注释的时候,发现两个基因组注释出的loss-of-function variants部分仅有44%的一致性,并且loss-of-functionnonsymnonymous加起来的一致性是79%,exonic variants的一致性是83%.

而我们一般关注较多的部分是loss-of-function,两个基因组文件注释结果仅有不到一半的一致性(44%), 作者给出的解释是:基因组间的差异是由于EnsembleREFseq的转录本数量不同造成的,而Ensemble中有更多的转录本,Ensemble 试图对每个基因都产生全面完整的转录本注释,而并非高可信度的转录本. 这意味着Ensemble注释存在更多的剪切位点,是造成差异的主要原因. 并且有些转录本起始于开放阅读框之外,如果variant 注释工具不处理这些开放阅读框之外的部分将会导致不准确的注释.

不同注释软件(Annovar和VEP)对于注释的影响:

不同注释软件对于注释的影响很大,还是上面那篇文献,以Ensemble为参考基因组,使用AnnovarVEP分别注释后,loss-of-function部分的matching只有65%,所有exonic variants的matchig是87%. 并且在一些位点的注释两个软件都不准确,具体看下面的例子:

 
两个注释例子

上图图A是是rs7103033突变示例,最后一个外显子的最后一个碱基由A变为G,所以导致的结果就是由TGA(终止子)变为TGG(色氨酸),导致终止子缺失,所以应该被注释为stop-loss.AnnovarVEP的注释都是对的. 但是看图B,也是最后一个外显子(最后是TGA终止密码子)突变,但这次是插入突变,在第二个碱基的后插入了一个A,单碱基插入应该被注释为framethift,并且插入的位置是一个终止子,所以也是个stop-loss,但事实上,即使插入A后这依旧还是个终止子,这其实是个同义突变.然而Annovar将其注释为frameshift insertion,VEP将其注释为stop-loss,都是不准确的.

需要说明的一点是:但这篇文献是13年的了,这两个软件是10年发布的,在这几年里这两个软件已经做了很多更新,做出了很多修正, 但对于一些重要的值得关注的突变,我们还是需要在基因组浏览器里看下突变的印象究竟是什么而不能全部信任软件的注释结果.

为什么这么说呢,在14年的一篇博客上(点击左下角阅读全文查看)博主比较了三大主流注释软件(Annovar,snpEffVEP),并通过几个例子阐述了这三个软件注释结果存在的一些问题,例子如下:

 
例一. Frameshift vs Stop Gain 7:117120154-117120154 -/T

上图例一中,AnnovarVEP将这个突变注释为frameshift,然而SnpEff将其注释为stop gain,哪一个是正确的?严格来说,这是一个frameshift,但称为stop gain 要更精确一些.


 
例二. Upstream vs NC Exonic 7: 117105836-117105838 TTT/-

上图例二中,T是CFTR外显子上的第一个碱基,Annovar 将其注释为intergenic ; SnpEff将其注释为Exon, intergenic和upstream,这个例子说明SnpEff注释出了所有的可能性,即使有些注释是相互矛盾的(exonintergenic).


 
例三.Frameshift vs Stoploss 7: 117307160-117307161 T/-

上图例三中,AnnovarVEP都将这个缺失注释为stop loss,这是正确的,然而SnpEff将其注释为frameshift,虽然这缺失是个frameshift但是不够精确的.


 
例四. Splice Site Variant 7:117119513 -/A

上图例四中, 这是一个很有趣且很微妙的例子来说明为什么三个软件在剪切位点上的突变差异很大,SnpEff将这个插入突变注释为一个splice_site_acceptor,这很明显是不对的,因为an acceptor site3' end of the intron,而插入的这个T并非在末端.VEP将其注释为a splice_site_region,这是正确的.Annovar将其注释为intron,这也是正确的但不精确.

三个软件在splicing variant上的一致性如下图所示:

 
Splicing variants seem to cause the most disagreement

可以看出三个软件对splicing variant的注释结果差异较大,很大一部分原因是由于对同一个variant的描述使用了不同的术语所造成的.


 
例五. Frameshift vs Inframe 7: 117307124 – 117307126 GAG/-

上图例五中,出现了一个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
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

突变注释工具SnpEff,Annovar,VEP,oncotator比较分析--转载的更多相关文章

  1. 【software】变异注释工具:annovar

    annovar提供三种注释方式 一,基于基因的注释 给定变异,看变异是否影响编码蛋白的改变 支持基因定义系统:RefSeq genes, UCSC genes, ENSEMBL genes, GENC ...

  2. VVDocumenter - Xcod代码注释工具

    刚接触IOS开发时,发现XCODE非常的强大的,后续的代码实践中发现XOCDE的代码文档注释非常的差, 每次都要用手敲,蛋疼至极: 随着不断学习发现XCODE有代码片段内嵌一说(如:for .bloc ...

  3. 逆向中静态分析工具——IDA初学者笔记之字符串分析

    逆向中静态分析工具——IDA初学者笔记之字符串分析 程序中往往包含很多字符串资源,这些资源存在于PE文件的rdata段,使用IDA反编译后,可以查找到这些字符串, 逆向破解程序通常需要一个突破点,而这 ...

  4. 日志分析工具、日志管理系统、syslog分析

    日志分析工具.日志管理系统.syslog分析 系统日志(Syslog)管理是几乎所有企业的重要需求.系统管理员将syslog看作是解决网络上系统日志支持的系统和设备性能问题的关键资源.人们往往低估了对 ...

  5. VVDocumenter 注释工具的使用

    首先,前往github上下载工程源代码. 然后,编译VVDocumenter工程. 重启xcode. 然后,只要在你自己的工程中要加入注释的方法前面输入“///”,一切搞定. 很好很强大.

  6. Xcode 注释工具的使用

    1:Xcode 8之后 Goodbye World In Xcode 8, Apple integrated a comment documentation generator plugin, whi ...

  7. sublime 非常好用的注释工具

    Sublime在进行前端开发时非常棒,当然也少不了众多的插件支持,DocBlocker是在Sublime平台上开发一款自动补全代码插件,支持JavaScript (including ES6), PH ...

  8. 如何使用SnpEff 对SNP结果进行分析

    SnpEff is a variant annotation and effect prediction tool. It annotates and predicts the effects of ...

  9. 安卓动态分析工具【Android】3D布局分析工具

    https://blog.csdn.net/fancylovejava/article/details/45787729 https://blog.csdn.net/dunqiangjiaodemog ...

随机推荐

  1. nginx FastCGI错误Primary script unknown解决办法

    在centos上成功编译安装nginx 1.4.php 5.4并成功启动nginx和php-fpm后,访问php提示"File not found.",同时在错误日志中看到: 复制 ...

  2. [转载]Oracle左连接、右连接、全外连接以及(+)号用法

    Oracle  外连接(OUTER JOIN) 左外连接(左边的表不加限制) 右外连接(右边的表不加限制) 全外连接(左右两表都不加限制) 对应SQL:LEFT/RIGHT/FULL OUTER JO ...

  3. [转载] mysql 索引中的USING BTREE 的意义

    索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型. 根据存储引擎定义每个表的最大索引数和最大索引长度.所有存储引擎支持每个表至少16个索引,总 ...

  4. 自学java第六周的总结

    在这个星期里,我主要将以前看过的复习了一遍,并且阅读并做了相关的题. 下个星期继续努力.

  5. Python进阶【第十篇】模块(上)

    ·一.模块 模块就是一组功能的集合体,我们的程序可以导入模块来复用模块里的功能.为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这 ...

  6. 第三节 深入JavaScript

    函数的返回值:(把函数体内的数据传出到函数体外) 什么是函数的返回值:函数执行结果.可以没有返回值 一种函数应该只返回一种类型的值 函数传参:(与函数返回值相反,把外面数据传入函数体内) 可变参(不定 ...

  7. iOS项目之解析HTML数据

    最近因为需求,一直在做HTML数据的解析,从网页中去获取需要的数据,然后展示到自己的app中. 在网上找了很多资料,大多都是TFHpple这个第三方框架,能够根据标签节点获取对应的数据,但是现在我需要 ...

  8. Android几种解析XML方式的比较

    https://blog.csdn.net/isee361820238/article/details/52371342 一.使用SAX解析XML SAX(Simple API for XML) 使用 ...

  9. 阿里云端口失效导致tomcat无法对外提供服务

    下午,我们一个环境启动成功,但是却无法访问,经查看启动日志,如下: Mar 23, 2017 2:15:09 PM org.apache.coyote.http11.AbstractHttp11Pro ...

  10. python之字符编码(三)

    一.字符编码的分类: 计算机由美国人发明,最早的字符编码为ASCII,只规定了英文字母数字和一些特殊字符与数字的对应关系.最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCI ...