变异落在结构上 — VarSite 三维注释库

四十四万变异 / 同源结构映射 / 服务已退役

来源 https://www.ebi.ac.uk/thornton-srv/databases/VarSite发布时间: 2026-10-27最后更新: 2026-10-27 阅读 20
变异落在结构上 — VarSite 三维注释库

信息速览

数据集名称变异落在结构上 — VarSite 三维注释库
数据类型本体映射,元数据,原始数据链接,文献引用
规模不适用(四十四万余条变异记录,非患者样本集)
接入方式https://www.ebi.ac.uk/thornton-srv/databases/VarSite
AI 就绪度

同一个位点的氨基酸替换,序列层面的注释往往只写一句「错义变异」。这句话在解读时几乎不提供信息:它既没说这个位置在蛋白里做什么,也没说换掉的这个残基是不是撑住折叠的那几根柱子之一。VarSite 的全部价值,就是把这句话换成一幅可以看的图——这个残基在三维结构里是埋在疏水核心、贴在界面上、还是裸露在溶剂里。

VarSite 由 EMBL-EBI 桑顿课题组开发,2020 年 1 月发表于《Protein Science》,DOI 10.1002/pro.3746。它把 UniProt 与 ClinVar 的疾病变异、gnomAD 的自然变异经 VarMap 换算到规范异构体位置,再借序列比对落到 PDB 同源结构,输出以图像化报告为主;论文开放获取。

先说明一个现实处境:官网地址目前返回「服务已退役」提示,交互页面已不可用。下文因此分两半——前半讲字段语义与结构注释逻辑,这些对复现与借鉴仍成立;后半给出现役接口的替代取值路径。一屏速览见下表。

维度 内容
正式名称 VarSite: Disease variants and protein structure
维护机构 EMBL-EBI 桑顿课题组,与 UCL 结构分子生物学研究所合著
首发形式 网页服务器(web server),非批量数据包
论文出处 Protein Science, 2020, 29:111-119;DOI 10.1002/pro.3746
变异来源 UniProt 疾病变异、ClinVar(专业版与公开版)、gnomAD 自然变异
结构来源 PDB 实验结构,经 PDBsum 汇总;同源结构而非仅人蛋白本身
坐标换算 VarMap(Ensembl VEP + BioMart + UniProt)
域体系 Pfam 序列域与 CATH 功能家族(FunFam)双轨
变异规模 论文称截至 2019 年 6 月超过四十四万条
覆盖边界 仅规范异构体、仅编码区、仅能映射到 PDB 同源结构的蛋白
交互组件 3dmol.js 三维视图,可导出 RasMol 与 PyMOL 脚本
检索入口 按变异查、按基因组坐标批量查(三种提交方式)
数据许可 站点未单列;底层沿用 UniProt、ClinVar、PDB 原始许可
当前状态 官网标注服务退役,原 URL 不再提供交互分析
现役替代 EBI Proteins 变异接口、PDBe 变异接口、ProtVar
核心用途 错义变异的结构语境解释,而非致病性自动判读

§1 它要解决的具体麻烦

1.1 序列注释到「错义」就停了,而解读需要知道这个位置撑不撑得住

一份外显子测序报告里,某个基因出现杂合错义变异,注释列写着「p.Cys83Trp,错义」。这句话准确也无用:接下来的判断取决于一串序列层面看不到的事实——这个半胱氨酸是否在配位锌离子、是否参与二硫键、侧链朝内还是朝外、这个位置在几十个物种里是否从没变过。

传统做法是换一套预测工具——SIFT、PolyPhen、CADD 各给一个分数看是否一致。这类工具主要吃序列与进化信息,能说「这个替换不寻常」,却说不出不寻常在哪里。临床分歧恰恰常发生在多个「不寻常」之间:两条都被判有害的错义,一条真的毁了配位,另一条只是柔性环上换了个体积相近的残基。

VarSite 补的就是这一段:它不产出新分数,而是把每个位置的三维语境摊开:二级结构、相互作用、保守性、是否埋藏、替换是否破坏电荷或二硫键。关键设计在「去哪儿找结构」:多数工具只在人蛋白自身有结构时才注释,它按同源性把注释「借」过来,论文称覆盖大得多,代价是跨物种错位风险。

1.2 三条常见的错误期待

最常见的三条误读分别是:把它当成可批量下载的变异注释数据库(它的定位是网页服务器,输出图像化报告);把它当成覆盖全部人类蛋白的资源(映射终点是 PDB 实验结构,没有可对齐结构的蛋白即为空缺);以为四十四万条变异各自都有独立的结构结论(变异按蛋白质组织成页面,同一位置的多条变异共享同一套结构语境,§4.3 的案例里一个位置就并列四条)。

1.3 它能给到的与给不到的

你的需求 它给的 够不够
判断错义变异是否落在疏水核心 给出位置的结构埋藏程度与相互作用类型 够,是它的核心能力
判断替换是否破坏金属配位 标出该残基是否与金属离子配位,并给出配位结构图 够,案例中直接可读
判断替换是否破坏二硫键 相互作用行中高亮二硫键,可看出该 Cys 是否参与 够,但需人工对照序列
给出致病的最终结论 不给结论,只给证据片段 不够,须自行按 ACMG 组合证据
覆盖非编码区与内含子变异 不覆盖,只纳入编码区 不够,属明确排除项
覆盖所有转录本 不覆盖,只纳入规范异构体 不够,其他异构体需另找工具
覆盖全部人类蛋白 只覆盖能映射到 PDB 同源结构的蛋白 不够,是最大边界
拿到可直接入库的批量表 不给,只有页面与图像报告 不够,需自行抓取或改走接口
看变异在三维结构里的落点 3dmol.js 交互视图,可导出脚本再渲染 曾经够,服务退役后已不可用
按基因组坐标批量查一批变异 支持坐标批量提交,超二十条后台计算后邮件回 曾经够,现须自建

1.4 你的处境与它能帮到的事

你的处境 它能帮你什么 下一步该做什么
手里有一批外显子测序的错义变异,想先按结构风险粗筛 把「落在核心或配位位点」的一批变异单独挑出来 按 §5 的路径取结构语境字段,与 CADD 分数交叉,双高的先送人工
报告里两条错义都被判有害,但临床表型只对得上一条 用同一位置或邻近位置的变异对照,看哪条真的动了结构骨架 回到蛋白质页面看残基的相互作用与保守性,再决定要不要做功能实验
做变异注释流水线,需要在 CADD 之外加一路结构证据 提供字段语义与映射链路,可照此自建 以 VarSite 的字段设计为蓝本,用 EBI Proteins 与 PDBe 接口现取
研究某个结构域的致病热点 按 Pfam 域或 CATH 功能家族聚合跨蛋白变异 聚合结果在论文以图呈现,服务退役后需自建聚合
需要向同行解释为什么某个变异「看起来可怕其实无害」 提供埋藏程度、保守性与相互作用三类反向证据 用具体位点的结构图配合序列比对讲,比只报分数有说服力
手上的基因在 PDB 里根本没有可用结构 帮不上,该基因在库内是结构性空缺 转向 AlphaFold DB 看预测模型,或走同源建模路线
想复现一篇用 VarSite 做过分析的老论文 论文提供完整的字段语义与案例链路 按原文的字段口径 reinterpret,结果数字不可复现
只想知道本站点还开着没有 官网返回退役提示,这一条本身就是答案 直接走 EBI Proteins 与 PDBe 的现役接口

1.5 一句话判断

当一个问题从「这个变异常不常见」升级为「这个位置撑不撑得住」,才轮到 VarSite 出场;它在服务退役之后的价值,主要是把它那套结构注释的字段设计与映射链路借过来用,而不是去取它的原始结果。

1.6 不适合谁:四条边界

第一条,如果你的变异不在编码区。 论文说得很直白:只纳入编码区变异,因为只有这类变异能先映射到蛋白序列再映射到结构。启动子、增强子、深层内含子的变异一律不在范围内。

第二条,如果你需要的是今天的变异池。 论文的规模数字截止于 2019 年 6 月,此后 ClinVar 条目数增长数倍,gnomAD 也已迭代。拿旧快照讨论今天的注释完整度,会系统性低估缺口。

第三条,如果你要的是可直接入库的结构化表。 它的输出是页面与图像,不是带 schema 的表格;字段需从报告语义反推,或改走 EBI Proteins 与 PDBe 的 JSON 接口自行组装。

第四条,如果你期待它替你做致病性判定。 结构语境只是证据的一类。落在核心的替换仍可能是良性多态,裸露在表面的替换仍可能经剪接或降解致病。把它当充分条件,是这类工具最常见的误用。

§2 数据构成与规格

2.1 三层数据叠在一个页面上

理解它的构成,最省力是看成「三层叠加」的页面结构。

底层是变异来源层。 三类:UniProt 的疾病相关变异(源自 Humsavar 一类整理)、ClinVar 的临床提交(分专业版与公开版)、gnomAD 的自然变异(人群中的「正常」参照)。共同点是都带基因组坐标,都需要换算。

