Back to Guides
Bilingual · EN + 中文 interleaved

Strategy Note · Affinity

Affinity Metric — Plan & Candidate Models

One platform-wide affinity metric, ROI-ranked candidates, wet-lab-driven selection, fine-tune plan. Sized for a single read before we sit down to discuss it.
一个平台级亲和力指标;ROI 排序候选;湿实验驱动的选择规则;fine-tune 路径。

by Jacky·2026-05-21·docs/affinity-metric-plan.md

Affinity Metric — Plan & Candidate Models

One platform-wide metric for binding affinity, chosen after wet-lab data lands, then fine-tuned on it. This doc lists the candidate models (ROI-ranked) and the selection / fine-tune process. Bilingual.

Status. Planning, 2026-05-21. Decision deferred to when the first BCMA wet-lab cohort returns (~mid-2026). This doc names the candidates and the rule for choosing among them, so the decision is fast when the data arrives.


0. Context

The decision. The platform needs one primary affinity metric — a single scalar exposed as a column on /candidates, surfaced in /interface, and consumed by the optimization layer's reward function. Today we have four affinity-adjacent columns (ipTM, iPAE, BSA, p_bind) and zero true affinity columns. This plan closes that gap.

The strategy is wet-lab-driven, in three phases.

  • Phase A — Now (no wet-lab data): ship the candidate models as platform columns. We rank them by ROI today and surface the top ones so they're ready when the data arrives.
  • Phase B — On data arrival (≥ 20 measured K_D from BCMA cohort): compute per-model Spearman ρ against measured K_D. The model with the highest rank correlation graduates from "in-silico proxy" to the affinity metric. If no single model clears ρ ≥ 0.5, pick the top 2 and use their average.
  • Phase C — Fine-tune: with the selected model and the IASO BCMA cohort, fine-tune on internal data. This produces the v1 platform affinity metric. Re-evaluate against incoming cohorts.

The point of writing this down now is: when the wet-lab data drops, we don't want to spend three weeks arguing about which model. We want to spend three days running the comparison and three weeks on the fine-tune.

中文 · 背景

决策:平台需要一个主要的亲和力指标 —— 一个 scalar 列展示在 /candidates、surface 在 /interface、被优化层 reward 函数消费。今天我们有 4 个亲和力相邻列(ipTM、iPAE、BSA、p_bind),0 个真正的亲和力列。这份 plan 就是为了堵这个缺口。

策略是湿实验驱动,分三阶段

  • A · 现在(无湿实验数据):把候选模型作为平台列上线。按今天 ROI 排序、先把 top 几个 surface 出来,等数据到的时候即用。
  • B · 数据到达(BCMA 队列 ≥ 20 个测量 K_D):对每个候选模型算与测量 K_D 的 Spearman ρ。秩相关性最高的模型从「in-silico 代理」毕业为那个亲和力指标。如果没有任何单模型 ≥ 0.5,取 top 2 平均。
  • C · Fine-tune:用选中的模型 + IASO BCMA 队列在内部数据上 fine-tune。产出 v1 平台亲和力指标。新数据到时重新评估。

把这件事现在写下来的意义:湿实验数据到的时候,我们不想花三周吵该用哪个模型;想花三天跑对比、三周做 fine-tune。


1. Prerequisite — antigen anchoring from the research team

Before any of this plan operates on real data, we need a specific anchoring from the research team: which antigen the first wet-lab cohort will measure, and which direction within that target's program we're calibrating against.

The whole §3 selection process and §4 fine-tune pathway are per-target: a model that calibrates well on BCMA may or may not transfer to GPRC5D, CD20, HER2, or anything else. Without an explicit anchor, "the affinity metric" remains a placeholder.

1.1 What we need from the research team

A direct ask — concrete enough that this becomes a 30-minute meeting, not a five-week project:

  1. The target choice. Which antigen is the first wet-lab measurement cohort on? Default assumption is BCMA (consistent with the Fucaso lineage and bcma-affinity-maturation.md), but the team should confirm — there's a difference between "BCMA in general" and "the specific BCMA epitope and construct format we're maturing against."
  2. The antigen sequence + structure source. Exact construct used in the assay: the full ECD? A specific construct used in SPR (e.g. BCMA ECD-His6)? UniProt ID + residue range + any tag/linker context. Without this we can't reproducibly model the same antigen the team is measuring.
  3. The direction inside that target. Affinity maturation of a known parent (CT103a / 026 derivatives) vs de-novo binders against a specific epitope (APRIL-binding face vs membrane-proximal stem)? Same target, different problems, different reward shapes.
  4. The intended candidate pool size. Is the first cohort 5 candidates, 30, 100? This sets the N → fine-tune route decision (§4) directly.
  5. Cross-target plans. Is there a second target on deck (GPRC5D? CD20?), and on what timeline? Determines whether we plan for one calibration or two.

1.2 Why anchoring matters before the data arrives

If the team commits to BCMA + specific construct now, we can:

  • Pre-load the antigen structure into the platform's targets table with the exact construct.
  • Pre-run the candidate models on every existing design in /candidates so the moment K_D values land we already have predictions to compute Spearman ρ against — zero-latency selection.
  • Build the platform's affinity-plan results page against a known target schema, not a hypothetical one.

If they don't commit, we hedge by running the candidate models on multiple plausible targets, which dilutes engineering focus and pushes selection out by weeks.

1.3 The fallback if they can't yet anchor

