|
Download README.md from OneScience-Group/structural-evolution: direct link, hf CLI and curl.
- Browser
- Download file 9.85 kB
-
https://huggingface.co/OneScience-Group/structural-evolution/resolve/main/README.md
- Command line
-
hf download hf://OneScience-Group/structural-evolution/README.md
-
curl -L -o README.md https://huggingface.co/OneScience-Group/structural-evolution/resolve/main/README.md
9.85 kB
| license: mit | |
| language: | |
| - en | |
| - zh | |
| tags: | |
| - OneScience | |
| - life-science | |
| - protein | |
| - antibody | |
| - mutation | |
| - inverse-folding | |
| - structural-evolution | |
| frameworks: PyTorch | |
| <p align="center"> | |
| <strong> | |
| <span style="font-size: 30px;">Structural Evolution</span> | |
| </strong> | |
| </p> | |
| # Model Introduction | |
| Structural Evolution is an unsupervised protein and antibody mutation recommendation workflow based on a structure-informed protein language model. It takes a PDB/CIF structure of a protein or protein complex as input, scores candidate mutation sequences under structural conditions with ESM-IF1, and selects high-probability substitutions from deep mutational scanning candidates to assist protein and antibody sequence optimization. | |
| Paper: | |
| > **Unsupervised evolution of protein and antibody complexes with a structure-informed language model** | |
| > https://doi.org/10.1126/science.adk8946 | |
| # Model Description | |
| Structural Evolution uses the structure-conditioned language model ESM-IF1 to recommend mutations for a target chain in a given protein structure. The program first extracts the target chain's wild-type sequence from the input PDB/CIF and generates single-point deep mutational scanning candidates. It then calculates the log-likelihood of each candidate under a single-chain or multichain backbone condition and selects recommended mutations in descending score order. | |
| # Use Cases | |
| | Use case | Description | | |
| | --- | --- | | |
| | Single-point protein mutation recommendation | Select high-probability amino acid substitutions from structure information | | |
| | Antibody sequence optimization | Recommend structure-conditioned mutations for antibody heavy and light chains separately | | |
| | Protein complex optimization | Evaluate target-chain mutations in a multichain backbone context | | |
| | Deep mutational scanning candidate screening | Score all single-point mutations and output high-scoring candidates | | |
| # Usage | |
| ## 1. Using OneCode | |
| Experience intelligent one-click AI4S programming in 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** | |
| - Structural Evolution supports inference on CPUs and GPUs. | |
| - A GPU/DCU is recommended for ESM-IF1 inference to accelerate candidate sequence scoring. | |
| - Larger protein complexes or larger mutation candidate libraries require more GPU/DCU memory and host memory. | |
| - If no GPU/DCU is available, you can explicitly use the CPU with `--nogpu`, but execution will be significantly slower. | |
| ### Set Up the Runtime Environment | |
| #### DCU Environment | |
| ```bash | |
| # Activate DTK and CONDA first | |
| conda create -n onescience311 python=3.11 -y | |
| conda activate onescience311 | |
| # Install with uv support | |
| pip install onescience[bio] \ | |
| -i http://mirrors.onescience.ai:3141/pypi/simple/ \ | |
| --trusted-host mirrors.onescience.ai | |
| ``` | |
| #### Environment Notes | |
| - If you encounter missing dependencies or version incompatibilities during execution, refer to the dependency versions specified in `environment.yml` and install or adjust the relevant dependencies as needed. | |
| ### Prepare the Weights | |
| Complete Structural Evolution inference only requires the additional **ESM-IF1 model weights**. Standard mutation recommendation does not require downloading any additional training dataset from the paper. | |
| #### 1) ESM-IF1 Model Weights | |
| Download the ESM-IF1 weights: | |
| ```text | |
| https://zenodo.org/records/12631662 | |
| ``` | |
| Command: | |
| ```bash | |
| wget -P ~/.cache/torch/hub/checkpoints \ | |
| https://zenodo.org/records/12631662/files/esm_if1_20220410.zip | |
| unzip ~/.cache/torch/hub/checkpoints/esm_if1_20220410.zip \ | |
| -d ~/.cache/torch/hub/checkpoints/ | |
| ``` | |
| After extraction, make sure that the following file exists: | |
| ```text | |
| ~/.cache/torch/hub/checkpoints/ | |
| └── esm_if1_20220410.pt | |
| ``` | |
| The file must exist. | |
| `scripts/recommend.py` always loads the model from: | |
| ```text | |
| ~/.cache/torch/hub/checkpoints/esm_if1_20220410.pt | |
| ``` | |
| loads the model from this path. If you save the weights elsewhere, update the checkpoint path in the code. | |
| ## 3. Quick Start | |
| ### Download the Model Package | |
| ```bash | |
| hf download OneScience-Group/structural-evolution \ | |
| --local-dir ./structural-evolution | |
| cd structural-evolution | |
| ``` | |
| - Structural Evolution additionally depends on the **ESM-IF1 model weights**. Prepare `esm_if1_20220410.pt` as described in "Prepare the Weights" and make sure that the checkpoint path in the code matches its actual location. | |
| ### Quick Verification | |
| View the inference options: | |
| ```bash | |
| python scripts/recommend.py --help | |
| ``` | |
| Run a quick verification with the official example structure: | |
| ```bash | |
| python scripts/recommend.py \ | |
| scripts/examples/7mmo_abc_fvar.pdb \ | |
| --chain A \ | |
| --n 10 | |
| ``` | |
| # Example Data | |
| The official repository provides an example structure in: | |
| ```text | |
| scripts/examples/ | |
| ``` | |
| The directory contains: | |
| ```text | |
| scripts/examples/ | |
| └── 7mmo_abc_fvar.pdb | |
| ``` | |
| This structure contains the LYCoV-1404 antibody variable region and SARS-CoV-2 RBD, and demonstrates mutation recommendation for an antibody heavy chain. | |
| For your own tasks, prepare: | |
| ```text | |
| PDB or CIF structure of a protein or protein complex | |
| + | |
| Target chain ID | |
| ``` | |
| For example: | |
| ```text | |
| structure.pdb | |
| chain A | |
| ``` | |
| # Inference Examples | |
| ## Basic Mutation Recommendation | |
| The simplest way to run it is: | |
| ```bash | |
| python scripts/recommend.py \ | |
| /path/to/structure.pdb \ | |
| --chain A | |
| ``` | |
| Default output: | |
| ```text | |
| Top 10 mutations | |
| maxrep = 1 | |
| multichain backbone = True | |
| ``` | |
| This recommends 10 mutations by default and allows each original residue position to appear at most once. | |
| ## Antibody Example | |
| Official example: | |
| ```bash | |
| python scripts/recommend.py \ | |
| scripts/examples/7mmo_abc_fvar.pdb \ | |
| --chain A \ | |
| --seqpath scripts/examples/7mmo_chainA_lib.fasta \ | |
| --outpath scripts/examples/7mmo_chainA_scores.csv \ | |
| --upperbound 109 \ | |
| --offset 1 | |
| ``` | |
| Where: | |
| | Parameter | Description | | |
| | --- | --- | | |
| | `--chain` | Target chain ID | | |
| | `--seqpath` | Output path for the generated deep mutational scanning FASTA | | |
| | `--outpath` | Output path for the CSV containing scores for all mutation candidates | | |
| | `--n` | Number of mutations to recommend; default: 10 | | |
| | `--maxrep` | Maximum number of times the same position may appear in the recommendations; default: 1 | | |
| | `--upperbound` | During final recommendation, consider only positions below this residue number | | |
| | `--offset` | Offset correction for PDB residue numbering | | |
| | `--order` | Specify chain order in a multichain structure | | |
| | `--multichain-backbone` | Use all chains as the structural context | | |
| | `--singlechain-backbone` | Use only the target chain backbone | | |
| | `--nogpu` | Force CPU execution | | |
| In the antibody example above, `--chain A` specifies the heavy chain. `--upperbound 109` excludes mutations in the final framework region. Because the input structure lacks the first residue, `--offset 1` corrects the mutation numbering. | |
| ## Customize the Number of Recommendations | |
| For example, output the top 20 candidates and allow the same position to appear at most twice: | |
| ```bash | |
| python scripts/recommend.py \ | |
| /path/to/your_structure.pdb \ | |
| --chain A \ | |
| --n 20 \ | |
| --maxrep 2 | |
| ``` | |
| ## Single-Chain Backbone Condition | |
| To use only the backbone information of the target chain: | |
| ```bash | |
| python scripts/recommend.py \ | |
| /path/to/your_structure.pdb \ | |
| --chain A \ | |
| --singlechain-backbone | |
| ``` | |
| ## CPU Inference | |
| ```bash | |
| python scripts/recommend.py \ | |
| /path/to/your_structure.pdb \ | |
| --chain A \ | |
| --nogpu | |
| ``` | |
| # Output Description | |
| Structural Evolution first generates a complete single-point deep mutational scanning sequence library for the target chain in the input structure, then uses ESM-IF1 to calculate the structure-conditioned log-likelihood of each candidate sequence. | |
| If the following options are not specified manually: | |
| ```text | |
| --seqpath | |
| --outpath | |
| ``` | |
| the program automatically saves the results under `output/`. | |
| The main outputs include: | |
| ```text | |
| *.fasta | |
| *.csv | |
| ``` | |
| The files are: | |
| | Output | Description | | |
| | --- | --- | | |
| | DMS FASTA | Contains the wild-type sequence and all single-point mutation candidates | | |
| | scores CSV | Stores candidate sequences and their corresponding `log_likelihood` scores | | |
| | Terminal output | Top-N recommended mutations sorted by `log_likelihood` | | |
| Candidate sequences in the CSV are sorted by: | |
| ```text | |
| log_likelihood | |
| ``` | |
| in descending order, and recommended mutations are finally selected using parameters such as `n`, `maxrep`, and `upperbound`. | |
| # Official OneScience Information | |
| | Platform | Main OneScience 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 | | |
| # Citation and License | |
| - Original Structural Evolution paper: [Unsupervised evolution of protein and antibody complexes with a structure-informed language model](https://doi.org/10.1126/science.adk8946). | |
| - Structural Evolution is released under the **MIT License**, which permits use, copying, modification, publication, distribution, sublicensing, and commercial use provided that the copyright notice and license text are retained. See `LICENSE` in the repository root. | |
| - Structural Evolution inference depends on ESM-IF1 and related ESM code. The MIT License of the Structural Evolution repository does not automatically cover third-party model weights or dependency resources. For commercial use, redistribution, or other purposes, also review the applicable ESM/ESM-IF1 licenses and model-weight terms of use. | |
| - If you use this repository in research, cite the original Structural Evolution paper and, as appropriate, the related work on ESM-IF1 and other components actually used. | |