突变注释工具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 |
运行时间的比较:

基因组的选择对于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%. 并且在一些位点的注释两个软件都不准确,具体看下面的例子:

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

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

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

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

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

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

上图例五中,出现了一个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比较分析--转载的更多相关文章
- 【software】变异注释工具:annovar
annovar提供三种注释方式 一,基于基因的注释 给定变异,看变异是否影响编码蛋白的改变 支持基因定义系统:RefSeq genes, UCSC genes, ENSEMBL genes, GENC ...
- VVDocumenter - Xcod代码注释工具
刚接触IOS开发时,发现XCODE非常的强大的,后续的代码实践中发现XOCDE的代码文档注释非常的差, 每次都要用手敲,蛋疼至极: 随着不断学习发现XCODE有代码片段内嵌一说(如:for .bloc ...
- 逆向中静态分析工具——IDA初学者笔记之字符串分析
逆向中静态分析工具——IDA初学者笔记之字符串分析 程序中往往包含很多字符串资源,这些资源存在于PE文件的rdata段,使用IDA反编译后,可以查找到这些字符串, 逆向破解程序通常需要一个突破点,而这 ...
- 日志分析工具、日志管理系统、syslog分析
日志分析工具.日志管理系统.syslog分析 系统日志(Syslog)管理是几乎所有企业的重要需求.系统管理员将syslog看作是解决网络上系统日志支持的系统和设备性能问题的关键资源.人们往往低估了对 ...
- VVDocumenter 注释工具的使用
首先,前往github上下载工程源代码. 然后,编译VVDocumenter工程. 重启xcode. 然后,只要在你自己的工程中要加入注释的方法前面输入“///”,一切搞定. 很好很强大.
- Xcode 注释工具的使用
1:Xcode 8之后 Goodbye World In Xcode 8, Apple integrated a comment documentation generator plugin, whi ...
- sublime 非常好用的注释工具
Sublime在进行前端开发时非常棒,当然也少不了众多的插件支持,DocBlocker是在Sublime平台上开发一款自动补全代码插件,支持JavaScript (including ES6), PH ...
- 如何使用SnpEff 对SNP结果进行分析
SnpEff is a variant annotation and effect prediction tool. It annotates and predicts the effects of ...
- 安卓动态分析工具【Android】3D布局分析工具
https://blog.csdn.net/fancylovejava/article/details/45787729 https://blog.csdn.net/dunqiangjiaodemog ...
随机推荐
- HDU 2077 汉诺塔IV (递推)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2077 还记得汉诺塔III吗?他的规则是这样的:不允许直接从最左(右)边移到最右(左)边(每次移动一定是 ...
- Kotlin基础学习
Kotlin 和 java 都是一种静态类型的编程语言.表达式的类型在编译期已经确定,编译期能验证对象是否包含想访问方法或是字段,维护正确性与性能的同时保持源代码的简洁 静态类型的 ...
- Javascript 面向对象编程1:封装
Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,他又不是一种真正的面向对象编程语言,因为它的语法中没有class(类). 那么,如果我们要把& ...
- 已知宽高和未知宽高的div块的水平垂直居中
//已知宽高的情况 .div1_container{ border:1px solid #00ee00; height:300px; position:relative; } ...
- Java开发万年历
自己做出来的万年历: 以下代码: public class Test2 { public static void main(String[] args) { Scanner sc = new Sca ...
- thinkphp 随笔
'TMPL_CACHE_ON' => false,//禁止模板编译缓存 'HTML_CACHE_ON' => false,//禁止静态缓存
- pandas 应用
类似vlookup import pandas as pd file = pd.read_csv('NIN411PF.CSV', encoding='ANSI') a = pd.DataFrame({ ...
- window bat 运行 cmd 命令
新建一个.bat批处理文件,编写以下切换目录 并且执行 ipconfig 命令: cmd /k "cd /d D:phpStudy/WWW & ipconfig" cmd ...
- Java 中断异常的正确处理方式
处理InterruptedException 这个故事可能很熟悉:你正在写一个测试程序,你需要暂停某个线程一段时间,所以你调用 Thread.sleep().然后编译器或 IDE 就会抱怨说 Inte ...
- 纯手写SpringMVC到SpringBoot框架项目实战
引言 Spring Boot其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. 通过这种方式,springboot ...