中层是坐标与序列层。 基因组坐标经 Ensembl VEP 与 BioMart 换算到规范异构体的蛋白序列位置,由 VarMap 完成,ClinVar 与 gnomAD 的数据都先过一遍再纳入。

表层是结构注释层。 拿到蛋白位置后用序列比对对齐到 PDB 同源结构的残基,再由 PDBsum 汇总出二级结构、相互作用与位点处境。产物就是页面上那条彩色示意图。

三层是单向的:变异层提供「谁变了」,序列层提供「变在第几个残基」,结构层提供「那个残基在三维里做什么」。任何一层断了页面就出现空缺,这解释了为什么很多蛋白的结构注释行是稀疏的。

2.2 字段与记录的完整字典

下表按页面语义整理 VarSite 报告里出现的字段,分来源、坐标、变异、结构、评估五组。左列是字段语义,中列说明其口径,右列注明它属于哪一层、在服务退役后从哪条现役路径能拿到相近内容。

字段组 字段语义 口径与取值说明 所属层 退役后相近来源
来源 UniProt 登录号 规范异构体的登录号,页面以它组织 变异层 EBI Proteins 接口主键
来源 蛋白名称与基因名 取自 UniProt,含推荐名与别名 变异层 EBI Proteins 返回体
来源 序列长度 规范异构体的氨基酸数 序列层 接口返回的 sequence 长度
来源 功能与组织特异性描述 直接引用 UniProt 的注释文本 变异层 接口注释块
来源 关联疾病列表 引用 UniProt 与 OMIM 的疾病条目 变异层 接口 diseases 字段
坐标 基因组坐标 染色体、位置与碱基改变三元组 坐标层 接口的 genomicLocation
坐标 参考基因组版本 需显式指定,组装版本不同结果不同 坐标层 接口版本字段
坐标 序列位置 换算后的规范异构体残基序号 序列层 接口的 position 字段
坐标 异构体标记 仅规范异构体,其他异构体被排除 坐标层 接口 isoform 字段
变异 野生型残基 规范异构体该位置的氨基酸单字母码 变异层 接口 wildType
变异 突变型残基 替换后的氨基酸单字母码 变异层 接口 mutantType
变异 变异来源标签 疾病(UniProt)、ClinVar、自然(gnomAD)三类 变异层 接口 consequenceType 与来源
变异 编码区标记 是否落在编码区,非编码被剔除 变异层 接口 consequenceType
变异 同位置变异计数 该残基位置上的变异条数 变异层 需自行按位置聚合
变异 疾病倾向分数 某类氨基酸替换在疾病与自然数据中的比值 评估层 接口无直接对应,需自算
结构 二级结构归属 螺旋、折叠、转角或无规卷曲 结构层 PDBe 接口的 secondary structure
结构 配体相互作用 该残基是否接触小分子配体 结构层 PDBe 结构注释
结构 金属相互作用 是否配位金属离子,颜色为蓝 结构层 PDBe 结构注释
结构 核酸相互作用 是否接触 DNA 或 RNA,颜色为绿 结构层 PDBe 结构注释
结构 蛋白间相互作用 是否位于蛋白-蛋白接触面,颜色为灰 结构层 PDBe 界面注释
结构 相互作用色块大小 表示该相互作用在同源结构中出现的比例 结构层 需自行统计同源集
结构 可映射序列比例 该蛋白有多少比例的序列能落到结构上 结构层 接口 coverage 概念相近
结构 最近 PDB 条目 论文案例给出条目号与链号 结构层 PDBe 检索
结构 PDB 残基编号 与 UniProt 编号常常不同 结构层 接口的 PDB 映射
结构 埋藏程度 该位点在结构中是否埋藏、是否可及溶剂 结构层 需借结构计算工具
结构 二硫键参与 该 Cys 是否在二硫键中 结构层 PDBe 键连注释
结构 催化残基标记 是否为已知催化位点 结构层 接口注释
评估 保守性分数 由 ScoreCons 方法在 UniProt 全库比对上计算 评估层 需重算
评估 序列标识 以该位置为中心的四十残基标识图 评估层 需重算
评估 CADD 归一化分数 该替换的 CADD 分数,红点表示高 评估层 CADD 官方预计算
评估 氨基酸性质改变幅度 体积、电荷、疏水性等变化的方向与大小 评估层 需自算
评估 Pfam 域归属 该位置落在哪个序列域内 评估层 接口的 domain 字段
评估 CATH 功能家族归属 该位置落在哪个结构功能家族内 评估层 需查 CATH 映射

即便页面不在了,这张表仍是一份可执行的规格。右列标「需自算」「需重算」的几项——疾病倾向分数、相互作用色块大小、埋藏程度、保守性分数——恰是相对现役接口的增值部分。### 2.3 一条记录的完整解剖

把一条记录拆到底,最能看出它的信息密度。用论文的贯穿示例来解剖:UniProt O60663,第 83 位半胱氨酸替换为色氨酸。

#-- 以下为按论文字段语义还原的记录结构,字段名沿用论文的描述口径
记录锚点
  uniprot_accession : O60663
  protein_name      : LIM homeobox transcription factor 1-beta
  canonical_length  : 402
  pfam_domain       : PF00412 (LIM domain, 约 52-114 位)

变异本体
  variant_source    : UniProt 疾病变异 (同位置另有 3 条)
  wild_type         : C
  mutant_type       : W
  position          : 83
  coding_flag       : true

坐标链路
  genomic_coord     : 由 VarMap 从基因组坐标换算得到
  isoform           : canonical only

结构语境
  nearest_pdb       : 1rut (链 X),另 3mmk 亦覆盖该位点
  pdb_residue_no    : 该 Cys 在 1rut 中编号为 57
  pdb_residue_type  : Cys(同源结构上核验一致)
  secondary_struct  : 锌指结构内的配位残基
  interactions      : metal (锌离子,蓝色色块)
  partner_residues  : 与另外三个 Cys/His 共同配位一个锌
  conserved         : 高度保守,四十残基标识图中该位点几乎无替换

评估
  cadd_normalized   : 按论文口径由 CADD 预计算分数归一化
  aa_change         : 小体积含硫侧链 -> 大体积芳香侧链
  disease_propensity: C->W 约 2 倍(论文给出的同类型替换比值)

这条记录说明 VarSite 的意图不是给「变异-分数」对照表,而是给一条可顺藤摸瓜的链路:从基因组坐标出发,经序列位置、结构残基、配位关系,落到「这个半胱氨酸撑着一个锌指」这个结论上。

pdb_residue_no 这一行值得盯住:同一个残基在 UniProt 里是第 83 位,在 1rut 里是第 57 位。论文专门提醒,PDB 编号与 UniProt 常常不同,极端情况下该位点在 PDB 里甚至是另一种氨基酸。拿结构坐标做下游分析前必须先做编号对齐,否则后面全错。

2.4 变异来源的构成

VarSite 的变异来自三个池子,三者的性质完全不同,混着用会出问题。

来源 论文口径的规模 性质 在分析中的角色 使用时的注意事项
UniProt 疾病变异 随 UniProt 发布更新 文献整理的致病或疑似致病变异 疾病侧的主干 收录标准由 UniProt 决定,含部分历史遗留条目
ClinVar 专业版 超过二十五万条 具专业审核记录的提交 疾病侧的补充,质量较高 与公开版存在重叠,直接相加会重复计数
ClinVar 公开版 超过十七万条 所有公开提交,含未审核 疾病侧的广度来源 与专业版为包含关系而非并列关系
gnomAD 自然变异 池子超过一千五百万条 人群中观察到的变异 自然侧的参照 是参照不是对照,不能用来算频率分层
三类合计 超过四十四万条 含疾病与自然两类 页面展示的全集 合计口径由论文给出,未逐类说明差额构成

两个 ClinVar 数字不应相加——专业版是公开版的严格子集。总计与各分项的关系官方未逐项说明,本文只照录口径,不做换算。

gnomAD 这一行还有一个易被忽略的细节:它扮演的是分母。论文用某类替换在疾病数据中的次数除以在自然数据中的次数,得到归一化的疾病倾向分数,其意义完全依赖 gnomAD 作为「正常人群基线」的代表性,而它本身有祖源构成偏向(见 §7.3)。

2.5 与同类资源的字段差异

把 VarSite 放在同类资源里比,差异不在「有没有结构」,而在结构的来源与粒度。

资源 结构信息来源 变异覆盖 与人蛋白自身结构的绑定 VarSite 的相对优势
VarSite PDB 实验结构,含同源结构 疾病变异加自然变异 不绑定,同源即可 覆盖更宽,相互作用信息来自多结构汇总
HuVarBase 人蛋白自身结构 致病变异 强绑定 VarSite 在无自身结构的蛋白上仍有输出
PhyreRisk Phyre2 同源建模 变异加相互作用 不绑定,用模型 VarSite 用实验结构,PhyreRisk 用模型补缺
ProtVar 结构映射加功能注释 错义变异 混合 VarSite 的同源聚合更早、更偏图像
ClinVar 无结构字段 临床提交 不涉及 VarSite 补的是结构维度
UniProt 有结构交叉引用 蛋白层面注释 交叉引用 VarSite 把变异落到具体残基位置