If a target-anchoring decision isn't ready, the safe default for Phase A work (§7 timeline) is BCMA, with the canonical ECD construct used in bcma-affinity-maturation.md. We document this assumption explicitly and revise on first contact with the research team.

中文 · §1 前置 —— 来自研发团队的抗原锚定

在这份 plan 真正开始在真实数据上跑之前,我们需要研发团队的一个具体锚定:第一批湿实验队列会测量哪个抗原,以及在该靶点项目里我们对哪个方向做校准

整个 §3 选择过程和 §4 fine-tune 路径都是按靶点的:在 BCMA 上校准好的模型不一定迁移到 GPRC5D、CD20、HER2 或其它。没有明确锚定,「亲和力指标」始终是占位符。

1.1 我们需要研发团队给什么

直接询问 —— 具体到让这变成 30 分钟会议而不是五周项目:

  1. 靶点选择。第一批湿实验测量队列对应哪个抗原?默认假设是 BCMA(与福可苏血缘、bcma-affinity-maturation.md 一致),但团队需要确认 —— 「BCMA 总体」和「我们具体在对哪个 BCMA 表位 + 哪种构造形式做成熟」是有差别的。
  2. 抗原序列 + 结构来源。assay 里实际用的构造:完整 ECD?SPR 用的具体构造(如 BCMA ECD-His6)?UniProt ID + 残基范围 + 任何标签/linker 上下文。没有这个,我们无法可复现地建模团队实际测量的同一抗原。
  3. 该靶点内的方向。对已知 parent(CT103a / 026 衍生)做亲和力成熟 vs 针对特定表位(APRIL 结合面 vs 膜近 stem)de novo 设计?同一靶点不同问题,reward 形态不同。
  4. 目标候选池规模。第一批队列是 5 个候选、30 个、还是 100 个?这个 N 直接决定 §4 的 fine-tune 路径决策。
  5. 跨靶点规划。有第二个靶点排着(GPRC5D?CD20?)吗,时间线如何?决定我们规划一次校准还是两次。

1.2 数据到达前为什么要先锚定

团队现在承诺 BCMA + 具体构造,我们就可以:

  • 把抗原结构按精确构造预加载到平台 targets 表。
  • /candidates 里每个已有设计预跑候选模型 —— K_D 值到达那一刻就有预测去算 Spearman ρ,零延迟选择。
  • 平台 affinity-plan 结果页针对已知靶点 schema 构建,不是假设的。

如果不承诺,我们就要在多个可能靶点上并行跑候选模型对冲,这会稀释工程聚焦,并把选择推后几周。

1.3 他们暂时无法锚定时的 fallback

靶点锚定决策还没准备好时,Phase A 工作(§7 时间线)的安全默认是 BCMA + bcma-affinity-maturation.md 里规范的 ECD 构造。我们明确记录这个假设,与研发团队首次接触后修订。


2. Candidate models (ROI-ranked)

Each entry has the same shape: what it outputs, the underlying logic, the paper, what it costs to deploy, and what to watch for.

2.1 Rank #1 — Boltz-2 affinity head (free lunch)

  • What it outputs: a Kd-like scalar plus an affinity-confidence score, per complex.
  • Underlying logic: dedicated regression head on top of the Boltz-2 backbone (AF3-style triangle attention + diffusion structure module). Trained on PDBBind + curated affinity datasets. The structure prediction and the affinity prediction share representations — co-trained, not bolted on.
  • Paper: Passaro et al., Boltz-2: Towards Accurate and Efficient Binding Affinity Prediction, 2025. https://jeremywohlwend.com/assets/boltz2.pdf
  • Deployment cost: near zero. Boltz-2 is already our default complex scorer (Wave 1). The affinity head's output is currently being computed and discarded. Need to extend pipeline/tools/fcrn_docking.py and the validation_stage.py post-processor to read out the affinity scalar and write it to the scores table.
  • Watch for: PDBBind has known label noise; affinity head outputs are credible relative ordering, less so absolute Kd. Calibration against IASO data is mandatory before we treat absolute values as Kd.

2.2 Rank #2 — PRODIGY (contact-based, orthogonal)

  • What it outputs: ΔG_bind in kcal/mol; convert to Kd via Kd = exp(ΔG / RT).
  • Underlying logic: count interfacial residue–residue contacts at six type-pairs (e.g. Charged–Charged, Polar–Apolar, etc.); fit a linear regression of count vector → ΔG on a curated 122-complex training set. Add a small correction for non-interacting-surface composition. That's it. Reported Pearson 0.73 / RMSE 1.89 kcal/mol on the protein-protein affinity benchmark.
  • Paper: Xue, L. C., Rodrigues, J. P. G. L. M., Kastritis, P. L., Bonvin, A. M. J. J., & Vangone, A. PRODIGY: a web server for predicting the binding affinity of protein–protein complexes. Bioinformatics, 32(23), 3676–3678 (2016). https://academic.oup.com/bioinformatics/article/32/23/3676/2525629. Foundational paper: Vangone, A. & Bonvin, A. M. J. J. Contacts-based prediction of binding affinity in protein–protein complexes. eLife (2015). https://pmc.ncbi.nlm.nih.gov/articles/PMC8376549/
  • Deployment cost: ~half a day. ~50 lines of Python wrapping prodigy Python package + a stage in the scoring pipeline. No GPU required. Pure CPU.
  • Watch for: PRODIGY assumes a fixed bound complex — it reads contacts off the predicted pose. So PRODIGY's quality is bounded by the quality of Boltz-2's predicted pose. Bad pose → wrong contact set → wrong ΔG.
  • Why it's #2 despite simplicity: orthogonality. Boltz-2's affinity head and PRODIGY use almost completely different signals — Boltz-2 leverages full deep representation; PRODIGY uses simple contact counts. When they agree, that's a real signal. When they disagree, that's a flag worth investigating. Same logic as the platform's ensemble_agreement but at the affinity layer.

