|
Download code/scripts/README.md from ChatterjeeLab/AlloGen: direct link, hf CLI and curl.
- Browser
- Download file 3.26 kB
-
https://huggingface.co/ChatterjeeLab/AlloGen/resolve/main/code/scripts/README.md
- Command line
-
hf download hf://ChatterjeeLab/AlloGen/code/scripts/README.md
-
curl -L -o README.md https://huggingface.co/ChatterjeeLab/AlloGen/resolve/main/code/scripts/README.md
3.26 kB
| # `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: <https://github.com/RosettaCommons/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: <https://github.com/proteinabio/proteina-complexa> (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). | |