Use docking when you already trust a receptor structure and only need to know where the ligand sits; use co-folding when you have sequences and no structure you trust, or when you want the whole assembly predicted at once. DiffDock is a diffusion model that samples ligand poses against a fixed receptor. Chai-1 and Boltz-2 are co-folding models: they take the chains as sequences — Boltz-2 also takes a ligand as SMILES — and predict the assembled complex in one pass, with confidence scores for each chain and for the interfaces between them. Boltz-2 adds a predicted binding affinity, which is a different quantity from any docking score and has to be judged against measured IC50 or Kd values. If you are choosing between docking methods rather than between docking and co-folding, read DiffDock vs GNINA vs AutoDock Vina instead; if your question is whether a predicted structure is good enough to dock into at all, start with binding pocket prediction on predicted vs experimental structures.
The three methods, side by side#
| DiffDock | Chai-1 | Boltz-2 | |
|---|---|---|---|
| What it does | Samples ligand poses against a fixed receptor | Co-folds a complex from sequence | Co-folds a complex from sequence, optionally with affinity |
| Receptor input | A structure: PDB ID, UniProt entry, or an uploaded/predicted file | Sequences only | Sequences only |
| Ligand input | SMILES or SDF | — (protein chains, as wired on the platform) | SMILES, as a ligand chain |
| Other entities | — | Protein chains | Protein, DNA, RNA, ligand chains |
| Receptor flexibility | None: the receptor is rigid | The whole complex is generated together | The whole complex is generated together |
| Main output | Ranked poses with a confidence score | One top-ranked complex | One predicted complex |
| Confidence metrics | Per-pose confidence | ptm, iptm, aggregate_score, per-chain pLDDT | Per-residue and per-chain pLDDT, per-chain pTM and interface pTM, complex_iptm |
| Affinity estimate | No | No | Yes, optional: predicted log10(IC50 [µM]) |
| On .bloom* | Runs, no sign-in needed | Runs, sign-in required | Runs, sign-in required |
| AlphaFold 3 | Not offered on .bloom* | Not offered on .bloom* | Not offered on .bloom* |
The real split: what you have to hand#
Docking and co-folding are not two attempts at the same task. They answer different questions, and the question you can ask is set by what you already have.
Docking assumes a receptor. DiffDock frames docking as a generative problem over the ligand's degrees of freedom — translation, rotation and torsions — on a receptor that does not move (Corso et al., 2022). That assumption is its strength: it is cheap, it returns an ensemble of poses you can compare, and the protein you dock into is the one you chose. It is also its limit. If the receptor conformation is wrong, or the pocket only forms on binding, no amount of pose sampling fixes it.
Co-folding assumes sequences. Chai-1 and Boltz-2 build the complex and its components together, so the receptor conformation is an output rather than an input (Chai Discovery, 2024; Passaro et al., 2025). That is what you want for a target with no deposited structure, a mutant pocket, or a multi-chain assembly. The cost is that you cannot hold the receptor fixed: you get the complex the model believes in, not the complex you specified.
A practical consequence worth stating plainly: co-folding is not a way to test a pose on a structure you care about. If your question is "does this ligand bind this conformation", docking answers it and co-folding changes the subject.
AlphaFold 3 sits in the same co-folding family and is the external reference point most readers will have in mind. Its authors report substantially improved accuracy for protein–ligand interactions compared with state-of-the-art docking tools, higher accuracy for protein–nucleic acid interactions than nucleic-acid-specific predictors, and substantially better antibody–antigen prediction than AlphaFold-Multimer v2.3 (Abramson et al., Nature 2024). .bloom* does not run AlphaFold 3; Chai-1 and Boltz-2 are the co-folding models available here, and Boltz-1 — Boltz-2's predecessor — was published as reaching AlphaFold 3-level accuracy on biomolecular complex structures under an MIT licence (Wohlwend et al., 2024).
Reading the confidence scores#
Every one of these methods hands you a number between 0 and 1 (or a 0–100 scale) and none of them is an affinity. What each one estimates is different, and mixing them up is the most common error in this area.
- DiffDock's confidence ranks the poses generated for one protein–ligand pair. It is an estimate of whether a pose is correct, so it tells you where the ligand binds, not how strongly. Compare it within a run, never across targets.
- Chai-1's
aggregate_scoreis the quantity its candidates are ranked by, withptmfor the complex andiptmfor the interface. The platform returns the highest-scoring candidate plus a mean pLDDT per chain. - Boltz-2's confidence block separates the levels explicitly: per-residue pLDDT, per-chain pTM, per-chain interface pTM, and one
complex_iptmfor the assembly.
The split that matters for a binding question is fold confidence versus interface confidence. Well-folded chains with a weak interface is the normal failure mode of a co-folded complex, and it is invisible if you only read a single headline score. Read the interface term first.
One more caveat specific to co-folding on this platform: Boltz-2 runs without MSAs by default, and the result flags that with single_sequence_mode. Chai-1 can be run in single-sequence mode too, and its authors report that it preserves most of its performance without MSAs (Chai Discovery, 2024). Still, confidence numbers from a single-sequence run and from an MSA run are not directly comparable — check the flag before you compare two jobs.
What Boltz-2's affinity head is, and what it is not#
Boltz-2 is the only one of the three that predicts a binding affinity. Its authors position it as the first AI model to approach the performance of free-energy perturbation (FEP) methods in estimating small-molecule–protein binding affinity, with strong correlation against experimental readouts on many benchmarks while being at least 1000× more computationally efficient than FEP (Passaro et al., 2025). That is a meaningful claim, and it is also a narrow one. Three things follow.
It is a predicted measurement, so judge it against measurements. On .bloom*, the value comes back as a predicted log10(IC50) with IC50 in µM, so −1 means a predicted 0.1 µM and +1 means 10 µM, and lower is stronger. The right validation is a correlation against your own measured IC50 or Kd values on a series you have assayed. Comparing it with a DiffDock confidence score or an MM-GBSA energy compares three different quantities on three different scales, and tells you nothing about any of them.
It is not FEP. "Approaching FEP performance" on published benchmarks is not the same as running a free-energy calculation, and nothing in the affinity head simulates dynamics. If you need a physics-based number for a shortlist, MM-GBSA is the rescoring step on this platform, and either way an assay is what settles it.
It has hard limits in practice. Affinity prediction needs a complex with more than one chain and at least one ligand chain, and the ligand must be at most 128 heavy atoms. Above that ceiling, .bloom* submits the job with affinity turned off and says so in the result, so you still get the structure instead of losing the whole run. Details are in Boltz-2 results.
Physical validity and the leakage question#
A predicted complex can score well and still be physically wrong. The PoseBusters study made that the headline finding: its title states that AI-based docking methods fail to generate physically valid poses or generalise to novel sequences, and its authors conclude that classical protein–ligand docking tools still outperform deep-learning methods when poses are assessed against steric and energetic criteria (Buttenschoen, Morris & Deane, Chem Sci 2024). The PoseBusters tool is open source, and running a validity check on any deep-learning pose — docked or co-folded — before you build on it is the cheapest safeguard available.
The generalisation half of that title is the leakage question, and it applies to co-folding at least as much as to docking. All of these models are trained on deposited structures, so a benchmark complex that resembles a training entry flatters the model. Boltz-1's authors shipped an inference-time steering technique specifically to fix hallucinations and non-physical predictions (Wohlwend et al., 2024), which is an acknowledgement of the same failure class from the co-folding side.
Two habits follow, and they cost almost nothing:
- Validate on complexes released after the model's training cutoff, not on whatever set is convenient.
- Check the geometry, not just the score. A ligand pose with clashing atoms or impossible torsions is wrong at any confidence.
When to use each#
- You trust a receptor structure and want the pose. Dock. DiffDock returns an ensemble you can compare, and the receptor stays the one you chose.
- You have sequences and no structure you trust. Co-fold. Boltz-2 if the complex contains a ligand, DNA or RNA; Chai-1 for a protein assembly.
- You want a second opinion on an interface. Co-fold the same chains with both Chai-1 and Boltz-2. Two independent models agreeing on an interface is worth more than one model's confidence score.
- You want an affinity estimate. Boltz-2's affinity head, read as a predicted IC50 and checked against your own measured values.
- You want to rank a shortlist by energy. Dock, then rescore with MM-GBSA, then confirm in an assay.
- You need AlphaFold 3 specifically. It is not offered on .bloom*; run it through DeepMind's own release and bring the structure here for downstream work.
How to run it on .bloom*#
All three run as GPU jobs, and the results carry the tool, parameters and run that produced them.
DiffDock needs no sign-in. Give it a receptor — a PDB ID, a UniProt entry, an uploaded file, or a structure from an earlier job — plus one or more ligand SMILES. It docks blind against the whole protein: there is no binding-site box and no reference-ligand input. It returns 10 poses by default (1–40) over 20 diffusion steps by default (1–40). See DiffDock, DiffDock inputs and DiffDock results.
Boltz-2 needs a signed-in account. Submit up to 20 chain entries, each typed protein, dna, rna or ligand, with a ligand given as SMILES. num_recycling_steps defaults to 3 (1–10) and sampling_steps to 200 (1–500). MSA generation is opt-in, because it transmits your sequences to the public ColabFold MMseqs2 server and can add 30 seconds to 10 minutes. Set predict_affinity for the affinity value. Jobs typically take 5–30 minutes. See Boltz-2, Boltz-2 inputs and Boltz-2 results.
Chai-1 also needs a signed-in account. Submit the protein chains and it returns the top-ranked complex with ptm, iptm, aggregate_score and a per-chain mean pLDDT, in a similar 5–30 minute window. Its sampling settings are fixed, and a complex containing a ligand, DNA or RNA belongs in Boltz-2 instead — Chai-1 inputs spells out which parameters the backend applies. See Chai-1 and Chai-1 results.
A useful cross-check chains them: dock with DiffDock, co-fold the same receptor sequence and ligand with Boltz-2, compare the pocket geometry, then rescore the preferred pose with MM-GBSA. If you are unsure whether your receptor has a usable pocket at all, P2Rank ranks candidate sites from the structure alone. For how these fit the wider catalog, see docking on .bloom* and structure prediction.
AlphaFold 3 is not offered on .bloom*, and neither is AlphaFold-Multimer. The alphafold tool is a lookup against the AlphaFold Database, not a prediction run.
Key takeaways#
- Docking needs a receptor; co-folding needs sequences. What you have decides the method, not which is newer.
- Co-folding cannot test a pose on a conformation you specify. The receptor is an output, so it changes the question docking was asking.
- Read the interface score, not just the headline confidence. Good chains with a bad interface is the standard co-folding failure.
- Boltz-2's affinity is a predicted IC50. Validate it against measured IC50/Kd, never against a docking score or an MM-GBSA energy.
- Check physical validity and post-cutoff generalisation. A confident pose can still be physically impossible, and a flattering benchmark can be leakage.
Co-fold a complex or dock a ligand against your own target on the .bloom* platform.
References#
- Corso, G., Stärk, H., Jing, B., Barzilay, R. & Jaakkola, T. "DiffDock: Diffusion Steps, Twists, and Turns for Molecular Docking." ICLR (2023). arXiv:2210.01776. Code: gcorso/DiffDock
- Chai Discovery. "Chai-1: Decoding the molecular interactions of life." bioRxiv (2024). doi:10.1101/2024.10.10.615955. Code: chaidiscovery/chai-lab
- Passaro, S., Corso, G., Wohlwend, J. et al. "Boltz-2: Towards Accurate and Efficient Binding Affinity Prediction." bioRxiv (2025). doi:10.1101/2025.06.14.659707. Code: jwohlwend/boltz
- Wohlwend, J., Corso, G., Passaro, S. et al. "Boltz-1: Democratizing Biomolecular Interaction Modeling." bioRxiv (2024). doi:10.1101/2024.11.19.624167
- Abramson, J., Adler, J., Dunger, J. et al. "Accurate structure prediction of biomolecular interactions with AlphaFold 3." Nature (2024). doi:10.1038/s41586-024-07487-w. Code: google-deepmind/alphafold3
- Buttenschoen, M., Morris, G. M. & Deane, C. M. "PoseBusters: AI-based docking methods fail to generate physically valid poses or generalise to novel sequences." Chemical Science (2024). doi:10.1039/D3SC04185A. Code: maabuu/posebusters