2.3 Rank #3 — AlphaBind (antibody-specific, large-data)

  • What it outputs: a Kd-like scalar; designed for the antibody-affinity optimization use case specifically.
  • Underlying logic: transformer-based model trained on 7.5M antibody-antigen binding data points (a domain-specific dataset >100× larger than PDBBind). Uses protein language model embeddings as input and produces affinity predictions. SOTA on guided affinity optimization of parental antibodies — reported best improvement of ~74× over a parent antibody.
  • Paper: Vasquez, Y. R. et al. AlphaBind, a Domain-Specific Model to Predict and Optimize Antibody-Antigen Binding Affinity. bioRxiv (2024) → mAbs (2025). https://www.tandfonline.com/doi/full/10.1080/19420862.2025.2534626. Code + weights: MIT-licensed on GitHub.
  • Deployment cost: moderate. Model is open-source. GPU inference. Need to wrap as an MCP server with affinity-mcp tool surface.
  • Watch for: trained primarily on internal A-Alpha Bio platform data; out-of-distribution behavior on IASO targets is unknown until we benchmark. The 7.5M data points are a moat for them; for us using their pretrained weights, this is mostly a feature-extraction story.
  • Why it's #3: antibody-specific training. The reason Boltz-2's affinity head is #1 is "already deployed, free." But on the actual affinity-on-antibody task, AlphaBind is probably the strongest signal — it was built specifically for our problem.

2.4 Rank #4 — GearBind (geometric, antibody affinity maturation)

  • What it outputs: ΔΔG_bind on mutation; usable for direct binding-energy ranking too.
  • Underlying logic: geometric graph neural network on the protein complex graph. Multi-relational edges, multi-level geometric message passing, contrastive pre-training on PDB structures. Predicts the change in binding energy on mutation. Validated by improving two real antibodies experimentally — ELISA EC50 reduced up to 17×, K_D up to 6.1×.
  • Paper: Cai, H. et al. Pretrainable geometric graph neural network for antibody affinity maturation. Nature Communications, 15, 7766 (2024). https://www.nature.com/articles/s41467-024-51563-8. Code: https://github.com/DeepGraphLearning/GearBind.
  • Deployment cost: moderate. Open-source, GPU-bound. Wrap as MCP server.
  • Watch for: GearBind is mutation-focused — it answers "if I change this residue, what happens to binding" better than "what is the absolute Kd of this binder." Best paired with the maturation use case (Stage 6), not with cold-start scoring.
  • Why it's #4: Excellent for affinity maturation specifically. If our problem narrows to "starting from a parent, climb the affinity gradient," GearBind is a strong fit. For cold-start (de novo binder Kd prediction), AlphaBind / Boltz-2 are better.

2.5 Rank #5 — DSMBind (unsupervised, nanobody-friendly)

  • What it outputs: log-likelihood of the protein complex under an SE(3) score-matching model. Highly correlated with experimental binding energy across benchmarks.
  • Underlying logic: denoising score matching on SE(3) — for a protein complex, learn the score function of the data distribution. The log-likelihood serves as a binding-energy proxy. Crucially: unsupervised. No experimental binding data needed for training. Trained on 25.5k PDB protein-ligand complexes.
  • Paper: Jin, W., Chen, X. et al. DSMBind: SE(3) denoising score matching for unsupervised binding energy prediction and nanobody design. bioRxiv (Dec 2023). https://www.biorxiv.org/content/10.1101/2023.12.10.570461v1. Code: https://github.com/wengong-jin/DSMBind.
  • Deployment cost: moderate. GPU-bound. From MIT-affiliated lab; well-documented.
  • Watch for: unsupervised score is correlated with binding energy but not calibrated — outputs aren't in kcal/mol; need a per-target calibration step to translate to Kd.
  • Why it's #5: Unique angle — no experimental training data required. Particularly relevant for our nanobody / VHH work (DSMBind's PD-L1 nanobody design demonstration). When our wet-lab cohort is small, DSMBind's training-data-independence is an asset.

2.6 Rank #6 — AbLang / AntiBERTy log-likelihood (already in the stack)

  • What it outputs: sequence-level log-likelihood (perplexity). Already exposed on /candidates as ablang_avg, ablang_perplexity_vh, ablang_perplexity_vl.
  • Underlying logic: antibody-specific masked language model trained on the Observed Antibody Space (OAS). Sequences with low perplexity match the natural human antibody repertoire — a proxy for "this is a plausible antibody, likely to express and probably bind canonically."
  • Paper: AbLang — Olsen, T. H. et al. AbLang: an antibody language model for completing antibody sequences. Bioinformatics Advances (2022). AntiBERTy — Ruffolo, J. A. et al. Deciphering antibody affinity maturation with language models and weakly supervised learning. Patterns (2021).
  • Deployment cost: already deployed. We just need to officially consume these in the affinity semantic, not the humanness semantic.
  • Watch for: perplexity measures "is this sequence repertoire-like," not "does this bind tightly." Correlation with affinity is real but weak (~0.3 on most benchmarks). Best as a filter (reject high-perplexity sequences as unlikely to express) than as a ranker.
  • Why it's #6: essentially free, but the signal is upstream of affinity, not affinity itself.

