当前位置: 首页 > web >正文

EVOLVEpro安装使用教程-蛋白质语言模型驱动的快速定向进化

写在前面:蛋白质是生命活动的基石,其功能和序列之间的复杂关系长期以来吸引着科学家们的关注。尽管深度突变扫描等实验方法可以解析蛋白质突变的功能影响,但这些技术的应用范围局限于序列空间的一小部分。近年来,基于蛋白质语言模型(PLM)的计算方法如ESM2模型取得了一些突破。然而,这些模型在零样本预测中往往无法显著提高蛋白质活性。为了解决这一问题,作者提出了EVOLVEpro,一个结合PLM和回归模型的少样本主动学习框架,用于蛋白质的快速优化。

主要研究思路:

1、蛋白质语言模型(PLM):使用大规模蛋白质序列数据库(例如ESM2)进行训练,理解蛋白质序列的内在规律;

2、顶层回归模型:在实验数据的支持下,学习蛋白质突变与功能的关系,预测最佳的突变方向;

3、主动学习策略:每一轮筛选最可能成功的突变,验证实验结果后更新模型,逐步优化蛋白质功能;

整个流程通过“少量实验数据”+“AI预测”实现快速进化,极大减少了实验的复杂性和时间成本。

一、Google Colab 使用教程

使用 EVOLVEpro 改善蛋白质活性的分步指南(作者用 DMS 工作一部分的小型数据集上进行模拟),参考教程见下述连接;

https://colab.research.google.com/drive/1YCWvR73ItSsJn3P89yk_GY1g5GEJUlgy?usp=sharing

二、本地服务器安装教程

1、克隆项目代码

先把代码下载到本地:

git clone https://github.com/mat10d/EvolvePro.git
cd EvolvePro
2、创建并激活 EVOLVEpro 的核心环境

EVOLVEpro 需要一些依赖库,官方提供了一个环境配置文件来一次性安装它们。执行下面两步:

conda env create -f environment.yml   # 创建环境,自动安装所有必需的依赖
conda activate evolvepro              # 激活刚刚创建好的环境

这个环境包含了 EVOLVEpro 本身运行需要的核心库。

3、创建并激活蛋白语言模型(Protein Language Models)环境

EVOLVEpro 使用了多种蛋白质语言模型(PLM),这些模型依赖和核心程序不完全相同,官方建议把它们放到一个单独的环境中。这样可以避免库版本冲突,保证两部分能正常运行。

运行下面命令安装并配置这些模型:

sh setup_plm.sh      # 执行安装蛋白语言模型的脚本
conda activate plm   # 激活专门的蛋白语言模型环境

激活plm的环境检查是否安装的是GPU版本的pytorch,如果默认安装的是CPU版的话,可以重新安装:

import torch
print(torch.cuda.is_available())
# Flase, 如果输出为False,则执行一下两部安装GPU版本的pytorch
conda remove pytorch libtorch    # 卸载当前的 CPU 版本 PyTorch
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=12.1 -c pytorch -c nvidia   # 安装PyTorch 2.5.1(支持 CUDA 12.1)

这个环境里包括:

  • 深度学习框架(如 PyTorch)

  • 通过 pip 安装的蛋白语言模型(例如 ESM、ProtT5、UniRep、ankh、unirep)

  • 只能通过 GitHub 克隆源码安装的模型(例如 proteinbert、efficient-evolution)

为什么要分两个环境?

将 EVOLVEpro 核心功能和蛋白语言模型放在不同的环境里,可以:

  • 保持依赖整洁,不会相互干扰

  • 避免包版本冲突,减少安装错误

  • 方便针对不同部分独立升级或维护

三、本地服务器使用示例

该模块包含了用于生成和处理突变体数据的函数。在使用该模块前,请确保激活 evolvepro 环境:

conda activate evolvepro
✅ 1、实验突变(Experimental Mutation)处理流程

这是针对已知野生型序列进行系统性突变(如单点突变、组合突变)处理的工具。

📌 目标输出:

输出为一个 FASTA 文件,包含了与野生型(WT)序列相比的所有单点氨基酸突变。

步骤(1):定义一些关键变量

# 定义一些关键变量
wt_seq = "MNTINIAKNDFS"
output_path = "test"

步骤(2):生成野生型和单点突变体的 FASTA 文件

# 生成野生型 fasta 文件并创建单个氨基酸突变体 fasta 文件
from evolvepro.src.process import generate_wt, generate_single_aa_mutants
generate_wt(wt_seq, f'{output_path}/dataset_WT.fasta')
generate_single_aa_mutants(f'{output_path}/dataset_WT.fasta', f'{output_path}/dataset.fasta')