第四列是一个自觉的取舍:宁可引入同源对齐的误差,也要把覆盖撑起来;HuVarBase 走相反的路,只在人自身结构可得时给三维视图。ProtVar 比 VarSite 晚四年,赶上 AlphaFold DB 普及,结构来源更宽。两者并读能看出演进线:从「以实验结构为准、以同源借注释」到「以预测结构补覆盖、以统一坐标换算为骨架」。

§3 它靠「借结构」把覆盖撑起来

3.1 一个蛋白有没有结构,决定了这个页面有没有下半截

页面结构本身就暴露了依赖。每个蛋白质页面从上到下是:蛋白信息与变异计数、序列示意图、保守性曲线、自然变异条带、结构注释行、三维视图入口、变异清单。从「结构注释行」往下全部依赖一件事:这个蛋白能不能映射到 PDB 结构。

没有结构,就没有二级结构、相互作用、埋藏程度与三维视图。页面还在、变异还在,但下半截是空的。只看上半截,会得到「这个基因有多少条变异」的印象,却得不到最需要回答的问题——它们落在结构的什么位置。

判断一个蛋白在 VarSite 里「有没有用」,先看的不是变异条数,而是可映射序列比例。论文提到页面里有一张图专门表示这个比例。比例低说明结构覆盖只到某一两个结构域,其余部分的结构注释不可信或缺席。

3.2 「同源」这两个字怎么定义

同源不是随手找的。论文给出具体阈值:FASTA 序列检索中 E 值低于 10 的负三次方、且 z 分数高于 4 的序列才算同源,既要求统计上显著,也要求比对分数明显高于随机命中。

这个阈值解释了注释密度的差异:进化上保守的蛋白在 PDB 里有几十个跨物种同源结构,每个位置都能汇总出相互作用;快速演化或只有人类自身结构的新近进化蛋白,可用同源结构极少,注释就显得单薄。

色块大小本身带信息:论文说它表示该相互作用在同源结构中出现的比例。一个残基若在二十个独立结构里都在配位金属,这个结论就比单结构所见可靠得多;只在个别结构里出现的小色块,可能只是特定构象或特定配体的偶发现象。

3.3 双轨域体系:Pfam 与 CATH 各管一段

VarSite 用两套域定义来组织跨蛋白的聚合分析:Pfam 的序列域,与 CATH 的功能家族(FunFam)。这两套体系回答的问题不同。

Pfam 从序列相似性出发,给的是「这个域在哪些蛋白里出现」,聚合变异能回答序列层面的热点在哪里。

CATH 从三维结构出发,能回答更进一步的问题:同一折叠里,不同蛋白的致病变异是不是落在空间上对应的位置。这只有结构视角看得出来——序列相似度不高的两个蛋白,折叠相同、关键残基在空间上重合。

按域聚合的价值在于:单个蛋白的变异太少、看不出热点,把带同一域的几十上百个蛋白放在一起模式才浮现。§4.3 的案例里,聚合后才看得出四个配位残基在所有 LIM 域蛋白里都是热点。

3.4 三维视图、可导出脚本与三种检索入口

结构注释的最后一环是看。论文说变异的三维位置可用 3dmol.js 交互查看,也可导出成 RasMol 与 PyMOL 脚本——真要出图或测量仍得回本地工具重现同一视角。它不试图把分析都做进网页,而是做完「找到位置」,把「深入看」交还专业工具。

检索给了三条路:按具体变异查,临床解读最常用;按基因组坐标批量查,对应流水线场景;提交制表符分隔的列表文件,超过二十条时自动判断组装版本,且批量计算在后台跑完后邮件回结果链接。共同前提是坐标与版本正确——版本不同,同一位置指向的碱基完全不同。

3.5 三种检索入口

检索层面,论文给了三条路,分别对应三种使用习惯。

第一条是按具体变异查:知道基因与氨基酸改变,直接定位到该变异在蛋白上的位置。这是临床解读人员最常用的入口。

第二条是按基因组坐标批量查:提交一批「染色体-位置-碱基改变」的三元组,工具会把每条都换算并定位。这一条对应的是流水线场景——手上有一份变异清单,想一次性看它们在结构上的落点。

第三条是提交带制表符分隔的坐标列表文件。论文提到,超过二十条时脚本会自动判断更合适的组装版本,并且批量计算不是实时完成,而是后台跑完后把结果链接邮件发给提交者。这个细节很重要:它说明 VarSite 在设计上就承认自己是「提交-等待-取回」的模式,而不是即点即回的查询接口。

三条入口的共同前提是坐标的正确性。参考基因组组装版本不同,同一个位置指向的碱基完全不同,这是这类工具最经典的事故来源。论文对版本的处理是「超过二十条时自动判断」,但这个自动判断在边界情况下未必可靠,提交者仍应显式核对。

§4 结构注释能说到哪一步

4.1 它不是「第二个 CADD」,它回答的是另一个问题

把 VarSite 与 CADD 并排看,最容易犯的错是把它当成竞品。两者在回答不同的问题。

CADD 回答「这个替换在基因组尺度上有多不寻常」,用六十多个特征训练模型输出归一化分数,对任何位置都算得出来,不依赖结构。VarSite 回答「这个位置在三维结构里承担什么职能」,输出的是二级结构、相互作用、埋藏程度、保守性这组语境,本身不含好坏的判断。

互补性在于:CADD 高但结构裸露的变异,可能经别的机制致病(剪接、稳定性调控);CADD 中等却落在核心配位位点的变异,可能靠破坏折叠致病。只看一类会漏。

论文案例里就做了这件事:Cys83Trp 一边有结构语境(配位锌、高度保守),一边有 CADD 归一化分数(论文称 28,属高分),两边同向。说明作者的用法是多路证据互证,而非用结构取代分数。

4.2 三类结构证据的读法

彩色示意图上,蓝色是金属、红色是配体、绿色是核酸、灰色是蛋白-蛋白。四种颜色要分开读。

蓝色块是硬约束。 金属配位几何极苛刻:一个锌要四个配位基团,方向与距离都有讲究。改动配位残基,尤其把 Cys 换成不能配位的残基,几乎必然破坏金属结合并毁掉锌指折叠。

红色块是语境。 配体接触面是个口袋,换体积相近的残基口袋几乎不变,换带电残基可能排斥配体。

绿色块是定位。 核酸结合面上的变异往往不破坏折叠,而是破坏识别特异性。

灰色块是网络。 界面残基的替换可能破坏复合物组装而不动单体折叠,更易被单纯的结构稳定性预测漏掉。

4.3 案例:LIM 域里的第 83 位半胱氨酸

论文用一条蛋白贯穿全文:UniProt 登录号 O60663,LIM 同源盒转录因子 1-beta,全长 402 个残基,含两个 LIM 域,关联指甲-髌骨综合征(NPS,OMIM 161200)。它在同一位点上凑齐了要讲的要素,故在此当贯穿案例。

先看位置。第 83 位是一个半胱氨酸,落在第一个 LIM 域内(该域大致覆盖 52 到 114 位)。LIM 域在 Pfam 里的定义(PF00412)是两个相邻锌指之间由一个两残基疏水接头连起来的结构。锌指的核心是一个锌离子被四个侧链配位,通常是 Cys 或 His,从而稳定整个折叠。

这个位置上有四条疾病相关变异,是这条蛋白上最密集的位置之一。论文取其中一条深入分析:半胱氨酸换色氨酸。

结构上,最近条目是 1rut 链 X,对应残基编号为 57 的 Cys;3mmk 也覆盖该位点,论文用它的配位示意图展示与锌离子的关系。注释显示该残基的相互作用类型是金属(蓝色),与另外三个配位基团共同固定一个锌。

后果上,半胱氨酸的小体积巯基正是配位能力的来源;换成色氨酸后侧链变成大体积芳香环,既丢了巯基又带来空间冲突。论文的说法很直接:丢失这样的侧链会破坏折叠,很可能使生物功能失效或受损。

它的教学价值在于多层证据叠合:序列上只是一条错义,保守性上该位置近乎不变,结构上它撑着一个配位位点,聚合上四个配位残基都是域内热点——只有后两层是 VarSite 带来的。

它还暴露一个必须警惕的细节:UniProt 83 与 PDB 57 的错位。拿 PDB 里的第 83 位去分析,得到的是完全不同的残基。§4.3 的案例在本文反复被引用,正因为它同时演示了读对有多有用、读错有多危险。

4.4 它与保守性、CADD 三者的分工

结构语境、保守性、CADD 的分工,放在一张表里最清楚。

