Skip to content

RosettaFold3

All-atom biomolecular structure prediction network using transformer + diffusion architecture, capable of predicting protein, DNA, RNA, and ligand complexes with confidence scoring.

License: BSD-3-Clause · Molecules: protein, dna, rna, ligand, complex · Tasks: structure_prediction

Actions: fold · Variants: 1

At a glance

Use it when

  • You need the highest accuracy available for multi-molecule biomolecular structure prediction -- RF3 represents the current state of the art from the Baker Lab lineage
  • You need template-guided structure prediction where partial experimental data (homolog structures, known domain folds) can be incorporated to improve prediction accuracy
  • You are predicting protein-ligand complex structures for drug discovery, especially when the ligand can be specified via SMILES strings or CCD codes
  • You need to predict structures of cyclic peptides or proteins with non-canonical amino acids, which require specialized handling beyond standard amino acid vocabularies
  • You want to sample multiple diverse conformations via diffusion to explore alternative binding modes, allosteric states, or conformational heterogeneity
  • You are working on multi-component biological systems (protein-DNA, protein-RNA, protein-ligand, protein-protein) and need a single model that handles all entity types
  • You need interface-specific confidence scores (ipTM) to evaluate the quality of predicted inter-molecular contacts for complex validation
Strengths
  • Newest-generation all-atom biomolecular structure prediction model from the Baker Lab (RosettaCommons), representing the cutting edge of diffusion-based structure prediction with state-of-the-art accuracy on multi-molecule benchmarks
  • Handles the broadest range of molecular inputs: proteins, DNA, RNA, small-molecule ligands (SMILES or CCD codes), cyclic peptides, non-canonical amino acids, and covalent modifications -- all in a single unified model
  • Template conditioning via template_selection allows users to incorporate partial experimental data (known domain structures, homolog structures, crystallographic fragments) to guide and improve predictions
  • Diffusion-based sampling generates multiple diverse conformations per input, enabling exploration of alternative states and conformational heterogeneity -- critical for drug discovery and allosteric mechanism studies
  • Comprehensive confidence metrics: pTM (global), ipTM (interface-specific), pLDDT (per-residue), PAE (pairwise aligned error), and composite ranking_score for automated quality triage
  • BSD-3-Clause open-source license from RosettaCommons allows academic and commercial use with minimal restrictions
  • Supports cyclic_chains parameter for cyclic peptide structure prediction, a specialized capability not available in most competing models
  • Built on the foundry framework, pairing a Transformer-based trunk (informed by evolutionary MSA and pairwise information) with a diffusion-based structure generation module for robust all-atom predictions
Limitations
  • Requires A100 40GB GPU with 64GB system RAM -- expensive infrastructure that limits accessibility for routine use or large-scale screening
  • No binding affinity prediction -- produces structures and confidence scores but cannot estimate binding energies; a dedicated affinity predictor is required for that
  • MSA preprocessing is recommended for best accuracy, adding minutes to hours of database search time before structure prediction can begin
  • Newer model with less published community validation than AlphaFold2 -- fewer independent benchmarks and downstream application studies in the literature
  • Membrane protein predictions remain weak due to training data bias toward soluble proteins and absence of lipid bilayer modeling
  • Single-structure outputs from each diffusion trajectory -- while multiple samples provide diversity, the model does not explicitly model thermodynamic ensembles or Boltzmann-weighted populations
  • Large multi-chain complexes may exceed GPU memory, requiring careful input size management or tiling strategies
  • Small molecules alone (without biomolecular context) are not well-handled -- RF3 is designed for biomolecular complexes, not standalone molecular structure optimization
Reach for something else when
  • You need rapid single-chain protein structure screening -- ESMFold provides predictions in seconds without MSA, at a fraction of the cost
  • You need binding affinity prediction alongside structure -- RF3 predicts structures and confidence scores but does not estimate binding affinities
  • You need de novo protein design or binder generation -- RF3 is a prediction model; use BoltzGen for end-to-end binder design
  • GPU resources are limited and you only need protein structure prediction -- AF2 NIM on A100 80GB provides well-validated protein predictions; ESMFold on A10G provides fast screening
  • You need conformational ensemble modeling for intrinsically disordered proteins -- RF3 produces individual conformations, not thermodynamically weighted ensembles
  • You need the most extensively validated predictions for publication -- AlphaFold2 has the broadest published benchmark literature and may be preferred by reviewers

Alternatives

Model Better when Worse when
chai1 Well-benchmarked AF3-class multi-molecule complex predictor with ESM-embedding single-sequence boost and commercial support from Chai Discovery. No template conditioning, cyclic-peptide/CCD-code handling, or the diffusion multi-sample conformational diversity RF3 offers; newer RF3 architecture may be more accurate on some targets.
esmfold 100-1000x faster single-sequence protein folding on a cheap A10G GPU with no MSA -- ideal for high-throughput protein screening. Protein-only (no DNA/RNA/ligand/complex or SMILES), substantially lower accuracy, 768-residue limit, no template conditioning or diffusion sampling.

