This is the offical codebase to reproduce and use EVOLVEpro, a model for in silico directed evolution of protein activities using few-shot active learning.
EVOLVEpro

EVOLVEpro 通过顶层回归模型解读 PLM 嵌入,借助迭代式主动学习过程来学习序列与实验测定活性之间的关系。轻量级随机森林回归模型能够在每轮仅需 10 个实验数据点的迭代测试中,同时优化多种蛋白质特性,从而实现复杂的多目标进化实验,并最大限度减少实验设置。
我们采用优化版本的 EVOLVEpro 对多种蛋白质进行了进化:
EVOLVEpro 优化的 PsaCas12f
EVOLVEpro 优化的 C143 抗体
EVOLVEpro 优化的 T7 RNAP
概述
EVOLVEpro 工作流程包含四个主要步骤:
- 数据处理:生成并清洗 FASTA 和 CSV 文件
- 蛋白质语言模型(PLM):为所有变体提取蛋白质语言模型嵌入
- 运行 EVOLVEpro:将模型应用于 DMS 数据或实验数据
- 结果可视化:准备输出结果和可视化内容
详细步骤说明
1. 数据处理
生成并清洗包含蛋白质变体序列及其对应活性数据的 FASTA 和 CSV 文件。
详细说明,请参见 数据处理 README。
2. 蛋白质语言模型(PLM)
使用多种 PLM 模型为所有变体提取蛋白质语言模型嵌入。
详细说明,请参见 PLM README。
3. 运行 EVOLVEpro
应用 EVOLVEpro 模型优化蛋白质活性。主要有两种工作流程:
DMS 工作流程
当大量变体的活性值已知时,使用此工作流程在深度突变扫描(DMS)数据集上优化小样本模型。
详细说明,请参见 DMS README。
实验工作流程
使用此工作流程进行蛋白质活性的迭代实验优化。
详细说明,请参见 实验工作流程 README。
4. 绘图
准备输出并创建可视化内容,以解读EVOLVEpro流程的结果。
详细说明请参见绘图说明文档。
快速开始
安装
git clone https://github.com/mat10d/EvolvePro.git
cd EvolvePro
EVOLVEpro 环境
首先,创建并激活一个包含 EVOLVEpro 所有必要依赖项的 conda 环境:
conda env create -f environment.yml
conda activate evolvepro
蛋白质语言模型环境
为安装所有基础蛋白质语言模型,我们使用一个不同的环境:
sh setup_plm.sh
conda activate plm
此环境包含:
- 深度学习框架(PyTorch)
- 可通过 pip 安装的蛋白质语言模型(ESM、ProtT5、UniRep、ankh、unirep)
- 仅可从 GitHub 环境安装的蛋白质语言模型(proteinbert、efficient-evolution)
这些环境保持分离,以维持清晰的依赖关系,并避免 EVOLVEpro 核心功能与各种蛋白质语言模型之间的冲突。
Colab 教程
如需有关使用 EVOLVEpro 提高蛋白质活性的分步指南(在我们 DMS 工作中使用的小型数据集上模拟),请参阅我们的 Google Colab 教程此处。
问题反馈
如果您遇到任何错误、有功能请求或需要帮助,请在我们的 GitHub Issues 页面 上提交 issue。提交 issue 时,请:
- 检查是否已存在类似 issue
- 包含对问题的清晰描述
- 如适用,添加重现问题的步骤
- 指定您的环境详情(操作系统、Python 版本等)
- 包含任何相关的错误消息或截图
我们欢迎社区的贡献和反馈。
引用
如果您在研究中使用此代码,请引用我们的论文:
@ARTICLE
author={Jiang, Kaiyi and Yan, Zhaoqing and Di Bernardo, Matteo and Sgrizzi, Samantha R. and Villiger, Lukas and Kayabölen, Alişan and Kim, Byungji and Carscadden, Josephine K. and Hiraizumi, Masahiro and Nishimasu, Hiroshi and Gootenberg, Jonathan S. and Abudayyeh, Omar O.}
title={Rapid in silico directed evolution by a protein language model with EVOLVEpro},
year={2024},
DOI={10.1126/science.adr6006}