证据类型 回答的问题 依赖的信息 失效场景 在 VarSite 中的位置
保守性 这个位置在进化上允许变化吗 多序列比对 快速演化或新近进化的蛋白 页面独立一行,四十残基标识图
CADD 这个替换在基因组尺度上有多异常 六十余项基因组特征 训练分布外的人群或区域 作为点的颜色编码
结构语境 这个位置在三维里做什么 PDB 同源结构的实验数据 PDB 里无可对齐结构 相互作用行与埋藏程度
疾病倾向 这类替换在疾病与自然数据中的比值 疾病库与自然库的比值 自然库祖源偏倚 论文给出的聚合统计
结构域热点 同类域中哪些位置反复致病 Pfam 或 CATH 域聚合 域定义边界不清 按域聚合的图

第四列是自检清单:任何证据在对应失效场景里都不可信,而三类证据的失效场景互不重叠,这正是多路证据的价值。

4.5 「疾病倾向分数」是什么,不是什么

论文里有一个容易被过度解读的字段:疾病倾向分数。它的定义很朴素——某类氨基酸替换在疾病数据里出现的次数,除以在自然变异数据里出现的次数,再归一化。论文举例说 Cys 换 Arg 的疾病倾向是 2 多一点,意思是这类替换在疾病数据里出现的频率是自然数据里的三倍多;Cys 换 Trp 约 2 倍。

这个分数容易被误读成「致病概率」。它不是。它描述的是某类替换在两类数据中的相对富集,是一个群体层面的比值,不能落到单个变异上。一个 Cys 换 Trp 的变异,即便这类替换整体上富集于疾病,这一个具体变异仍然可能是良性的。

正确用法是当先验:两个变异难以取舍时,替换类型在疾病数据里更富集的那个可作方向性参考。它是排序用的,不是判读用的。

分数最低为 0,意味着有些替换类型只在自然变异里出现,方向上更偏良性,但同样不是充分条件。

4.6 案例之后的延伸:同一位置四条变异怎么读

回到 §4.3 的案例。第 83 位上有四条疾病相关变异,这是一个很好的练习场。

读法不是把四条并列看谁「更严重」,而是看它们破坏的是不是同一件事。四条都发生在同一个半胱氨酸上,因此四条都至少破坏了同一个配位位点——这个结论是先从位置得出、再看变异得出的,顺序很重要。如果先看变异再找位置,容易陷入「哪条更严重」的无意义比较。

接着看替换后的残基。如果四条里有一条是换成另一个能配位的残基(例如换成 His),那它的后果可能比换成完全不能配位的残基轻,但几何上的改变仍然可能破坏锌指。如果四条都是换成不能配位的残基,那么在这个位点上,「换什么」的差别不如「换了」这个事实重要。

最后看同位置的自然变异。若该位置在 gnomAD 里也有记录,问题就变成「为什么同一位置的变异,有的在人群里、有的在患者里」。§4.3 的案例给出反向提示:高度保守又参与核心配位的位置,自然变异通常极少,若真出现值得单独查证。

§5 取数路径与接口

5.1 先说清楚:主入口已经关闭

VarSite 的官方入口是论文给出的那个 Thornton 组数据库地址。当前访问该地址,返回的是一句「所请求的服务已退役,不再可用」。同一个域名下的其他路径也返回同样的退役提示。这意味着 VarSite 的原交互查询、原结果表、原三维视图,都不再能从这里取到。

这一节因此分成两条线:一条是把 VarSite 的坐标换算链路本身讲清楚,这条链路以 VarMap 的形式有独立实现,可以复用;另一条是给出服务退役之后,从现役接口取「变异加结构语境」的可运行路径。两条线合起来,才是「现在还能怎么用」。

#-- 第一步:确认原入口状态(返回退役提示即说明主入口已关闭)
curl -sL -m 20 "https://www.ebi.ac.uk/thornton-srv/databases/VarSite/" \
  | sed -e 's/<[^>]*>/ /g' | tr -s ' ' | head -c 300

这条命令不取数据,只把「主入口已关闭」留成可复核的记录。

5.2 坐标换算链路:VarMap 做的三件事

VarSite 里所有来自 ClinVar 与 gnomAD 的变异,都要先过一遍 VarMap 才能落到蛋白序列上。这条链路分三步。

第一步,基因组坐标到转录本坐标:输入染色体、位置、碱基改变三元组与组装版本,由 Ensembl VEP 给出落在哪个转录本、第几个编码碱基。第二步,转录本坐标到蛋白坐标:算它落在第几个密码子、密码子第几位,得到氨基酸位置与替换类型,依赖正确的阅读框与转录本选择。第三步,蛋白坐标到结构坐标:给定规范异构体残基序号,通过序列比对找到 PDB 同源结构里的对应残基。这一步是它与普通注释工具的分水岭,大多数工具止步于第二步。

第三步的误差来源最多:比对中的插入缺失会致残基错位;PDB 条目可能只覆盖部分序列;某些结构里该位置可能是另一种氨基酸。论文对最后一点说得很清楚,这是必须人工核对的地方。

5.3 现役路径一:EBI Proteins 变异接口

UniProt 的变异注释在 EBI 有一路现役接口,直接返回某个登录号下的全部变异记录,字段里含位置、野生型与突变型残基、变异类型、以及相关的疾病与表型信息。这是 VarSite 变异层内容的最直接来源。

#-- 从 EBI Proteins 接口取某个蛋白的全部变异注释
import requests

ACC = "O60663"   #-- 贯穿案例的蛋白
url = f"https://www.ebi.ac.uk/proteins/api/variation/{ACC}"

r = requests.get(url, headers={"Accept": "application/json"}, timeout=120)
r.raise_for_status()
feats = r.json()["features"]
print("变异条数:", len(feats))

#-- 只看错义替换,并按位置排序
missense = [f for f in feats if f.get("alternativeSequence")]
missense.sort(key=lambda f: f["begin"])
for f in missense[:5]:
    print(f['begin'], f['wildType'], '->', f['alternativeSequence'],
          f.get('consequenceType'), len(f.get('evidences', [])), '条证据')

这段代码把变异层原样拿到:位置、替换、后果类型、证据条数。它给不出结构语境,但给了结构语境所需的锚点。

5.4 现役路径二:PDBe 的结构注释接口

结构语境需要从结构侧取。PDBe 的接口按 UniProt 登录号返回该蛋白关联的结构条目,以及序列到结构的映射。把上一步的蛋白位置拿到这里,就能落到具体条目与残基。

#-- 从 PDBe 取某蛋白的结构条目与序列覆盖
import requests

ACC = "O60663"
base = "https://www.ebi.ac.uk/pdbe/api"

#-- 该登录号关联的 PDB 条目
r1 = requests.get(f"{base}/mappings/uniprot/{ACC}", timeout=60)
r1.raise_for_status()
entries = r1.json().get(ACC, {}).get("PDB", {})
print("关联结构条目数:", len(entries))
for pdb_id in list(entries)[:5]:
    m = entries[pdb_id].get("mappings", [{}])[0]
    print(pdb_id, "覆盖残基",
          m.get("unp_start"), "-", m.get("unp_end"),
          "链", m.get("chain_id"))

两步串起来就复现了映射链路的前两环:变异位置与结构覆盖都有了,接下来只需判断目标位置是否落在覆盖区间内。区间内可继续取二级结构与相互作用;区间外的就是「无可映射结构」,也是自建流水线必须显式处理的分支。

5.5 现役路径三:ProtVar 作为整体替代

如果要的是一个「输入变异、输出结构映射与功能注释」的成品服务,ProtVar 是 VarSite 之后最贴近的替代。它的论文明确处理四种坐标之间的换算——基因组、编码、蛋白、结构——这正是 VarSite 用 VarMap 解决的那个问题。

#-- ProtVar 的编码区变异查询端点(以案例蛋白的 C83W 为例)
#-- 端点语义: 按染色体位置查该位点的变异与结构映射
curl -s -m 30 "https://www.ebi.ac.uk/ProtVar/api/v1/variant/17:38151750" \
  -H "Accept: application/json" \
  | python3 -c "import sys,json;d=json.load(sys.stdin);print(json.dumps(d,ensure_ascii=False)[:600])"

这条命令演示「按坐标查」入口。返回的字段结构与 VarSite 不同,但目的一致:把坐标换算到蛋白再映射到结构。使用前应先核对端点是否有效,接口路径可能随版本调整。

5.6 三个资源的分工与选择

需求 VarSite(已退役) EBI Proteins PDBe 接口 ProtVar
变异位置与替换类型 有 有 无 有
结构条目覆盖区间 有 无 有 有
二级结构与相互作用 有,同源汇总 无 有,需自行归纳 部分
埋藏程度 有 无 无,需自算 部分
保守性分数 有 无 无 部分
批量提交 有,邮件回 单登录号 单登录号 单变异
现役可用 否 是 是 是
适合的场景 方法与字段参考 变异层取数 结构层取数 端到端替代

