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

Zero-Shot突变预测VenusREM的安装和使用

写在前面:酶工程通过改造野生型蛋白质,以提升其催化活性、稳定性、结合亲和力等特性,从而满足工业和科研的需求。近年来,深度学习方法在蛋白质建模中的应用展现出了相较于传统方法(如定向进化和理性设计)更优越的效果和更低的成本。在突变效应预测中,预训练深度学习模型的关键在于精准理解蛋白质序列、结构与功能之间的复杂关系。本研究提出了一种检索增强型蛋白语言模型 ProtREM,用于综合分析蛋白质的本征属性(通过序列和局部结构相互作用)以及进化属性(通过检索得到的同源序列)。研究人员在一个公开基准数据集 ProteinGym 上,使用来自 217 个实验的逾 200 万个突变体对该模型进行了评估,验证了其领先的性能。此外,研究人员还对模型在提高 VHH 抗体稳定性和结合亲和力方面的能力进行了事后分析;并设计了 10 个新的 DNA 聚合酶突变体,在湿实验中评估了它们在高温下的活性提升。无论是在计算预测还是实验验证中,结果均显示我们的方法能够可靠预测突变效应,为生物学家改良现有酶提供了有力的辅助工具

 

一、安装问题

直接按照官方的github教程安装会遇到下列问题

原因是因为:

1、仓库中提供的 environment.yml 文件中使用了 PyTorch Geometric 的 GPU 加速版本(带 +pt25cu121 后缀)的包,如:
pyg-lib==0.4.0+pt25cu121torch-scatter==2.1.2+pt25cu121 等,而这些版本是无法通过 PyPI 默认镜像或国内镜像(如清华、中科大)安装的。

2、 environment.yml 文件中还指定了 torch==2.5.1+cu121、torchaudio==2.5.1+cu121、torchvision==0.20.1+cu121,而 pip 无法从默认源安装带有 +cu121 后缀的版本(这类带 CUDA 后缀的 PyTorch 不是 PyPI 官方支持格式,需要从特殊源安装)。

❓为什么 pip 无法安装 torch==2.5.1+cu121 这样的包?

1、+cu121 是 非标准 PyPI 包版本后缀

PyPI(即 pip 默认的官方仓库)不支持包含加号 + 的版本后缀(如 torch==2.5.1+cu121),这些是PyTorch 官方在其私有仓库托管的特殊版本

例如:

  • ✅ PyPI 支持版本:torch==2.5.1(默认是 CPU 或 CUDA 自动判断)

  • ❌ PyPI 不支持版本:torch==2.5.1+cu121

2、这类 CUDA 后缀的 PyTorch(如 +cu121)托管在 PyTorch 官方的私有仓库:

官方地址是:

https://download.pytorch.org/whl/cu121

这个仓库必须通过 --index-url 显式指定,才能访问:

pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu121

二、安装教程如下

1、克隆仓库
git clone https://github.com/ai4protein/VenusREM.git
2、修改environment.yml文件
# 修改 environment.yml 文件,以下有三处需要修改name: venusrem
...- pip:...# 删除或注释掉所有带 +pt25cu121 的 PyTorch Geometric 相关 pip 包:# - pyg-lib==0.4.0+pt25cu121# - torch-scatter==2.1.2+pt25cu121# - torch-sparse==0.6.18+pt25cu121# - torch-cluster==1.6.3+pt25cu121# - torch-spline-conv==1.2.2+pt25cu121# 删除或注释指定 PyTorch 版本的行,后续手动安装,防止依赖报错# - torch==2.5.1+cu121# - torchaudio==2.5.1+cu121      # - torchvision==0.20.1+cu121# 保留其他内容- torch-geometric==2.6.1# 修改自己的conda或者miniconda3的路径
prefix: /home/username/miniconda3/envs/venusrem
3、激活环境并安装PyTorch GPU 版本
# 激活环境
conda activate venusrem# 安装对应的 CUDA 支持版本的Pytorch (CUDA 12.1,PyTorch 2.5.1):
pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu121
4、安装 PyG 依赖
pip install pyg-lib torch-scatter torch-sparse torch-cluster torch-spline-conv -f https://data.pyg.org/whl/torch-2.5.1+cu121.html
5、安装多序列比对工具:HMMER 和 EVCouplings
pip install hmmer
pip install https://github.com/debbiemarkslab/EVcouplings/archive/develop.zip

