Skip to content
Research
Skill

/protein-qc

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,

BOOST
From plugin
protein-design-skills
17024 skills
Install
$ npx -y skills add adaptyvbio/protein-design-skills --skill protein-qc --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/protein-qc

Context preview

The summary Claude sees to decide when to auto-load this 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,

SKILL.md

protein-qc.SKILL.md
name: protein-qc
description: >
  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.
license: MIT
category: evaluation
tags: [qc, filtering, metrics, thresholds]

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** | ipSAE_min | > 0.61 | > 0.70 | AF3/Boltz (see ipsae) | | | ipTM | > 0.50 | > 0.60 | AF2/Chai/Boltz | | | PAE_interaction | < 12 Å | < 10 Å | AF2/Chai/Boltz | | | Shape Comp (SC) | > 0.50 | > 0.62 | PyRosetta | | | interface_dG | < -10 | < -15 | PyRosetta | | | Interface BUNS | <= 4 | <= 2 | PyRosetta | | **Expression** | Instability | < 40 | < 30 | BioPython | | | GRAVY | < 0.4 | < 0.2 | BioPython | | | ESM2 PLL | > 0.0 | > 0.2 | ESM2 | | | Folding ΔG | < -2 kcal/mol | < -4 kcal/mol | SaProtΔG |

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

---

Interface metrics (PyRosetta)

Beyond shape complementarity and interface_dG, two interface metrics catch common de novo failure modes:

  • **Buried unsatisfied H-bonds (BUNS)**: buried polar atoms making no hydrogen bond.

This is a dominant energetic failure mode and is orthogonal to dG and dSASA. Keep interface BUNS at or below 4 (standard) or 2 (stringent).

  • **ContactMolecularSurface**: shape-complementarity-weighted contact area that, unlike

dSASA, is not fooled by gappy or holey interfaces. Higher is better.

Both are in the Cao 2022, AlphaProteo, and BindCraft filter sets.

For structure-quality ranking, biomodals also provides `modal_af2rank.py` (AF2Rank), which scores how well a design re-predicts from its own structure as a template.

Binder ranking (benchmark-backed)

A meta-analysis of 3,766 experimentally tested binders across 15 targets (Overath et al., bioRxiv 2025, doi:10.1101/2025.08.14.670059) found that AF3 `ipSAE_min` is the single best in-silico predictor of binding, and that a simple linear model of three features generalizes best across targets. Complexity did not help: gradient-boosted and many-feature models did not beat the linear one.

Recommended filtering strategies from that work:

1. Threshold on one of: `AF3 ipSAE_min > 0.61`, or `ipSAE_min × interface_ΔG/ΔSASA < -1.5`, or `LIS × shape_complementarity > 0.42`. 2. Pre-filter on `shape_complementarity > 0.62` and `RMSD_binder < 3.73` (input vs re-predicted), then take the top-K by `ipSAE_min`.

`ipSAE_min` is the minimum of the two asymmetric ipSAE directions (binder→target and target→binder), not the average or max. Use the `ipsae` skill to compute it. Note the RMSD_binder filter can be over-restrictive on some targets, so prefer it as a soft pre-filter rather than a hard cutoff.

Stability prediction (small domains)

For small domains (roughly 60 to 80 residues, the minibinder range), absolute folding stability can be predicted directly. SaProtΔG (Cho et al., bioRxiv 2026, doi:10.64898/2026.05.19.726285) predicts absolute folding ΔG at about 0.8 kcal/mol RMSE and improves discrimination of stable versus unstable designed proteins. Use the SaProt variant rather than the ESM3 variant for commercial work, since the ESM3 weights are non-commercial. Filter for more negative (more stable) ΔG.

Sequence-liability scan

Implement liability checks directly as motif rules rather than taking an antibody-specific dependency. Severity rises with solvent exposure (gate by SASA when a structure is available).

import re

LIABILITIES = {
    "deamidation":   (r"N[GSNTH]",   "NG/NS high, NN/NT moderate"),
    "isomerization": (r"D[GSTDH]",   "Asp isomerization"),
    "N-glycosylation": (r"N[^P][ST]", "NxS/T sequon"),
    "polybasic":     (r"[KR]{3,}",   "proteolysis / charge patch"),
    "hydrophobic_run": (r"[AILMFWVY]{6,}", "aggregation"),
}

def scan_liabilities(seq):
    hits = {}
    for name, (pattern, note) in LIABILITIES.items():
        positions = [m.start() for m in re.finditer(pattern, seq)]
Read more
Ships withprotein-design-skills

Claude Code skills for protein design

Get the whole plugin

Other skills on protein-design-skills.