突变注释工具SnpEff,Annovar,VEP,oncotator比较分析--转载

时间:2023-01-30 23:55:37
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

运行时间的比较:

 
突变注释工具SnpEff,Annovar,VEP,oncotator比较分析--转载
运行时间比较(来源: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%. 并且在一些位点的注释两个软件都不准确,具体看下面的例子:

 
突变注释工具SnpEff,Annovar,VEP,oncotator比较分析--转载
两个注释例子

上图图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),并通过几个例子阐述了这三个软件注释结果存在的一些问题,例子如下:

 
突变注释工具SnpEff,Annovar,VEP,oncotator比较分析--转载
例一. Frameshift vs Stop Gain 7:117120154-117120154 -/T

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


 
突变注释工具SnpEff,Annovar,VEP,oncotator比较分析--转载
例二. Upstream vs NC Exonic 7: 117105836-117105838 TTT/-

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


 
突变注释工具SnpEff,Annovar,VEP,oncotator比较分析--转载
例三.Frameshift vs Stoploss 7: 117307160-117307161 T/-

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


 
突变注释工具SnpEff,Annovar,VEP,oncotator比较分析--转载
例四. 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上的一致性如下图所示:

 
突变注释工具SnpEff,Annovar,VEP,oncotator比较分析--转载
Splicing variants seem to cause the most disagreement

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


 
突变注释工具SnpEff,Annovar,VEP,oncotator比较分析--转载
例五. 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. android开发中监控android软件网络请求的软件Charles使用入门

    1.下载并安状软件,官网在此: http://www.charlesproxy.com/ 2.前题条件,电脑和手机必须在同一网段 3.在Charles界面选择菜单 proxy->proxy se ...

  2. 夺命雷公狗—angularjs—15—内置封装好的计时器$interval和$timeout

    这里其实和js源生的效果是一样的,但是源生的在angularjs里面不能直接正常执行代码如下所示: <!DOCTYPE html> <html lang="en" ...

  3. Daily Scrum6

    今天我们小组开会内容分为以下部分: part 1: Anti-spam and anti-abuse module模块总结: part 2: 部分优化代码的展示于交流: part 3:针对用户积分模块 ...

  4. 运行时环境(The Runtime Environment)

    App Engine应用响应网络请求.当一个客户端(典型的是用户的Web浏览器)使用HTTP请求(比如获取在URL上的网页)连接上应用的时候,网络请求就开始了.当App Engine接收到请求时,它会 ...

  5. Swift - 40 - 枚举更加灵活的使用方式

    //: Playground - noun: a place where people can play import UIKit /* 这里的枚举没有给它的成员默认值, 而是给它绑定了一个类型, 之 ...

  6. STM32学习笔记(五)——通用定时器计数延时

    STM32定时器概述 STM32F40x系列总共最多有14个定时器,定时器分为三类:基本定时器.通用定时器和高级定时器.它们的都是通过计数来达到定时的目的,和51的定时器差不多,基本原理都是一样的,就 ...

  7. C&plus;&plus;格式化输出,C&plus;&plus;输出格式控制

    在输出数据时,为简便起见,往往不指定输出的格式,由系统根据数据的类型采取默认的格式,但有时希望数据按指定的格式输出,如要求以十六进制或八进制形式 输出一个 整数,对输出的小数只保留两位小数等.有两种方 ...

  8. 兄弟连学python---Socket介绍

    UDP协议 UDP:用户数据报协议,不可靠性,只是把应用程序传给IP层数据报送出去,但是不能保证他们是否能到达目的地,传输数据报钱不用再客户端和服务器之间建立连接,并且没有超时重发机制,所以传输速度快 ...

  9. JavaScript简述一

    一.什么时JavaScript JavaScript是一种具有面向对象能力的,解释型的设计语言,更具体一点,它是基于圣明和事件驱动并具有相对安全必的客户端脚本语言,因为它不需要在一个语言环境下运行,只 ...

  10. genmotion 安装 app 报错 This application is&&num;39&semi;t compatible with your mobile phone解决办法

    请下载这个文件:http://pan.baidu.com/s/1jIyMNbg(一个zip包) 将这个zip包拖放到genymotion的屏幕中,安装,然后重启就行了 我安装的Samsung Gala ...