2.7 Rank #7 — mCSM-AB / mmCSM-AB (mutation-specific, antibody)

  • What it outputs: ΔΔG_bind on antibody mutation; single mutation (mCSM-AB) or multi-mutation (mmCSM-AB).
  • Underlying logic: graph-based residue signatures: encode the local environment around the mutation site as a graph, train a regression on the AB-Bind dataset of measured mutational ΔΔG.
  • Paper: Pires, D. E. V. & Ascher, D. B. mCSM-AB: a web server for predicting antibody–antigen affinity changes upon mutation with graph-based signatures. Nucleic Acids Research, 44(W1), W469–W473 (2016). https://academic.oup.com/nar/article/44/W1/W469/2499391. Multi-mutation: Rodrigues, C. H. M., Pires, D. E. V., & Ascher, D. B. mmCSM-AB. Nucleic Acids Research, 48(W1), W125–W131 (2020). https://academic.oup.com/nar/article/48/W1/W125/5841134
  • Deployment cost: API-based (web server). Pearson on independent test set ~0.52–0.53.
  • Watch for: Pearson 0.52 is modest. mCSM-AB is best used as an ensemble member with GearBind for the mutation-effect signal, not as a primary affinity scorer.
  • Why it's #7: complementary to GearBind on the mutation problem; both go on the same signal-of-relative-mutation-effects.

2.8 Rank #8 — Classical: FoldX / Rosetta ΔΔG_bind / HADDOCK score

  • What it outputs: ΔG_bind in kcal/mol (FoldX, Rosetta); HADDOCK score (weighted sum of energy terms).
  • Underlying logic: classical empirical force fields. FoldX: van der Waals + hydrogen bonds + solvation + entropy, parameterized on mutational ΔΔG data. Rosetta REF15: more expensive, more comprehensive scoring function used across the Rosetta suite. HADDOCK score: a weighted sum of intermolecular energy terms designed for ranking docking poses.
  • Papers: FoldX — Schymkowitz, J. et al. The FoldX web server: an online force field. Nucleic Acids Research, 33, W382–W388 (2005). REF15 — Alford, R. F. et al. The Rosetta all-atom energy function for macromolecular modeling and design. J. Chem. Theory Comput. (2017).
  • Deployment cost: moderate. Both are well-established, scriptable. HADDOCK-score comes free if we adopt HADDOCK3 for refinement (see docking-research-notes.md §5.1).
  • Watch for: slow on large cohorts; FoldX is fast enough; Rosetta is not. Classical scores under-rank novel folds and over-trust polar contacts.
  • Why it's #8: interpretable, gives a sanity check, runs on CPU. Best role: a last-mile validator, not a primary scorer. If our ML predictions and the classical score wildly disagree, that's worth investigating.

中文 · §1 候选模型(ROI 排序)

每条结构相同:输出什么、底层逻辑、论文、部署成本、要警惕什么。

#1 Boltz-2 亲和力 head(免费午餐)—— Kd-like scalar + 亲和力置信度。逻辑:Boltz-2 主干(AF3 风格 triangle attention + 扩散结构 module)上的专用回归 head,PDBBind + 精选亲和力数据上训练;结构预测和亲和力预测共享表征,联合训练。论文:Passaro et al. 2025。部署成本:接近零 —— 已在跑,结果丢了,扩展 pipeline/tools/fcrn_docking.pyvalidation_stage.py 后处理把 affinity scalar 读出来写到 scores 表即可。警惕:PDBBind label noise;亲和力 head 输出相对排序可信,绝对 Kd 不能直接信,必须在 IASO 数据上校准。

#2 PRODIGY(contact-based、正交)—— ΔG_bind kcal/mol,Kd = exp(ΔG/RT)。逻辑:数 6 种 type-pair 界面残基接触(Charged-Charged、Polar-Apolar 等),在精选的 122 复合物训练集上做 count vector → ΔG 线性回归,加非界面表面组成的小修正。蛋白-蛋白亲和力 benchmark 上 Pearson 0.73 RMSE 1.89 kcal/mol。论文:Xue et al., Bioinformatics 2016;Vangone & Bonvin, eLife 2015。部署成本:约半天。50 行 Python 包 prodigy 包 + scoring pipeline 一个 stage。不需 GPU,纯 CPU。警惕:假定固定结合复合物,从预测姿态读接触 —— PRODIGY 质量由 Boltz-2 姿态质量上界。姿态错 → 接触集错 → ΔG 错。为什么尽管简单还是 #2正交性。Boltz-2 亲和力 head 和 PRODIGY 用几乎完全不同的信号 —— Boltz-2 用全套深度表征、PRODIGY 用简单接触计数。两个一致 = 真信号;两个分歧 = 值得调查的 flag。同 ensemble_agreement 逻辑但在亲和力层。

#3 AlphaBind(抗体专属、大数据)—— Kd-like scalar,专为抗体亲和力优化用例。逻辑:transformer 模型,在 750 万抗体-抗原结合数据点(比 PDBBind 大 100×+ 的领域专属数据集)上训练,PLM embedding 作输入,输出亲和力预测。引导式亲和力优化 SOTA —— 报告对 parent 抗体最佳提升约 74×。论文:Vasquez et al., bioRxiv 2024 → mAbs 2025。代码 + 权重 MIT license。部署成本:中等。GPU 推理,包 MCP server 暴露 affinity-mcp 工具面。警惕:训练数据主要来自 A-Alpha Bio 内部平台;在 IASO 靶点上的 OOD 行为未知,benchmark 后才能知。750 万数据是他们的护城河;我们用 pretrained 权重相当于 feature extractor。为什么 #3抗体专属训练。Boltz-2 亲和力 head 是 #1 因为「已部署、免费」;但在真正的抗体-亲和力任务上,AlphaBind 可能信号最强 —— 它就是为我们的问题造的。

