RFOptimization
Optimize protein binder, cyclic peptide and ligand binder designs with RF3, Boltz-2 and MPNN
RFOptimization (RFO) improves chain A of a starting complex over repeated cycles. In the example from the RFO repository, chain A is a 16 residue peptide and chain B is a 56 residue protein, and ten cycles redesign the peptide against that fixed partner.
Each cycle predicts the current complex, either with RF3 gradient-guided sequence optimization (RosettaFold3) or with Boltz-2, and then redesigns the free residues of chain A with ProteinMPNN or LigandMPNN. The redesigned complex starts the next cycle.
Every other chain stays as a partner, whether it is a protein, a nucleic acid or a ligand. The webserver runs RFO from Foundry (commit d078b24) with the RF3 checkpoint rf3_foundry_01_24_latest_remapped, Boltz 2.2.1 and LigandMPNN. It returns every file RFO writes, the per-cycle scores and the redesigned complexes.
RFOptimization is billed by measured runtime, rounded up to a whole credit. The rate depends on the GPU that the size of the starting complex selects: 22 credits per minute up to 337 residues, 36 from 338 to 580 residues and 46 from 581 to 700 residues. A completed job costs at least 40 credits. Set a spending limit before submission, and unused credits are returned when the job ends.
A job that fails, times out or is cancelled is not charged. A job that reaches its spending limit is stopped, returns no partial result and uses the full limit.
The submission page shows an estimate from the number of cycles, the share of cycles that run RF3 instead of Boltz-2, and the residue count. RFO draws the RF3 cycles from seed and backprop_fraction, and the estimate repeats that draw, so a different seed can change it. The final charge follows the runtime, and the same cycle can take up to 30% longer or shorter between runs.
Estimated credits by residues in the starting complex, at the default backprop_fraction of 0.5 and seed of 42 unless the column says otherwise.
| Residues | 5 cycles | 10 cycles | 20 cycles | 10 cycles, backprop_fraction 1 | 10 cycles, backprop_fraction 0 |
|---|---|---|---|---|---|
| 72 | 175 | 350 | 672 | 455 | 191 |
| 195 | 297 | 594 | 1120 | 862 | 191 |
| 337 | 665 | 1330 | 2476 | 2065 | 228 |
| 580 | 2003 | 4006 | 7429 | 6336 | 510 |
| 700 | 4219 | 8437 | 15624 | 13432 | 943 |
The RFO repository example has 72 residues. The other settings do not change the estimate: loss, the MPNN settings, num_samples, template_plddt_threshold, cyclic, MSAs, templates and the Boltz input specification. Extra MPNN or Boltz-2 samples add runtime, which is charged.
| Input | Formats | Required | Description |
|---|---|---|---|
| Starting complex | .pdb, .ent, .cif | yes | Chain A is the designed protein. Other chains stay as partners, and each ligand needs its own chain ID. Up to 700 residues in total. A sequence-only complex with nan coordinates, like the RFO example, is accepted. |
| MSA | .a3m | no | One alignment per chain, up to 10 files. RF3 and Boltz-2 cycles both use it. Without an MSA, Boltz-2 runs in single-sequence mode. |
| Template (RF3 cycles) | .pdb, .cif | no | Up to 10 structures. RF3 cycles keep the selected chain or residues fixed. Boltz-2 cycles ignore templates. |
| Boltz input specification (Boltz-2 cycles) | .json | no | One AF3-style JSON file with a protein entry with id A. Boltz-2 cycles use it to pin ligand SMILES or embedded MSAs, and RF3 cycles ignore it. |
RF3 cycles read every atom of the complex. RFO stops with an AtomWorks error when an experimental structure has unresolved atoms. Boltz-2 cycles predict from the sequence, so they accept such a file, and the complexes RFO writes after a Boltz-2 cycle are complete. For an experimental structure, set backprop_fraction to 0 for a first run or start from a predicted complex.
RF3 cycles need memory that grows with the square of the complex size, which sets the 700 residue limit. A larger complex is refused before the job starts.
| Parameter | Type | Default | Description |
|---|---|---|---|
| Number of cycles | integer | 10 | total_cycles. Each cycle predicts the current design and redesigns the unfixed residues of chain A. Minimum 1. |
| RF3 backprop fraction | number | 0.5 | backprop_fraction. Per-cycle probability of using RF3 instead of Boltz-2, from 0 to 1. 1 uses RF3 only and 0 uses Boltz-2 only. MPNN redesign follows both. |
| RF3 backprop objective | enum | pae_interface_mean | loss. Confidence objective RF3 backpropagates through: pae_interface_mean, pae_interface_min, pae_mean, pde_mean, plddt_mean or iptm. Used only in RF3 cycles. RFO accepts iptm but computes that score without gradients in this release, so an RF3 cycle with iptm fails. |
| Random seed | integer | 42 | seed. Seeds the choice between RF3 and Boltz-2 for each cycle. MPNN uses the seed plus the cycle number. Minimum 0. |
| Parameter | Type | Default | Description |
|---|---|---|---|
| MPNN model | enum | protein_mpnn | mpnn_model_type. protein_mpnn (ProteinMPNN) or ligand_mpnn (LigandMPNN, ligand-aware design). |
| MPNN samples per cycle | integer | 1 | mpnn_num_seqs. Sequences MPNN samples each cycle. Only the first sample continues to the next cycle, and the samples are not ranked. Minimum 1. |
| MPNN sampling temperature | number | 0.1 | mpnn_temperature. Must be greater than 0. |
| Parameter | Type | Default | Description |
|---|---|---|---|
| Boltz diffusion samples | integer | 1 | num_samples. Diffusion samples per Boltz-2 prediction. Minimum 1. |
| pLDDT threshold for fixed residues | integer | 80 | template_plddt_threshold. Chain A residues above this pLDDT, in contiguous runs of at least five, stay fixed during MPNN redesign. |
| Chain A is cyclic | boolean | false | cyclic. Marks chain A as cyclic in the Boltz-2 input. It adds no cyclic bond constraint to RF3 cycles. |
In RF3 cycles, chain A residues with any atom within 8 Å of chain B stay fixed instead.
| Parameter | Type | Default | Description |
|---|---|---|---|
| Chain for each MSA file | string | optional | msa_chains. One chain ID per attached MSA file, in the order the files are listed, on separate lines. |
| Selection for each template file | string | optional | template_selections. One selection per attached template file, in the order the files are listed, on separate lines: a whole chain (B), a residue range (B1103-1120) or an AtomWorks path query (B/*/[1103-1120]/CA). |
Results open in three tabs. Cycles is a table of the per-cycle records, Structures shows the PDB and CIF files, and Files lists everything for download. Names, bytes and column labels are RFO's own.
| File | Contents |
|---|---|
inputs/<name>_<n>.pdb | The complex RFO handed to cycle n + 1. <name>_0 is the starting complex as RFO read it, and the last file is the final redesigned complex. |
<name>_records.json | One record per cycle with the scores, timing and the chain A sequence MPNN produced. |
recycle_<n>/ | The cycle's structure (.cif and .pdb), the RF3 optimizer folder or the Boltz-2 prediction files, rf3_config.yaml for RF3 cycles, and an mpnn/ folder with mpnn_design.pdb, mpnn_result.json, mpnn_spec.json and every sampled sequence. |
Each record scores the structure predicted for the sequence that entered that cycle. cycle starts at 0 and recycle_<n> is cycle + 1. mpnn_sequence is the new chain A sequence and the input of the next cycle, so the final redesigned complex in inputs/ has not been scored by a prediction. RFO does not rank cycles or samples, and independent AlphaFold3 filtering is outside the pipeline.
RF3 records report loss, ipae_min, ipae_mean, iptm and substrate_plddt for the best optimization step (step). Boltz-2 records keep RFO's AF3_ names: AF3_PTM, AF3_iPTM, AF3_iPAE, AF3_design_ptm, AF3_mean_pair_iptm, AF3_pLDDT (0 to 100), AF3_rmsd and ranking_score. A missing value, such as iptm for a single partner chain or AF3_rmsd when the superposition fails, is empty.
A run that cannot finish all cycles stops with RFO's own error and returns no partial result.
All-atom SE(3)-equivariant diffusion for unconditional generation, motif scaffolding, and binder design.
Design antibody CDRs with Proteo-R1 reasoning, diffusion, and optional framework inpainting.
Predict protein and protein-complex structures from sequences with ESMFold2 confidence outputs.
Generate protein sequences de novo, scaffold fixed motifs, or inpaint selected regions.
Humanize antibodies with optimal V-gene matching.
Design antibodies using a generative foundation model.
Target sequence-conditioned peptide binder design using masked language modeling
Family-conditioned protein sequence generation from FASTA, A2M, or A3M input
Generate de novo protein sequences from plain-text prompts with sampling controls.
Learn from measured fitness and prioritize protein variants.