📖 说明:

  • 'MNTINIAKNDFS':输入的野生型蛋白质序列(可根据自己蛋白进行修改)

  • f'{output_path}/dataset_WT.fasta':指定保存的 FASTA 文件路径

  • generate_single_aa_mutants函数:输入为上一步生成的野生型 FASTA 文件 ,输出为包含所有单点突变体(每个位点替换为19种其他氨基酸)的 FASTA 文件

例如:

  • WT:MNTINIAKNDFS

  • 单点突变:ANTINIAKNDFS(M1A)、TNTINIAKNDFS(M1T)……

注意:执行完上述函数之后会创建一个仅包含WT序列的 FASTA 文件dataset_WT.fasta 以及包含WT序列和单点饱和突变序列的FASTA文件dataset.fasta。

步骤(3):推荐一组随机初始突变体

# 随机推荐一组突变体进行检测
from evolvepro.src.process import suggest_initial_mutants
suggest_initial_mutants(f'{output_path}/dataset.fasta', 12, random_seed=1)

📖 说明:

  • f'{output_path}/dataset.fasta':输入为之前生成的所有单点突变体的 FASTA 文件

  • 12:随机选择推荐的突变体数量(可根据实际需求调整)

  • random_seed:设置随机种子为 1

此函数适用于筛选出首轮需要实验验证的突变体(如用于训练初始机器学习模型)。

步骤(4):生成 n-突变组合(N-mutant combinations)

# 基于一个野生型蛋白序列和一个包含单点突变信息(和活性指标)的Excel文件,自动根据设定的活性阈值组合多个突变(如双突变、三突变等),生成对应的突变体序列,并保存为FASTA格式文件
from evolvepro.src.process import generate_n_mutant_combinations
generate_n_mutant_combinations(f'{output_path}/dataset_WT.fasta', f'{output_path}/beneficial_mutations.xlsx', 2, f'{output_path}/dataset_2rd.fasta', threshold=1.15)

📖 说明:

  • f'{output_path}/dataset_WT.fasta':WT序列的FASTA文件

  • 'beneficial_mutations.xlsx':包含实验测得的有益突变位点和氨基酸变体的 Excel 文件

  • 2:组合突变数,例如生成双突变组合

  • f'{output_path}/dataset_2rd.fasta':输出的 FASTA 文件

  • threshold=1.15:突变位点得分阈值,低于该值的突变不予组合(可选)

该函数适用于从已有的有益突变中,组合出潜在更优的多突变体。

beneficial_mutations.xlsx 示例结构:

Variantactivity
T12V1.086
N157K0.577
P26S1.024
R111Y0.782
......
✅ 2、使用适合的 PLM 模型提取所有变体的蛋白质语言模型嵌入

在使用该模块前,请确保激活 plm 环境:

conda activate plm

该脚本的一般运行方式如下:

python evolvepro/plm/[model_name]/extract.py [model_location] [fasta_file] [output_dir] [additional_options]

用途:

  • 从输入的 FASTA 文件中读取蛋白质序列(如所有单点突变体)

  • 使用指定的蛋白语言模型生成嵌入向量(embeddings)

  • 输出为 CSV 格式(每一行为一个序列的 embedding)

适用于:

  • 使用 GPU 的高性能计算环境(支持 SLURM 作业调度系统)

  • 或本地命令行执行(适当修改参数即可)

示例如下:

python evolvepro/plm/esm/extract.py esm2_t48_15B_UR50D \output/dms/brenan.fasta \output/plm/esm/brenan \--toks_per_batch 512 \--include mean \--concatenate_dir output/plm/esm/

参数解释:

参数说明
esm2_t48_15B_UR50D使用的蛋白质语言模型名称(Facebook ESM2的15B模型)
output/dms/brenan.fasta输入的 FASTA 文件,包含所有待分析的单点突变体
output/plm/esm/brenan每个突变体的嵌入结果将保存至该目录
--toks_per_batch 512每个 batch 的 token 数(建议根据 GPU 显存调小以防 OOM)
--include mean表示导出 "mean pooling" 的序列嵌入(常用于下游预测任务)
--concatenate_dir output/plm/esm/将所有单个突变体的嵌入合并为一个 CSV 文件保存在该目录

📁 输出说明

  • output/plm/esm/brenan/:包含每条序列对应的嵌入 .csv 文件

  • output/plm/esm/ 中会汇总一个合并的 embeddings.csv 文件,适用于后续训练/可视化

每个 CSV 文件内容(示例):