API & schema

Call an action with POST /api/v1/{slug}/{action} — the request envelope is {"items": [...], "params": {...}} and a success returns {"results": [...]}. See the HTTP API page for the base URL, error shape, and full contract.

fold

Call it

curl -X POST http://127.0.0.1:8000/api/v1/rf3/fold \
  -H "Content-Type: application/json" \
  -d '{
  "items": [
    {
      "name": "string",
      "components": [
        {
          "name": "string",
          "type": "protein"
        }
      ]
    }
  ]
}'

RequestRF3FoldRequest

Field Type Required Constraints Description
params RF3FoldParams no Optional parameters controlling this action (defaults are used when omitted).
items list[RF3FoldRequestInput] yes items 1–1 Batch of inputs to process in a single request. Up to 1 input per request.
Nested types

RF3AlignmentDatabase

Allowed values: mgnify, small_bfd, uniref90

RF3Component

Field Type Required Constraints Description
name string yes Human-readable label for this component; used as an identifier within the prediction job.
type RF3EntityType yes Component entity type: protein, DNA, RNA, or ligand.
sequence string | null no A protein, DNA, or RNA sequence in single-letter codes (maximum 2048 characters).
smiles string | null no Ligand structure as a SMILES string.
ccd_code string | null no Chemical Component Dictionary code for a ligand.
structure_path string | null no Container-local path to a template structure file (CIF/PDB/SDF). Not usable by external callers; prefer structure_cif instead.
structure_cif string | null no Template structure in mmCIF format (inline text). Use this to supply a structure template.
chain_id string | null no Chain identifier to operate on (e.g. "A").
msa_path string | null no Container-local path to an MSA file (.a3m). Not usable by external callers; prefer msa_content or alignment instead.
msa_content string | null no Multiple-sequence alignment for the query sequence, in A3M format.
alignment object | null no MSA alignments keyed by sequence database.

RF3EntityType

Allowed values: protein, DNA, RNA, ligand

RF3FoldParams

Field Type Required Constraints Description
n_recycles integer no ≥2; ≤20; default 10 Number of trunk recycling iterations.
num_steps integer no ≥50; ≤500; default 200 Number of diffusion sampling steps.
diffusion_batch_size integer no ≥1; ≤10; default 5 Number of diffusion samples to generate in parallel.
seed integer | null no default 42 Random seed for reproducible sampling.
template_selection list[string] | null no Atom selections for token-level templates (e.g. ['A', 'B/*/1-10']).
ground_truth_conformer_selection list[string] | null no Atom selections fixed to their ground-truth conformers (e.g. ['C', 'D']).
cyclic_chains list[string] | null no Chain identifiers to model as cyclic (e.g. cyclic peptides).
early_stopping_plddt_threshold number no ≥0.0; ≤1.0; default 0.5 Early-stopping threshold as a fraction in [0, 1] (note: output pLDDT scores use a 0–100 scale). Sampling stops early when the pLDDT fraction falls below this value.
one_model_per_file boolean no default False Whether to write each predicted model to its own file.
annotate_b_factor_with_plddt boolean no default False Whether to store per-residue pLDDT in the B-factor column.
include_pae boolean no default False Whether to include the predicted aligned error matrix in the response.
include_plddt boolean no default True Whether to include per-residue pLDDT scores in the response.

RF3FoldRequestInput

