专栏首页生信菜鸟团ANNOVAR 是如何注释 RS ID 的?

ANNOVAR 是如何注释 RS ID 的?

翻译自 ANNOVAR 文档:https://doc-openbio.readthedocs.io/projects/annovar/en/latest/articles/dbSNP/

使用 ANNOVAR 进行的一项常见任务就是将 dbSNP 标识符分配给 VCF 文件中的突变。我经常会遇到这样的问题,即 ANNOVAR 没有为特定突变分配 dbSNP rs标识符,但该突变确实是“已知的” SNP。这种情况一般发生在 indel 中,但有时也发生在 SNV 中。

在深入探讨此问题之前,让我们先回过头来问一个简单的问题:dbSNP rs 标识符到底是什么?

dbSNP 网站上的“官方定义”这样说到:

NCBI 将对数据库定期构建参考 SNP cluster rs ID。参考 SNP cluster 定义了一组非冗余标记,用于标记参考基因组序列以及与其他 NCBI 资源整合。基因组序列中的新位置的新记录将被实例化为新的 refSNP cluster 。与现有数据匹配的记录则会将被合并到现有的 refSNP cluster 中。一个参考 SNP cluster 记录的格式为 NCBI | rs [NCBI SNP ID],其中 rs 为小写。

在同一网站上给出了另一种解释:

参考 SNP ID 号或 rs ID 是 NCBI 分配给映射到相同位置的一组 SNP(或 cluster )的标识符。记录提交后,分配 rs ID 号或 rs 标签。当 dbSNP 于 1998 年首次向公众发布时,数据库中唯一的提交都被分配了单独的 rs ID 号。现在 dbSNP 的提交已不断完善,就对新提交的 SNP 进行评估,以查看它是否映射到与先前提交的 SNP 相同的位置;如果是,则将提交的 SNP 链接到现有参考 SNP 记录的参考集中。这些 SNP rs ID 映射到外部资源或数据库,包括 NCBI 数据库。SNP rs ID号记录在这些外部资源和数据库的记录中,以使用户回到原始的dbSNP记录。参考SNP记录的格式为 NCBI | rs。请注意,“ rs”为小写。有关 refSNP 的更多信息,请参见我们的在线文档。(04/05/06)

基本上,我的理解是,如果一个用户提交了一条新序列,NCBI 会尝试将其与现有记录进行匹配(所谓 refSNP cluster ),如果不存在匹配,它将尝试为该记录分配新的 rs 标识符。但真正的问题是,即使在阅读了这段话后,包括我自己在内的大多数人仍无法确切地理解 dbSNP rs 标识符究竟是什么,因为这些词本身并不构成“定义”。我(和许多其他人)可能遇到的一个简单问题是:rs identifer 是序列的延伸还是从许多其他序列构建的“共识”序列的延伸,或者是基因组位置,亦或是基因组位置的集合,也或者是包含 chr:start-end/ref/alt 信息的突变,还是共享相同位置/基因座的多个突变?

我可能会认为 rs ID 是“共识”序列的一部分。在我的拙见中,将其作为 rs ID 的定义实际上是最有意义的(因为它与基因组无关)。但事实并非如此,根据我对 dbSNP 网站的理解,dbSNP 可能希望使用 rs ID 来表示 SNP/突变。(但在与 dbSNP 开发人员的单独讨论中,我获悉 rs ID 绝对不表示 SNP/突变,而是表示给定参考基因组中的特定位置,这与他们在网站上的 FAQ 相矛盾)。因此,我真的不知道 dbSNP 是如何确切地定义 rs ID。我也向 dbSNP 发送了电子邮件,以获得更多的说明,但从未得到答复。我认为 dbSNP 的开发人员本身对 rsID 也存在一些困惑:大家一般都将 rs id 视为 mutation specifier 而非开发人员所定义的 locus specifier。