IDemb_0emb_1...emb_1279
M1A_mut_10.123-0.12...0.061
✅ 3、应用 EVOLVEpro 模型优化蛋白质活性

(1)核心源文件位置:

evolvepro/src/evolve.py

主函数接口:

  • evolve_experimental(用于单点突变优化)

  • evolve_experimental_multi(用于组合突变优化)

(2)在使用该模块前,请确保激活 evolvepro 环境:

conda activate evolvepro

(3)支持的突变类型:

类型简介
Single Mutant Evolution每一轮只考虑单个氨基酸替代突变的活性优化
Multi-Mutant Evolution在已有有益突变的基础上组合生成多突变体进行进一步优化

(4)📂 所需输入文件说明:

文件类型用途说明
FASTA 文件包含野生型蛋白序列。用于确定突变相对于 WT 的参考序列
PLM 嵌入(.csv)蛋白语言模型生成的突变体嵌入特征文件,每个序列一行,维度一致
演化实验数据(.xlsx)每一轮突变体的测定活性数据,需包含序列与其对应的实验值(如表达量、活性等)

(5)🔧 核心参数说明:

参数名类型说明
protein_namestr蛋白名称,用于标识任务
round_namestr当前演化轮次名称,例如 Round3
embeddings_base_pathstr嵌入文件存储路径
embeddings_file_namestr 或 list单轮使用一个 CSV,多轮组合突变可传入多个文件名(列表)
round_base_pathstr所有实验数据所在文件夹路径
round_file_nameslist实验数据文件名列表,如 ['Round1.xlsx', 'Round2.xlsx']
rename_WTbool是否在输出文件中将 WT 命名为统一格式
number_of_variantsint模型预测后选择的 top N 个突变体用于下一轮实验
output_dirstr输出目录,包含模型预测结果、可视化文件、推荐突变体等

(6)示例一:单突变优化

from evolvepro.src.evolve import evolve_experimentalprotein_name = 't7_pol'
embeddings_base_path = '/path/to/embeddings'
embeddings_file_name = 'embeddings_file.csv'
round_base_path = '/path/to/round/data'
wt_fasta_path = "/path/to/wildtype/fasta"
number_of_variants = 12
output_dir = '/path/to/output/'round_name = 'Round2'
round_file_names = ['T7_pol_Round1.xlsx', 'T7_pol_Round2.xlsx']
rename_WT = Trueevolve_experimental(protein_name,round_name,embeddings_base_path,embeddings_file_name,round_base_path,round_file_names,wt_fasta_path,rename_WT,number_of_variants,output_dir
)

📌 用途

  • 输入前两轮的实验数据

  • 模型预测下一轮中最值得尝试的 12 个单点突变体

  • 结果写入 output_dir,用于实际实验

参考链接:

https://github.com/mat10d/EvolvePro

https://www.science.org/doi/10.1126/science.adr6006

AI蛋白质大模型代码实践:3万字长文读懂EvolvePro蛋白质进化框架与本地部署全流程

http://www.xdnf.cn/news/15457.html

相关文章:

  • 2025年渗透测试面试题总结-2025年HW(护网面试) 45(题目+回答)
  • [Dify]-基础入门8- 使用 Dify 创建文档问答机器人(零代码实现)
  • openeuler使用桥接模式(包括新建虚拟机和已有虚拟机)
  • 【读书笔记】《C++ Software Design》第十章与第十一章 The Singleton Pattern The Last Guideline
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | ToastNotification(推送通知)
  • Android事件分发机制完整总结
  • 快速搭建Maven仓库服务
  • 深入理解 Linux 文件系统层级结构
  • 深入理解 Java JVM
  • Clojure和Golang中的Channel有什么异同(TBC)
  • AI驱动的软件工程(中):文档驱动的编码与执行
  • Python协程进阶:优雅终止与异常处理详解
  • python代码块的表示方法
  • 输入npm install后发生了什么
  • Maven 构建命令
  • HTML 基本骨架
  • 【LeetCode 热题 100】23. 合并 K 个升序链表——(解法一)逐一合并
  • DOS下EXE文件的分析 <1>
  • Linux锁的概念及线程同步
  • 【iOS】方法与消息底层分析
  • 深入了解JAVA中Synchronized
  • CCS-MSPM0G3507-7-模块篇-MPU6050的基本使用
  • 002大模型基础知识
  • 认识String、StringBuffer、StringBuilder
  • vue3 el-select默认选中
  • 【设计模式】策略模式(政策(Policy)模式)
  • 从 Manifest V2 升级到 Manifest V3 的注意事项
  • Cursor三大核心AI功能
  • 详解缓存淘汰策略:LFU
  • JS红宝书pdf完整版