pLDDT和PAE怎么读?AlphaFold置信度判读指南
2026/9/11 22:54:31 网站建设 项目流程

pLDDT和PAE怎么读?AlphaFold置信度判读指南

【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold

AlphaFold 模型跑完、彩色的结构图也渲染出来了。可面对pLDDT(predicted Local Distance Difference Test)曲线和PAE(Predicted Aligned Error)矩阵,哪段能直接拿去做分子对接、哪段只是看着像?下面把这两个数从模型输出的 logits 一路算到判读结论。

先建立直觉:一个"精度圈"的类比

GPS 报"定位精度 ±5 米",地图上给你画个模糊圈。AlphaFold 的置信度指标类似:pLDDT 就是这个精度圈,一个残基一个圈,只回答"这个残基本身定位得准不准";PAE 回答的是"对齐之后,这两个残基之间的相对位置差多少"。一个是单点精度,一个是两点关系的稳定性——后者决定图上两个结构域靠在一起这件事能不能信。

指标一 pLDDT:每个残基可信吗

pLDDT回答什么问题

一句话:模型对第 i 个残基的局部骨架几何(CA 原子位置)有多大把握。取值 0–100,粒度是逐残基、纯局部——它只关心这一小块对不对,不关心整条链别的部分在哪。

pLDDT怎么从logits算出来

模型并不直接输出一个分数。PredictedLDDTHead对每个残基输出 50 个 logits(见 modules.py,num_bins: 50配在 config.py),对应把 (0, 1] 的 LDDT 区间均匀切成 50 个桶。转成概率后取期望,就是 confidence.py 里这 7 行:

def compute_plddt(logits: np.ndarray) -> np.ndarray: num_bins = logits.shape[-1] bin_width = 1.0 / num_bins bin_centers = np.arange(start=0.5 * bin_width, stop=1.0, step=bin_width) probs = scipy.special.softmax(logits, axis=-1) predicted_lddt_ca = np.sum(probs * bin_centers[None, :], axis=-1) return predicted_lddt_ca * 100

注意桶中心是 0.01、0.03、…、0.99——所以 pLDDT 取不到 100,最高也就 99 附近。概率分布越尖、越偏向高分桶,分数越高;分布摊平了(模型在猜),分数就掉到中间。

pLDDT分数判读对照表

分档与代码里_confidence_category的 D/L/M/H 一一对应:

区间等级含义你能做什么
<50D大概率无序别当结构用
50–70L拓扑或可只看大方向
70–90M骨架可靠二级结构层面分析
≥90H原子级精度直接做对接、定点突变

pLDDT告诉不了你的事

  • 分数高 ≠ 在复合物里的绝对位置对。局部指标不评判"这段和另一段靠得对不对",多域蛋白的域间朝向它完全没意见。
  • 分数低 ≠ 预测错了。天然无序区(IDR)就该低,这是真实特征而非模型缺陷。

指标二 PAE:两个残基的相对关系稳不稳

PAE回答什么问题

PAE 是一个 N×N 矩阵,PAE_ij 表示:把预测骨架和真实骨架做最优刚性对齐后,残基 i 与 j 之间的距离还差多少 Å。它测的是关系——对角区块内是域内置信度,非对角区块是域间/链间关系的置信度。模型输出 64 个误差桶(桶宽 0.5Å,覆盖到 31Å,最后一桶兜底到 +∞),所以矩阵值域约为 0–31.5。

PAE的计算链路

PredictedAlignedErrorHead吃 pair 表示([N_res, N_res, 128]),直接线性映射出 [N_res, N_res, 64] 的 logits,同时给出桶边界breaks = linspace(0, 31, 63)。后处理同样是 softmax 取期望:

def compute_predicted_aligned_error(logits, breaks): aligned_confidence_probs = scipy.special.softmax(logits, axis=-1) predicted_aligned_error, max_predicted_aligned_error = ( _calculate_expected_aligned_error( alignment_confidence_breaks=breaks, aligned_distance_error_probs=aligned_confidence_probs)) return { 'aligned_confidence_probs': aligned_confidence_probs, 'predicted_aligned_error': predicted_aligned_error, 'max_predicted_aligned_error': max_predicted_aligned_error, }

内部的_calculate_expected_aligned_error核心就是一行np.sum(probs * bin_centers, axis=-1),桶中心由_calculate_bin_centers从桶边界加半步得到,末尾补一个兜底桶。

PAE矩阵判读对照表

矩阵模式数值含义你能做什么
对角区块低<2域内结构可靠直接用
非对角区块低<2域间关系可靠敢用这个复合物
非对角区块高>8相对朝向不定按单域拆开分析

PAE告诉不了你的事

  • 它基于骨架对齐,反映的是相对距离误差,绝对坐标、侧链精度都不在讨论范围。
  • 对单链单域蛋白,PAE 信息量很小,几乎全矩阵都是低值,没什么可读的。