话说回来,实际上,几乎所有研究人员都用 rs ID 来表示突变/变异,而不是基因座或 DNA 序列。比如,我们会说 rs123456 与血压升高有关;rs123456 会产生一个新的终止密码子,导致蛋白质被截断; rs123456 的 MAF 为 5%,等等。一个简单的解释是,传统上 SNP 是双等位基因 ,因此使用 rs ID 可以自动表示基因组中唯一的非参考突变。但 dbSNP 可能并不喜欢上面的说法,他们希望每个人说 1p23.4 上的 rs123456 G 等位基因产生了一个新的终止密码子,或者 3q11.2上的 rs123456 T 等位基因具有 5% 的 MAF,以此类推。但这种交流方式对于研究人员来说很不方便。最终,它会被归结为一个可识别性问题:对于当前的 dbSNP 版本,rs123456rs123456-G 都无法表示参考基因组中的唯一突变,而且在某些参考基因组中存在许多 rs ID 可以映射到多个位置,这种情况可能变得更糟。根据 dbSNP 释放数据的方式,我们作为用户必须做出一些选择:rs ID 是指标识一个基因座,还是标识一个基因座中的多个预定义等位基因,亦或是标识一组具有相似序列上下文的基因座, 又也许是标识一组具有相似序列上下文的基因座中的多个预定义等位基因(但并非所有等位基因都需要存在于所有基因座上)。

Anyway,我们现在已有足够的背景知识了。让我们转到为新突变分配 dbSNP rs ID(例如rs1045642 )的主题。以下是 dbSNP VCF 文件中的一条记录:

7 87509329 rs1045642 A G,T . . RS=1045642;RSPOS=87509329;RV;dbSNPBuildID=86;SSR=0;SAO=0;VP=0x05037800030511051f010101;WGT=1;VC=SNV;PM;TPA;PMC;S3D;SLO;REF;SYN;ASP;G5;HD;GNO;KGPhase1;KGPilot123;KGPROD;OTHERKG;PH3;OM

我们假设 rs1045642 表示在 chr7:87509329A->GA->T 突变(尽管 dbSNP 可能不认为是这样)。

那么问题来了:

1.如果你在数据中找到了 chr7:87509329A->C 突变2.如果你在数据中找到了 chr7:87509329delA 突变

面对这两种情况,我们可以说你的数据中存在 rs1045642 吗?

在某些注释软件中,可能将第一种情况注释为 rs1045642,或者是两种情况都注释为 rs1045642

但在 ANNOVAR 中,这两种情况都不会被注释 rs id。在基于 filter-based 的注释方法中,ANNOVAR 将仅识别与数据库完全匹配的条目输出,不仅包括位置,还包括核苷酸同一性。在 filter-based 的注释中保持“完全匹配”功能非常重要,否则等位基因频率,功能评分等都将失去其可识别性。

另一个真实案例,rs34083643[1] 被 ANNOVAR 注释为常见突变。但在 ExAC 数据库[2]中这是一种罕见的突变,其等位基因频率仅为2.994e-5。同样,这可以通过以下事实来简单解释:许多数据库或工具并不关心 dbSNP 标识符的可识别性,只要位置重叠,它们就会分配 rsid。而 ANNOVAR 更加严格,并且仅将突变与原始 dbSNP 完全重合时才会输出。

对于 indel,事情要更复杂一些。但是,如果您已经执行左归一化,那么我们已提供了一个完全归一化的“新” dbSNP(我们称之为 avsnp),以便与你的数据进行匹配(有关详细信息,请参见下一篇文章)。avsnp 将确保用户数据的 indel 与 dbSNP rs ID 更好地匹配。目前,avsnp138 适用于 hg19,avsnp142 适用于 hg19 和 hg38 。用法示例如下:

annotate_variation.pl -downdb -buildver hg19 avsnp142 humandb/
annotate_variation.pl ex1.avinput humandb/ -filter -build hg19 -dbtype avsnp142

对于 ANNOVAR 用户,无论 dbSNP 最初计划如何使用 rs ID,这些都是最“正确”的 dbSNP 版本,以确保 rs ID 的可识别性。

其他讨论