实践结论是:不要找「一个 VarSite 的平替」,而是按层找——变异层走 EBI Proteins,结构层走 PDBe,端到端走 ProtVar。它留下的最大遗产不是数据,是把这三层串起来的字段设计。

§6 与库内其他基因组条目的关系

6.1 关系图谱

VarSite 在库内的位置要放在基因组与变异一类条目里看。它不是独立数据集,而是一个「交叉层」:上游接变异资源,下游接结构资源。

关系类型 相关条目类型 关系说明 数据流向
上游供给 UniProt Humsavar 提供疾病相关变异与蛋白注释 单向流入 VarSite
上游供给 ClinVar 提供临床提交变异,分专业与公开两版 单向流入
上游供给 gnomAD 提供自然变异作为分母 单向流入
换算依赖 Ensembl VEP 基因组坐标到转录本坐标 调用,非数据流入
换算依赖 BioMart 跨库标识符对照 调用
结构供给 PDB 提供实验结构 单向流入
结构汇总 PDBsum 把 PDB 条目汇总成残基级注释 中间处理层
域定义 Pfam 提供序列域边界 引用
域定义 CATH FunFam 提供结构功能家族归属 引用
平行资源 HuVarBase 同类,但只用自身结构 互补
平行资源 PhyreRisk 同类,用同源建模补缺 互补
后继资源 ProtVar 处理四坐标换算的新一代 替代
结构覆盖补充 AlphaFold DB 提供几乎全蛋白组的预测模型 补 VarSite 的结构空缺

关键是「单向流入」那一列。它不产生变异、不产生结构,只做换算与汇总,所以退役后损失的主要是「汇总」这一步:原始数据都还在上游库里,只是需要自己重新串一遍。

6.2 检索路径

在库内找相关条目有三条路。按变异找:从 ClinVar 或 UniProt 类条目出发,看结构维度是否被覆盖——多数只讲频率与临床意义。按结构找:从 PDB 或 AlphaFold 类条目出发,看变异注释能力——结构类条目通常不讲变异落在哪里。按基因找:从具体疾病基因出发,这类条目同时需要频率与结构语境。

§7 质量评估与局限性

7.0 阅读本节前的一个前置校正

评估 VarSite 最常见的一类误判,是拿「今天的变异池」去衡量「2019 年的快照」。论文的规模数字有明确时点,而 UniProt、ClinVar、gnomAD 都在持续增长。不做校正会得出两个相反的错误结论:低估缺口(以为它覆盖了今天的变异),或高估过时程度(以为方法也一起过时了)。

正确的理解分两层:方法上,映射链路与字段设计至今成立,可作自建流水线的蓝本;数据上,具体条目与规模数字只对应 2019 年 6 月,此后的一切变化都不在其中。方法可借,数字不可引用为现状。

第二类误判是把「判断力」当成「覆盖度」。它的强项是知道该给哪些证据——相互作用、埋藏程度、保守性、疾病倾向——而不是覆盖了多少蛋白。混着谈,会把结构可得性问题误判成数据量问题。

7.1 DAIMS 五维评分

按下表五个维度评估,评分对象是「把它当作一类结构语境注释资源来用」这件事,而非「它今天能否直接取数」。

维度 评分 判断依据 主要扣分项
可信度(Credibility) 4 / 5 论文发表于同行评审期刊,方法链路逐步可查,阈值显式给出 结构来自同源蛋白,跨物种对齐存在错位风险
可及性(Accessibility) 1 / 5 主入口已退役,无批量下载,无公开 API 文档 服务关闭后无法取原结果
互操作性(Interoperability) 3 / 5 以 UniProt 登录号与 PDB 条目为锚,标识符体系规范 输出为页面与图像,非结构化表
可维护性(Maintainability) 2 / 5 论文一次性发布,未见后续版本说明 退役后无继任者承接同一形态
可持续性(Sustainability) 2 / 5 上游数据仍在增长,方法可复现 服务本体未续,依赖上游重构

五维分布本身就是结论:可信度与互操作性不差,可及性与可持续性很差。它是「方法论遗产型」资源,不是「持续运营型」资源。

7.3 已知的、可枚举的偏差

偏差类型 具体表现 来源 影响方向 缓解办法
结构可得性偏差 只有能映射到 PDB 同源结构的蛋白才有注释 设计前提 结构研究充分的蛋白被过度代表 按可映射序列比例分层使用
物种同源偏差 注释借自其他物种的同源蛋白 同源映射 跨物种残基类型可能不同 对照 PDB 该位点的实际残基类型
异构体偏差 只纳入规范异构体 明确排除 非规范异构体上的变异被遗漏 另找全转录本注释工具
编码区偏差 只纳入编码区变异 明确排除 调控与剪接变异缺失 另找调控注释资源
人群祖源偏差 自然变异基线来自 gnomAD 的人群构成 上游数据 非欧洲祖源的变异可能被误判为罕见 用对应人群的频率库交叉核对
收录标准偏差 疾病变异来自 UniProt 与 ClinVar 的既有收录 上游数据 已被大量研究的基因被过度代表 与文献计量交叉看
时点偏差 规模数字截至 2019 年 6 月 发布快照 今天使用会系统性低估覆盖 只引方法不引规模
编号错位偏差 PDB 残基编号与 UniProt 不同 两套体系差异 直接拿 PDB 编号分析会全错 先做编号对齐再分析

最后一行是操作层面最容易出事的一条。§4.3 的案例里 UniProt 第 83 位在 1rut 里是第 57 位,差二十六位;更极端的情况是同源结构在该位置干脆是另一种氨基酸,连「同一个位置」的前提都不成立。

7.4 外部验证矩阵

VarSite 的关键论断可以被几条独立路径交叉检验。这张表不是「我们核对过」,而是「要验证时应去哪里核对」。

论断 验证路径 可核对的公开来源 验证方式 结论性质
变异映射到 PDB 同源结构 取同一蛋白的变异位置与结构覆盖区间比对 EBI Proteins 与 PDBe 接口 判断位置是否落在覆盖区间内 可机械复核
同源判定阈值 E 值与 z 分数 重跑 FASTA 检索 本地 FASTA 实现 用同一阈值复现同源集 可复现
Cys83 配位锌 查看对应 PDB 条目的金属配位 PDB 与 PDBe 结构注释 检查配位距离与几何 可目视复核
CADD 分数口径 查 CADD 官方预计算 CADD 官方下载 用同一替换类型对照分数 可对照
保守性由 ScoreCons 计算 查 ScoreCons 方法说明 方法学原文 按方法描述复现分数 需重算
疾病倾向分数定义 论文正文的比值定义 论文方法段 按定义重算比值 需原始计数
规模数字时点 论文的日期标注 论文正文 核对「2019 年 6 月」字样 直接引用
服务退役状态 访问原入口 Thornton 组站点 看返回的退役提示 可现场确认

第三行是唯一不需要跑代码就能验的论断:拿到 3mmk 的人都能看到那个锌被四个侧链围住,其中一个正是对应第 83 位的半胱氨酸。这种可目视复核,是结构证据相对分数证据的优势。

7.5 它为何能持续:因为它是结构注释这一层最早把「变异」和「残基职能」接起来的一批工作

服务本体没有持续,但思路持续下来了。它解决的是一个结构性空白:序列注释工具很多,结构注释工具也很多,但把两者在残基级别对接、并用同源结构撑开覆盖的工具,在它出现时是少的。这个空白不因站点关闭而消失。

这条思路后来被不同形态继承:Pfam 与 CATH 双轨聚合、把埋藏与相互作用写进变异注释、以同源汇总提高稳健性,在后续工具里反复出现。准确地说,「能持续」的是它提出的问题与答案框架,而不是它自己的页面。

§8 生态位与历史

8.1 历史沿革

VarSite 的时间线不复杂。2019 年 7 月投稿,10 月修订接收,2020 年 1 月正式发表,而论文的规模数字标注时点是 2019 年 6 月——描述的是投出去前一个月的状态。其余三个节点值得单独记:

节点 发生了什么 对使用者的含义
2020-01 论文发表,服务上线 入口是 Thornton 组数据库路径,不是 PDBe
2020 之后 AlphaFold DB 逐步铺开 结构可得性不再是唯一紧约束
2024 ProtVar 出现,处理四坐标换算 端到端替代成型
未注明 服务退役,只返回提示 无公告、无日期、无归档说明

入口这一行需要强调:很多二手资料把 VarSite 写成 PDBe 的子项目,但论文原文给出的地址是组内数据库,PDBe 下的对应路径在核实中返回错误而非服务页面。退役一行则说明服务结束没有对应的公告可查,官网只返回退役提示,不给日期与原因;本文对此不做推断,只记录状态。

8.2 它在结构生物信息学谱系里的位置

把它放进桑顿组的工具谱系,位置就清楚了。

