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"
}
]
}
]
}'
Request — RF3FoldRequest
| 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"
}
Response — RF3FoldResponse
| 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 initializationapp.py- Main Modal app with RF3 inference engineschema.py- Pydantic request/response schemasconfig.py- Model family configurationdownload.py- Model weight download logicfixture.py- Test fixture generatortest.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
Related Models¶
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}
}