蛋白质设计质量控制Skill protein-qc

蛋白质设计质量控制技能,提供用于评估和筛选蛋白质设计的标准化指标、阈值与流程。它整合了结构置信度(pLDDT, pTM)、结合质量(ipTM, PAE)、表达可行性(不稳定指数, GRAVY)等多维度评估,并强调使用综合评分进行有效排序。该技能包含诊断工具和失败恢复指南,旨在帮助研究人员高效过滤不良设计,提升蛋白质设计项目的成功率。关键词:蛋白质设计,质量控制,筛选阈值,综合评分,生物信息学,AI蛋白质设计,结构预测,表达优化。

合成生物学 0 次安装 6 次浏览 更新于 2/27/2026

name: protein-qc description: > 蛋白质设计的质量控制指标与筛选阈值。 在以下情况使用此技能:(1) 评估设计的结合、表达或结构质量, (2) 设置 pLDDT、ipTM、PAE 的筛选阈值, (3) 检查序列风险(半胱氨酸、脱酰胺、多碱性簇), (4) 创建多阶段筛选流程, (5) 计算 PyRosetta 界面指标(dG、SC、dSASA), (6) 检查生物物理特性(不稳定指数、GRAVY、pI), (7) 使用综合评分对设计进行排序。

此技能提供来自结合剂设计竞赛和已发表基准测试的研究支持阈值。 license: MIT category: evaluation tags: [qc, filtering, metrics, thresholds]

蛋白质设计质量控制

关键局限性

单个指标对结合能力的预测能力较弱。研究表明:

  • 单个指标的 ROC AUC:0.64-0.66(略优于随机)
  • 指标是预筛选过滤器,而非亲和力预测器
  • 综合评分对于有意义的排序至关重要

这些阈值用于过滤掉不良设计,但不能预测结合亲和力。

质量控制组织

质量控制按目的级别组织:

目的 评估内容 关键指标
结合 界面质量、结合几何 ipTM、PAE、SC、dG、dSASA
表达 可制造性、可溶性 不稳定指数、GRAVY、pI、半胱氨酸
结构 折叠置信度、一致性 pLDDT、pTM、scRMSD

每个类别有两个级别:

  • 指标级别:计算值及阈值(如 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 Å 设计与预测对比
结合 ipTM > 0.50 > 0.60 AF2/Chai/Boltz
PAE_interaction < 12 Å < 10 Å AF2/Chai/Boltz
形状互补性 (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')

# 阶段 1:结构置信度
designs = designs[designs['pLDDT'] > 0.85]

# 阶段 2:自一致性
designs = designs[designs['scRMSD'] < 2.0]

# 阶段 3:结合质量
designs = designs[(designs['ipTM'] > 0.5) & (designs['PAE_interaction'] < 10)]

# 阶段 4:序列合理性
designs = designs[designs['esm2_pll_normalized'] > 0.0]

# 阶段 5:表达检查(设计级别)
designs = designs[designs['cysteine_count'] % 2 == 0]  # 偶数半胱氨酸
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 筛选级别

级别 使用场景 严格程度
默认 标准设计 最严格
宽松 需要更多设计 失败率更高
多肽 设计 < 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:仅多样性

设计级别严重性评分

对于基于模式的检查,使用严重性评分:

严重级别 分数 措施
0-15 继续
16-35 审查标记问题
36-60 建议重新设计
严重 61+ 必须重新设计

实验相关性

指标 AUC 用途
ipTM ~0.64 预筛选
PAE ~0.65 预筛选
ESM2 PLL ~0.72 最佳单指标
综合评分 ~0.75+ 始终使用

关键见解:指标作为过滤器(排除失败)有效,而非作为预测器(排序成功)。


设计活动健康评估

快速评估您的设计活动:

通过率 状态 解释
> 15% 优秀 高于平均水平,继续
10-15% 良好 正常,继续
5-10% 边缘 低于平均水平,审查问题
< 5% 存在显著问题,诊断

失败恢复树

通过 pLDDT 过滤的设计太少 (< 5% 且 pLDDT > 0.85)

整个活动 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
├── 使用 SolubleMPNN 替代 ProteinMPNN
│   └── 更适合表达优化的序列
└── 考虑不同的设计工具
    └── BindCraft(集成设计)可能效果更好

通过 ipTM 过滤的设计太少 (< 5% 且 ipTM > 0.5)

整个活动 ipTM 低
├── 审查热点选择
│   ├── 热点是否表面暴露? (SASA > 20Ų)
│   ├── 热点是否保守? (检查 MSA)
│   └── 尝试 3-6 种不同的热点组合
├── 增加结合剂长度(更多接触面积)
│   └── 尝试 80-100 AA 而不是 60-80 AA
├── 检查界面几何
│   ├── 靶标平坦? → 尝试螺旋结合剂
│   └── 靶标凹陷? → 尝试更小的结合剂
└── 尝试全原子设计工具
    └── BoltzGen(全原子,更好的堆积)

scRMSD 高 (> 50% 且 scRMSD > 2.0Å)

序列未指定预期结构
├── ProteinMPNN 问题
│   ├── 降低温度:--sampling-temp 0.1
│   ├── 增加序列数:--num-seq-per-target 32
│   └── 检查 fixed_positions 是否过度约束
├── 骨架几何问题
│   ├── 骨架可能不寻常/有张力
│   ├── 使用更低的 noise_scale (0.5-0.8) 重新生成
│   └── 降低 diffuser.T 到 30-40
└── 尝试不同的序列设计
    └── ColabDesign(基于 AF2 梯度)可能效果更好

全部通过但无实验命中

硅学指标不预测亲和力
├── 生成更多设计(当前数量的10倍)
│   └── 计算指标假阳性率高
├── 增加多样性
│   ├── 更高的 ProteinMPNN 温度 (0.2-0.3)
│   ├── 不同的骨架拓扑
│   └── 不同的热点组合
├── 尝试不同的设计方法
│   ├── BindCraft(不同算法)
│   ├── ColabDesign(AF2 幻觉)
│   └── BoltzGen(全原子扩散)
└── 检查靶标是否可成药
    └── 某些靶标本质上就困难

通过的设计太多 (> 50%)

通过率高得可疑
├── 检查阈值是否过于宽松
│   └── 使用严格阈值:pLDDT > 0.90, ipTM > 0.60
├── 验证预测质量
│   ├── 预测确实在运行吗?检查输出文件
│   └── 预测的是复合物,而不仅仅是单体吗?
├── 检查数据问题
│   ├── 同一序列被多次预测?
│   └── 错误的 FASTA 格式(缺少链分隔符)?
└── 应用多样性过滤器
    └── 按 70% 同一性聚类,每簇取最佳

诊断命令

快速活动评估

import pandas as pd

df = pd.read_csv('designs.csv')

# 每个阶段的通过率
print(f"总设计数:{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"所有过滤器:{((df['pLDDT'] > 0.85) & (df['ipTM'] > 0.5) & (df['scRMSD'] < 2.0)).mean():.1%}")

# 识别首要问题
if (df['pLDDT'] > 0.85).mean() < 0.1:
    print("问题:pLDDT 低 - 检查骨架或序列质量")
elif (df['ipTM'] > 0.50).mean() < 0.1:
    print("问题:ipTM 低 - 检查热点或界面几何")
elif (df['scRMSD'] < 2.0).mean() < 0.5:
    print("问题:scRMSD 高 - 序列未指定骨架")