工具 与 VarSite 的关系 主要解决的问题 时间位置
PDBsum 结构注释的汇总来源 把 PDB 条目压缩成残基级摘要 更早,是 VarSite 的底座
VarMap 坐标换算组件 基因组坐标到蛋白与结构坐标 同一时期,被 VarSite 调用
VarSite 本体 把变异落到结构语境 2020
PhyreRisk 平行路线 用同源建模补结构空缺 相近时期
HuVarBase 平行路线 只用自身结构做三维视图 相近时期
ProtVar 后继形态 四坐标换算加功能注释 2024

VarSite 站在 PDBsum 这个底座上,用 VarMap 做换算,把两条已有能力拼成新用途。它是组装式创新——组件都还在,缺的只是那段组装逻辑。

8.3 与 AlphaFold 时代的关系

AlphaFold DB 的出现改变了 VarSite 的处境,却没有让它的核心问题消失。改变的部分是结构可得性:过去一个蛋白若在 PDB 里没有可对齐的同源结构,就无从注释;现在几乎任何人类蛋白都有预测模型,「覆盖不到」这条边界在理论上被大幅后移。没有改变的是结构注释的可靠性:预测模型给坐标,不给实验观察到的配位、结合与构象变化,同源汇总得来的稳健性证据仍是预测模型给不了的,这也是 ProtVar 把两者都纳进来而非简单替换的原因。

能力 实验结构(VarSite 的路线) 预测模型(AlphaFold 的路线) 两者如何互补
覆盖率 仅 PDB 有可对齐结构的蛋白 几乎全部人类蛋白 预测模型补覆盖缺口
坐标来源 实验解析,附分辨率 预测,附逐残基置信度 高置信区可互证
金属配位 直接观察配位几何 不保证金属存在 配位问题必须回实验结构
配体结合 直接观察口袋与接触 通常为空载 口袋判定需实验证据
构象变化 可有多构象条目 单一模型 构象问题需实验结构
跨物种同源 天然具备 按物种分别预测 同源比较以实验结构为主
适合的分析 相互作用、配位、界面 折叠域边界、整体形态 分工使用,勿混层

实践含义是:要覆盖走预测模型,要实验证据走实验结构,两者都有缺口时明确标注证据层级。§4.3 的案例里那个锌配位就是典型的「只有实验结构才说得清」。

§9 使用指引

9.1 三种角色的路径

临床遗传解读人员。 先确认变异位置与替换(含转录本与组装版本),再判断该蛋白在 PDB 有没有可对齐结构,然后取该位置的相互作用与埋藏程度,最后把结构证据与保守性、人群频率、表型一起权衡。

结构生物信息学研究者。 先读方法段,把 VarMap 的三步换算、FASTA 的同源阈值、ScoreCons 的保守性算法拆清楚;再用现役接口把三层数据重新组装;最后对照论文案例,检查你的链路在同一位点上是否给出一致结论。

变异注释流水线工程师。 按 §2.2 的字段字典把五组字段落地;变异层与结构层分开接两个接口;重点处理「无结构覆盖」这个分支——它在真实数据里占比不低,也最需要向调用方说明清楚。

9.2 一条最短的可用流程

把上面三种角色共用的最小步骤写成一段可运行的代码:给一个 UniProt 登录号与一个残基位置,判断该位置是否有结构覆盖,若有则输出覆盖它的条目。

#-- 最小可用流程: 给定登录号与位置,判断结构覆盖情况
import requests

ACC = "O60663"     #-- 案例蛋白
POS = 83           #-- UniProt 规范异构体上的位置

#-- 1) 取变异注释,确认该位置确有变异记录
rv = requests.get(f"https://www.ebi.ac.uk/proteins/api/variation/{ACC}",
                  headers={"Accept": "application/json"}, timeout=120)
rv.raise_for_status()
hits = [f for f in rv.json()["features"] if f["begin"] == POS]
print(f"位置 {POS} 的变异条数:", len(hits))
for f in hits:
    print("  ", f["wildType"], "->", f.get("alternativeSequence"),
          f.get("consequenceType"))

#-- 2) 取结构覆盖,判断该位置落在哪些条目里
rm = requests.get(f"https://www.ebi.ac.uk/pdbe/api/mappings/uniprot/{ACC}", timeout=60)
rm.raise_for_status()
entries = rm.json().get(ACC, {}).get("PDB", {})
covered = []
for pdb_id, v in entries.items():
    for m in v.get("mappings", []):
        lo, hi = m.get("unp_start"), m.get("unp_end")
        if lo is not None and hi is not None and lo <= POS <= hi:
            covered.append((pdb_id, m.get("chain_id"), lo, hi))

#-- 3) 输出结论
if not covered:
    print("该位置无结构覆盖: 结构语境缺失,需转向预测模型")
else:
    print(f"该位置被 {len(covered)} 个条目覆盖:")
    for c in covered[:5]:
        print("  PDB", c[0], "链", c[1], "覆盖", c[2], "-", c[3])

第三段是重点:无覆盖时明确输出「结构语境缺失」而不静默跳过。在流水线里,静默跳过最危险——调用方会以为「没输出就是没问题」,实际是没有证据。

同一流程若跑一批蛋白,还需要把结果落成表再判断,否则「查过但没有覆盖」与「根本没查」会混在一起。下面这段在上一步基础上做批量汇总,输入是登录号与位置对照表,输出按覆盖状态分三类的统计。

#-- 批量汇总: 按覆盖状态分组,区分「有覆盖」「无覆盖」「查询失败」
import csv
import requests

rows = list(csv.DictReader(open("batch.tsv"), delimiter="\t"))  #-- 列: acc, pos
summary = {"covered": 0, "no_structure": 0, "error": 0}
detail = []

for r in rows:
    acc, pos = r["acc"], int(r["pos"])
    try:
        rm = requests.get(
            f"https://www.ebi.ac.uk/pdbe/api/mappings/uniprot/{acc}", timeout=60)
        rm.raise_for_status()
    except Exception as exc:
        summary["error"] += 1
        detail.append((acc, pos, "error", str(exc)[:40]))
        continue
    entries = rm.json().get(acc, {}).get("PDB", {})
    hit = None
    for pdb_id, v in entries.items():
        for m in v.get("mappings", []):
            lo, hi = m.get("unp_start"), m.get("unp_end")
            if lo is not None and hi is not None and lo <= pos <= hi:
                hit = pdb_id
                break
        if hit:
            break
    if hit:
        summary["covered"] += 1
        detail.append((acc, pos, "covered", hit))
    else:
        summary["no_structure"] += 1
        detail.append((acc, pos, "no_structure", ""))

print(summary)
for d in detail[:10]:
    print(d)

error 这一档是刻意单列的。真实数据里最常见的错误不是「无覆盖」,而是网络失败或登录号失效被当成了「无覆盖」——这两者在下游决策上相反:前者该重试,后者该换资源,混为一谈会让整批结论失真。

9.3 引用方式

引用 VarSite 应引论文而非站点,因为站点已退役,引用它会让后来者无从核对。

原始论文:Laskowski RA, Stephenson JD, Sillitoe I, Orengo CA, Thornton JM. VarSite: Disease variants and protein structure. Protein Science. 2020;29(1):111-119. DOI: 10.1002/pro.3746. PMID: 31606900.

若引用了本文的字段字典或映射链路描述,还应同时引用 VarMap 与 PDBsum 的方法学原文,因为这三者的边界在论文里是分开交代的。若引用的是服务退役后的替代取数路径,应引 EBI Proteins 与 PDBe 各自的接口文档版本,并注明取数日期——接口路径会随版本变化。

§10 AI 使用声明

项目 说明
本篇的写作方式 由 AI 辅助撰写,人工设定章节骨架、事实边界与编辑纪律
事实核验范围 官方入口状态、论文摘要与全文方法段、两个现役接口的可用性
未核验内容 服务的退役日期与原因、退役后的数据是否另有归档、四十四万条的内部构成
数字口径 规模数字一律标注论文的时点(2019 年 6 月),不表述为现状
代码状态 §5 与 §9 的代码按公开接口编写,接口路径可能随版本调整
引用建议 以论文 DOI 为准,不以站点 URL 为准
内容边界 不含临床建议,不含个体层面的判读结论
更新责任 若接口路径变更,应优先修订 §5.3 至 §5.5 的端点

§11 一页决策树

把全文的判断顺序压缩成一张表,遇到具体问题时按行对照即可。这张表不替代前述各章的细节,只负责把「先问什么、再问什么」的次序固定下来。

