Co-folding models predict the 3D structure of a biomolecular complex (whether protein, ligand, nucleic acid, or some mix of all three) directly from sequences and SMILES strings, without needing pre-existing structural data. Unlike traditional docking, which places a ligand into a fixed receptor, co-folding models predict the protein and its binding partners together, capturing induced-fit effects like side-chain rotation and loop movement that rigid-receptor methods miss entirely.
Rowan offers a full lineup of state-of-the-art co-folding models through one interface, so you can pick the right tool for a given target or run several side by side and compare.
| Model | Notes | Ligand affinity | PPI affinity | Templates |
|---|---|---|---|---|
| Chai-1 | Strong performance on protein–protein complexes, nucleic acid–containing complexes, and single-sequence predictions without MSAs | No | No | No |
| Boltz-1 | Supports steering potentials to guide predictions | No | No | No |
| Boltz-2 | Successor to Boltz-1, adding protein–ligand binding-affinity prediction | Yes | No | Yes |
| Boltz-2.1 | Closed-source successor to Boltz-2, adding protein–protein binding-affinity prediction | Yes | Yes | Yes |
| OpenFold3 | Strong performance on targets dissimilar from training data | No | No | Yes |
If you're not sure which to use, Boltz-2 is a reasonable default for most work thanks to its affinity head. OpenFold3 is a good second option, especially when your target looks unusual or your other predictions seem untrustworthy.

Every co-folding prediction on Rowan shares the same underlying structure:
Despite their strengths, these models are known to struggle in certain cases. Independent benchmarks (such as the Runs N' Poses benchmark) have repeatedly shown that co-folding performance correlates strongly with similarity to each model's training data, and that allosteric or otherwise unusual binding modes remain difficult for every model in this class.

Co-folding models perform much better on complexes more similar to their training data.
As a result, co-folding is best treated as a fast, powerful hypothesis generator—not a replacement for experimental structures or more rigorous methods like free-energy perturbation.
Interested in seeing more results? Check out our compilation of external Boltz-2 benchmarks.
Co-folding jobs can be submitted directly from Python with rowan.submit_protein_cofolding_workflow. Here's a protein–ligand complex submitted with pose refinement turned on:
import rowan
folder = rowan.get_folder("examples")
workflow = rowan.submit_protein_cofolding_workflow(
initial_protein_sequences=[
"ASKGTSHEAGIVCRITKPALLVLNHETAKVIQTAFQRASYPDITGEKAMMLLGQVKYGLHNIQISHLSIASSQVELVEAKSIDVSIQDVSVVFKGTLKYGYTTAWWLGIDQSIDFEIDSAIDLQINTQLTADSGRVRTDAPDCYLSFHKLLLHLQGEREPGWIKQLFTNFISFTLKLVLKGQICKEINVISNIMADFVQTRAASILSDGDIGVDISLTGDPVITASYLESHHKGHFIYKDVSEDLPLPTFSPTLLGDSRMLYFWFSERVFHSLAKVAFQDGRLMLSLMGDEFKAVLETWGFNTNQEIFQEVVGGFPSQAQVTVHCLKMPKISCQNKGVVVDSSVMVKFLFPRPDQQHSVAYTFEEDIVTTVQASYSKKKLFLSLLDFQITPKTVSNLTESSSESIQSFLQSMITAVGIPEVMSRLEVVFTALMNSKGVSLFDIINPEIITRDGFLLLQMDFGFPEHLLVDFLQSLS"
],
initial_smiles_list=[
"CCOC(=O)N1c2ccc(C(F)(F)F)cc2[C@@H](N(Cc2cc(C(F)(F)F)cc(C(F)(F)F)c2)C(=O)OC)C[C@H]1CC"
],
ligand_binding_affinity_index=0,
name="Torcetrapib Cofolding",
do_pose_refinement=True,
compute_strain=False,
folder=folder,
)
print(f"View workflow privately at: https://labs.rowansci.com/protein-cofolding/{workflow.uuid}")
result = workflow.result()
print(result)
# e.g. <ProteinCofoldingResult predictions=5 iptm=0.87>
By default this uses Boltz-2, but any model in the table above can be selected with the model argument (e.g. model=rowan.CofoldingModel.OPENFOLD_3). For more runnable examples, see our example scripts for:
Ready to try it out? Create a free Rowan account and predict your first complex today.