ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

RMSD 与 lDDT 结构比较指南:手上有 5 个预测模型,怎么挑出最优

RMSD 与 lDDT 结构比较指南:手上有 5 个预测模型,怎么挑出最优 RMSD 与 lDDT 结构比较指南手上有 5 个预测模型怎么挑出最优【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold跑完 AlphaFold 常输出多个候选模型。如何量化判断哪个离实验结构更近本文用三个问题回答“RMSD 与 lDDT 选谁”也讲没有参考结构时的质量判断。适合构建评估流水线的开发者。第一个问题有没有实验参考结构选指标前先回答一个分岔口你手上有没有这条蛋白的实验结构PDB 或 mmCIF它把所有指标劈成两个阵营——有参考的做“比较”没参考的做“自评”。“有参考”一支是本文主线“没参考”一支放在后面单独讲。RMSD 计算步骤质心、Kabsch 对齐、再算数RMSD均方根偏差一句话解释把两个结构“贴”到最接近之后对应原子的平均偏离距离。关键词是“贴”——必须先找到最优旋转加平移否则一个只是在空间里平移了一下的分子会算出离谱的大数。核心公式$$\mathrm{RMSD}\sqrt{\frac{1}{N}\sum_{i1}^{N}\left|\mathbf{p}_i^{*}-\mathbf{t}_i\right|^2}$$其中 $\mathbf{p}_i^{*}$ 是预测结构第 $i$ 个原子经过最优刚体变换后的坐标$N$ 是参与原子数。最优变换通常用 SVD 解出Kabsch 算法。完整实现不长def ca_rmsd(pred_ca, true_ca): pred_ca / true_ca: [N, 3] 的 Cα 坐标返回 Kabsch 对齐后的 RMSD p pred_ca - pred_ca.mean(axis0) # 1) 质心平移到原点 t true_ca - true_ca.mean(axis0) u, _, vh np.linalg.svd(t.T p) # 2) SVD 解最优旋转 r u vh if np.linalg.det(r) 0: # 3) 剔除反射保证真旋转 u[:, -1] * -1 r u vh return float(np.sqrt(np.mean(np.sum((p r - t) ** 2, axis1))))三个容易踩的点数字要配原子集一起报。惯例只用 CαAlphaFold 的 37 原子坐标数组里 Cα 在索引 1排序见 alphafold/common/residue_constants.py换成全原子数值量级就变了跨报告不可比。长度不匹配是前提问题残基数不同时先做序列比对建立残基对应再喂坐标不要直接硬比。对离群点敏感一段 loop 偏了 10 Å 就能把全局 RMSD 拉高而蛋白质其余部分可能完美。这就是“RMSD 看着不差、肉眼却不对劲”的根源之一——它把一切平均掉了。一个有意思的细节AlphaFold 仓库里 RMSD 出现在 relax 流程 alphafold/relax/relax.py那里算的是力场最小化前后结构的“漂移量”而且不做任何对齐——它回答的是“力场把结构拉动了多少”不是“与参考多像”。所以别看见 RMSD 三个字就代入“与参考的相似度”数字的含义由使用场景定义。同一对结构为什么算出两个 RMSD看到同对结构的两个数对不上按顺序核对Cα 还是全原子Kabsch 对齐还是未对齐掩掉了哪段残基三件事对齐之后数字就对上了。lDDT 选型建议免对齐的局部评分RMSD 是“全分子一个数”lDDT局部距离差异测试是“逐残基打分”。思路一句话不看绝对坐标只看“每两个点之间的距离”——预测结构的距离矩阵若和实验的相近说明局部折叠是对的。由此白拿两个好处免对齐距离对平移旋转天然不变且天然可拆到残基。实现在 alphafold/model/lddt.py评分规则非常直白取实验结构里距离小于 cutoff默认 15 Å的原子对比较预测与实验的距离差按 0.5 / 1 / 2 / 4 Å 四档计分再平均$$\mathrm{lDDT}\frac{1}{|\mathcal{P}|}\sum_{(i,j)\in\mathcal{P}}\frac{1}{4}\Big[\mathbb{1}\big(|\Delta d_{ij}|0.5\big)\mathbb{1}\big(|\Delta d_{ij}|1\big)\mathbb{1}\big(|\Delta d_{ij}|2\big)\mathbb{1}\big(|\Delta d_{ij}|4\big)\Big]$$其中 $\mathcal{P}$ 是待评分点对集合$\Delta d_{ij}$ 为预测与实验的距离差。每档记 0.25所以得分落在 0–1。实际使用只需要两个[1, N, 3]坐标数组Cα 即可和一个掩码import jax.numpy as jnp from alphafold.model.lddt import lddt pred jnp.asarray(pred_ca)[None, ...] # [1, N, 3] true jnp.asarray(true_ca)[None, ...] # [1, N, 3] mask jnp.ones((1, N, 1)) # 1 表示该原子存在 per_res lddt(pred, true, mask, cutoff15., per_residueTrue) overall lddt(pred, true, mask, cutoff15., per_residueFalse)分值的非线性一眼看清官方测试 alphafold/model/lddt_test.py 里的几个用例值得背下来距离差约 1 Å 时得分 0.75约 2 Å 时 0.5约 4 Å 时 0.25达到 5 Å 直接归零——误差翻倍得分不是线性衰减而是在档位边界上跳变。两个容易被忽略的实现细节这是“近似 lDDT”。源码 docstring 明说省略了原始 lDDT 的物理可行性校正项键长违反等所以数字适合同口径相对比较别拿它和别人工具输出的绝对 lDDT 对表。没有可评点对的残基按满分算某个残基 15 Å 内若没有成对原子它的分数是 1。序列里舒展、无序区域越多全局分被“抬”得越明显读数时要回看逐残基输出。复杂度 O(N²)两张距离矩阵。几百残基的单体无压力长链多聚体注意显存。还有一个身份值得知道在 AlphaFold 里lddt()不是评估工具而是训练信号——alphafold/model/modules.py 中置信度头以逐残基 Cα lDDT做了 stop_gradient为回归目标。因此 pLDDT 可以理解为“模型提前预测自己会有多接近参考的 lDDT”。无参考结构pLDDT 与 ptM 判断预测质量绝大多数蛋白没有实验结构只能信模型的自评分。单链看pLDDTalphafold/common/confidence.py 的compute_plddt对每个残基输出 0–100 的置信度仓库同时给出四档分类区间档位常见解读90–100H局部结构大概率可靠70–90M可用建议交叉验证50–70L低置信50D很可能无序或高柔性置信不等于正确pLDDT 是局部置信高分说明局部距离网络大概率对不保证全局摆放对——某个结构域方向放错时域内每个残基的 pLDDT 照样很高。所以多聚体要看ptM / ipTMalphafold/common/confidence.py 的predicted_tm_score给出整体 TM 分与仅针对界面的 ipTM后者专门回答“界面摆得对不对”预测结果里也带 ptm / iptm 字段见 run_alphafold.py 的多聚体分支。常见坑RMSD 与 lDDT 打架时怎么看两个指标并排放一张表当选型速查卡用对比项RMSDlDDT对齐要求必须 Kabsch否则数字无意义免对齐距离不变性输出形态单个全局数全局 逐残基数值范围Å越小越好0–1越大越好最敏感于全局摆放错、局部离群点局部距离漂移计算开销O(N)O(N²) 距离矩阵典型用途整体折叠比较、聚类、漂移监控局部质量、逐残基定位两种典型的“打架”场景RMSD 大、逐残基 lDDT 普遍高多半是全局摆放错位域朝向、链配对局部折叠其实没错。先修对齐再下结论。RMSD 小、逐残基 lDDT 局部掉坑核心叠得好一段 loop 或尾部构象不同全局数被“平均”掉了。此时逐残基输出是唯一能帮你定位的证据。所以默认报告姿势全局数RMSD 或 lDDT 逐残基 lDDT前者下结论后者找问题。长蛋白建议先按结构域分段看一眼——600 残基的全局单数字信息量很有限。快速上手清单 ✅数字必须配“原子集 对齐方式”一起报“Cα、Kabsch 对齐”或“未对齐”否则数字不可复现。✅有参考结构Cα RMSD 下全局结论逐残基 lDDT 定位局部问题两个一起报。✅无参考结构单链看 pLDDTD/L/M/H多聚体界面看 ipTM别用 pLDDT 代替整体判断。⚠️用 lDDT 前检查掩码与 cutoff缺失原子靠 mask 排除无成对残基按满分计会抬高全局分。怀疑预测有坑时先看逐残基曲线多数局部错误在逐残基 lDDT 上一目了然全局数经常把真相抹平。延伸阅读alphafold/model/lddt_test.py 里的官方测试用例是最紧凑的 lDDT 文档每个用例对应一个距离差场景值得逐条读一遍。【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表