顺序 你要先回答的问题 答「是」怎么办 答「否」怎么办 依据
1 变异是否落在编码区 继续第 2 步 换调控或剪接注释资源 §1.6 第一条
2 该蛋白在 PDB 有没有可对齐结构 继续第 3 步 转预测模型或同源建模,标注证据缺失 §3.1
3 目标位置是否落在条目覆盖区间内 继续第 4 步 记为空缺,不可当良性 §5.4
4 PDB 残基编号与 UniProt 是否已对齐 继续第 5 步 先做编号映射,否则结论作废 §2.3
5 该残基是否参与金属或二硫键 按硬约束处理,优先看配位几何 转第 6 步看普通语境 §4.2
6 是否位于蛋白-蛋白或核酸界面 按界面或识别特异性解读 按折叠稳定性解读 §4.2
7 保守性与 CADD 是否同向 证据叠合,可信度提高 单独核查,不作合并结论 §4.1
8 同位置是否有自然变异记录 查该变异的人群频率与祖源 高度保守位置的自然变异极少,值得复核 §4.6
9 结论要进报告还是只作内部参考 只用证据片段,不下判定 可作排序与优先级线索 §1.5

这张表的第 2 步和第 4 步是最容易被跳过、也最致命的两个。跳过第 2 步,会把「没有结构所以没有注释」误读成「结构上没问题」;跳过第 4 步,会在错误的残基上看半天。§4.3 的案例同时演示了这两步的必要性。

常见误读(避坑清单)

说法 实际 证据
VarSite 是一个可下载的变异注释数据集 它是网页服务器,输出页面与图像,无批量下载 论文数据可得性声明只写「在网址免费可用」
VarSite 是 PDBe 的子项目 论文给出的入口是 Thornton 组数据库路径,PDBe 下未见对应服务页 论文正文与数据可得性段
VarSite 现在还能查 主入口返回服务退役提示 访问原 URL 的返回内容
它的变异覆盖全部转录本 只纳入 UniProt 规范异构体 论文明确写「目前只纳入规范异构体」
它覆盖全基因组变异 只纳入编码区变异 论文明确写只有编码区能被映射
它覆盖全部人类蛋白 只覆盖能映射到 PDB 同源结构的蛋白 结构来源限定为 PDB
结构注释来自患者蛋白自身的结构 主要来自同源蛋白的实验结构 论文强调同源借注释以提高覆盖
PDB 残基编号可以直接当 UniProt 位置用 两套编号常不同,案例中是 83 与 57 之差 论文在案例里专门提醒
疾病倾向分数等于致病概率 它是某类替换在疾病与自然数据中的比值 论文给出的定义与例子
四十四万条是今天的规模 那是 2019 年 6 月的快照 论文正文的时点标注

FAQ

Q1:VarSite 现在还能访问吗?
不能。官方入口返回「服务已退役」提示,交互查询与三维视图都不再提供。论文的方法与字段语义仍然可读,但取数需要转向 EBI Proteins、PDBe 与 ProtVar。

Q2:VarSite 覆盖多少变异?
论文称截至 2019 年 6 月超过四十四万条。其中 ClinVar 专业版超过二十五万条、公开版超过十七万条,两者是包含关系,不应相加。自然变异侧来自 gnomAD,池子超过一千五百万条。

Q3:它能替我做致病性判定吗?
不能。它给的是结构语境的证据片段,说明某个替换是否落在核心、是否破坏配位或二硫键,但不输出致病结论。判定仍需按 ACMG 的证据组合流程来做。

Q4:为什么有的基因在 VarSite 里完全没有结构注释?
因为映射的终点是 PDB 实验结构。一个蛋白若既没有自身结构、也找不到可对齐的同源结构,结构注释就是空的。§4.3 的案例属于反面:它在 PDB 里有多个可用条目。

Q5:它和 CADD 是什么关系?
互补而非替代。CADD 回答「这个替换在基因组尺度上有多异常」,VarSite 回答「这个位置在三维结构里做什么」。两类信息合起来看,才有分辨力。

Q6:它和 AlphaFold DB 是什么关系?
互补。AlphaFold 给预测模型,覆盖广但无实验细节;VarSite 给实验结构上的相互作用与配位信息,覆盖窄但可靠。两者都有缺口时应标注证据层级。

Q7:同一个位置有多条变异时怎么读?
先看位置,再看变异。同一个残基位置的多条变异共享同一套结构语境,差别在于替换后的残基性质。§4.3 的案例里第 83 位有四条疾病变异,正是这个读法的练习场。

Q8:PDB 残基编号和 UniProt 编号不一样怎么办?
这是常态,必须显式对齐。VarSite 在页面里给出两套编号的对应关系,自建流水线时应先做编号映射再分析,否则结论全错。

Q9:它的疾病倾向分数能当致病概率用吗?
不能。它是某类氨基酸替换在疾病数据与自然数据中的频次比值,是群体层面的相对富集,不能落到单个变异上。它的正确用法是排序时的先验分量。

Q10:Pfam 域和 CATH 功能家族有什么区别,为什么要两套都用?
Pfam 从序列相似性定义域,回答「这个序列域在哪些蛋白里出现」;CATH FunFam 从三维结构定义,回答「这些蛋白是不是同一类折叠」。前者看序列热点,后者看结构热点,两者不重合。

Q11:服务退役了,它的方法还有用吗?
有用。它的字段设计与映射链路至今可作蓝本,尤其是同源汇总提高稳健性、把埋藏程度与二硫键写进注释、Pfam 与 CATH 双轨聚合这三处。缺的是那一段组装逻辑的现成实现。

Q12:如果只想做一件事,应该做什么?
先确认目标蛋白在 PDB 里有没有可对齐的结构。有,就走结构语境这条路;没有,就诚实标注证据缺失,转向预测模型或同源建模,而不是拿序列分数冒充结构结论。

术语表

术语 英文 在本篇中的含义
错义变异 missense variant 导致一个氨基酸被另一个替换的编码区变异
规范异构体 canonical isoform UniProt 为每个蛋白指定的代表性序列
同源结构 homologous structure 来自其他蛋白(常为其他物种)但可序列对齐的结构
同源判定阈值 homology threshold 论文采用的 E 值低于 10 的负三次方、z 分数高于 4
配位 coordination 金属离子被若干侧链按特定几何固定
锌指 zinc finger 由锌离子配位稳定的小型折叠模体
LIM 域 LIM domain 由两个相邻锌指加疏水接头构成的结构域
埋藏程度 burial 残基在结构中埋于内部还是暴露于溶剂
溶剂可及性 solvent accessibility 残基侧链被溶剂接触的程度
二级结构 secondary structure 螺旋、折叠、转角与无规卷曲的归属
二硫键 disulphide bond 两个半胱氨酸之间形成的共价键
功能家族 FunFam CATH 中按功能细分的结构家族
序列标识 sequence logo 以某位置为中心的保守性可视化
保护分数 scorecons 论文采用的保守性计算方法
疾病倾向 disease propensity 某类替换在疾病与自然数据中的频次比值
归一化 CADD normalized CADD 把原始 CADD 分数映射到统一区间
坐标换算 coordinate mapping 基因组到转录本到蛋白到结构的逐级转换
参考基因组版本 assembly 决定同一坐标指向哪个碱基的组装版本
可映射比例 coverage 蛋白有多大比例的序列能落到结构上
三维视图 3D viewer 论文采用的 3dmol.js 交互视图
图像化报告 image-based report 以示意图而非数据表为主的输出形态
网页服务器 web server 一类只提供在线查询、不提供批量下载的服务形态
结构语境 structural context 一个残基在三维结构中的职能与处境
证据层级 evidence tier 证据来自实验结构还是预测模型

附录 A:核心数字核对表

项 值 来源 来源层级
变异总量 超过四十四万条(2019 年 6 月) 论文正文 论文摘要与正文
ClinVar 专业版 超过二十五万条 论文正文 论文正文
ClinVar 公开版 超过十七万条 论文正文 论文正文
gnomAD 池子 超过一千五百万条 论文正文 论文正文
gnomAD 个体数 超过十四万 论文正文 论文正文
案例蛋白长度 402 个残基 论文图注 论文正文
案例 LIM 域范围 约 52 至 114 位 论文图注 论文正文
案例位置变异条数 4 条 论文正文 论文正文
案例位置 PDB 编号 57(对应 UniProt 83) 论文正文 论文正文
同源判定 E 值 低于 10 的负三次方 论文正文 论文正文
同源判定 z 分数 高于 4 论文正文 论文正文
CADD 特征数 六十余项 论文正文 论文正文
案例 CADD 归一分 28 论文正文 论文正文
批量查询阈值 超过二十条转后台 论文正文 论文正文
论文卷期页 29 卷 1 期 111 至 119 页 期刊记录 论文元数据
服务状态 已退役 官方入口返回内容 官方页面

附录 B:数字的来源分层

第一层,官方页面。 这一层只有一项:服务退役状态。这一项通过访问论文给出的原入口获得,返回内容为一句退役提示。除此之外,官方入口不提供任何规模数字或结构说明,因此本篇的其余数字都不来自官方页面。

第二层,论文摘要与正文。 本篇的绝大多数数字属于这一层:变异总量、ClinVar 两个版本的规模、gnomAD 的池子与个体数、案例蛋白与位置细节、同源判定阈值、CADD 特征数、批量查询阈值。这些数字的可靠性受限于两点:论文的时点是 2019 年 6 月;论文的规模描述多为「超过」形式,不给精确值,因此不能用于精确比较。