Field Type Required Constraints Description
name string yes Human-readable label for this prediction job; used as the output directory name.
components list[RF3Component] yes items 1– Biomolecular components that make up the complex to predict.
bonds list[list] | null no Custom covalent bonds as pairs of atom specifications.
Raw JSON Schema
{
  "$defs": {
    "RF3AlignmentDatabase": {
      "description": "MSA alignment database options.",
      "enum": [
        "mgnify",
        "small_bfd",
        "uniref90"
      ],
      "title": "RF3AlignmentDatabase",
      "type": "string"
    },
    "RF3Component": {
      "additionalProperties": false,
      "description": "A biomolecular component for structure prediction.",
      "properties": {
        "name": {
          "description": "Human-readable label for this component; used as an identifier within the prediction job.",
          "title": "Name",
          "type": "string"
        },
        "type": {
          "$ref": "#/$defs/RF3EntityType",
          "description": "Component entity type: protein, DNA, RNA, or ligand."
        },
        "sequence": {
          "anyOf": [
            {
              "maxLength": 2048,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "A protein, DNA, or RNA sequence in single-letter codes (maximum 2048 characters).",
          "title": "Sequence"
        },
        "smiles": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ligand structure as a SMILES string.",
          "title": "Smiles"
        },
        "ccd_code": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Chemical Component Dictionary code for a ligand.",
          "title": "Ccd Code"
        },
        "structure_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Container-local path to a template structure file (CIF/PDB/SDF). Not usable by external callers; prefer structure_cif instead.",
          "title": "Structure Path"
        },
        "structure_cif": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Template structure in mmCIF format (inline text). Use this to supply a structure template.",
          "title": "Structure Cif"
        },
        "chain_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Chain identifier to operate on (e.g. \"A\").",
          "title": "Chain Id"
        },
        "msa_path": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Container-local path to an MSA file (.a3m). Not usable by external callers; prefer msa_content or alignment instead.",
          "title": "Msa Path"
        },
        "msa_content": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Multiple-sequence alignment for the query sequence, in A3M format.",
          "title": "Msa Content"
        },
        "alignment": {
          "anyOf": [
            {
              "additionalProperties": {
                "type": "string"
              },
              "propertyNames": {
                "$ref": "#/$defs/RF3AlignmentDatabase"
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "MSA alignments keyed by sequence database.",
          "title": "Alignment"
        }
      },
      "required": [
        "name",
        "type"
      ],
      "title": "RF3Component",
      "type": "object"
    },
    "RF3EntityType": {
      "description": "Entity types for RF3 input.",
      "enum": [
        "protein",
        "DNA",
        "RNA",
        "ligand"
      ],
      "title": "RF3EntityType",
      "type": "string"
    },
    "RF3FoldParams": {
      "additionalProperties": false,
      "description": "Parameters for RF3 structure prediction.",
      "properties": {
        "n_recycles": {
          "default": 10,
          "description": "Number of trunk recycling iterations.",
          "maximum": 20,
          "minimum": 2,
          "title": "N Recycles",
          "type": "integer"
        },
        "num_steps": {
          "default": 200,
          "description": "Number of diffusion sampling steps.",
          "maximum": 500,
          "minimum": 50,
          "title": "Num Steps",
          "type": "integer"
        },
        "diffusion_batch_size": {
          "default": 5,
          "description": "Number of diffusion samples to generate in parallel.",
          "maximum": 10,
          "minimum": 1,
          "title": "Diffusion Batch Size",
          "type": "integer"
        },
        "seed": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": 42,
          "description": "Random seed for reproducible sampling.",
          "title": "Seed"
        },
        "template_selection": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Atom selections for token-level templates (e.g. ['A', 'B/*/1-10']).",
          "title": "Template Selection"
        },
        "ground_truth_conformer_selection": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Atom selections fixed to their ground-truth conformers (e.g. ['C', 'D']).",
          "title": "Ground Truth Conformer Selection"
        },
        "cyclic_chains": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Chain identifiers to model as cyclic (e.g. cyclic peptides).",
          "title": "Cyclic Chains"
        },
        "early_stopping_plddt_threshold": {
          "default": 0.5,
          "description": "Early-stopping threshold as a fraction in [0, 1] (note: output pLDDT scores use a 0\u2013100 scale). Sampling stops early when the pLDDT fraction falls below this value.",
          "maximum": 1.0,
          "minimum": 0.0,
          "title": "Early Stopping Plddt Threshold",
          "type": "number"
        },
        "one_model_per_file": {
          "default": false,
          "description": "Whether to write each predicted model to its own file.",
          "title": "One Model Per File",
          "type": "boolean"
        },
        "annotate_b_factor_with_plddt": {
          "default": false,
          "description": "Whether to store per-residue pLDDT in the B-factor column.",
          "title": "Annotate B Factor With Plddt",
          "type": "boolean"
        },
        "include_pae": {
          "default": false,
          "description": "Whether to include the predicted aligned error matrix in the response.",
          "title": "Include Pae",
          "type": "boolean"
        },
        "include_plddt": {
          "default": true,
          "description": "Whether to include per-residue pLDDT scores in the response.",
          "title": "Include Plddt",
          "type": "boolean"
        }
      },
      "title": "RF3FoldParams",
      "type": "object"
    },
    "RF3FoldRequestInput": {
      "additionalProperties": false,
      "description": "Input specification for a structure prediction task.",
      "properties": {
        "name": {
          "description": "Human-readable label for this prediction job; used as the output directory name.",
          "title": "Name",
          "type": "string"
        },
        "components": {
          "description": "Biomolecular components that make up the complex to predict.",
          "items": {
            "$ref": "#/$defs/RF3Component"
          },
          "minItems": 1,
          "title": "Components",
          "type": "array"
        },
        "bonds": {
          "anyOf": [
            {
              "items": {
                "maxItems": 2,
                "minItems": 2,
                "prefixItems": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "string"
                  }
                ],
                "type": "array"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Custom covalent bonds as pairs of atom specifications.",
          "title": "Bonds"
        }
      },
      "required": [
        "name",
        "components"
      ],
      "title": "RF3FoldRequestInput",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "description": "Request for RF3 structure prediction.",
  "properties": {
    "params": {
      "$ref": "#/$defs/RF3FoldParams",
      "description": "Optional parameters controlling this action (defaults are used when omitted)."
    },
    "items": {
      "description": "Batch of inputs to process in a single request. Up to 1 input per request.",
      "items": {
        "$ref": "#/$defs/RF3FoldRequestInput"
      },
      "maxItems": 1,
      "minItems": 1,
      "title": "Items",
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "title": "RF3FoldRequest",
  "type": "object"
}

ResponseRF3FoldResponse

Field Type Required Constraints Description
results list[list[RF3FoldResponseResult]] yes Per-input results, returned in the same order as the request items.
Nested types

RF3ConfidenceScores

Field Type Required Constraints Description
ptm number | null no Predicted TM-score (pTM) for the overall structure (0–1).
iptm number | null no Interface predicted TM-score (ipTM) for multi-chain complexes (0–1).
ranking_score number | null no Composite score used to rank diffusion samples.
has_clash boolean | null no Whether the predicted structure contains steric clashes.
plddt list[number] | null no Per-residue pLDDT confidence score (0–100; higher is more confident).
pae list[list[number]] | null no Predicted aligned error (PAE) matrix, in Ångströms.

RF3FoldResponseResult

Field Type Required Constraints Description
structure_cif string yes Predicted structure in mmCIF format.
confidence RF3ConfidenceScores yes Confidence scores for the prediction (pTM, ipTM, pLDDT, PAE, ranking).
early_stopped boolean no default False Whether this sample was stopped early on low confidence.
sample_idx integer yes Index of this sample within the diffusion batch.
Raw JSON Schema
{
  "$defs": {
    "RF3ConfidenceScores": {
      "description": "Confidence metrics for a prediction.",
      "properties": {
        "ptm": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Predicted TM-score (pTM) for the overall structure (0\u20131).",
          "title": "Ptm"
        },
        "iptm": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Interface predicted TM-score (ipTM) for multi-chain complexes (0\u20131).",
          "title": "Iptm"
        },
        "ranking_score": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Composite score used to rank diffusion samples.",
          "title": "Ranking Score"
        },
        "has_clash": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Whether the predicted structure contains steric clashes.",
          "title": "Has Clash"
        },
        "plddt": {
          "anyOf": [
            {
              "items": {
                "type": "number"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Per-residue pLDDT confidence score (0\u2013100; higher is more confident).",
          "title": "Plddt"
        },
        "pae": {
          "anyOf": [
            {
              "items": {
                "items": {
                  "type": "number"
                },
                "type": "array"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Predicted aligned error (PAE) matrix, in \u00c5ngstr\u00f6ms.",
          "title": "Pae"
        }
      },
      "title": "RF3ConfidenceScores",
      "type": "object"
    },
    "RF3FoldResponseResult": {
      "description": "Single prediction output from RF3.",
      "properties": {
        "structure_cif": {
          "description": "Predicted structure in mmCIF format.",
          "title": "Structure Cif",
          "type": "string"
        },
        "confidence": {
          "$ref": "#/$defs/RF3ConfidenceScores",
          "description": "Confidence scores for the prediction (pTM, ipTM, pLDDT, PAE, ranking)."
        },
        "early_stopped": {
          "default": false,
          "description": "Whether this sample was stopped early on low confidence.",
          "title": "Early Stopped",
          "type": "boolean"
        },
        "sample_idx": {
          "description": "Index of this sample within the diffusion batch.",
          "title": "Sample Idx",
          "type": "integer"
        }
      },
      "required": [
        "structure_cif",
        "confidence",
        "sample_idx"
      ],
      "title": "RF3FoldResponseResult",
      "type": "object"
    }
  },
  "description": "Response from RF3 structure prediction.",
  "properties": {
    "results": {
      "description": "Per-input results, returned in the same order as the request items.",
      "items": {
        "items": {
          "$ref": "#/$defs/RF3FoldResponseResult"
        },
        "type": "array"
      },
      "title": "Results",
      "type": "array"
    }
  },
  "required": [
    "results"
  ],
  "title": "RF3FoldResponse",
  "type": "object"
}

Usage

One-line summary: All-atom biomolecular structure prediction network using transformer + diffusion architecture, capable of predicting protein, DNA, RNA, and ligand complexes with confidence scoring.

Overview

RosettaFold3 is an all-atom biomolecular structure prediction network competitive with leading open-source models. It improves on tasks such as prediction of chiral ligands and fixed-backbone or fixed-conformer docking.

This implementation wraps the RosettaFold3 model from the RosettaCommons/foundry repository into a Modal app following the BioLM patterns. RF3 can:

  • Predict protein structures with or without MSAs
  • Predict multi-component complexes (protein-protein, protein-DNA, protein-RNA, protein-ligand)
  • Handle non-canonical amino acids and covalent modifications
  • Template portions of structures while folding others
  • Predict chiral small molecules accurately
  • Early-stop low-confidence predictions to save compute

Architecture

Property Value
Architecture Transformer + Diffusion
Training objective All-atom structure prediction
Input modalities Sequence, Structure, SMILES, MSA
Input molecules Protein, DNA, RNA, Ligand, Complex
Output Predicted 3D structure (mmCIF format)
Max sequence length 2048 tokens

Model Files

  • __init__.py - Package initialization
  • app.py - Main Modal app with RF3 inference engine
  • schema.py - Pydantic request/response schemas
  • config.py - Model family configuration
  • download.py - Model weight download logic
  • fixture.py - Test fixture generator
  • test.py - Model tests

Available Checkpoints

The "latest" checkpoint is used by default (most recent release with bugfixes). The upstream IPD server also hosts preprint and benchmark checkpoint variants, but only the latest checkpoint is exposed through this API.

Capabilities & Limitations

CAN be used for: - Protein structure prediction (single chain or multi-chain) - Protein-protein, protein-DNA, protein-RNA, and protein-ligand complex prediction - Templated folding (fixing portions of a structure) - Chiral small molecule prediction - MSA-enhanced structure prediction - Multi-sample diffusion batching with confidence ranking

CANNOT be used for: - Sequences longer than 2048 residues - Real-time interactive folding (diffusion sampling is computationally expensive) - Training or fine-tuning (inference only)

Other considerations: - MSAs significantly improve prediction quality for proteins - Early stopping can save 10-20x compute for low-confidence predictions - Output structures are returned in mmCIF format (may be gzipped) - Multiple samples from the diffusion batch are ranked by confidence

Usage Examples

Simple Protein Folding

from models.rf3.schema import (
    RF3FoldRequest,
    RF3FoldRequestInput,
    RF3FoldParams,
    RF3Component,
    RF3EntityType,
)

request = RF3FoldRequest(
    params=RF3FoldParams(
        n_recycles=10,
        num_steps=200,
        diffusion_batch_size=5,
    ),
    items=[
        RF3FoldRequestInput(
            name="simple_fold",
            components=[
                RF3Component(
                    name="protein",
                    type=RF3EntityType.PROTEIN,
                    sequence="MKLLISC...",
                    chain_id="A",
                )
            ],
        )
    ],
)

Protein with MSA

from models.rf3.schema import (
    RF3FoldRequest,
    RF3FoldRequestInput,
    RF3FoldParams,
    RF3Component,
    RF3EntityType,
)

request = RF3FoldRequest(
    params=RF3FoldParams(
        n_recycles=10,
        include_plddt=True,
    ),
    items=[
        RF3FoldRequestInput(
            name="with_msa",
            components=[
                RF3Component(
                    name="protein",
                    type=RF3EntityType.PROTEIN,
                    sequence="MKLLIS...",
                    chain_id="A",
                    msa_content=">seq1\nMKLLIS...\n>seq2\nMKLLVS...",
                )
            ],
        )
    ],
)

Protein-Ligand Complex

from models.rf3.schema import (
    RF3FoldRequest,
    RF3FoldRequestInput,
    RF3FoldParams,
    RF3Component,
    RF3EntityType,
)

request = RF3FoldRequest(
    params=RF3FoldParams(
        diffusion_batch_size=5,
        ground_truth_conformer_selection=["B"],
    ),
    items=[
        RF3FoldRequestInput(
            name="protein_ligand",
            components=[
                RF3Component(
                    name="protein",
                    type=RF3EntityType.PROTEIN,
                    sequence="MKLLIS...",
                    chain_id="A",
                ),
                RF3Component(
                    name="ligand",
                    type=RF3EntityType.LIGAND,
                    smiles="CC(=O)OC1=CC=CC=C1C(=O)O",  # Aspirin
                    chain_id="B",
                ),
            ],
        )
    ],
)

Templated Folding

from models.rf3.schema import (
    RF3FoldRequest,
    RF3FoldRequestInput,
    RF3FoldParams,
    RF3Component,
    RF3EntityType,
)

request = RF3FoldRequest(
    params=RF3FoldParams(
        template_selection=["A/*/1-50"],
        n_recycles=10,
    ),
    items=[
        RF3FoldRequestInput(
            name="templated_fold",
            components=[
                RF3Component(
                    name="protein",
                    type=RF3EntityType.PROTEIN,
                    sequence="MKLLIS...",
                    structure_cif="...",
                    chain_id="A",
                )
            ],
        )
    ],
)

Architecture & training

Architecture

Model Type & Innovation

RosettaFold3 (RF3) is an all-atom biomolecular structure prediction network from the Baker Lab (RosettaCommons). It combines a Transformer-based trunk with a diffusion-based structure generation module, enabling prediction of protein structures, multi-component complexes (protein-protein, protein-DNA, protein-RNA, protein-ligand), and non-canonical modifications.

Key innovations include: - Diffusion-based structure sampling that generates multiple diverse conformations - Support for small molecule ligands via SMILES/CCD input alongside macromolecular sequences - Template conditioning for partial structure information - Early stopping based on pLDDT confidence to save compute on low-quality predictions - Cuequivariance operations for efficient equivariant neural network computation on GPU

RF3 processes inputs through a trunk network with recycling (iterative refinement), then samples 3D coordinates via a learned diffusion process that denoises random coordinates into predicted structures.

Parameters & Layers

Component Details
Architecture Transformer trunk + diffusion structure module
Trunk recycling 2--20 recycles (default: 10)
Diffusion steps 50--500 (default: 200)
Diffusion batch size 1--10 (default: 5) output structures
Input modalities Sequence, SMILES, MSA (A3M), structure (CIF/PDB/SDF)
Output format mmCIF with confidence scores
Checkpoint rf3_foundry_01_24_latest.ckpt (default)
Framework PyTorch + Lightning + AtomWorks

Training Data

Property Details
Training structures PDB (protein, nucleic acid, ligand complexes)
Sequence databases UniRef90, MGnify, Small BFD (for MSA generation)
Ligand representations CCD (Chemical Component Dictionary), SMILES
Training cutoff 09/21 for benchmark checkpoint; 01/24 for latest

Loss Function & Objective

RF3 is trained with a combination of: - Diffusion loss for structure denoising (noise-conditioned score matching) - Auxiliary losses including pTM (predicted TM-score), pLDDT (predicted LDDT), and PAE (Predicted Aligned Error) - Clash penalty for steric violations

Tokenization / Input Processing

  • Protein input: Amino acid sequences with optional MSA (A3M format)
  • DNA/RNA input: Nucleotide sequences
  • Ligand input: SMILES strings or CCD codes
  • Structure templates: mmCIF, PDB, or SDF format (inline or file path)
  • MSA provision: Direct A3M content, file path, or database alignment dictionary
  • Component specification: Each input entity is a named component with type, sequence/structure, and optional chain ID
  • Bonds: Custom covalent bonds can be specified between atoms
  • Internal format: Inputs are converted to a JSON specification consumed by the RF3InferenceEngine

Performance & Benchmarks

Published Benchmarks

From Corley, Mathis et al., bioRxiv (2025):

RF3 is competitive with leading open-source biomolecular structure prediction models. It improves on several tasks including:

Task RF3 Performance Notes
Protein monomer folding Competitive with AF2/AF3 Single-chain proteins
Protein-protein complexes Competitive Multi-chain predictions
Protein-ligand docking Improved chiral ligand handling Better than RF2 for chirality
Fixed-backbone docking Improved Template-conditioned prediction
Cyclic peptides Supported Via cyclic_chains parameter

BioLM Verification Results

Test Case Input Tolerance Status
Simple protein fold 95-residue single chain rel_tol 1e-2, RMSD < 5A PASS
Protein-ligand complex Protein + ibuprofen SMILES rel_tol 1e-2, RMSD < 5A PASS
Multi-chain complex Two protein chains rel_tol 1e-2, RMSD < 5A PASS
MSA-enhanced prediction Protein + A3M MSA rel_tol 1e-2, RMSD < 5A PASS

Comparison to Alternatives

Model Strength When to prefer
RF3 All-atom; ligands; templates; diffusion sampling Multi-modal complexes; ligand binding; template-guided
AlphaFold2/3 Well-validated; highest accuracy on many benchmarks Maximum single-chain accuracy
Boltz Open-source AF3-like Similar use cases to RF3
Chai-1 Multi-modal structure prediction Alternative to RF3/Boltz
ESMFold Very fast; no MSA needed Rapid screening; single chains

Strengths & Limitations

Pros

  • Supports diverse biomolecular inputs: proteins, DNA, RNA, ligands, and their complexes
  • Diffusion-based sampling generates multiple diverse conformations per prediction
  • Template conditioning allows incorporating partial structural knowledge
  • Early stopping on low-confidence predictions saves compute
  • Provides comprehensive confidence metrics (pTM, ipTM, pLDDT, PAE, ranking score)
  • Supports cyclic peptides and non-canonical modifications
  • MSA-enhanced predictions for higher accuracy when alignments are available

Cons

  • Requires A100 40GB GPU -- significant resource cost
  • Longer runtime than single-pass methods (diffusion requires many steps)
  • Large model checkpoint (~several GB)
  • Batch size limited to 1 input item per request
  • Maximum sequence length of 2048 residues
  • Requires foundry package with specialized dependencies (cuequivariance)

Known Failure Modes

  • Very large complexes may exceed GPU memory
  • Low-confidence predictions trigger early stopping (by design)
  • Ligand predictions require valid SMILES or CCD codes
  • MSA quality significantly affects prediction accuracy for proteins

Implementation Details

Inference Pipeline

Request
  |-- 1. Validate input components (sequences, SMILES, structures)
  |-- 2. Convert to RF3 input specification JSON
  |-- 3. Write MSA files if alignment provided
  |-- 4. Create RF3InferenceEngine with parameters
  |-- 5. Run diffusion-based inference
  |     |-- Trunk recycling (n_recycles iterations)
  |     |-- Diffusion sampling (num_steps denoising steps)
  |     |-- Generate diffusion_batch_size structures
  |-- 6. Check for early stopping (pLDDT threshold)
  |-- 7. Read output CIF files (may be gzipped)
  |-- 8. Read confidence JSON files
  |-- 9. Optionally read PAE and pLDDT arrays
  |-- 10. Return structures with confidence scores

Memory & Compute Profile

Resource Value
GPU A100 40GB
Memory 64 GB RAM
CPU 8.0 cores
Batch size 1
Max sequence length 2048
Max output structures 10 (diffusion_batch_size)

Determinism & Reproducibility

Setting Value
Torch manual seed Yes (42 at model load)
CUDA manual seed Yes (42, if available)
User-specified seed Supported via seed parameter (default: 42)
Diffusion sampling Stochastic; seed controls randomness

Different seeds produce different structural samples from the diffusion process. This is by design -- multiple samples enable exploration of conformational space.

Caching Behavior

Response caching is available as an optional, off-by-default gateway feature (BIOLM_CACHE_ENABLED) -- see the gateway docs; it is not handled by the model container. Especially useful given the high compute cost of each prediction.

Versions & Changelog

Version Date Changes
v1 2025 Initial implementation using foundry commit 6866d61

Available Checkpoints

Checkpoint Filename Use Case
Latest (default) rf3_foundry_01_24_latest.ckpt Production use with bugfixes
Preprint rf3_foundry_01_24_preprint.ckpt Reproducing paper results
Benchmark rf3_foundry_09_21_preprint.ckpt Fair benchmarking (09/21 PDB cutoff)

Biology

Molecule Coverage

Primary Molecule Type(s)

RosettaFold3 is a general-purpose all-atom biomolecular structure prediction model covering:

  • Proteins: Single chains and multi-chain complexes, with or without MSA
  • DNA: Single-stranded and double-stranded DNA
  • RNA: Single-stranded RNA
  • Small molecule ligands: Via SMILES strings or Chemical Component Dictionary (CCD) codes
  • Complexes: Any combination of the above (protein-protein, protein-DNA, protein-RNA, protein-ligand, etc.)

The model also supports cyclic peptides, non-canonical amino acids (via CCD codes), and covalent modifications. Template structures can be provided to condition predictions on partial experimental data.

Cross-Applicability

Molecule Type Applicability Evidence Caveats
Protein monomers High Primary training target MSA improves accuracy
Protein-protein complexes High Multi-chain support Large complexes may exceed memory
Antibodies Moderate Handles as general proteins Specialized models (ImmuneFold) may be more accurate for CDR loops
Protein-ligand complexes High SMILES/CCD input for ligands Improved chiral ligand handling over RF2
Protein-DNA complexes High DNA sequence input supported Less validated than protein-only
Protein-RNA complexes High RNA sequence input supported Less validated than protein-only
Cyclic peptides Moderate Via cyclic_chains parameter Specialized feature
Small molecules alone Low Designed for biomolecular context Use RDKit/molecular docking for small molecules alone

Biological Problems Addressed

Protein Structure Prediction

Biological context: Knowing the 3D structure of a protein is fundamental to understanding its function, designing drugs that target it, and engineering proteins with desired properties. Experimental methods (X-ray crystallography, cryo-EM, NMR) are slow and expensive, while computational prediction from sequence enables rapid structural characterization.

How RF3 helps: RF3 predicts full-atom protein structures from amino acid sequences, optionally enhanced with MSA information. The diffusion-based approach generates multiple diverse conformations, allowing exploration of conformational space rather than producing a single point estimate. Confidence metrics (pTM, pLDDT) enable quality assessment.

Output interpretation: Each output is an mmCIF structure file with associated confidence scores. ptm indicates global fold confidence (>0.7 is generally reliable). plddt per-residue scores identify confident vs uncertain regions. Multiple samples from diffusion allow selection of the best structure via ranking_score.

Multi-Component Complex Prediction

Biological context: Most biological processes involve interactions between multiple molecules -- protein-protein signaling, transcription factor-DNA binding, ribosome-mRNA interactions, enzyme-substrate complexes. Understanding these interactions at atomic resolution is critical for drug design and mechanistic biology.

How RF3 helps: RF3 natively handles multi-component inputs: users specify each molecular entity (protein chain, DNA strand, RNA strand, or ligand) as a named component, and RF3 predicts the full complex structure including inter-molecular interfaces. The iptm (interface pTM) score specifically evaluates the quality of predicted interfaces.

Protein-Ligand Docking

Biological context: Drug discovery requires predicting how small molecules bind to protein targets. Accurate binding pose prediction enables virtual screening, lead optimization, and understanding of drug resistance mechanisms.

How RF3 helps: Ligands can be specified via SMILES strings or CCD codes as input components alongside protein sequences. RF3 jointly predicts protein structure and ligand binding pose. Template conditioning via ground_truth_conformer_selection can fix the ligand conformation while folding the protein around it.

Template-Guided Structure Prediction

Biological context: In many scenarios, partial structural information is available -- an experimental structure of a homolog, a known domain fold, or crystallographic data for part of a complex. Incorporating this information improves prediction accuracy.

How RF3 helps: The template_selection parameter allows users to specify which parts of the input should be treated as structural templates. RF3 conditions its prediction on these templates while freely predicting the remaining structure. This is valuable for: - Homology-guided folding - Loop prediction with known framework - Complex prediction with known subunit structures

Applied Use Cases

Published Applications

RF3 is based on the foundry framework from RosettaCommons. Published and anticipated use cases include:

  • Structure-based drug design: Predicting protein-ligand complex structures for virtual screening
  • Antibody-antigen complex modeling: Predicting binding interfaces for therapeutic antibody development
  • Protein engineering: Understanding structure-function relationships for directed evolution
  • Nucleic acid-protein interactions: Predicting transcription factor-DNA binding for gene regulation studies

Anticipated Use Cases

  • Cryo-EM model building: Using RF3 predictions as starting models for cryo-EM refinement
  • Allosteric mechanism discovery: Sampling multiple conformations via diffusion to identify allosteric states
  • Multi-drug resistance prediction: Modeling how mutations affect drug binding

Predecessor Models

  • RosettaFold2 (Baek et al., 2023): The previous generation from the Baker Lab, which RF3 improves upon with diffusion-based sampling and better ligand handling.
  • AlphaFold2 (Jumper et al., 2021): The landmark structure prediction model that RF-series models build upon and compete with.

Complementary Models

  • ESM2: Provides protein language model embeddings that can be used independently of structure prediction for sequence fitness assessment.
  • Boltz: Alternative open-source structure prediction that can serve as a cross-validation for RF3 predictions.
  • ProperMAB: Can use RF3-predicted antibody structures for extracting developability features (though ProperMAB uses ABodyBuilder2 internally).

Alternative Models

Alternative Advantage over RF3 Disadvantage vs RF3
AlphaFold2/3 Higher accuracy on some single-chain benchmarks Closed-source (AF3); no diffusion sampling (AF2)
Boltz Similar AF3-like architecture; open-source May not handle templates/cyclic peptides as well
Chai-1 Multi-modal; commercially supported Different licensing terms
ESMFold Much faster; no MSA needed Single-chain only; lower accuracy on multi-chain

Biological Background

Protein Folding Problem

The protein folding problem -- predicting 3D structure from amino acid sequence -- was considered one of biology's grand challenges for over 50 years. AlphaFold2's breakthrough in 2020 demonstrated that deep learning could achieve experimental-level accuracy. RF3 builds on this foundation with additional capabilities for multi-molecular complexes and diffusion-based sampling.

Diffusion Models for Structure Prediction

RF3 uses a diffusion-based approach for structure generation. In the forward process, atomic coordinates are progressively corrupted with noise. The model learns to reverse this process -- given noisy coordinates, it predicts the denoising step that recovers the true structure. This approach has several advantages:

  • Multiple samples: Each denoising trajectory produces a different structure, enabling exploration of conformational space
  • Confidence-aware: The model can identify low-confidence predictions early and stop
  • Diverse outputs: Different random seeds produce structurally diverse predictions that can be ranked by confidence

Multiple Sequence Alignments (MSAs)

MSAs are collections of evolutionarily related sequences aligned to a query. Co-evolutionary patterns in MSAs encode 3D contact information: residue pairs that co-evolve tend to be spatially close in the folded structure. Providing MSAs significantly improves prediction accuracy, especially for proteins with many homologs. RF3 supports MSAs in A3M format from databases including UniRef90, MGnify, and Small BFD.

Confidence Metrics

RF3 provides several confidence measures: - pTM (predicted TM-score): Global structural similarity metric, 0--1. Values >0.7 generally indicate reliable folds. - ipTM (interface pTM): Evaluates the quality of inter-chain interfaces in multi-chain predictions. - pLDDT (predicted LDDT): Per-residue confidence, 0--100. Values >90 indicate very high confidence. - PAE (Predicted Aligned Error): Per-residue-pair distance error matrix, indicating relative positioning confidence. - Ranking score: Composite score: 0.8 * ipTM + 0.2 * pTM - 100 * has_clash.


Sources & license

License: BSD-3-Clause (text)

Papers

  • Accelerating Biomolecular Modeling with AtomWorks and RF3 — bioRxiv preprint, 2025 · DOI

Source repositories

Cite

@article{corley2025accelerating,
  title={Accelerating biomolecular modeling with atomworks and rf3},
  author={Corley, Nathaniel and Mathis, Simon and ...},
  journal={bioRxiv},
  year={2025}
}