#4 GearBind(几何、抗体亲和力成熟)—— 突变 ΔΔG_bind,也可直接做绝对结合能排序。逻辑:复合物图上的几何 GNN。多关系边、多级几何消息传递、PDB 上对比预训练。预测突变带来的结合能变化。实验验证:两个真实抗体上 ELISA EC50 ↓ 至多 17×、K_D ↓ 至多 6.1×。论文:Cai et al., Nature Communications 2024。代码:github.com/DeepGraphLearning/GearBind。部署成本:中等,开源、GPU。警惕:GearBind 聚焦突变 —— 回答「这个残基变了结合怎样」比「这个 binder 的绝对 Kd 是多少」好。最适合成熟用例(Stage 6),不适合冷启动评分。为什么 #4:抗体亲和力成熟极强;如果问题窄化为「从 parent 起爬亲和力梯度」,GearBind 强匹配。冷启动 de novo binder Kd 预测,AlphaBind / Boltz-2 更好。

#5 DSMBind(无监督、纳米抗体友好)—— SE(3) score-matching 模型下复合物的对数似然,与多个 benchmark 上的实验结合能高度相关。逻辑:SE(3) 上的去噪 score matching —— 对蛋白复合物学数据分布的 score 函数,对数似然作结合能代理。关键:无监督,训练不需实验结合数据。25,561 个 PDB 蛋白-配体复合物上训练。论文:Jin, Chen et al., bioRxiv 2023 12 月。代码:github.com/wengong-jin/DSMBind。部署成本:中等,GPU。MIT 系实验室,文档好。警惕:无监督 score 与结合能相关但未校准 —— 输出不是 kcal/mol,需 per-target 校准翻译成 Kd。为什么 #5:独特角度 —— 不需实验训练数据。对我们的纳米抗体 / VHH 工作尤其相关(PD-L1 纳米抗体设计 demo)。湿实验队列小时,DSMBind 训练数据独立性是资产。

#6 AbLang / AntiBERTy 对数似然(栈里已有)—— 序列级对数似然(perplexity),已在 /candidates 暴露为 ablang_avgablang_perplexity_vh/vl。逻辑:抗体专属 masked LM 在 Observed Antibody Space (OAS) 训练。低 perplexity 序列匹配天然人源抗体 repertoire —— 「这是可信的抗体、可能表达、可能规范结合」的代理。论文:Olsen et al., Bioinformatics Advances 2022 (AbLang);Ruffolo et al., Patterns 2021 (AntiBERTy)。部署成本:已部署。只需在亲和力语义而非人源性语义下正式消费。警惕:perplexity 测「序列是否 repertoire-like」,不是「是否紧密结合」。与亲和力相关性真实但弱(多数 benchmark ~0.3)。作过滤(拒绝高 perplexity 序列 = 不太可能表达)比作排序好。为什么 #6:基本免费,但信号在亲和力上游,不是亲和力本身。

#7 mCSM-AB / mmCSM-AB(突变专属、抗体)—— 抗体突变 ΔΔG_bind,单突变(mCSM-AB)或多突变(mmCSM-AB)。逻辑:基于图的残基签名 —— 把突变位点周围局部环境编码成图,在 AB-Bind 实测突变 ΔΔG 数据集上训练回归。论文:Pires & Ascher, NAR 2016;多突变 Rodrigues, Pires, Ascher, NAR 2020。部署成本:API 调用(Web server)。独立测试集 Pearson ~0.52-0.53。警惕:Pearson 0.52 一般。mCSM-AB 最好作 GearBind 在突变信号上的 ensemble 成员,而非主亲和力 scorer。为什么 #7:突变问题上与 GearBind 互补;两者都在「突变相对效应」信号上。

#8 经典:FoldX / Rosetta ΔΔG_bind / HADDOCK score —— ΔG_bind kcal/mol(FoldX、Rosetta);HADDOCK 分数(能量项加权和)。逻辑:经典经验力场。FoldX:vdW + 氢键 + 溶剂化 + 熵,在突变 ΔΔG 上参数化。Rosetta REF15:更贵更全面,整个 Rosetta 套件用。HADDOCK score:跨分子能量项加权和,为 docking 姿态排序设计。论文:FoldX - Schymkowitz et al., NAR 2005;REF15 - Alford et al., JCTC 2017。部署成本:中等,皆成熟、可脚本。如果用 HADDOCK3 做精修(见 docking-research-notes.md §5.1),HADDOCK-score 免费送。警惕:大队列上慢;FoldX 够快,Rosetta 不够快。经典分数对新颖折叠低估、对极性接触过信。为什么 #8可解释,给一个 sanity check,CPU 跑得动。最佳角色:last-mile 验证器、不是主 scorer。ML 预测和经典分数严重分歧 → 值得调查。


3. The selection process — when wet-lab data lands

3.1 Trigger

When the BCMA wet-lab cohort returns measured K_D for ≥ 20 candidates. (≥ 30 would be ideal; 20 is the minimum for stable Spearman ρ.) The first measurements arrive after the first design → synthesis → SPR cycle — Phase 1 of track-engineering-to-closed-loop-rl.md.

