# `code/scripts/` — entry points This public release ships only the inference and sampling code for Q_θ. | File / dir | Purpose | |---|---| | `evaluate.py` | Score binders in a pre-built `*.pkl` test set with a Q_θ checkpoint; reports Spearman ρ, AUC, selectivity gap. | | `rescore.py` | Re-score raw PDB designs (binder + holo + apo) with Q_θ. | | `pxdesign_guidance/` | PXDesign-prior guidance with Q_θ (Langevin / SMC / TDS / classifier). | Training, baseline scoring (ProteinMPNN / ESM-IF / Rosetta / DFIRE / energy panel), guidance for RFdiffusion / Proteina-ComplexA, and paper-figure aggregation are **not** shipped; the inference path above is the only supported surface for the public release. --- ## Deploying Q_θ with other base models Q_θ provides two interfaces: 1. **Re-ranker (best-of-K).** Given K candidate binders from any prior, score each with `S(Y) = Q_θ(X¹, Y) − Q_θ(X⁰, Y)` and pick the top. No gradient signal needed; the prior is unmodified. 2. **Gradient signal for guidance.** Compute `∇_Y S(Y)` via `DifferentiableQTheta` (in `code/models/differentiable_features.py`) and inject into the prior's sampler (Langevin step, SMC weight, TDS twist, classifier guidance score). The `pxdesign_guidance/` subdir is a worked example of interface (2) wrapping PXDesign. To plug Q_θ into another prior, mirror that pattern: ### RFdiffusion 1. Clone RFdiffusion: . 2. Follow its install + checkpoint download. 3. In RFdiffusion's diffusion loop, after each denoising step, materialize the predicted backbone, build the holo/apo graph inputs expected by `DifferentiableQTheta`, and either: - Apply a Langevin nudge: `x ← x + η · ∇_x S(x)`. - Add a classifier-guidance term to the denoiser's `xt-1` mean: `μ' = μ + s · σ² · ∇_x log p(y|x)`, where `log p(y|x) ≈ S(x)` (Q_θ is treated as the log-likelihood of "is good binder"). 4. Reference template: `pxdesign_guidance/guided_pxdesign.py`. ### Proteina-ComplexA 1. Clone Proteina: (or the released artifact). 2. Use its ComplexA mode that emits binder coords conditioned on a receptor. 3. Same plug pattern as RFdiffusion — wrap the sampler with `DifferentiableQTheta` for guidance, or run unguided and re-rank with `evaluate.py` / `rescore.py`. ### Any backbone prior The only contract Q_θ enforces: - Receptor input is a PDB with holo and apo coordinates. - Binder input is a PDB (or coords) with chain id distinct from receptor's. - For guidance, expose differentiable Cα + backbone coordinates so `∇_x S(x)` flows. See `code/models/differentiable_features.py:DifferentiableQTheta` for the exact interface (`load_receptor(holo_path, apo_path, …)`, `score(design_path, binder_chain, state)`, `.differentiable_score(coords, …)`). --- ## Why other guidance scripts aren't shipped The RFdiffusion / Proteina guidance variants in our internal tree depend on those projects' un-released CIF formats and patched samplers; we don't want to ship modified third-party code. The PXDesign variants we do ship use only PXDesign's public API and are self-contained. For citation / reproduction context, see the paper §4 (guidance methods).