这两个工具用于生成和处理蛋白质的多序列比对(MSA),在结构预测、突变影响分析中很常用。

✅ 安装成功后可通过以下方式验证,有输出参数详情则说明安装成功:

hmmscan -h
evcouplings -h
6、安装 PLMC:用于蛋白质协同突变建模(Potts Model)

PLMC 是一个用于从多序列比对(MSA)中拟合 Potts 模型的工具,广泛应用于协同突变分析、蛋白质结构预测等任务。

# 1. 克隆 PLMC 仓库
git clone https://github.com/debbiemarkslab/plmc.git# 2. 进入项目目录
cd plmc# 3. 编译(使用 OpenMP 并行支持)
make all-openmp

输出如下,表示 make all-openmp 命令已经成功调用了 gcc 编译器,并将 plmc 项目的源代码文件编译为一个可执行文件 bin/plmc

你可以运行以下命令测试,显示结果如下:

./bin/plmc -h

 7、配置路径

安装完成后,需要将 plmc 的可执行文件路径写入配置文件

打开VenusREM目录下的 src/single_config_monomer.txt  文件,将其中的 PLMC 路径字段替换为你本地编译生成的 plmc 可执行文件的完整路径,如下:

plmc: /home/username/VenusREM/plmc/bin/plmc

✅ 确保路径指向的是 plmc 编译产物所在位置,且文件具有可执行权限。

三、运行测试

1、需要准备的数据结构如下
data/<your_protein_dir_name>/
├── aa_seq/               # 原始氨基酸序列(fasta 格式)
│   ├── protein1.fasta
│   └── protein2.fasta
├── aa_seq_aln_a2m/       # 同源序列比对结果(a2m 格式)
│   ├── protein1.a2m
│   └── protein2.a2m
├── pdbs/                 # 蛋白质结构文件(pdb 格式)
│   ├── protein1.pdb
│   └── protein2.pdb
├── struc_seq/            # 从结构提取的序列(fasta 格式)
│   ├── protein1.fasta
│   └── protein2.fasta
├── substitutions/        # 单突变体文件(csv 格式)
│   ├── protein1.csv
│   └── protein2.csv
2、生成单点突变的CSV文件

如果你没有突变体信息(substitutions),运行以下命令可为所有可能的单点突变生成一个 CSV 文件(分值为 0):

python src/data/get_sav.py \--fasta_file data/$protein_dir/$protein_name.fasta \--output_csv data/$protein_dir/substitutions

⚠ 注意:

  • protein_name 应该是 .fasta 文件的文件名前缀;

  • 生成的 CSV 会列出所有可能的单突变,便于后续用模型打分;

  • .fasta 中的蛋白名字(>xxx)需要与文件名一致。

3、使用 JackHMMer 搜索同源序列

这是生成多序列比对(MSA)的第一步,用于后续协同突变分析(如 DCA 或 PLM 模型)。

Step 1:搜索 MSA
# step 1: search homology sequences
protein_dir=<your_protein_dir_name>
query_protein_name=<your_protein_name>   # 蛋白名,例如 fluorescent_protein
protein_path=data/$protein_dir/aa_seq/$query_protein_name.fasta
database=<your_path>/uniref100.fasta     # 下载好的 UniRef100 蛋白数据库(FASTA 格式)evcouplings \-P output/$protein_dir/$query_protein_name \-p $query_protein_name \-s $protein_path \-d $database \-b "0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9" \-n 5 src/single_config_monomer.txt

参数解释:

