File size: 8,699 Bytes
d149fb1 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 | ---
license: apache-2.0
language:
- en
- zh
tags:
- OneScience
- life-science
- protein-structure-prediction
frameworks: PyTorch
---
<p align="center">
<strong>
<span style="font-size: 30px;">OpenFold</span>
</strong>
</p>
# Model Introduction
OpenFold is an open-source framework for predicting three-dimensional protein structures from protein sequences, multiple sequence alignments (MSAs), and template information. As a trainable reproduction of AlphaFold2, its core network architecture includes Evoformer, Structure Module, template modules, MSA modules, and other components, supporting a complete structural prediction experiment workflow that includes training, inference, and weight conversion.
Paper: OpenFold: Retraining AlphaFold2 yields new insights into its learning mechanisms and capacity for generalization
https://www.biorxiv.org/content/10.1101/2022.11.20.517210v2
# Model Description
OpenFold is based on the Evoformer + Structure Module architecture and is trained with PDB and UniRef data. It is designed for protein three-dimensional structure prediction, model fine-tuning, and research on architectural improvements. The core network contains 48 Evoformer Blocks and 8 Structure Module layers. Through triangle attention and invariant point attention mechanisms, it enables bidirectional fusion of evolutionary information and spatial geometry. Compared with the original AlphaFold2, OpenFold adds memory-efficient attention, mixed-precision training support, and seamless weight conversion capabilities, significantly reducing GPU memory usage and fixing trainability issues.
# Applicable Scenarios
| Scenario | Description |
| --- | --- |
| Local OpenFold invocation | Users can call OpenFold training or inference through the scripts in this repository. |
| Reuse of the OneScience base | Continue using shared OneScience modules such as datapipes, utils, loss, and np. |
| ModelScope/OneCode release | Expose only scripts, models, configurations, and weight directories to reduce the release package size. |
| Weight conversion and data preparation | Use the tools under `scripts/` to download databases, preprocess alignments, and convert weights. |
# Usage
## 1. Using OneCode
You can try intelligent one-click AI4S programming through the OneCode online environment:
[Try intelligent one-click AI4S programming](https://web-2069360198568017922-iaaj.ksai.scnet.cn:58043/home)
## 2. Manual Installation and Usage
**Hardware Requirements**
- Running on a GPU or DCU is recommended.
- A CPU can be used for import checks and small-configuration connectivity validation, but full training and inference will be slow.
- DCU users need to install DTK in advance. DTK 25.04.2 or later is recommended, or the OneScience-recommended version that matches the current cluster.
## 3. Quick Start
### Download the Model Package
```bash
modelscope download --model OneScience/OpenFold --local_dir ./OpenFold
cd OpenFold
```
### Install the Runtime Environment
#### DCU Environment
```bash
# Activate DTK and CONDA first
conda create -n onescience311 python=3.11 -y
conda activate onescience311
# uv installation is supported
pip install onescience[bio] -i http://mirrors.onescience.ai:3141/pypi/simple/ --trusted-host mirrors.onescience.ai
```
## Quick Verification
```bash
PYTHONPATH=$(pwd)/model python -c "from openfold.model import AlphaFold; from config.config import model_config; import onescience; print('openfold wrapper ok')"
```
If dependencies such as `torch`, `ml_collections`, or `deepspeed` are reported as missing, install the OneScience-recommended runtime environment first, or install the corresponding dependencies for your DCU/GPU version.
## Example Data
The `data/` directory is used to store the example inputs required by OpenFold and user-provided data. The current repository includes a monomer inference example at `data/demo/monomer`, making it easy to quickly check the inference script, model import, and alignment loading workflow.
Directory structure:
| Path | Description |
| --- | --- |
| `data/demo/monomer/fasta_dir/6kwc.fasta` | Example protein sequence. The FASTA header is `6KWC_1`. |
| `data/demo/monomer/alignments/6KWC_1/` | Precomputed MSA/template search results corresponding to the FASTA header. |
| `data/demo/monomer/alignments/6KWC_1/bfd_uniref_hits.a3m` | BFD/UniRef alignment results. |
| `data/demo/monomer/alignments/6KWC_1/uniref90_hits.sto` | UniRef90 alignment results. |
| `data/demo/monomer/alignments/6KWC_1/mgnify_hits.sto` | MGnify alignment results. |
| `data/demo/monomer/alignments/6KWC_1/hhsearch_output.hhr` | HHsearch template search results. |
| `data/demo/monomer/inference.sh` | Monomer inference example script using the FASTA and precomputed alignments above. |
The example data does not include OpenFold weights or the PDB mmCIF template library. Before running the demo, prepare:
- `weight/openfold.pt`, or specify the weights with `CHECKPOINT_PATH=/path/to/openfold.pt`.
- The PDB mmCIF template directory. By default, `data/databases/pdb_mmcif/mmcif_files` is read; it can also be specified with `TEMPLATE_MMCIF_DIR=/path/to/mmcif_files`.
Run the example:
```bash
bash data/demo/monomer/inference.sh
```
To use another device, set `MODEL_DEVICE`:
```bash
MODEL_DEVICE=cuda:0 bash data/demo/monomer/inference.sh
```
## Inference Example
```bash
python scripts/inference.py /path/to/fasta_dir /path/to/template_mmcif_dir \
--output_dir ./outputs/inference \
--config_preset model_1_ptm \
--model_device cuda:0 \
--use_precomputed_alignments /path/to/alignments \
--openfold_checkpoint_path ./weight/openfold.pt
```
If using AlphaFold JAX parameters:
```bash
python scripts/inference.py /path/to/fasta_dir /path/to/template_mmcif_dir \
--output_dir ./outputs/inference \
--config_preset model_1_ptm \
--model_device cuda:0 \
--use_precomputed_alignments /path/to/alignments \
--jax_param_path ./weight/params_model_1_ptm.npz
```
## Training Example
```bash
python scripts/train.py \
/path/to/train_mmcif \
/path/to/train_alignments \
/path/to/template_mmcif \
./outputs/train \
2021-10-10 \
--config_preset initial_training \
--max_epochs 1 \
--train_epoch_len 1 \
--gpus 1
```
Multi-GPU training can be launched with `torchrun`; adjust the specific parameters according to your runtime environment.
## Data and Weight Downloads
OpenFold weights:
```bash
bash scripts/download_openfold_params.sh ./weights
```
Hugging Face weights:
```bash
bash scripts/download_openfold_params_huggingface.sh ./weights
```
PDB mmCIF template library:
```bash
bash scripts/download_pdb_mmcif.sh /path/to/database_dir
```
Complete AlphaFold/OpenFold databases:
```bash
bash scripts/download_alphafold_dbs.sh /path/to/database_dir full_dbs
```
## Official OneScience Information
| Platform | OneScience Main Repository | Skills Repository |
| --- | --- | --- |
| Gitee | https://gitee.com/onescience-ai/onescience | https://gitee.com/onescience-ai/oneskills |
| GitHub | https://github.com/onescience-ai/OneScience | https://github.com/onescience-ai/oneskills |
## Citations and License
- Original OpenFold paper: [OpenFold: Retraining AlphaFold2 yields new insights into its learning mechanisms and capacity for generalization](https://www.biorxiv.org/content/10.1101/2022.11.20.517210).
- Original AlphaFold2 paper: [Highly accurate protein structure prediction with AlphaFold](https://www.nature.com/articles/s41586-021-03819-2).
- If you use OpenFold's multimer prediction functionality, you should also cite the original AlphaFold-Multimer paper: [Protein complex prediction with AlphaFold-Multimer](https://www.biorxiv.org/content/10.1101/2021.10.04.463034v1).
- If you use OpenProteinSet training data, you should also cite: [OpenProteinSet: Training data for structural biology at scale](https://arxiv.org/abs/2308.05326).
- OpenFold-related source code uses the Apache License 2.0. See `LICENSE` in the repository root for details. The terms of use for model weights and data should follow the instructions provided by the corresponding publishers.
- The OpenProteinSet dataset uses the CC BY 4.0 License. When using this dataset, you should acknowledge the data source and cite the OpenProteinSet paper as required by the dataset page.
- If you use OpenFold in research, it is recommended to cite the original OpenFold and AlphaFold2 papers as well as relevant OneScience project information. When using multimer functionality, also cite AlphaFold-Multimer. When using OpenProteinSet or other downstream data resources, also include citations for the corresponding datasets, databases, and original papers.
|