
AlphaFold结构比较实战RMSD和lDDT到底该怎么选【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold两个结构叠在一起肉眼看着几乎一样评估分数却差了0.3。问题出在哪蛋白质结构相似度评估不是数字越小越好这么简单。在AlphaFold结构比较中RMSD对应原子的均方根偏差衡量两套坐标差多远是每个人先算的数也是最容易误读的数。它由你选了哪些原子、用什么方式对齐共同决定。为什么不能只看一个数一次模型评审上两个数吵了起来甲预测和实验的骨架RMSD才1.8Å这模型质量不错。 乙同一个模型活性位点里60%的关键残基偏了2Å以上。两边都对。这个数字是全局平均局部几个大错会被几百个正确残基稀释掉反过来处处偏1Å的模型分数比核心区完美、末端拧了的模型还差。说白了平均数表达不了错在哪。所以AlphaFold里是双指标配合RMSD管整体形状lDDTlocal Distance Difference Test局部距离差异测试按局部距离表差多少打分管局部贴合。下面这张CASP14预测图很直观绿色是实验结构蓝色是计算预测底部标的是GDT分数。RMSD坑藏在对齐这一步仓库里这个数字只在一处直接出现alphafold/relax/relax.py中Amber弛豫结束后比较弛豫前后的坐标算偏差写进debug信息看优化把结构挪动多少。注意语境两个结构来自同一条弛豫轨迹同一个坐标系不需要对齐。但拿预测结构比实验结构时情况完全不同。两个结构的原点和朝向毫无关系第一步必须先做叠加superposition把一点云扣到另一点云上。叠加不是可选项它决定数字大小。完整流程就四步pred_ca pred_pos[:, 1, :] # 取Cα37原子表里的第1列 true_ca true_pos[:, 1, :] mask atom_mask[:, 1] # 排除缺失残基 pred_c pred_ca[mask] - pred_ca[mask].mean(0) # 质心移到原点 true_c true_ca[mask] - true_ca[mask].mean(0) R kabsch(pred_c, true_c) # 解最优旋转矩阵 rmsd rms(pred_c R - true_c) # 对应原子差的均方根这段伪代码把从原始坐标到最终数字的管线压缩了。仓库里最简的版本在alphafold/relax/relax.py同坐标系只剩最后一步开根号。对齐分平移和旋转。平移把质心挪到原点旋转用Kabsch算法本质上就是求一个最优旋转矩阵让两个点云重合得最好解出来。对齐完算数字就很简单$$\sqrt{\frac{1}{N}\sum_{i1}^{N}\left|x_i - x_i\right|^2}$$白话翻译每对对应原子的差先平方、求和、除以N、开根号就是平均每个原子挪动了多远。x_i和x_i是对齐后两个结构里同一个残基的坐标N是参与计算的原子数。为什么单独拎出Cα完整原子表有37列见alphafold/common/residue_constants.py这里定义了标准原子顺序大部分是侧链原子很多残基根本没有。Cα是每个残基都有的原子串起来就是蛋白主链![AlphaFold【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考