关于 ipsae
ipSAE 是用于评估 AlphaFold2、AlphaFold3 和 Boltz1 预测的蛋白质复合物的 Python 评分工具。它提供链对和残基级指标,可用于评估结合蛋白设计。
主要功能
- 01评估预测的蛋白质界面
- 02支持 AlphaFold2、AlphaFold3 和 Boltz1
- 03导出链对评分 CSV
- 04导出残基级评分 CSV
适用场景
- 01为设计的蛋白质结合物排序
- 02按界面质量筛选预测复合物
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ adaptyvbio/ protein-design-skills --skill ipsae安装后在 Claude Code 中输入/ipsae确认已加载。
详细介绍
ipSAE 结合体排名
前提条件
| 要求 | 最低配置 | 推荐配置 |
|---|---|---|
| Python | 3.8+ | 3.10 |
| NumPy | 1.20+ | 最新版本 |
| RAM | 8GB | 16GB |
概述
ipSAE(基于对齐误差的蛋白质间评分)是一种评分函数,用于对 AlphaFold2、AlphaFold3 和 Boltz1 预测的蛋白质-蛋白质相互作用进行排名。与 ipTM 相比,它能更可靠地区分真实和虚假的预测复合物,因为 ipTM 会将界面置信度分摊到无序区域或辅助区域。在一项独立的结合体荟萃分析中(Overath 等人,2025 年),AF3 ipSAE_min 的平均精确率比 RFdiffusion 流程通常用于筛选的 ipAE 分数高 1.4 倍。
论文:Dunbrack,《Rēs ipSAE loquuntur:AlphaFold 的 ipTM 分数有什么问题,以及如何修正》,bioRxiv 2025.02.10.637595
运行方法
安装
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 距离(A) | 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
故障排查
优质设计的分数偏低:检查 PAE/距离截止值
缺少输出:确认 PAE 文件格式与预测器匹配
分数不一致:对所有设计使用相同的截止值
错误解读
| 错误 | 原因 | 修复方法 |
|---|---|---|
KeyError: 'pae' | PAE 格式错误 | 检查是否为 AF2/AF3/Boltz 格式 |
FileNotFoundError | 未找到结构 | 检查文件路径 |
ValueError: no contacts | 未检测到界面 | 检查链 ID,调低截止值 |
下一步:选择排名靠前的设计(ipSAE_min > 0.61)→ 进行实验验证。
评论
支持 Markdown