3.2 Method

For each candidate model from §2, run it on all measured candidates → get a predicted score → compute Spearman rank correlation with measured K_D.

For each model M in {Boltz-2 affinity head, PRODIGY, AlphaBind,
                    GearBind, DSMBind, AbLang-LL, mCSM-AB, FoldX}:
    predictions = M(candidate) for candidate in cohort
    ρ_M = SpearmanRankCorr(predictions, measured_KD)

Report ρ_M for all M, sorted descending.
Also report: Pearson r (linear) and Kendall τ (monotonic alternative).

3.3 Decision rules

  • If max(ρ_M) ≥ 0.7: winner. That model is the affinity metric, exposed as affinity_score column.
  • If 0.5 ≤ max(ρ_M) < 0.7: winner, but flag as "v0 — recalibrate at next cohort."
  • If max(ρ_M) < 0.5: no single model clears the bar. Pick the top 2 and use their rank-average as a composite affinity metric. Flag for re-evaluation.
  • In all cases: also compute ρ_ensemble for the top 2 and top 3 — if it materially exceeds the best single model (say, > +0.05), use the ensemble instead.

3.4 What we report back

A single page on /docs/scoring-audit (extends the existing scoring-audit page), showing per-model Spearman ρ, Pearson r, Kendall τ, a scatter of predicted-vs-measured for the chosen model, and a one-paragraph honest summary. This is the calibration receipt — published, not buried.

中文 · §3 选择过程 —— 湿实验数据到达时

触发:BCMA 湿实验队列返回 ≥ 20 个候选的测量 K_D(理想 ≥ 30,20 是稳定 Spearman ρ 的最低)。第一批测量在第一轮设计→合成→SPR 循环后到 —— track-engineering-to-closed-loop-rl.md 的 Phase 1。

方法:对 §2 每个候选模型,在所有测量候选上跑一遍 → 预测分数 → 与测量 K_D 算 Spearman 秩相关。

对每个模型 M ∈ {Boltz-2 affinity head、PRODIGY、AlphaBind、
                 GearBind、DSMBind、AbLang-LL、mCSM-AB、FoldX}:
    predictions = M(candidate) for candidate in cohort
    ρ_M = SpearmanRankCorr(predictions, measured_KD)
报告所有 M 的 ρ_M,降序排。
也报告:Pearson r(线性)和 Kendall τ(单调备选)。

决策规则

  • max(ρ_M) ≥ 0.7 → 赢家。该模型即 那个亲和力指标,作 affinity_score 列暴露。
  • 0.5 ≤ max(ρ_M) < 0.7 → 赢家,但标注「v0 —— 下批队列重校准」。
  • max(ρ_M) < 0.5 → 没有单模型过线。取 top 2 用秩平均做综合亲和力指标,标记重评估。
  • 全部情况下:也算 top 2 / top 3 的 ρ_ensemble —— 实质上超过最佳单模型(> +0.05)→ 用 ensemble。

回报/docs/scoring-audit 上一页(扩展现有评分审计),展示每模型 Spearman ρ、Pearson r、Kendall τ;选中模型的预测 vs 测量散点图;一段诚实总结。这是校准 receipt —— 公开,不藏。


4. Fine-tune plan

4.1 The choice

Once a model is selected, three fine-tune routes — pick by data scale and engineering budget.

Option A — Full / LoRA fine-tune of the selected model on IASO data.

  • Best when: N ≥ 100 measured candidates with K_D in the same target family (BCMA-related). Selected model has accessible training infrastructure.
  • How: for Boltz-2 affinity head specifically, freeze the structure backbone, fine-tune only the affinity head (or apply LoRA to the head). For AlphaBind / GearBind / DSMBind, follow their published fine-tune recipes.
  • Cost: ~1 week of engineering + GPU time. The biggest one-time investment in the affinity pipeline.
  • Payoff: the largest improvement we can make. Domain fine-tunes routinely outperform much larger general models on narrow distributions.

Option B — Lightweight regression head on frozen embeddings.

  • Best when: N < 100, or we want fast iteration before committing to a full fine-tune.
  • How: use the selected model as a frozen feature extractor. Train a small head — Gaussian process or shallow MLP — on (frozen_embedding → measured_K_D) for IASO data.
  • Cost: ~2 days of engineering. Trivially re-trainable as more data arrives.
  • Payoff: smaller absolute gain than Option A, but the regression head is auditable and the calibration is explicit.

Option C — Output calibration only (Platt scaling / isotonic regression).

  • Best when: N ≤ 30. Or as a wrapper around any of the above.
  • How: the selected model outputs pred_score. Fit pred_score → measured_K_D as a monotonic mapping (Platt = logistic; isotonic = non-parametric monotonic). Apply at inference time.
  • Cost: ~half a day.
  • Payoff: corrects the absolute-scale offset of the model without changing its rank ordering. Should be the first thing applied regardless of whether we do Option A or B downstream.

Decision tree at fine-tune time:

N ≥ 100  →  C, then A
30 ≤ N < 100  →  C, then B; consider A when N grows
N < 30  →  C only; collect more data before B/A

4.2 Validation methodology for the fine-tune

  • Hold-out target. If we have measurements on more than one target by then (BCMA + GPRC5D, etc.), train on one, validate on the other. This catches overfitting to BCMA-specific features.
  • Hold-out generation. If we get measurements across multiple design rounds, train on early rounds, validate on later rounds. Catches "the model memorizes the round-1 cohort, not the design principles."
  • Cross-validation. Standard k-fold within the BCMA cohort as a baseline check.
  • Calibration plots, not just ρ. Predicted-vs-measured scatter, residual plots, ECE for ranked deciles. ρ can be high while absolute predictions are systematically off — those are different failure modes and worth surfacing separately.

