1、ANNOVAR 概述:背景、发展史与核心功能
大家好,我是老王。干生物信息这行十几年了,ANNOVAR 是我工具箱里用得最顺手的工具之一。今天咱们聊聊它到底是什么、怎么来的、能做什么。
先问个问题:拿到一份 VCF 文件,里面成千上万个变异位点,你怎么知道哪些是重要的?哪些跟疾病相关?一个一个去 UCSC 查?那不现实。这就是 ANNOVAR 诞生的原因——它帮你把原始变异信息,“翻译”成有生物学意义的注释。
为什么需要 ANNOVAR?
说白了,测序技术只管把碱基序列读出来。但读出来只是第一步。一个位点是同义突变还是错义突变?是否落在已知的致病基因上?在千人基因组数据库里的频率是多少?这些信息,VCF 文件本身不告诉你。
我最早做 RNA-seq 分析时,手动注释过一批位点。那叫一个痛苦。从 UCSC 下载 refGene 表,自己写 Perl 脚本做坐标交集,折腾三天,结果还因为版本不对闹了乌龙。后来用上 ANNOVAR,几句话就搞定了。那个时候我就觉得,这个工具值得好好学。
ANNOVAR 发展简史
ANNOVAR 是 2010 年左右由王凯(Kai Wang)团队开发的。我记得最早用的是 2011 年的版本,功能还不像现在这么全,但已经很惊艳了。
它经历了几个重要阶段:
| 年份 | 版本/事件 | 主要更新 |
|---|---|---|
| 2010 | 初始发布 | 支持 refGene、knownGene、ensGene 注释 |
| 2013 | V2.0 | 增加 COSMIC、ClinVar 集成 |
| 2015 | V3.0 | 支持 exome 靶向区域注释 |
| 2018 | V4.0 | dbNSFP、GWAS catalog 集成 |
| 2022 | V5.0 | 增加 gnomAD、1000G 最新版支持 |
你看,从最初的几个数据库到现在几十个,ANNOVAR 一直在跟着数据更新走。这也是我一直推荐它的原因——数据库与时俱进,注释结果才有参考价值。
核心功能一览
ANNOVAR 能做的事情,我概括成三个层面:
- 基于基因的注释(Gene-based annotation):告诉你变异落在哪个基因、什么转录本、什么功能区域(外显子、内含子、UTR 等)。还会预测它对氨基酸序列的影响,比如是不是错义突变、无义突变、移码突变。
- 基于区域的注释(Region-based annotation):把变异跟预先定义好的区域做交集。比如它是否落在已知的保守区域、重复序列区、CpG 岛等。
- 基于过滤的注释(Filter-based annotation):这个最实用。帮你查变异在公共数据库里的频率,比如 1000 Genomes、gnomAD 中这个位点的等位基因频率。频率太高的一般就是多态性位点,不是致病突变。
嗯,这里要注意:三种注释类型是独立的,你可以只用其中一种,也可以组合使用。我个人的习惯是全上,然后根据结果再做过滤。
一张图看懂 ANNOVAR 的核心逻辑
下面这张图总结了 ANNOVAR 的工作流程。输入是你自己的 VCF/AVinput 文件,输出是带注释的表格。中间核心是数据库选择和注释类型选择。你想想看,整个过程是不是很清晰?
核心命令行速览
讲再多理论,不如直接看命令。ANNOVAR 最常用的就这么几个:
# 下载数据库(以 hg19 的 refGene 为例)
annotate_variation.pl -downdb -webfrom annovar -buildver hg19 refGene humandb/
# 基因注释
annotate_variation.pl -geneanno -buildver hg19 input.avinput humandb/
# 频率过滤注释
annotate_variation.pl -filter -dbtype 1000g2015aug -buildver hg19 input.avinput humandb/
# 综合注释(一步生成多数据库注释)
table_annovar.pl input.avinput humandb/ -buildver hg19 -out output \
-protocol refGene,1000g2015aug_all,clinvar_20221231 \
-operation g,f,f -nastring .
你看到最后这个 table_annovar.pl 了吗?这是我用得最多的。一次注释多个数据库,输出一个合并表格,方便后续筛选。不过要注意 -operation 参数必须跟 -protocol 一一对应,g 代表基因注释,f 代表过滤注释,r 代表区域注释。顺序乱了,结果就全错了。
-protocol refGene,clinvar,1000g,结果忘记写 -operation g,f,f。程序没报错,但输出的注释表格里 clinvar 列全是点。后来发现 protocol 和 operation 的顺序必须严格对应。切记!
ANNOVAR 的优势到底在哪?
这些年我对比过不少注释工具。VEP 也不错,SnpEff 也用过。但 ANNOVAR 有几个点让我放不下:
- 数据库本地化:所有数据库自己下载维护,不依赖外部网络。跑大型项目时不用担心服务器断网或数据库下线。
- 灵活的组合方式:你想注释什么数据库,自己说了算。不像某些工具,内置了固定的数据库列表。
- 性能出色:百万级位点的注释,几分钟内搞定。我记得有一次给一个全外显子组项目做注释,40 万个位点,跑了不到五分钟。
- 输出格式友好:表格形式的输出,直接能用 Excel 或 R 打开做后续分析。
- 社区活跃:遇到问题,论坛里基本能找到答案。数据库更新也很快,ClinVar 几乎每个月都有新版本。
一句话总结:ANNOVAR 就是变异注释界的瑞士军刀。小到单个位点的快速查验,大到几千例的大队列分析,它都能胜任。而且学习曲线不算陡,一两天就能上手。
好,关于背景和概况就先聊到这里。记住这张图、这几条命令,后面的章节我们会一个一个展开,把每个数据库的用法讲透。到时候你会更深刻地感受到,这工具到底有多好用。