ipsae について
ipSAEは、AlphaFold2、AlphaFold3、Boltz1が予測したタンパク質複合体を評価するPythonツールです。チェーンペアと残基単位の指標を出力し、結合タンパク質の設計評価に使えます。
主な機能
- 01予測タンパク質界面のスコアリング
- 02AlphaFold2、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(interprotein Score from Aligned Errors)は、AlphaFold2、AlphaFold3、Boltz1で予測されたタンパク質間相互作用をランキングするためのスコアリング関数です。ipTMは無秩序領域や付属領域にまたがって界面の信頼度を希釈してしまいますが、ipSAEは真の複合体と誤予測された複合体を、より確実に区別します。別のバインダーのメタ解析(Overath et al. 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 |
出力形式
2つの出力ファイルが生成されます。
鎖ペアのスコア(_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)→ 実験的検証。