4.3 Acceptance criteria for v1 deployment

The fine-tuned model graduates to the platform's affinity_score column when:

  1. ρ (Spearman) on held-out target ≥ 0.6, OR ρ on held-out late-round ≥ 0.6.
  2. Calibration plot shows no systematic bias > 0.5 kcal/mol over the measured range.
  3. The fine-tune doesn't degrade performance on the public benchmarks (Skempi, PDBBind, AB-Bind) by more than 0.05 ρ vs the pre-fine-tune model. (Catches catastrophic forgetting.)

4.4 Re-evaluation cadence

Every wet-lab cohort that lands, re-run §3 selection on the new aggregate dataset. If a different model now wins, swap. If the current model's ρ has drifted below 0.5 on the latest data, retrain.

中文 · §4 Fine-tune plan

3.1 路径选择:模型选定后,三条 fine-tune 路径 —— 按数据规模和工程预算选。

A · 选中模型在 IASO 数据上全量 / LoRA fine-tune。最佳时机:BCMA 相关靶点族里 N ≥ 100 测过 K_D 的候选;选中模型有可访问的训练基础设施。怎么做:Boltz-2 亲和力 head 具体讲,冻结结构主干,只 fine-tune 亲和力 head(或对 head 上 LoRA)。AlphaBind / GearBind / DSMBind 按各自 published fine-tune recipe。成本:约 1 周工程 + GPU 时间。亲和力 pipeline 最大单次投入。收益:能做的最大改进。窄分布上领域 fine-tune 常规超过大得多的通用模型。

B · 冻结 embedding 上的轻量回归 head。最佳时机:N < 100,或想在承诺全量 fine-tune 前快速迭代。怎么做:选中模型作冻结的 feature extractor。在 (冻结 embedding → 测量 K_D) 上训小 head —— 高斯过程或浅 MLP,IASO 数据上训。成本:约 2 天工程。新数据到时 trivially 重训。收益:绝对收益比 A 小,但回归 head 可审计、校准显式。

C · 输出校准(Platt scaling / isotonic 回归)。最佳时机:N ≤ 30。或作上面任一的包装。怎么做:选中模型输出 pred_score。把 pred_score → measured_K_D 拟合为单调映射(Platt = logistic;isotonic = 非参数单调)。推理时应用。成本:约半天。收益:纠正模型的绝对尺度偏移而不改变秩排序。无论下游是否做 A 或 B,都应该是第一个施加的

Fine-tune 时决策树

N ≥ 100      →  C,然后 A
30 ≤ N < 100 →  C,然后 B;N 长大后考虑 A
N < 30       →  仅 C;收更多数据再 B/A

3.2 Fine-tune 验证方法学

  • Hold-out 靶点:那时如果已测多靶点(BCMA + GPRC5D 等),一个训另一个验。抓 BCMA 专属特征上的过拟合。
  • Hold-out 代际:跨多轮设计有测量则早轮训晚轮验。抓「模型记住了第 1 轮 cohort 而非设计原则」。
  • 交叉验证:BCMA cohort 内标准 k-fold 作基线检查。
  • 校准图,不只 ρ:预测 vs 测量散点、残差图、按分位数的 ECE。ρ 可以高但绝对预测系统性偏 —— 那是不同的失败模式,单独 surface 出来。

3.3 v1 部署验收

  1. Hold-out 靶点上 ρ (Spearman) ≥ 0.6,hold-out 晚轮 ρ ≥ 0.6。
  2. 校准图测量范围内无系统性偏 > 0.5 kcal/mol。
  3. fine-tune 不降低公开 benchmark(Skempi、PDBBind、AB-Bind)相对 pre-fine-tune 模型超过 0.05 ρ。(抓灾难性遗忘。)

3.4 重评估节奏:每批湿实验到达,在新聚合数据上重跑 §3 选择。换赢家 → 换;当前模型在最新数据 ρ 漂到 < 0.5 → 重训。


5. What we measure (definition of K_D)

A note on what "affinity" actually means experimentally — for clarity when we compare model output to ground truth.

  • K_D (equilibrium dissociation constant, nM) — the primary scalar. Lower = tighter. Measured by SPR (Biacore — gold standard, gives both kinetics and equilibrium) or BLI (Octet — faster, also gives full kinetics).
  • k_on (association rate, M⁻¹s⁻¹) and k_off (dissociation rate, s⁻¹). K_D = k_off / k_on. Often k_off matters more clinically than K_D itself — slow off-rate = sustained engagement at the target, which is exactly the BCMA CAR-T story.
  • The therapeutic-window argument: Carvykti's tonic-signaling boxed warning means too tight is a real failure mode. Whatever metric we pick has to be compatible with a reward function that penalizes tightness beyond a threshold, not pure maximization. This is independent of which model we choose — it lives in the reward shape.

When we get the first SPR data back, we want at minimum: candidate ID → measured K_D → k_on → k_off. With those three numbers per candidate, we can fit any of the metrics in §2.

中文 · §5 我们测什么(K_D 的定义)

