Skip to main content
Docs

Search guides and API endpoints, for example “Idempotency-Key” or “submit job”.

    Tools · Computational Biology

    RFdiffusion3NA

    Design protein, RNA and DNA backbones with RFdiffusion3NA, from chain lengths alone or from an input structure, with motif, ligand, hotspot, symmetry and partial-diffusion conditioning.

    Updated October 21, 2026

    On this page

    Prices, workflows, and method papersOpen in the app

    RFdiffusion3NA is the nucleic-acid extension of RFdiffusion3. It generates protein, RNA and DNA together, so one job can make an RNA, a DNA duplex or a protein bound to DNA. It makes backbones, not sequences: the usual next steps are sequence design for the protein chains with MPNN and a refold to check the result.

    How it works

    RFdiffusion3NA is an all-atom diffusion model from the RosettaCommons Foundry, released with its weights under a BSD license. It starts from noise and denoises over a fixed number of steps, with the conditioning you supply held fixed along the way. Each design is an independent sample. A diffused RNA or DNA chain starts as a poly-A or poly-DA backbone, and the nucleotide identities are read from the finished structure.

    Inputs

    There are two starting points.

    • From scratch: one row per stretch of residues. Each row is protein, RNA or DNA, with a length (40) or a range (40-50). A change of polymer starts a new chain, and you can start a new chain between two rows of the same polymer, for example for the two strands of a DNA duplex. The page writes the rows as a contig such as 60-80,/0,12-16D, where R marks RNA, D marks DNA, no suffix is protein and /0 starts a new chain.
    • From an input structure: a PDB or mmCIF file that may hold protein, DNA and RNA, used in one of four ways.
      • A contig says which input residues to keep and what to design between or beside them, for example A1-30,12D,/0,B5-12.
      • Unindexed motif residues are kept fixed while the model decides where they sit in the sequence; they need a contig or a protein length.
      • A ligand lists the components in the structure to design around.
      • Partial diffusion adds a chosen amount of noise to the structure and denoises it, producing variants near the input instead of new backbones.

    For motifs and targets you can also choose which atoms stay fixed, which motif residues may change sequence, hotspot residues a binder should contact, and whether to redesign motif side chains. Cyclic and dihedral symmetry give assemblies of identical chains.

    Outputs

    • designs/: each design as a PDB file and as the original mmCIF. A design with an unindexed motif or ligand uses chain IDs that PDB cannot hold, so it is kept as mmCIF only, with a warning.
    • design_metrics.csv: per design, the number of protein residues, radius of gyration, helix, sheet and loop fractions, chain breaks, the largest deviation of the backbone's CA–CA distances from the ideal 3.8 Å bond length, backbone and side-chain clashes, and ligand clashes when a ligand is present. A metric the model did not compute is left blank, which includes the protein secondary-structure fractions of a design without protein.
    • summary.json: the settings and every design with its metrics.

    In a workflow, the designs port binds into the backbones input of MPNN Sequence Design, which redesigns the protein chains and keeps nucleic-acid chains as context, and carries the radius of gyration as a metric so a filter step can drop designs before sequence design.

    Limits

    • Metrics are sanity checks. Few chain breaks and clashes mean the structure is well formed, not that it will fold, bind or function. There is no confidence score, so refold and compare.
    • A job designs at most 400 residues in total across all chains, until the tool has been benchmarked.
    • There is no control over base pairing or secondary structure, and hydrogen-bond conditioning is not offered because the tool it needs is licensed for academic use only. Two DNA chains designed together are not forced to be complementary.
    • A contig that names input residues needs an input structure; a design from scratch uses designed rows only.
    • Symmetric designs are sampled one at a time, so they take longer. More designs and more diffusion steps cost proportionally more.

    RFdiffusion3 designs protein backbones, MPNN Sequence Design designs the protein sequences, ESMFold2 and Boltz-2 refold them, and BoltzGen and FreeBindCraft design binders against a target.

    Run it from the API

    Submit with Submit a job and the job_type below. Price it first with Estimate job reservation cost: submitting reserves that amount from your wallet, and the charge settles at the actual runtime.

    RFdiffusion3NA rfd3na-design

    Job type
    rfd3na-design
    Hardware
    t4l4a10l40s (default)a100-40gba100-80gbh100h200b200
    Typical runtime
    30 min on Nvidia L40S

    Payload

    Payload fields
    FieldTypeDescription
    input_structurefile_object
    contigstring

    Limits: min length 1, max length 1000

    lengthinteger | string
    ligandstring

    Limits: pattern ^[A-Za-z0-9]{1,3}(,[A-Za-z0-9]{1,3}){0,9}$

    unindexstring

    Limits: min length 1, max length 500

    select_fixed_atomsboolean | string | map<string, string>
    select_unfixed_sequencestring

    Limits: min length 1, max length 500

    select_hotspotsstring | map<string, string>
    symmetryobject
    symmetry.idrequiredstring

    Limits: pattern ^[CD][0-9]{1,2}$

    symmetry.is_symmetric_motifboolean
    symmetry.is_unsym_motifstring

    Limits: max length 200

    partial_tnumber

    Limits: ≥ 1, ≤ 30

    is_non_loopyboolean
    redesign_motif_sidechainsboolean

    Default: false

    num_designsinteger

    Default: 8Limits: ≥ 1, ≤ 50

    num_timestepsinteger

    Default: 200Limits: ≥ 20, ≤ 400

    seedinteger

    Limits: ≥ 1, ≤ 2147483647

    File fields take {"name": "x.pdb", "content_b64": "…"} or a stored artifact, {"$artifact": {"id": "art-…", "port": "…"}}. Files are up to 25 MiB each.

    Example

    from cognichem_client import CogniChem
    
    client = CogniChem.from_env()  # reads COGNICHEM_API_KEY
    payload = {
        "contig": "40-50R",
        "num_designs": 2,
        "num_timesteps": 200,
        "seed": 7,
    }
    
    estimate = client.jobs.estimate(job_type="rfd3na-design", payload=payload, resource="l40s")
    print(f"Reserves ${estimate.cost:.2f}")
    
    job = client.jobs.submit(
        job_name="my-rfd3na-design-run",
        job_type="rfd3na-design",
        payload=payload,
        resource="l40s",
    )
    status = client.jobs.wait(job.process_id)
    if status.status == "completed":
        client.jobs.result(job.process_id, save_path=".")

    Sample data from the job catalog; long values are shortened here. Each job_name must be unique among your jobs.

    Workflow inputs

    • Protein structure · optionalPDB, CIF

    Workflow outputs

    • ArchiveZIP
    • TableCSV
    • StructuresPDB