两个指标打架时怎么判

信号一致:快速判定

pLDDT≥90 且 PAE 对角区块 <2Å → 原子级,直接进下游。两者都低 → 这段大概率是柔性/无序,当无序处理。一致时 30 秒内能下结论。

信号矛盾:典型冲突场景

场景pLDDTPAE最可能原因下一步动作
本地自信,关系不稳非对角区块高多域蛋白域间朝向不定切分结构域,逐域分析
分数低,关系却稳全矩阵低天然无序区无序预测工具复核
边界骤变某残基突降出现方块分界结构域边界沿分界切段建模型

决策流程

端到端工作流:一个函数走完判读

import numpy as np from alphafold.common import confidence def interpret_confidence(prediction_result): # Step 1: 逐残基pLDDT (0-100) plddt = confidence.compute_plddt( prediction_result['predicted_lddt']['logits']) # Step 2: PAE矩阵 (Å, N_res x N_res) pae = confidence.compute_predicted_aligned_error( logits=prediction_result['predicted_aligned_error']['logits'], breaks=prediction_result['predicted_aligned_error']['breaks']) # Step 3: 全局分: 单体=均值, 多聚体=0.8*iPTM+0.2*pTM ranking = prediction_result['ranking_confidence'] # Step 4: 低置信残基 (pLDDT<70) low_mask = plddt < 70 # Step 5: 非对角PAE均值, 排除自对角 off_diag = pae[np.triu_indices(len(pae), k=2)] return { 'mean_plddt': float(np.mean(plddt)), 'ranking_confidence': float(ranking), 'low_plddt_residues': np.where(low_mask)[0] + 1, 'mean_off_diag_pae': float(np.mean(off_diag)), }

人眼解读顺序:

  1. 先看全局:ranking_confidence和 pLDDT 均值,定基调
  2. 再看曲线:标出 <70 的段,判断是连续还是零散
  3. 然后看矩阵:非对角区块和对角区块比,找高值方块
  4. 交叉验证:低 pLDDT 段若 PAE 也低,指向无序;PAE 高,指向关系不确定
  5. 回结构复核:unrelaxed PDB 的 B-factor 列就是 pLDDT(见 run_alphafold.py),低分残基逐一眼看

底层机制速览

两个预测头各吃一份表示。pLDDT 头从单链表示structure_module走 LayerNorm + 两层 ReLU 线性层,输出 50 桶 logits;PAE 头直接从 pair 表示线性映射出 64 桶 logits。一个看"点",一个看"点对",输入源不同,这是两个指标视角分叉的根源。

分数 = 概率分布的期望值。两个指标共享同一套数学:logits 过 softmax 变成分桶概率,再乘桶中心加权求和。

$$\mathrm{pLDDT}i = 100 \sum{k=1}^{50} p_{ik}, c_k$$

  • $p_{ik}$:残基 i 的 LDDT 落在第 k 个桶的概率(softmax 输出)
  • $c_k$:第 k 个桶的中心值,0.01 到 0.99 等距排列
  • $k$:桶编号,共 50 个桶
  • 乘 100:把 (0, 1) 的期望值缩放到 0–100 刻度

PAE 同理,只是桶中心和数量换成 0.5Å 宽度的 64 个误差桶。推论:分数本质是"模型自我评估的概率加权平均",分布摊平时分数落在中间值,所以 50 附近的 pLDDT 往往就是"模型在猜"。

实战FAQ

你看到的现象最可能的原因怎么处理
🟠 整条 pLDDT<50,pTM 很低MSA 太薄,同源序列近零换/加 MSA 数据库重跑;仍低则标记为低可信结果
🟡 N端/C端低、中部高末端天然柔性别删末端,先查无序预测工具确认
🟡 局部 pLDDT 骤降结构域边界或长 loop按域切段;对照 PAE 方块验证边界位置
🔵 PAE 非对角整体偏高多域/多链相对朝向不确定换多聚体模型;下游按单域单独处理
🔵 pLDDT 高但结构明显别扭MSA 里有强模板,模型过度自信人工核查 MSA 覆盖度与模板质量

速查清单

  • pLDDT≥90 且 PAE 对角块 <2Å → 原子级
  • pLDDT<50 先查无序,别急着扔
  • PAE 非对角块高 → 域/链相对朝向不可信
  • 单体排名看 pLDDT 均值,多聚体看 iPTM
  • unrelaxed PDB 的 B-factor 列就是 pLDDT
  • 50 附近的分数 = 概率摊平 = 模型在猜

【免费下载链接】alphafoldOpen source code for AlphaFold 2.项目地址: https://gitcode.com/GitHub_Trending/al/alphafold

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询