protein-qc
タンパク質設計の品質を評価し、結合・発現・構造に関する指標や配列上の問題点を確認、さらに物理化学的性質を計算して、研究に基づいた閾値でデザインを絞り込み、複合的なスコアリングでランキングするSkill。
📜 元の英語説明(参考)
Quality control metrics and filtering thresholds for protein design. Use this skill when: (1) Evaluating design quality for binding, expression, or structure, (2) Setting filtering thresholds for pLDDT, ipTM, PAE, (3) Checking sequence liabilities (cysteines, deamidation, polybasic clusters), (4) Creating multi-stage filtering pipelines, (5) Computing PyRosetta interface metrics (dG, SC, dSASA), (6) Checking biophysical properties (instability, GRAVY, pI), (7) Ranking designs with composite scoring. This skill provides research-backed thresholds from binder design competitions and published benchmarks.
🇯🇵 日本人クリエイター向け解説
タンパク質設計の品質を評価し、結合・発現・構造に関する指標や配列上の問題点を確認、さらに物理化学的性質を計算して、研究に基づいた閾値でデザインを絞り込み、複合的なスコアリングでランキングするSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o protein-qc.zip https://jpskill.com/download/9552.zip && unzip -o protein-qc.zip && rm protein-qc.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/9552.zip -OutFile "$d\protein-qc.zip"; Expand-Archive "$d\protein-qc.zip" -DestinationPath $d -Force; ri "$d\protein-qc.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
protein-qc.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
protein-qcフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
タンパク質設計の品質管理
重要な制限事項
個々のメトリクスは結合に対する予測力が弱い。研究によると:
- 個々のメトリクスの ROC AUC: 0.64-0.66 (ランダムよりわずかに良い)
- メトリクスは事前スクリーニングのフィルターであり、親和性の予測因子ではない
- 意味のあるランキングのためには複合スコアリングが不可欠
これらの閾値は質の悪い設計を除外しますが、結合親和性を予測するものではありません。
QC の構成
QC は目的とレベルによって構成されています。
| 目的 | 何を評価するか | 主要なメトリクス |
|---|---|---|
| 結合 | インターフェースの品質、結合ジオメトリ | ipTM, PAE, SC, dG, dSASA |
| 発現 | 製造可能性、溶解性 | 不安定性、GRAVY、pI、システイン |
| 構造 | フォールドの信頼性、一貫性 | pLDDT, pTM, scRMSD |
各カテゴリには2つのレベルがあります。
- メトリクスレベル: 閾値を持つ計算値 (pLDDT > 0.85)
- 設計レベル: パターン/モチーフの検出 (奇数のシステイン、NG サイト)
クイックリファレンス: すべての閾値
| カテゴリ | メトリクス | 標準 | 厳格 | 出典 |
|---|---|---|---|---|
| 構造 | pLDDT | > 0.85 | > 0.90 | AF2/Chai/Boltz |
| pTM | > 0.70 | > 0.80 | AF2/Chai/Boltz | |
| scRMSD | < 2.0 Å | < 1.5 Å | 設計 vs pred | |
| 結合 | ipTM | > 0.50 | > 0.60 | AF2/Chai/Boltz |
| PAE_interaction | < 12 Å | < 10 Å | AF2/Chai/Boltz | |
| Shape Comp (SC) | > 0.50 | > 0.60 | PyRosetta | |
| interface_dG | < -10 | < -15 | PyRosetta | |
| 発現 | 不安定性 | < 40 | < 30 | BioPython |
| GRAVY | < 0.4 | < 0.2 | BioPython | |
| ESM2 PLL | > 0.0 | > 0.2 | ESM2 |
設計レベルのチェック (発現)
| パターン | リスク | アクション |
|---|---|---|
| 奇数のシステイン数 | 対になっていないジスルフィド | 再設計 |
| NG/NS/NT モチーフ | 脱アミド化 | フラグ/回避 |
| K/R >= 3 連続 | プロテオリシス | フラグ |
| >= 6疎水性ラン | 凝集 | 再設計 |
参照: references/binding-qc.md, references/expression-qc.md, references/structural-qc.md
逐次フィルタリングパイプライン
import pandas as pd
designs = pd.read_csv('designs.csv')
# Stage 1: Structural confidence
designs = designs[designs['pLDDT'] > 0.85]
# Stage 2: Self-consistency
designs = designs[designs['scRMSD'] < 2.0]
# Stage 3: Binding quality
designs = designs[(designs['ipTM'] > 0.5) & (designs['PAE_interaction'] < 10)]
# Stage 4: Sequence plausibility
designs = designs[designs['esm2_pll_normalized'] > 0.0]
# Stage 5: Expression checks (design-level)
designs = designs[designs['cysteine_count'] % 2 == 0] # Even cysteines
designs = designs[designs['instability_index'] < 40]
複合スコアリング (ランキングに必須)
個々のメトリクスだけでは弱すぎます。複合スコアリングを使用してください。
def composite_score(row):
return (
0.30 * row['pLDDT'] +
0.20 * row['ipTM'] +
0.20 * (1 - row['PAE_interaction'] / 20) +
0.15 * row['shape_complementarity'] +
0.15 * row['esm2_pll_normalized']
)
designs['score'] = designs.apply(composite_score, axis=1)
top_designs = designs.nlargest(100, 'score')
高度な複合スコアリングについては、references/composite-scoring.md を参照してください。
ツール固有のフィルタリング
BindCraft フィルターレベル
| レベル | ユースケース | 厳格さ |
|---|---|---|
| Default | 標準設計 | 最も厳格 |
| Relaxed | より多くの設計が必要 | より高い失敗率 |
| Peptide | 設計 < 30 AA | ~5-10倍低い成功率 |
BoltzGen フィルタリング
boltzgen run ... \
--budget 60 \
--alpha 0.01 \
--filter_biased true \
--refolding_rmsd_threshold 2.0 \
--additional_filters 'ALA_fraction<0.3'
alpha=0.0: 品質のみのランキングalpha=0.01: デフォルト (わずかな多様性)alpha=1.0: 多様性のみ
設計レベルの重症度スコアリング
パターンベースのチェックには、重症度スコアリングを使用します。
| 重症度レベル | スコア | アクション |
|---|---|---|
| LOW | 0-15 | 続行 |
| MODERATE | 16-35 | フラグが立てられた問題を確認 |
| HIGH | 36-60 | 再設計を推奨 |
| CRITICAL | 61+ | 再設計が必須 |
実験的相関
| メトリクス | AUC | 使用法 |
|---|---|---|
| ipTM | ~0.64 | 事前スクリーニング |
| PAE | ~0.65 | 事前スクリーニング |
| ESM2 PLL | ~0.72 | 最良の単一メトリクス |
| Composite | ~0.75+ | 常に使用 |
重要な洞察: メトリクスは予測因子(成功をランク付けする)ではなく、フィルター(失敗を除外する)として機能します。
キャンペーンの健全性評価
設計キャンペーンの簡単な評価:
| 合格率 | ステータス | 解釈 |
|---|---|---|
| > 15% | Excellent | 平均以上、続行 |
| 10-15% | Good | 通常、続行 |
| 5-10% | Marginal | 平均以下、問題を確認 |
| < 5% | Poor | 重大な問題、診断 |
失敗からの回復ツリー
pLDDT フィルターを通過するものが少なすぎる (pLDDT > 0.85 で < 5%)
キャンペーン全体で pLDDT が低い
├── scRMSD 分布を確認
│ ├── 高い scRMSD (>2.5Å): バックボーンの問題
│ │ └── 修正: より低い noise_scale (0.5-0.8) でバックボーンを再生成
│ └── 低い scRMSD だが低い pLDDT: 無秩序な領域
│ └── 修正: 設計の長さを確認し、トポロジーを簡略化
├── バックボーンごとにシーケンスを増やす
│ └── modal run modal_proteinmpnn.py --num-seq-per-target 32 --sampling-temp 0.1
├── ProteinMPNN の代わりに SolubleMPNN を使用
│ └── 発現最適化されたシーケンスに適している
└── 別の設計ツールを検討
└── BindCraft (統合設計) がよりうまく機能する可能性がある
ipTM フィルターを通過するものが少なすぎる (ipTM > 0.5 で < 5%)
キャンペーン全体で ipTM が低い
├── ホットスポットの選択を確認
│ ├── ホットスポットは表面に露出しているか? (SASA > 20Ų)
│ ├── ホットスポットは保存されているか? (MSA を確認)
│ └── 3〜6 種類のホットスポットの組み合わせを試す
├── バインダーの長さを増やす (接触面積を増やす)
│ └── 60〜80 AA の代わりに 80〜100 AA を試す
├── インターフェースのジオメトリを確認
│ ├── ターゲットは平坦か? → ヘリカルバインダーを試す
│ └── ターゲットは凹面か? → より小さなバインダーを試す
└── 全原子設計ツールを試す
└── BoltzGen (全原子、より良いパッキング)
高い sc
(原文がここで切り詰められています)
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Protein Design Quality Control
Critical Limitation
Individual metrics have weak predictive power for binding. Research shows:
- Individual metric ROC AUC: 0.64-0.66 (slightly better than random)
- Metrics are pre-screening filters, not affinity predictors
- Composite scoring is essential for meaningful ranking
These thresholds filter out poor designs but do NOT predict binding affinity.
QC Organization
QC is organized by purpose and level:
| Purpose | What it assesses | Key metrics |
|---|---|---|
| Binding | Interface quality, binding geometry | ipTM, PAE, SC, dG, dSASA |
| Expression | Manufacturability, solubility | Instability, GRAVY, pI, cysteines |
| Structural | Fold confidence, consistency | pLDDT, pTM, scRMSD |
Each category has two levels:
- Metric-level: Calculated values with thresholds (pLDDT > 0.85)
- Design-level: Pattern/motif detection (odd cysteines, NG sites)
Quick Reference: All Thresholds
| Category | Metric | Standard | Stringent | Source |
|---|---|---|---|---|
| Structural | pLDDT | > 0.85 | > 0.90 | AF2/Chai/Boltz |
| pTM | > 0.70 | > 0.80 | AF2/Chai/Boltz | |
| scRMSD | < 2.0 Å | < 1.5 Å | Design vs pred | |
| Binding | ipTM | > 0.50 | > 0.60 | AF2/Chai/Boltz |
| PAE_interaction | < 12 Å | < 10 Å | AF2/Chai/Boltz | |
| Shape Comp (SC) | > 0.50 | > 0.60 | PyRosetta | |
| interface_dG | < -10 | < -15 | PyRosetta | |
| Expression | Instability | < 40 | < 30 | BioPython |
| GRAVY | < 0.4 | < 0.2 | BioPython | |
| ESM2 PLL | > 0.0 | > 0.2 | ESM2 |
Design-Level Checks (Expression)
| Pattern | Risk | Action |
|---|---|---|
| Odd cysteine count | Unpaired disulfides | Redesign |
| NG/NS/NT motifs | Deamidation | Flag/avoid |
| K/R >= 3 consecutive | Proteolysis | Flag |
| >= 6 hydrophobic run | Aggregation | Redesign |
See: references/binding-qc.md, references/expression-qc.md, references/structural-qc.md
Sequential Filtering Pipeline
import pandas as pd
designs = pd.read_csv('designs.csv')
# Stage 1: Structural confidence
designs = designs[designs['pLDDT'] > 0.85]
# Stage 2: Self-consistency
designs = designs[designs['scRMSD'] < 2.0]
# Stage 3: Binding quality
designs = designs[(designs['ipTM'] > 0.5) & (designs['PAE_interaction'] < 10)]
# Stage 4: Sequence plausibility
designs = designs[designs['esm2_pll_normalized'] > 0.0]
# Stage 5: Expression checks (design-level)
designs = designs[designs['cysteine_count'] % 2 == 0] # Even cysteines
designs = designs[designs['instability_index'] < 40]
Composite Scoring (Required for Ranking)
Individual metrics alone are too weak. Use composite scoring:
def composite_score(row):
return (
0.30 * row['pLDDT'] +
0.20 * row['ipTM'] +
0.20 * (1 - row['PAE_interaction'] / 20) +
0.15 * row['shape_complementarity'] +
0.15 * row['esm2_pll_normalized']
)
designs['score'] = designs.apply(composite_score, axis=1)
top_designs = designs.nlargest(100, 'score')
For advanced composite scoring, see references/composite-scoring.md.
Tool-Specific Filtering
BindCraft Filter Levels
| Level | Use Case | Stringency |
|---|---|---|
| Default | Standard design | Most stringent |
| Relaxed | Need more designs | Higher failure rate |
| Peptide | Designs < 30 AA | ~5-10x lower success |
BoltzGen Filtering
boltzgen run ... \
--budget 60 \
--alpha 0.01 \
--filter_biased true \
--refolding_rmsd_threshold 2.0 \
--additional_filters 'ALA_fraction<0.3'
alpha=0.0: Quality-only rankingalpha=0.01: Default (slight diversity)alpha=1.0: Diversity-only
Design-Level Severity Scoring
For pattern-based checks, use severity scoring:
| Severity Level | Score | Action |
|---|---|---|
| LOW | 0-15 | Proceed |
| MODERATE | 16-35 | Review flagged issues |
| HIGH | 36-60 | Redesign recommended |
| CRITICAL | 61+ | Redesign required |
Experimental Correlation
| Metric | AUC | Use |
|---|---|---|
| ipTM | ~0.64 | Pre-screening |
| PAE | ~0.65 | Pre-screening |
| ESM2 PLL | ~0.72 | Best single metric |
| Composite | ~0.75+ | Always use |
Key insight: Metrics work as filters (eliminating failures) not predictors (ranking successes).
Campaign Health Assessment
Quick assessment of your design campaign:
| Pass Rate | Status | Interpretation |
|---|---|---|
| > 15% | Excellent | Above average, proceed |
| 10-15% | Good | Normal, proceed |
| 5-10% | Marginal | Below average, review issues |
| < 5% | Poor | Significant problems, diagnose |
Failure Recovery Trees
Too Few Pass pLDDT Filter (< 5% with pLDDT > 0.85)
Low pLDDT across campaign
├── Check scRMSD distribution
│ ├── High scRMSD (>2.5Å): Backbone issue
│ │ └── Fix: Regenerate backbones with lower noise_scale (0.5-0.8)
│ └── Low scRMSD but low pLDDT: Disordered regions
│ └── Fix: Check design length, simplify topology
├── Try more sequences per backbone
│ └── modal run modal_proteinmpnn.py --num-seq-per-target 32 --sampling-temp 0.1
├── Use SolubleMPNN instead of ProteinMPNN
│ └── Better for expression-optimized sequences
└── Consider different design tool
└── BindCraft (integrated design) may work better
Too Few Pass ipTM Filter (< 5% with ipTM > 0.5)
Low ipTM across campaign
├── Review hotspot selection
│ ├── Are hotspots surface-exposed? (SASA > 20Ų)
│ ├── Are hotspots conserved? (check MSA)
│ └── Try 3-6 different hotspot combinations
├── Increase binder length (more contact area)
│ └── Try 80-100 AA instead of 60-80 AA
├── Check interface geometry
│ ├── Is target flat? → Try helical binders
│ └── Is target concave? → Try smaller binders
└── Try all-atom design tool
└── BoltzGen (all-atom, better packing)
High scRMSD (> 50% with scRMSD > 2.0Å)
Sequences don't specify intended structure
├── ProteinMPNN issue
│ ├── Lower temperature: --sampling-temp 0.1
│ ├── Increase sequences: --num-seq-per-target 32
│ └── Check fixed_positions aren't over-constraining
├── Backbone geometry issue
│ ├── Backbones may be unusual/strained
│ ├── Regenerate with lower noise_scale (0.5-0.8)
│ └── Reduce diffuser.T to 30-40
└── Try different sequence design
└── ColabDesign (AF2 gradient-based) may work better
Everything Passes But No Experimental Hits
In silico metrics don't predict affinity
├── Generate MORE designs (10x current)
│ └── Computational metrics have high false positive rate
├── Increase diversity
│ ├── Higher ProteinMPNN temperature (0.2-0.3)
│ ├── Different backbone topologies
│ └── Different hotspot combinations
├── Try different design approach
│ ├── BindCraft (different algorithm)
│ ├── ColabDesign (AF2 hallucination)
│ └── BoltzGen (all-atom diffusion)
└── Check if target is druggable
└── Some targets are inherently difficult
Too Many Designs Pass (> 50%)
Suspiciously high pass rate
├── Check if thresholds are too lenient
│ └── Use stringent thresholds: pLDDT > 0.90, ipTM > 0.60
├── Verify prediction quality
│ ├── Are predictions actually running? Check output files
│ └── Are complexes being predicted, not just monomers?
├── Check for data issues
│ ├── Same sequence being predicted multiple times?
│ └── Wrong FASTA format (missing chain separator)?
└── Apply diversity filter
└── Cluster at 70% identity, take top per cluster
Diagnostic Commands
Quick Campaign Assessment
import pandas as pd
df = pd.read_csv('designs.csv')
# Pass rates at each stage
print(f"Total designs: {len(df)}")
print(f"pLDDT > 0.85: {(df['pLDDT'] > 0.85).mean():.1%}")
print(f"ipTM > 0.50: {(df['ipTM'] > 0.50).mean():.1%}")
print(f"scRMSD < 2.0: {(df['scRMSD'] < 2.0).mean():.1%}")
print(f"All filters: {((df['pLDDT'] > 0.85) & (df['ipTM'] > 0.5) & (df['scRMSD'] < 2.0)).mean():.1%}")
# Identify top issue
if (df['pLDDT'] > 0.85).mean() < 0.1:
print("ISSUE: Low pLDDT - check backbone or sequence quality")
elif (df['ipTM'] > 0.50).mean() < 0.1:
print("ISSUE: Low ipTM - check hotspots or interface geometry")
elif (df['scRMSD'] < 2.0).mean() < 0.5:
print("ISSUE: High scRMSD - sequences don't specify backbone")