参数含义
-P输出目录
-p蛋白名称
-s查询序列 fasta 路径
-d同源搜索数据库(如 UniRef100)
-bMSA 的 coverage 阈值范围(比对过滤)
-n搜索轮数(或多个比对策略)
-c配置文件(如 single_config_monomer.txt

⚠ 注意:你需要为每个蛋白重复一遍这个步骤(脚本可批量处理多个)。

这里会得到一系列的输出文件,如下所示:

运行完之后关注这个文件:xxx_job_statistics_summary.csv ,部分列名的含义如下:

列名含义
prefix每次比特得分对应的 MSA 结果路径,通常包含比特得分信息(如 _b0.1 表示 bitscore=0.1)
minimum_column_coverageMSA 的最小列覆盖率,保留列的阈值(通常设置为 0.7)
num_seqsMSA 中包含的序列总数(更大表示更丰富的同源序列)
seqlen蛋白质序列长度
num_cov覆盖区域的氨基酸位置数量
num_lc低复杂度区域的位点数量
perc_covMSA 覆盖蛋白的比例(num_cov / seqlen)
1st_uc首个有效覆盖的位点位置
last_uc最后一个有效覆盖的位点位置
len_cov覆盖区域的长度(last_uc - 1st_uc)
num_lc_cov覆盖区域中低复杂度的数量
N_eff有效序列数(考虑冗余后的序列代表性)
domain_threshold域选择的 bitscore 阈值
num_significant推断出的 significant evolutionary couplings 数量(越高越好)
precision预测偶联精度(结构接近度)
average_identityMSA 序列平均一致性(保守性,空表示未计算)
Step 2:选择合适的 .a2m 文件
# step 2: select a2m file
protein_dir=<your_protein_dir_name>
python src/data/select_msa.py \--input_dir output/$protein_dir \--output_dir data/$protein_dir

这个脚本会从 evcouplings 结果中选出合适的 .a2m 文件(MSA)并保存到 data/.../aa_seq_aln_a2m/

4、准备蛋白质结构(PDB 文件)

你可以从以下途径获取结构文件:

  • AlphaFold3 / ESMFold 预测结构;

  • PDB数据库 下载已知结构;

  • 实验结构(建议),优先使用高质量的晶体结构。

结构文件保存到目录:

data/<your_protein_dir_name>/pdbs/
5、从结构提取序列(对齐结构和序列)
protein_dir=<your_protein_dir_name>
python src/data/get_struc_seq.py \--pdb_dir data/$protein_dir/pdbs \--out_dir data/$protein_dir/struc_seq--vocab_size 2048

生成的结构序列 .fasta 文件将用于后续结构编码部分,确保结构序列与原始序列一致性(特别是链选择)。

6、进行模型推理(打分)

完成以上准备后,运行主程序计算突变体的适应度分数:

protein_dir=<your_protein_dir_name>
python compute_fitness.py \--base_dir data/$protein_dir \--out_scores_dir result/$protein_dir--aa_seq_dir my_fasta \   # 注:如果前面生成的文件夹是自己命名的话,可以重新指定以下这些参数--struc_seq_dir my_struc_seq \--mutant_dir my_substitutions \

输出:

  • result/$protein_dir 中生成 .csv 文件,记录了每个突变体的预测适应度分数;

  • 可用于进一步筛选功能突变、热稳定性分析等任务。

参考链接:

https://github.com/ai4protein/VenusREM/

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

相关文章:

  • Office 365下载安装教程(超详细图文教程)从零开始的完整安装指南
  • python中的字符串、输入与输出、列表
  • 【更新至2024年】1992-2024年全国及各省地区生产总值、第一产业增加值、第二产业增加值、第三产业增加值、省GDP数据(无缺失)
  • MySQL:Prepared Statement 预处理语句
  • 表格里的图片链接怎么变成图片【附工具+源码演示】
  • 鴻蒙app開發中如何 使用 shift+ctrl+f 快捷搜索
  • 旋翼无人机运行要点与技术分析!
  • Python机器学习模型中添加日志记录器
  • ubuntu install vncserver
  • (46)课68:查看索引 SHOW INDEX FROM 表名;删除索引 DROP INDEX index_name ON 表名;
  • VOSK 离线中文语音识别实战:精准转文字、格式避坑全解析
  • 6.11 note
  • sessionStorage.setItem
  • Kivy的Button类的学习
  • 【AGI-Eval实测】Claude 4 网页生成、游戏开发场景深度实测:发布会宣传与真实效果相差几何?
  • JAVA(Day3)
  • 简单实现shardingSphere + MybatisPlus分库分表2025
  • 分子亚型 (by deepseek)
  • Linux5.10内核stmmac驱动框架深度解析
  • 【CUDA】block复用与kWaveNums
  • 10.Mkb、Mb 和 Mbps
  • C# ConcurrentDictionary 中获取指定范围的元素
  • 安卓中草药宝典 V2.6上千种中草药知识学习
  • STM32学习之不同FLASH的芯片启动文件选择规则
  • 场外期权看涨如果跌了本金还在不在?
  • 如何防止任务在多个项目中重复执行
  • C++面试(5)-----删除链表中指定值的节点
  • Python从入门到荒废-无网络Linux系统安装matplotlib
  • 电路板的 “双面绣”:猎板双色油墨如何重塑电子制造新范式
  • 人工智能AI