用途
ipSAE(interprotein Score from Aligned Errors,基于对齐误差的蛋白间评分)是一个评分函数,用于对 AlphaFold2、AlphaFold3 和 Boltz1 预测的蛋白质-蛋白质相互作用进行排序。它比 ipTM 更可靠地区分真实与虚假的预测复合物,因为 ipTM 会把界面置信度稀释到无序或附属区域。在 Overath 等人 2025 年的 binder 元分析中,AF3 ipSAE_min 相比 RFdiffusion 流程常用的 ipAE 评分,平均精度提升了 1.4 倍。
相关论文:Dunbrack, "Rēs ipSAE loquuntur: What's wrong with AlphaFold's ipTM score and how to fix it", bioRxiv 2025.02.10.637595
主要能力
- 对 AlphaFold2、AlphaFold3、Boltz1 预测的蛋白复合物进行评分与排序。
- 输出两类结果文件:链对评分(_chains.csv)和残基级评分(_residues.csv)。
- 链对评分包含 ipSAE_min、pDockQ、pDockQ2、LIS、n_contacts、interface_dist 等指标。
- 残基级评分包含 chain、resnum、pSAE、pLDDT。
- 支持批量处理多个设计。
使用方式
前置要求
| 要求 | 最低 | 推荐 |
|---|---|---|
| Python | 3.8+ | 3.10 |
| NumPy | 1.20+ | 最新 |
| RAM | 8GB | 16GB |
安装
git clone https://github.com/DunbrackLab/IPSAE.git
cd IPSAE
pip install numpy
运行命令
AlphaFold2:
python ipsae.py scores_rank_001.json unrelaxed_rank_001.pdb 15 15
AlphaFold3:
python ipsae.py fold_model_full_data_0.json fold_model_0.cif 10 10
Boltz1:
python ipsae.py pae_model_0.npz model_0.cif 10 10
关键参数
| 参数 | 说明 | 推荐 |
|---|---|---|
| PAE 文件 | JSON(AF2/AF3)或 NPZ(Boltz) | 与预测器匹配 |
| 结构文件 | PDB 或 CIF 结构 | 与 PAE 匹配 |
| PAE 截断 | 接触阈值 | 10-15 |
| 距离截断 | 最大 CA-CA 距离(Å) | 10-15 |
输出格式
链对评分(_chains.csv)示例:
chain_A,chain_B,ipSAE_min,pDockQ,pDockQ2,LIS,n_contacts,interface_dist
A,B,0.72,0.65,0.58,0.45,42,8.5
残基级评分(_residues.csv)示例:
chain,resnum,pSAE,pLDDT
A,45,0.85,92.3
A,67,0.78,88.1
示例输出
成功运行:
$ python ipsae.py scores_rank_001.json design_0.pdb 10 10
Processing design_0...
Found 2 chains: A, B
Computing ipSAE scores...
Results written to:
design_0_chains.csv
design_0_residues.csv
Summary:
ipSAE_min: 0.72
pDockQ: 0.65
LIS: 0.45
Interface contacts: 42
良好输出的特征:
- ipSAE_min > 0.61(主要筛选条件)
- pDockQ > 0.5(辅助指标)
- 界面接触数量合理(20-100)
决策树
Should I use ipSAE?
│
├─ What are you ranking?
│ ├─ Designed binders → ipSAE ✓
│ ├─ Natural complexes → ipTM is fine
│ └─ Single proteins → Not applicable
│
├─ What predictor did you use?
│ ├─ AlphaFold2 → ipSAE ✓
│ ├─ AlphaFold3 → ipSAE ✓
│ ├─ Boltz1 → ipSAE ✓
│ ├─ Chai → ipSAE (use PAE output)
│ └─ ESMFold → Not applicable (no PAE)
│
└─ Why ipSAE over ipTM?
├─ Different length constructs → ipSAE ✓
├─ Designs with disordered regions → ipSAE ✓
└─ Standard complexes → Either works
推荐阈值
| 指标 | 标准 | 严格 | 用途 |
|---|---|---|---|
| ipSAE_min | > 0.61 | > 0.70 | 主要筛选 |
| LIS | > 0.35 | > 0.45 | 界面质量 |
| pDockQ | > 0.5 | > 0.6 | 辅助 |
批量处理
import subprocess
import os
from pathlib import Path
def score_designs(pae_dir, struct_dir, output_dir):
"""Score all designs in a directory."""
Path(output_dir).mkdir(exist_ok=True)
for pae_file in Path(pae_dir).glob("*_scores*.json"):
name = pae_file.stem.replace("_scores_rank_001", "")
struct_file = Path(struct_dir) / f"{name}.pdb"
if struct_file.exists():
subprocess.run([
"python", "ipsae.py",
str(pae_file),
str(struct_file),
"10", "10"
])
验证
ls *_chains.csv | wc -l # Should match number of predictions
适用场景
- 对 binder 设计进行实验测试排序。
- 使用 AlphaFold2、AlphaFold3、Boltz1 预测的复合物评分。
- 不同长度构建体、含无序区域的设计,相比 ipTM 更适合使用 ipSAE。
- 自然复合物使用 ipTM 即可;单蛋白不适用。
- ESMFold 不适用(无 PAE)。
限制与故障排查
- 需要 PAE 输出,ESMFold 无 PAE 故不适用。
- 良好设计得分偏低:检查 PAE/距离截断。
- 缺少输出:确认 PAE 文件格式与预测器匹配。
- 得分不一致:对所有设计使用相同截断。
错误解释:
| 错误 | 原因 | 修复 |
|---|---|---|
| KeyError: 'pae' | PAE 格式错误 | 检查是 AF2/AF3/Boltz 格式 |
| FileNotFoundError | 未找到结构 | 验证文件路径 |
| ValueError: no contacts | 未检测到界面 | 检查链 ID,减小截断 |
下一步:选择顶级设计(ipSAE_min > 0.61)→ 实验验证。