af3-any-model / README.md
sokrypton's picture
squash history: keep only the current weights (drops superseded blob versions)
13db85d
|
Raw History Blame
4 kB
---
license: other
license_name: see-per-model-licences
tags:
- protein-structure-prediction
- alphafold3
- biology
library_name: alphafold3
---
# AlphaFold3-family model weights, converted to run in one package
Seven published AlphaFold3-architecture models, converted from their original
PyTorch checkpoints into the AlphaFold 3 JAX/Haiku parameter format so that a
single codebase runs all of them from the same input JSON.
Code: [sokrypton/alphafold3, branch `af3-any-model`](https://github.com/sokrypton/alphafold3/tree/af3-any-model)
```bash
# the weights are fetched on first use; nothing to download by hand
python run_alphafold.py --model=boltz2 --json_path=fold_input.json \
--output_dir=out --norun_data_pipeline
```
Each model ships two files: `<model>.bin.zst`, the parameters, and
`<model>.shapes.json`, the parameter tree derived from the graph plus a record
of which converter produced the blob and when — it is what
makes loading skip `jax.eval_shape`, and it names anything a conversion did not
cover. **All seven conversions cover every parameter the graph asks for.**
## What is here, and whose it is
These are DERIVED works: the same trained parameters, rewritten into another
framework's layout. Each remains under its original licence and belongs to its
original authors.
| file | model | authors | licence | original |
|---|---|---|---|---|
| `openfold3.*` | OpenFold3 | AlQuraishi Lab / OpenFold Consortium | Apache-2.0 | [openfold3](https://github.com/aqlaboratory/openfold3) |
| `intellifold2.*` | IntelliFold-v2 | IntelligenAI | Apache-2.0 | [intelligenAI/intellifold](https://huggingface.co/intelligenAI/intellifold) |
| `opendde.*` | OpenDDE | Aureka Research | Apache-2.0 | [aurekaresearch/OpenDDE](https://huggingface.co/aurekaresearch/OpenDDE) |
| `boltz2.*` | Boltz-2 | Wohlwend et al., MIT | MIT | [jwohlwend/boltz](https://github.com/jwohlwend/boltz) |
| `protenix2.*` | Protenix-v2 | ByteDance | Apache-2.0 | [bytedance/Protenix](https://github.com/bytedance/Protenix) |
| `rosettafold3.*` | RoseTTAFold3 | Institute for Protein Design, UW | BSD-3-Clause | [RosettaCommons foundry](https://files.ipd.uw.edu/pub/rf3/) |
| `chai1.*` | chai-1 | Chai Discovery | Apache-2.0 | [chaidiscovery/chai-lab](https://github.com/chaidiscovery/chai-lab) |
If you use one of these, cite the model's own authors.
**AlphaFold 3's own parameters are not here and will not be.** Google DeepMind
requires you to request them directly; point `--model_dir` at your own copy.
## Notes on two of them
* **chai-1** also needs `std_conformers.npz` (in this repo, fetched with it) and
ESM2 token embeddings, which are most of its token feature stream. Without the
embeddings it is a different model — see `converters/esm_embed.py` and
`--esm_embeddings`.
* **protenix2** was converted from a community mirror of ByteDance's release,
since the official CDN was unreachable; the SHA256 was verified against the
CDN copy while it still resolved.
## How they were made
`python -m converters.convert --model NAME --out DIR` in the repo above, which
downloads the published checkpoint, converts it, and writes the shape manifest.
The conversion is not mechanical — residue alphabets differ between codebases,
as do the row/column conventions of pair projections, and getting either wrong
is silent. `OF3_AF3_PORTING_NOTES.md` and `docs/ported_models.md` record what
each one required.
## Sanity check
All seven fold 6MRR (a de novo designed 68-residue protein) from a single
sequence, scored against the crystal structure, at 3 recycles and 1 sample:
| model | CA-RMSD | pLDDT | | model | CA-RMSD | pLDDT |
|---|---|---|---|---|---|---|
| boltz2 | 0.52 Å | 96.8 | | opendde | 1.59 Å | 92.0 |
| protenix2 | 0.67 Å | 84.8 | | intellifold2 | 1.63 Å | 85.5 |
| rosettafold3 | 0.99 Å | 81.5 | | openfold3 | 1.74 Å | 78.6 |
| | | | | chai1 | 1.75 Å | 84.5 |
(AlphaFold 3 itself gets 0.61 Å on the same input, for reference.)