2. 蛋白质结构比较的基础概念:RMSD、全局比对与局部比对

聊蛋白质结构比较,有几个基础概念绕不开。我这些年做结构预测评估,发现很多人一上来就盯着TM-score,结果连 RMSD 怎么算的、比对策略选了啥都没搞清楚。嗯,这就像写代码不看数据手册直接跑模型——迟早翻车。

所以我们先把地基打牢。这一章我会把 RMSD、全局比对和局部比对这三个东西拆开讲,顺便说说我踩过的坑。


2.1 均方根偏差(RMSD)

RMSD,全称 Root Mean Square Deviation。说白了就是计算两个结构对应原子坐标差异的均方根。它是结构比较里最老牌、最直观的指标之一。

数学公式长这样:

RMSD = sqrt( (1/N) * Σ ||xi - yi||² )

其中 xi 和 yi 分别是实验结构和预测结构中第 i 个对应原子的坐标向量,N 是参与比较的原子对数。

我个人习惯在比较同源模型或对接构象时先用 RMSD 扫一遍。它很敏感,哪怕只有一小段 loop 飘出去了,RMSD 就会猛涨。我曾经在一个酶设计项目上吃过亏——预测结构核心折叠很好,就一个末端环区偏了 3 Å,RMSD 直接飙到 4.8 Å,差点被我误判成坏模型。

注意了:RMSD 极度依赖预先的刚性叠加(superposition)。叠加方式不同,算出来的 RMSD 可能差一倍。在实际项目中,我建议始终使用相同的叠加参考(如 Cα 主链或全部骨架原子),否则跨样本比较没有意义。

RMSD 有哪些毛病?

  • 对局部偏差敏感:一个 loop 歪了,整体值就失控。
  • 不归一化:你不能说 RMSD=2 Å 就一定好,因为小蛋白天然比大蛋白更难算低。
  • 要求结构长度一致:两个结构残基数不同时,RMSD 根本没法直接比较。

既然是课后章节,我写个 Python 小例子吧。

import numpy as np

def compute_rmsd(coords_a, coords_b):
    """
    计算两组原子坐标的 RMSD。
    coords_a, coords_b: Nx3 的 numpy 数组
    """
    assert coords_a.shape == coords_b.shape
    diff = coords_a - coords_b
    rmsd = np.sqrt(np.mean(np.sum(diff**2, axis=1)))
    return rmsd

# 虚拟坐标
a = np.array([[0.0, 0.0, 0.0], [1.0, 0.0, 0.0]])
b = np.array([[1.0, 0.0, 0.0], [2.0, 0.0, 0.0]])
print(f"RMSD = {compute_rmsd(a, b):.4f} Å")

输出是:

RMSD = 1.0000 Å

别小看这个例子。我在教学时发现,很多人以为 RMSD 一定要用专业软件算,其实自己写核心逻辑也就十来行。


2.2 全局比对

全局比对(Global Alignment)追求的是 完整结构整体对齐。它假设两个结构整体上是可比的,然后找一个刚性变换(旋转 + 平移),让它们尽可能重叠。

典型算法:Kabsch 算法、四元数方法。

特点:

  • 所有残基一视同仁,都参与优化。
  • 对结构域重排、大尺度构象变化不友好。
  • 计算速度快,适合做初步筛查。

我记得之前有个项目,需要对比一系列突变体的主链构象。全局比对很高效,直接就能看出哪个突变导致整体折叠变了。但如果突变只影响一个活性位点 loop,全局比对会把其他部分的好结果给“稀释”掉。

我的经验:当你比较的两个蛋白属于同一家族、整体折叠高度相似时,用全局比对+RMSD就很合适。如果其中有一个是大号结构域插入或者末端延长,全局比对就不太灵了。

2.3 局部比对

局部比对(Local Alignment)不要求整体对齐。它只找出两个结构中最相似的 子结构,然后基于这些子结构做比对。TM-score、GDT_TS 这些指标本质上都是局部比对的产物。

典型算法:LGA (Local Global Alignment)、TM-score 的旋转搜索、以及各种 seed-extension 方法。

为什么需要局部比对?

你想想看,如果两个蛋白质大小差很多,比如一个 100 残基,另一个 300 残基。全局比对会把全部 300 残基都算进去,结果大蛋白把 RMSD 拉得奇高。但实际上它们共享的核心折叠可能非常完美。局部比对就能抓住这个核心,把多出来的部分直接忽略掉。

局部比对 vs 全局比对

维度 全局比对 局部比对
对齐范围 所有残基 最相似的子集
对长度差异 敏感 不敏感
对构象变化 刚性限制 可适应局部变化
常用指标 RMSD TM-score, GDT
典型应用场景 同源建模、晶体学刚体对接 CASP 评估、结构搜索

核心总结:全局比对适合结构很相似的情况,局部比对适合结构差异大或长度不匹配的情况。TM-score 走的是一条中间路线——它做了一个全局式的、但基于局部相似性加权的比较。这也是它比 RMSD 鲁棒的原因。


2.4 从 RMSD 到 TM-score 的演进 —— 一张图看懂

讲了这么多理论,我把它画成一张 SVG 结构图,方便你一眼看清整个知识体系。

蛋白质结构比较:核心概念与指标演进 蛋白质结构比较 全局比对 (Global) 局部比对 (Local) 混合/加权策略 RMSD GDT_TS TM-score RMSD 缺点 • 对局部偏差敏感 • 不归一化 • 要求等长结构 局部比对优势 • 容忍长度差异 • 捕捉核心折叠 • 适合结构搜索 TM-score 特点 • 长度归一化 • 残基距离加权 • (0,1] 分值易解释

2.5 小结:怎么选?

这一章我尽量把概念讲得直白。你可能会问:“那我到底用哪个?”

我的建议是:别只用 RMSD。尤其是在结构长度差异大时,RMSD 会骗人。我自己在 CASP 评估中更习惯先用 TM-score 做全局排序,再用 RMSD 做局部精度的定量参考。两种视角结合,比只盯一个指标安全得多。

必记要点:
  • RMSD 没有归一化,跨蛋白比较时要格外小心。
  • 全局比对不适合长度不匹配或大尺度域重排的场景。
  • 局部比对是 TM-score、GDT 等现代评估指标的数学基础。
  • 选择比对策略 = 选择你对“相似性”的定义。