1.dbSNP 中的 bug:一些已知的 SNP 消失了!

许多软件工具和数据库(包括 dbSNP )都可能存在一些 bug 。例如,dbSNP144 中就存在一些问题:在 chr17 的 39.4Mb 至 39.6Mb 区域中竟然只有几个 SNP!但在 dbSNP142 或 dbSNP146 以及早期 dbSNP 版本中,不存在这个 bug。(我们可以用 UCSC 基因组浏览器进行可视化)。因此,有时我们需要用多个 dbSNP 版本进行注释,以确保结果正确。

1.注意 dbSNP 坐标系转换!

通常,我非常反对这种做法。但出于各种原因,许多研究人员都会这样做。我只想指出,在完成对 VCF 文件的转换后,你不应期望 dbSNP 批注会是相同的。绝大多数人都会忽略的一点是,等位基因本身也可能会因为不同参考基因组而改变。例如,hg19 中的 ACGTACGTACGT 序列很可能成为 hg38 中的 ACGTACCTACGT(存在 G>C 的改变)。因此,hg19 中的突变可能成为 hg38 中的参考等位基因(这是我的一般经验),这个突变就丢失了。但如果只是进行简单的转换,这个突变将继续存在,这当然是有问题的。

引用链接

[1] https://www.ncbi.nlm.nih.gov/projects/SNP/snp_ref.cgi?rs=34083643 [2] https://gnomad.broadinstitute.org/


生信技能树目前已经公开了三个生信知识库,记得来关注哦~

每周文献分享

https://www.yuque.com/biotrainee/weeklypaper

肿瘤外显子分析指南

https://www.yuque.com/biotrainee/wes

生物统计从理论到实践

https://www.yuque.com/biotrainee/biostat

本文分享自微信公众号 - 生信菜鸟团(bio_123456789),作者:鲍志炜

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 这篇最近发在Nature上的肿瘤进化有什么不一样?

    今天跟大家分享的是2020年2月发表在Nature(IF=43.07)杂志上的一篇文章。文章中作者讨论了2,658种癌症的进化史,说明了早期癌症检测的可能性。

    生信菜鸟团
  • Python语言基础50课

    目前,课程已更新到21课,通读下来,其中更详细的展开 Python 常用数据结构、分支循环、面向对象编程及函数相关的基础及应用,值得一看。配套视频链接后台回复 ...

    生信菜鸟团
  • 新冠疫情下的生信分析 | fastv

    新冠疫情席卷全球,我们尚不得知病毒的发源地及特效治疗方案。最有效的防控手段还是在疫情爆发的早期做好隔离工作,切断传播途径。例如前些日子的北京,局部爆发后迅速控制...

    生信菜鸟团
  • [网站搭建]实战win2003搭建asp网站

    Youngxj
  • python3 GUI

    参考一:https://www.cnblogs.com/monsteryang/p/6558904.html 参考二:https://blog.csdn.n...

    py3study
  • Java实现图片滤镜的高级玩法

    github 地址:https://github.com/imageprocessor/cv4j

    fengzhizi715
  • Xss和Csrf介绍

    Xss和Csrf介绍 Xss Xss(跨站脚本攻击),全称Cross Site Scripting,恶意攻击者向web页面中植入恶意js代码,当用户浏览到该页时...

    用户1141560
  • 学习前端的思路问题

    image.png 今天在群视频中分享了我自己写的PPT《学习前端的思路问题》,这个PPT主要讲了以下四个问题: 一,前端的核心是学什么? html、js、cs...

    web前端教室
  • phantomjs小试

    简单来说,phantomjs就是一个运行在node上的webkit内核,支持DOM渲染,css选择器,Canvas,SVG等,在浏览器上能做的事情,理论上,ph...

    IMWeb前端团队
  • windows神器推荐 everything

    本文将继续会为大家推荐一款windows平台下非常非常实用的神器,之所以被称之为神器,原因就在于这些软件能在很大的程度上带来效率的提升。

    算法与编程之美

扫码关注云+社区

领取腾讯云代金券