3. TM-score 的定义:数学公式与直观意义

咱们先把 TM-score 这个事儿说清楚。它到底是怎么算的?为什么能成为结构比对领域的黄金标准?

我个人觉得,搞懂一个指标最好的方式,就是先看它的公式,再琢磨它背后的直觉。光看公式容易晕,光看解释又容易飘。咱们结合着来。

3.1 核心定义

TM-score 的全称是 Template Modeling score。它衡量的是两个蛋白质结构之间的相似程度。

公式长这样:

TM-score = max [ 1/L_target * Σ ( 1 / (1 + (d_i / d0)^2) ) ]

别急,我一个个拆开讲。这里的每个符号我都跟你说明白。

符号 含义 你需要注意的点
L_target 目标蛋白的序列长度(残基数) 这是归一化的分母,非常重要
d_i 第 i 对对齐残基的 Cα 原子距离(单位 Å) 越小越好,越接近 0 说明结构越像
d0 缩放因子,跟目标长度有关 它是自适应计算的,咱们下面讲
max 在所有可能的旋转/平移中取最大值 这其实是结构对齐的过程

3.2 d0 是个什么角色?

你可能注意到了,公式里有个 d0。它是我觉得这个公式里最精妙的地方。

它不是一个固定值。它根据目标蛋白的长度计算:

d0 = 1.24 * cube_root(L_target - 15) - 1.8

为什么要这么干?

你想,两个一样的小蛋白,残基距离波动稍微大一点,可能就被判定为不相似了。但大蛋白不一样,大蛋白本身就有柔性,结构波动允许更大一些。这个 d0 就像个自适应尺子,自动调整容忍度。

我自己的经验:我在项目中见过很多次,新手看到 d0 会困惑,觉得它是个黑盒子。其实你把它想象成「长度相关的容忍度阈值」就好理解了。蛋白越长,这个阈值就越大,越"大方"。

3.3 指数项的意义

咱们再看公式里这个关键项:

1 / (1 + (d_i / d0)^2)

这个函数的形状很有意思。当 d_i 等于 0 时,得分为 1;当 d_i 等于 d0 时,得分为 0.5;当 d_i 越来越大时,得分趋近于 0。

它不像 RMSD 那样线性惩罚。它是个 鲁棒的、非线性的打分函数。

  • 小距离敏感,大距离不惩罚过重:两对残基差 1Å 和差 10Å,RMSD 会直接线性放大,但这个函数会压制大幅偏离的影响。
  • 抗噪声:如果有一两个残基对比得很差(比如 loop 区)、不会把整个打分拉垮。
  • 长度归一化:除以 L_target 后,分数不受蛋白长度影响,可以在不同大小蛋白之间公平比较。
一句话总结这个公式的直觉:
TM-score 看的不是绝对误差,而是匹配的"密度"。只要大部分残基对距离在 d0 附近,分数就会很高。跑偏的几个残基,不会拖后腿。

3.4 跟 RMSD 的对比(为什么会更好)

我刚开始做结构比对时,也只用 RMSD。后来在实际项目中吃过亏——有一次两个蛋白整体构象挺像,但因为一段 loop 区对歪了,RMSD 直接飙到 8Å,判定为不相似。但实际上,两者的核心折叠几乎一样。

这就是 TM-score 的意义:

比较维度 RMSD TM-score
长度依赖 强烈:越长越容易大 归一化,不依赖
大偏离影响 线性放大 抑制
取值范围 0 ~ ∞ 0 ~ 1
跨蛋白可比性 差 好

你想想看:RMSD 适合评估局部精细结构(比如催化位点附近),但 TM-score 更适合评估整个折叠拓扑的相似性。

3.5 分数区间怎么看?

在实际工作中,我习惯这样解读 TM-score:

  • TM > 0.5:两个蛋白大概率属于同一折叠(fold)。这是最常用的阈值。
  • 0.4 < TM ≤ 0.5:可能存在一定的折叠相似性,但不能确定。需要结合其他证据。
  • TM ≤ 0.3:大概率是不同折叠。结构差异很大。
  • TM = 1.0:完美重合。通常是自己比自己对。
我曾经掉过的坑:有一段时间我直接用 TM-score < 0.5 当作「不同折叠」的唯一证据。后来发现查了几个结构后,0.47 和 0.51 其实处于模糊区,贸然下结论会翻车。建议结合作图、其他比对工具交叉验证。

3.6 核心知识结构图

我把 TM-score 的定义和计算脉络画成了一张图,方便你一次性记住整体逻辑:

TM-score 定义与计算结构图 输入:两个蛋白结构 + 对齐策略 核心公式 TM-score = max [ 1/L * Σ f(d_i, d0) ] f(d_i, d0) = 1 / ( 1 + ( d_i / d0 )² ) L_target:长度归一化,跨蛋白可比 d_i:Cα距离,反映局部精度 d0:自适应阈值,压制离群点 输出 [0, 1] 分数 + 对齐结构 一句话解释: TM-score 衡量的是“对齐后有多少残基对非常接近”, 大偏差会被公式自动抑制,不会拖垮整体分数。

3.7 计算流程简述

实际算的时候,不是直接套公式就完事了。我总结成三步走:

  1. 结构对齐:在旋转平移空间里搜索,找到一个最优叠合姿势,让上面的 TM-score 公式算出来最大。
  2. 计算逐残基贡献:对每个对齐的残基对,用公式算出它对总分的贡献值。
  3. 归一化输出:全部的贡献求和,再除以 L_target,得到最终分数。

第二步里用的那个平方倒数公式,就是前面讲的 1/(1+(d_i/d0)²)。这个形状让绝大多残基的贡献集中在 [0.5, 1] 这个区间,少数跑远的残基贡献接近于 0,但不会被负向惩罚。

3.8 一段加分的小话

我这么多年看下来,TM-score 最大的价值不在于它多精确,而在于它够公平。它能在不同大小、不同质量的蛋白结构之间做公平比较。这对于粗粒度的折叠识别、进化分析、模型评估来说,太重要了。

我记得有一次评估 alphaFold 预测的质量,面对一堆大小不一、分辨率各异的蛋白,用 RMSD 根本没法横向对比。换成 TM-score 后,全自动出一张表,一眼就看出哪些区域预测得好,哪些区域拉胯了。那种感觉,很爽。