第三层,未核实。 以下三项本篇明确标注未核实:服务的退役日期与原因;退役后是否有数据归档或继任站点;四十四万条总数与三个分项之间的差额构成。论文未说明差额,官方页面也不提供,故本文只照录各口径,不做换算。

附录 C:完整参考文献

  1. Laskowski RA, Stephenson JD, Sillitoe I, Orengo CA, Thornton JM. VarSite: Disease variants and protein structure. Protein Science. 2020;29(1):111-119. doi:10.1002/pro.3746. PMID:31606900. PMCID:PMC6933866.
  2. Laskowski RA, Stephenson JD, Sillitoe I, Orengo CA, Thornton JM. VarMap: A web tool for mapping genomic coordinates to protein sequence and structure and retrieving protein structural annotations. (作为坐标换算组件被 VarSite 调用,方法学细节以其原文为准)
  3. Laskowski RA. PDBsum: Structural summaries of PDB entries. Protein Science. (作为结构注释的汇总来源被 VarSite 使用)
  4. The UniProt Consortium. UniProt: the universal protein knowledgebase. Nucleic Acids Research. (Humsavar 疾病变异注释的上游)
  5. Landrum MJ, et al. ClinVar: improving access to variant interpretations and supporting evidence. Nucleic Acids Research. (临床变异提交的上游)
  6. Karczewski KJ, et al. The mutational constraint spectrum quantified from variation in 141,456 humans. Nature. 2020. (gnomAD 自然变异的上游)
  7. Rentzsch P, Witten D, Cooper GM, Shendure J, Kircher M. CADD: predicting the deleteriousness of variants throughout the human genome. Nucleic Acids Research. (CADD 分数来源)
  8. El-Gebali S, et al. The Pfam protein families database. Nucleic Acids Research. (序列域定义来源)
  9. Sillitoe I, et al. CATH: expanding the horizons of structure-based functional annotations for genome sequences. Nucleic Acids Research. (结构功能家族定义来源)
  10. Berman HM, et al. The Protein Data Bank. Nucleic Acids Research. (实验结构来源)
  11. Jumper J, et al. Highly accurate protein structure prediction with AlphaFold. Nature. 2021. (预测结构补充路径的背景)
  12. Gough J, et al. PhyreRisk: heterogeneous multi-omic data with structural context. (同源建模补缺的平行路线)
  13. Portelli S, et al. ProtVar: mapping and contextualizing human missense variation. Nucleic Acids Research. 2024. doi:10.1093/nar/gkae413. (四坐标换算与变异注释的后继形态)

附录 D:VAR 任务代码

这一节把 §5 与 §9 的代码串成一个可以直接运行的脚本,任务是:给定一个 UniProt 登录号与一个残基位置,输出该位置的变异记录、结构覆盖情况、以及需要人工核对的提醒。

#-- VAR-1: 一次跑完变异层与结构层的对接检查
python3 - "$@" <<'PY'
import json
import requests

ACC = "O60663"
POS = 83

variation_url = f"https://www.ebi.ac.uk/proteins/api/variation/{ACC}"
mapping_url = f"https://www.ebi.ac.uk/pdbe/api/mappings/uniprot/{ACC}"

out = {"accession": ACC, "position": POS, "variants": [], "coverage": []}

rv = requests.get(variation_url, headers={"Accept": "application/json"}, timeout=120)
rv.raise_for_status()
for f in rv.json().get("features", []):
    if f.get("begin") == POS:
        out["variants"].append({
            "wt": f.get("wildType"),
            "mut": f.get("alternativeSequence"),
            "consequence": f.get("consequenceType"),
            "evidences": len(f.get("evidences", [])),
        })

rm = requests.get(mapping_url, timeout=60)
rm.raise_for_status()
for pdb_id, v in rm.json().get(ACC, {}).get("PDB", {}).items():
    for m in v.get("mappings", []):
        lo, hi = m.get("unp_start"), m.get("unp_end")
        if lo is not None and hi is not None and lo <= POS <= hi:
            out["coverage"].append({
                "pdb_id": pdb_id,
                "chain": m.get("chain_id"),
                "unp_start": lo,
                "unp_end": hi,
            })

if not out["coverage"]:
    out["warning"] = "该位置无结构覆盖,结构语境缺失"
else:
    out["warning"] = "分析前须核对 PDB 残基编号与 UniProt 编号的对应关系"

print(json.dumps(out, ensure_ascii=False, indent=2))
PY

这段脚本对应 VarSite 映射链路的前两环,输出了一个可核对的中间产物。它的最后一行提醒是刻意设计的:无论有没有覆盖,编号对齐这件事都必须做,因为这是结构类分析里最容易出错、也最不容易被自动检查出来的一步。

附录 F:三种角色的动作对照

这一节把 §9.1 的三种角色压缩成一张可查阅的动作表,便于在具体任务里快速定位「我现在该做哪一步」。

角色 起点 必须先确认的一件事 主要依赖 可接受的产出 常见返工点
临床遗传解读 一条错义变异 转录本与参考基因组版本 变异位置、结构覆盖、相互作用 结构语境证据片段 拿 PDB 编号当 UniProt 位置
结构生物信息学 要复现映射链路 同源判定阈值与比对口径 VarMap 三步换算、PDBe 结构覆盖 可复现的位点级结论 忽略插入缺失导致的错位
流水线工程 要加一路结构证据 无覆盖分支怎么表达 两个接口、字段字典 带状态标记的表 把查询失败当成无覆盖
三者共同 任何蛋白 该蛋白在 PDB 有没有可对齐结构 结构可得性 明确的「有」或「没有」 用序列分数冒充结构结论

这张表的第三列是共同门槛。三种角色在第三步之后分岔,但第三步本身谁都不能跳过:结构可得性决定了后面有没有结构语境可谈,而不是「能谈多少」的问题。

附录 E:如果只记五件事

第一件,它的价值在结构视角,不在数据量。 VarSite 把错义变异从「一句话」变成「一组可读的结构语境」。方法是借同源结构、汇总多结构证据,这个思路比它自己的服务寿命更长。

第二件,它的规模数字有明确时点。 论文称截至 2019 年 6 月超过四十四万条。这个数字用于理解它的位置可以,用于描述今天不行。

第三件,它的边界是结构可得性。 只覆盖能映射到 PDB 同源结构的蛋白,只覆盖规范异构体,只覆盖编码区。三条边界叠起来,决定了它不是一个全基因组资源。

第四件,它的主入口已经关闭。 官网返回退役提示。要取同类证据,变异层走 EBI Proteins,结构层走 PDBe,端到端走 ProtVar。

第五件,编号对齐是操作层面的生死线。 UniProt 第 83 位在 PDB 里是第 57 位。任何跳过这一步的分析,结论都不可信。

编辑说明

本篇为百科式词条,写作时遵守数据集的「Wikipedia 语法」:先讲清它要解决的麻烦,再讲构成与规格,再讲怎么取,最后讲质量与边界。

事实核验的时间窗口内,共核实三件事:论文的标题、作者、卷期页与 DOI;论文摘要与全文方法段的规模数字与案例细节;论文给出的原入口当前返回的退役提示。核验未覆盖的包括服务的退役日期与原因、退役后是否有归档、以及四十四万条总数与分项的差额构成——这三项在正文对应位置均已注明。

本篇对「VarSite 与 PDBe 的关系」这一常见说法做了更正:论文给出的入口是 Thornton 组的数据库路径,核实中 PDBe 下的对应路径返回错误而非服务页面,因此正文不以 PDBe 子项目描述它。

代码块中的接口路径按公开文档编写,未附带鉴权示例,因为涉及的接口均为公开只读。版本变更时,端点可能调整,使用前应先做一次连通性检查。


相关数据集导航

以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:

  • eggnog — 共享标签:基因组学与多组学 / 变异与注释 / 蛋白质组学
  • vdjdb — 共享标签:基因组学与多组学 / 变异与注释 / 蛋白质组学
  • imgt — 共享标签:基因组学与多组学 / 变异与注释 / 蛋白质组学
  • dbcan-hgm — 共享标签:基因组学与多组学 / 变异与注释 / 蛋白质组学
  • jpostdb — 共享标签:基因组学与多组学 / 变异与注释 / 蛋白质组学
  • proteingym — 共享标签:基因组学与多组学 / 变异与注释 / 蛋白质组学
  • pfam — 共享标签:基因组学与多组学 / 变异与注释 / 蛋白质组学
  • interpro — 共享标签:基因组学与多组学 / 变异与注释 / 蛋白质组学
  • cath — 共享标签:基因组学与多组学 / 变异与注释 / 蛋白质组学
  • igvf-catalog — 共享标签:基因组学与多组学 / 变异与注释

导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

返回 AI-Ready 数据集