关于「亲和力」实验上到底是什么的注释 —— 模型输出对比地面真值时澄清用。

  • K_D(平衡解离常数,nM) —— 主 scalar。越低越紧。SPR(Biacore,金标准,给完整 kinetic + 平衡)或 BLI(Octet,更快,也给完整 kinetic)测。
  • k_on(关联速率,M⁻¹s⁻¹) + k_off(解离速率,s⁻¹)。K_D = k_off / k_on。临床上 k_off 常常比 K_D 本身更重要 —— 慢 off-rate = 在靶点上持续 engagement,这正是 BCMA CAR-T 的故事。
  • 治疗窗论证:Carvykti tonic-signaling 黑框警告意味太紧是真实失败模式。无论选哪个指标,必须兼容一个超过阈值后惩罚紧度的 reward 函数,而非纯最大化。这与选哪个模型独立 —— 住在 reward 形态里。

第一批 SPR 数据回来时最少要:candidate ID → 测量 K_D → k_on → k_off。每候选这三个数 + §2 任一指标都能 fit。


6. Open questions

These get answered when the wet-lab data arrives; capturing them now so we don't forget to ask:

  1. K_D vs k_off as the optimization target. Therapeutic-window argues for k_off, the field defaults to K_D. Which is the reward function actually optimizing? Likely both, with k_off weighted more on the tight-binder regime.
  2. Single metric vs explicit ensemble. Even if one model wins, do we still expose the runner-up as a cross-check? PRODIGY as an orthogonal check on Boltz-2 is essentially free; the value of the cross-check is real.
  3. Cross-target transferability. If BCMA-tuned, do we re-fine-tune for GPRC5D? Or is one cross-target fine-tune sufficient? Wave-3 question.
  4. Format-specificity. VHH vs IgG vs mini-binder may have different best-performing affinity scorers. Worth running §3 selection separately per format if data allows.
  5. Honest scoring for the absolute scale. Even after fine-tune, predicted K_D in nM should probably ship with a ± uncertainty band, not a single number. The Scoring Audit doctrine demands this — what's the uncertainty model? GP gives one for free (Option B); harder for fine-tuned neural models.

中文 · §6 开放问题

湿实验数据到达时回答;现在记下来免得忘了问:

  1. K_D vs k_off 作优化目标:治疗窗论证 k_off,领域默认 K_D。Reward 函数实际优化哪个?可能两个都,紧 binder 区间下 k_off 加权更高。
  2. 单一指标 vs 显式 ensemble:即便一个模型赢,是否仍把次席 surface 出来作交叉验证?PRODIGY 作 Boltz-2 正交检查基本免费;交叉验证价值真实。
  3. 跨靶点可迁移性:BCMA 调过后,要不要为 GPRC5D 重新 fine-tune?还是一次跨靶 fine-tune 够?Wave 3 问题。
  4. 格式特异性:VHH vs IgG vs mini-binder 可能各有最好亲和力 scorer。数据允许时按格式分别跑 §3 选择。
  5. 绝对尺度的诚实评分:fine-tune 后预测 K_D nM 应该带 ± 不确定度,不是单一数字。Scoring Audit doctrine 要求 —— 不确定度模型怎么定?GP 免费给一个(选项 B);fine-tune 神经模型上更难。

7. Timeline

  • 2026-05-21 → 2026-06-04 (2 weeks): Phase A. Surface Boltz-2 affinity head as boltz_affinity_kd column. Add PRODIGY as prodigy_kd. Both go through scoring-stage refactor (docs/track-engineering-to-closed-loop-rl.md §2.3). Fix the ddg_thermompnn mislabeling to call it folding-ΔΔG.
  • 2026-06-04 → first wet-lab batch return (~2026-07): Phase A continues. Add AlphaBind + GearBind + DSMBind as additional columns (affinity_alphabind, affinity_gearbind, affinity_dsmbind). All have orthogonal signal value. No selection yet — we surface; we don't pick.
  • First wet-lab batch back (N ≥ 20): Phase B. Run the §3 selection. Publish results on /docs/scoring-audit. Designate the winner as affinity_score. Apply Option C (Platt / isotonic calibration) immediately.
  • Subsequent batches: Phase C. As N grows, escalate from C → B → A on the selected model. Re-evaluate selection on every new batch.

中文 · §7 时间线

  • 2026-05-21 → 2026-06-04(2 周):Phase A。Boltz-2 亲和力 head 作 boltz_affinity_kd 列暴露。加 PRODIGY 作 prodigy_kd。都走 scoring-stage 重构(docs/track-engineering-to-closed-loop-rl.md §2.3)。修 ddg_thermompnn 误标,明说它是折叠 ΔΔG。
  • 2026-06-04 → 第一批湿实验回来(~2026-07):Phase A 续。加 AlphaBind + GearBind + DSMBind 作额外列(affinity_alphabindaffinity_gearbindaffinity_dsmbind)。都有正交信号价值。不选,先 surface。
  • 第一批湿实验回来(N ≥ 20):Phase B。跑 §3 选择。/docs/scoring-audit 公布结果。赢家定为 affinity_score。立即施加选项 C(Platt / isotonic 校准)。
  • 后续批次:Phase C。N 长大 → 在选中模型上从 C → B → A 升级。每新批次重评估选择。

Last updated 2026-05-21. Pairs with:

  • docs/docking-research-notes.md — the docking models that feed the affinity layer's input (predicted pose).
  • docs/track-engineering-to-closed-loop-rl.md — the broader Phase 2 closed-loop architecture this fine-tune plan is a sub-track of.
  • docs/models-and-methods.md §6 — the existing scoring layer this metric joins.