写在前面:蛋白质是生命活动的基石,其功能和序列之间的复杂关系长期以来吸引着科学家们的关注。尽管深度突变扫描等实验方法可以解析蛋白质突变的功能影响,但这些技术的应用范围局限于序列空间的一小部分。近年来,基于蛋白质语言模型(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.pswp.cn/web/88819.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/88819.shtml
英文地址,请注明出处:http://en.pswp.cn/web/88819.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】Rocky Linux 清华镜像源安装 GitLab

使用清华镜像源安装 GitLab 地址:清华镜像源 1. 搜索 gitlab,我们选择 gitlab-ce 社区版进行安装 2. 新建 /etc/yum.repos.d/gitlab-ce.repo,内容为 注意:el$releasever 是清华镜像源内的文件夹版本 [gitlab-ce] nameGitlab C…

【龙泽科技】新能源汽车维护与动力蓄电池检测仿真教学软件【吉利几何G6】

产品简介新能源汽车维护与动力蓄电池检测仿真教学软件是依托《全国职业院校技能大赛》“新能源汽车维修”赛项中“新能源汽车维护与动力蓄电池检测” 竞赛模块,自主开发的一款仿真教学软件。软件采用仿真技术对车辆进行指定维护作业,并对动力蓄电池总成进…

UE5多人MOBA+GAS 18、用对象池来设置小兵的队伍的生成,为小兵设置一个目标从己方出生点攻打对方出生点,优化小兵的血条UI

文章目录根据小兵队伍更换小兵的皮肤管理小兵的生成使用对象池来管理小兵的生成为小兵设置一个目标小兵生成完整代码调整一下小兵的UI根据小兵队伍更换小兵的皮肤 懒得开UE了,增加一个Minion类继承基类角色CCharacter // 幻雨喜欢小猫咪#pragma once#include &qu…

Clojure持久化数据结构的底层实现

文章目录一、Clojure的持久化数据结构二、向量(Vector)/Map的底层结构​1. HAMT 哈希数组映射字典树(1)简介(2)HAMT 的核心思想(3)HAMT 的结构​a. 基本组成​b. 树的分支因子​(4)H…

面试150 二叉树展开为链表

思路 思路:使用列表存储先序遍历的相关节点。然后遍历列表,分别获取前驱节点和当前节点,将前驱节点的左指针指向空,前驱节点的右指针指向当前节点。 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, …

代码随想录算法训练营第十七天

目录 LeetCode.654 最大二叉树 题目链接 最大二叉树 题解 解题思路 LeetCode.617 合并二叉树 题目链接 合并二叉树 题解 解题思路 LeetCode.700 二叉搜索树中的搜索 题目链接 二叉搜索树中的搜索 题解 解题思路 解题思路 LeetCode.98 验证二叉搜索树 题目链接 验…

pycharm无法识别pip安装的包

在使用conda创建一个新的环境后,有些包通过pip的方式安装更方便有效,若在pip安装后,遇到该环境没有此包,或pycharm监测不到此包,通常是pip的环境指向有问题。 解决措施: # 首先检查当前pip的指向 which pip…

Elasticsearch 的 `modules` 目录

Elasticsearch 的 modules 目录是存放**核心功能模块**的目录,这些模块是 Elasticsearch 运行所必需的基础组件,**随官方发行版一起提供**,但设计上允许通过移除或替换模块来**定制化部署**(比如构建一个最小化的 Elasticsearch 实…

https——TCP+TLS

https——TCPTLS主题:基于mbedtls-2.16.0,验证TLS会话复用功能验证环境:1.TLS服务端2.TLS客户端2.1 基于Sesssion ID2.1.1mbedtls-2.16.0库的宏配置2.1.2 初始化配置2.1.3 TCP连接2.1.4 首次TLS连接2.1.4.1 发送加密算法列表2.1.4.2 选择加密…

uni-app uni-push 2.0推送图标不展示问题

问题现象:我在uni-app的配置文件,配置了推送的大图标小图标发现在真机测试无法展示配置的推送图标问题 官网文档:开通 | uni-app官网 解决方法: 在uni-app官网中说的并不是很清楚只给了一个简单的示例,配置并没有告诉我…

scp:上传大型数据集到实验室服务器

我通过百度网盘下载了大概200GB的LUNA-2016的肺结节CT数据。实验是在实验室服务器上进行的,我现在需要将本地的数据集传输到实验室的服务器上。我已经通过remote-ssh连接上了实验室的服务器,但是如果通过这个插件上传数据的话,一方面不支持上…

量子计算突破:8比特扩散模型实现指数级加速

目录 一、量子扩散模型(Quantum Diffusion) 二、DNA存储生成(Biological-GAN) 三、光子计算加速 四、神经形态生成 五、引力场渲染 六、分子级生成 七、星际生成网络 八、元生成系统 极限挑战方向 一、量子扩散模型&…

Flask3.1打造极简CMS系统

基于Flask 3.1和Python 3.13的简易CMS以下是一个基于Flask 3.1和Python 3.13的简易CMS管理系统实现方案,包含核心功能和可运行代码示例。环境准备安装Flask和其他依赖库:pip install flask3.1.0 flask-sqlalchemy flask-login配置数据库在config.py中设置…

用 Node.js 构建模块化的 CLI 脚手架工具,从 GitHub 下载远程模板

本文将手把手带你构建一个支持远程模板下载、自定义项目名称,并完成模块化拆分的 CLI 脚手架工具,适用于初创项目、团队内部工具或者开源项目快速初始化。🧩 为什么要自己造一个 CLI 脚手架? 在日常开发中,我们常用脚手…

08.如何正确关闭文件

如何正确关闭文件(File Handling Best Practices) 文件操作是日常开发中非常常见的任务,正确关闭文件对于避免资源泄漏尤为关键。错误的文件关闭方式可能导致文件未保存、锁定或其他异常。 1. 常见的错误方式:手动 close() 许多初学者会手动调用 close() 关闭文件,这在异…

算法入门--动态规划(C++)

深入浅出掌握动态规划核心思想,图文并茂实战代码 什么是动态规划? 动态规划(Dynamic Programming, DP) 是一种高效解决多阶段决策问题的方法。它通过将复杂问题分解为重叠子问题,并存储子问题的解(避免重…

[2025CVPR]GNN-ViTCap:用于病理图像分类与描述模型

论文结构解析​ 本文采用经典学术论文结构: ​引言​:阐述病理图像分析的挑战与现有方法局限性​相关工作​:系统梳理MIL、视觉语言预训练和生物医学语言模型三大领域​方法​:详细阐述GNN-ViTCap四阶段架构​实验​:在BreakHis和PatchGastric数据集验证性能​讨论​:通…

Java SE--图书管理系统模拟实现

一.设计思路首先这个系统可以由俩种用户使用,分别为管理者用户和普通者用户,根据不同的用户有不同的界面,每个界面有不同的功能。二.代码实现创建三个包和一个类book包:包括Book类和Booklist类Book类:package book; pu…

[RPA] 批量数据抓取指定商品名称信息

影刀RPA案例:批量数据抓取指定商品名称信息流程图:操作步骤:涉及的影刀RPA大致指令: 1. 打开影刀商城页面 2. 使用【填写输入框(web)】指令输入用户名和密码,并点击"登录"按钮 3. 切换到"订单管理"…

我的世界Java版1.21.4的Fabric模组开发教程(十四)方块实体

这是适用于Minecraft Java版1.21.4的Fabric模组开发系列教程专栏第十四章——方块实体。想要阅读其他内容,请查看或订阅上面的专栏。 方块实体(Block Entity) 指的是一种用于存储方块额外数据的方法。但这种数据和为了控制方块状态而在自定义方块类中创建的属性不太…