ESMFold conda安装、使用及与AlphaFold的简单比较

文章目录

  • 前言
  • 一、ESMFold是什么?
  • 二、安装步骤
    • 1. 确认安装环境:cuda toolkit版本
    • 2. 创建ESMFold conda环境并安装
      • Step 1:创建conda环境,下载需要的包
      • Step 2:激活conda环境,继续pip安装
    • 3. 运行结构预测
  • 三、使用步骤
    • 1. 单个结构序列预测
    • 2. 批量结构序列预测
    • 3. 与AlphaFold预测结果比较
  • 总结
  • 参考资料


前言

ESMFold 是一款由 Meta AI 团队开发的高精度蛋白质结构预测工具。它可以从单一蛋白质序列中进行端到端原子级别的结构预测,并且具有较高的准确性。相较于其他蛋白质结构预测方法,例如 AlphaFold2 和 RoseTTAFold,ESMFold 具备更快的预测速度。
(1)ESMFold官方提供安装指引较为繁琐,本文提供了conda版本的快速便捷安装方法。
(2)通过案例介绍ESMFold单个结构序列和批量结构序列的预测方法。
(3)直观比较了ESMFold与AlphaFold2.3预测结果与速度。

一、ESMFold是什么?

github:https://github.com/facebookresearch/esm
文章:https://www.biorxiv.org/content/10.1101/2022.07.20.500902v1.full.pdf
ESMFold的结构
将预训练好的语言模型ESM-2的蛋白质序列embedding和attention map接入与48层folding trunk和8层Structure Module来预测蛋白质全原子的结构。这里structure module与AF2相同,而folding trunk是退化版的evoformer,因为只有单序列所以axis attention 机制就退化成了普通的self-attention,而节点与边embbeding的更新方式保持相同。

与AlphaFold2模型类似,ESMFold模型的架构也可以分为四部分:数据解析部分、编码器部分(Folding Trunk)、解码器部分(Structure Module)、循环部分(Recycling)。

ESMFold是一个完全端到端的序列结构预测方法,可以完全在GPU上运行,无需访问任何数据库。

EsmFold训练时不仅使用了PDB数据库中实验解析的单链结构,还使用了AF2预测的高置信度的蛋白结构。ESMFold和AlphaFold2之间的一个关键区别是使用语言模型表示来消除对显式同源序列(以MSA的形式)作为输入的要求。语言模型表示作为输入提供给ESMFold的折叠主干。通过将处理MSA的计算量大的Folding Block模块替换为处理序列的Tranformer模块来简化AlphaFold2中的Evoformer。这种简化或优化意味着ESMFold会比基于MSA的模型快得多。

作为大型语言模型,ESMFold的原理与ChatGPT基本相似,只不过,训练它的内容不是自然语言,而是生物基因语言。它基于语言学习模型内部表征,而不是像AlphaFold2一样基于结构和序列匹配算法,这样就消除对显式同源序列作为输入的要求,即ESMFold蛋白质模型只需一个序列作为输入。ESMFold表明可以建立语言模型与蛋白结构预测的关系,模型参数量与预测准确率的相关。

虽然ESMFold预测精度不错,尤其是预测速度很快,特别是在单序列输入的时候精度明显好于AlphaFold2。但是也有不足之处,ESMFold在多序列输入的情况下,其精度比AlphaFold2还是略有差距。

以无监督学习为目标的语言模型在一个大型的进化多样化的蛋白质序列数据库中训练,能够对蛋白质结构进行原子级的分辨率预测。将语言模型的参数扩大到15B,就可以系统地研究规模对蛋白质结构学习的影响。

ESM-2与ESMFold让我们看到,蛋白质结构预测的非线性曲线是模型规模的函数,并且观察到了语言模型对序列的理解程度与结构预测之间的强烈联系。
在这里插入图片描述

在这里插入图片描述

二、安装步骤

安装环境:Ubuntu 22.04, CUDA runtime版本11.8,RTX3060。

1. 确认安装环境:cuda toolkit版本

要求CUDA runtime 版本不低于 ESMFold conda安装环境的CUDA版本(如下文,cudatoolkit:11.3.*)
通过 nvcc -V命令查看CUDA runtime版本,如图为11.8。
在这里插入图片描述

2. 创建ESMFold conda环境并安装

采用说明文档中的environment.yml采用conda安装后, 仍需要补充一些依赖,笔者已收集到相应的安装包以及需要注意的版本匹配,可按照如下指引 conda+pip 2步安装。

Step 1:创建conda环境,下载需要的包

将以下内容保存为:conda_environment.yml,然后执行:conda env create -f conda_environment.yml,创建esmfold_env环境

name: esmfold_env
channels:
  - conda-forge
  - bioconda
  - pytorch
dependencies:
  - conda-forge::python=3.7
  - conda-forge::setuptools=59.5.0
  - conda-forge::pip
  - conda-forge::openmm=7.5.1
  - conda-forge::pdbfixer
  - conda-forge::cudatoolkit==11.3.*
  - conda-forge::cudatoolkit-dev==11.3.*
  - conda-forge::einops==0.6.1
  - conda-forge::fairscale
  - conda-forge::omegaconf
  - conda-forge::hydra-core
  - conda-forge::pandas
  - conda-forge::pytest
  - bioconda::hmmer==3.3.2
  - bioconda::hhsuite==3.3.0
  - bioconda::kalign2==2.04
  - pytorch::pytorch=1.12.*
  - ehmoussi::gxx_linux-64

Step 2:激活conda环境,继续pip安装

激活conda环境:conda activate esmfold_env
将以下内容保存为:pip_requirements.txt,然后执行:pip install -r pip_requirements.txt,完成整个安装。

biopython==1.79
deepspeed==0.5.9
dm-tree==0.1.6
ml-collections==0.1.0
numpy==1.21.2
PyYAML==5.4.1
requests==2.26.0
scipy==1.7.1
tqdm==4.62.2
typing-extensions==3.10.0.2
pytorch_lightning==1.5.10
wandb==0.12.21
biotite==0.39.0
matplotlib
joblib
fair-esm
git+https://github.com/facebookresearch/esm.git
fair-esm[esmfold]
git+https://github.com/NVIDIA/dllogger.git
git+https://github.com/aqlaboratory/openfold.git@4b41059694619831a7db195b7e0988fc4ff3a307

pip安装出现一个版本提醒,如下图,忽略即可。
在这里插入图片描述

3. 运行结构预测

保持 esmfold_env 激活状态。
将以下内容保存为:reproduce.py,然后执行:python reproduce.py,会完成model下载,一个示例sequence的结构预测,保存为result.pdb。65个残基的蛋白,运行时间约25s。

import torch
import esm

model = esm.pretrained.esmfold_v1()
model = model.eval().cuda()

# Optionally, uncomment to set a chunk size for axial attention. This can help reduce memory.
# Lower sizes will have lower memory requirements at the cost of increased speed.
# model.set_chunk_size(128)

sequence = "MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG"
# Multimer prediction can be done with chains separated by ':'

with torch.no_grad():
    output = model.infer_pdb(sequence)

with open("result.pdb", "w") as f:
    f.write(output)

import biotite.structure.io as bsio

struct = bsio.load_structure("result.pdb", extra_fields=["b_factor"])
print(struct.b_factor.mean())  # this will be the pLDDT
# 88.3

NOTE 1:
遇到的问题: reproduce.py 执行过程可能会提醒CUDA error:
在这里插入图片描述解决方法: 经过检索,一般是由错误的LD_LIBRARY_PATH引起的,在esmfold_env环境中重置即可:

unset LD_LIBRARY_PATH

NOTE 2:
如果GPU显存较小而终止,可以调小chunk_size。
即去掉 reproduce.py 文件中 model.set_chunk_size(128)的注释,或者调整到64、32。

NOTE 3: model下载路径:$USER/.cache/torch/hub/checkpoints/,3个文件如下,大小约8G。
所以默认使用ESM2模型是esm2_t36_3B_UR50D,ESMFold模型是 esmfold_3B_v1。
在这里插入图片描述
pymol查看运行结果, 根据pLDDT显示(pymol 命令行输入coloraf result):

pymol result.pdb

在这里插入图片描述

三、使用步骤

除了以上测试中通过python运行,也可以通过CLI方便地运行预测,即esm-fold命令,由pip从https://github.com/facebookresearch/esm.git安装,位置在esmfold_env/bin目录下。
使用esm-fold预测结构:

usage: esm-fold [-h] -i FASTA -o PDB [--num-recycles NUM_RECYCLES]
                [--max-tokens-per-batch MAX_TOKENS_PER_BATCH]
                [--chunk-size CHUNK_SIZE] [--cpu-only] [--cpu-offload]

optional arguments:
  -h, --help            show this help message and exit
  -i FASTA, --fasta FASTA
                        Path to input FASTA file
  -o PDB, --pdb PDB     Path to output PDB directory
  --num-recycles NUM_RECYCLES
                        Number of recycles to run. Defaults to number used in
                        training (4).
  --max-tokens-per-batch MAX_TOKENS_PER_BATCH
                        Maximum number of tokens per gpu forward-pass. This
                        will group shorter sequences together for batched
                        prediction. Lowering this can help with out of memory
                        issues, if these occur on short sequences.
  --chunk-size CHUNK_SIZE
                        Chunks axial attention computation to reduce memory
                        usage from O(L^2) to O(L). Equivalent to running a for
                        loop over chunks of of each dimension. Lower values
                        will result in lower memory usage at the cost of
                        speed. Recommended values: 128, 64, 32. Default: None.
  --cpu-only            CPU only
  --cpu-offload         Enable CPU offloading

1. 单个结构序列预测

以rcsb下载的pdb_8I55序列为例。

unset LD_LIBRARY_PATH
## 使用GPU
esm-fold -i rcsb_pdb_8I55.fasta -o result_rcsb_pdb_8I55.pdb
## 仅使用CPU
esm-fold -i rcsb_pdb_8I55.fasta -o cpu_result_rcsb_pdb_8I55.pdb --cpu-only

运行结果:
在这里插入图片描述
(1)143残基,GPU和CPU-only耗时分别为3.6s和30.3s,pLDDT为75.9。
(2)相对于AlphaFold,用时25min,最优结果为pLDDT为87.7。参考:AlphaFold2.3 conda版本详细安装与使用

2. 批量结构序列预测

esm-fold	-i fasta_batch.fasta \
			-o result_fasta_batch \
			--max-tokens-per-batch 1 \
			--chunk-size 128

将多个序列放进fasta_batch.fasta文件中,如果是单GPU,需要调小max-tokens-per-batch等于 1; 如果GPU显存不足,尝试调小chunk-size。
在这里插入图片描述

3. 与AlphaFold预测结果比较

以rcsb下载的pdb_8I55序列为例,分别将AlphaFold与ESMFold预测结果与RCSB PDB 8I55 结构作比较。
AlphaFold预测可参考:AlphaFold2.3 conda版本详细安装与使用
AlphaFold预测结果与PDB 8I55的RMSD为0.471。
在这里插入图片描述ESMFold预测结果与PDB 8I55的RMSD为0.462。
在这里插入图片描述
AlphaFold与ESMFold均表现良好。


总结

(欢迎关注我的CSDN: Blockbuater_drug https://bbdrug.blog.csdn.net/)
本文提供了ESMFold conda版本的快速便捷安装方法;避免官方安装指引的繁琐。
通过案例介绍ESMFold单个结构序列和批量结构序列的预测方法。
直观比较了ESMFold与AlphaFold2.3预测结果。

参考资料

  1. https://www.biorxiv.org/content/10.1101/2022.07.20.500902v2.full.pdf
  2. https://bbdrug.blog.csdn.net/article/details/135993286
  3. https://zhuanlan.zhihu.com/p/572904008

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/398825.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

pom.xml常见依赖及其作用

1.org.mybatis.spring.boot下的mybatis-spring-boot-starter:这个依赖是mybatis和springboot的集成库,简化了springboot项目中使用mybatis进行持久化操作的配置和管理 2.org.projectlombok下的lombok:常用注解Data、NoArgsConstructor、AllA…

【Vuforia+Unity】AR02-长方体物体识别

1.创建模型 选择多维长方体图,这个长方体是生活中的真实物体的拍摄图,提前把6个面拍摄好并裁剪干净。 官网创建模型https://developer.vuforia.com/targetmanager/project/targets?projectId0ddbb5c17e7f4bf090834650bbea4995&avfalse 设置长宽高…

Rabbitmq入门与应用(六)-rabbitmq的消息确认机制

rabbitmq的消息确认机制 确认消息是否发送给交换机 配置 server:port: 11111 spring:rabbitmq:port: 5672host: 192.168.201.81username: adminpassword: 123publisher-confirm-type: correlated编码RabbitTemplate.ConfirmCallback ConfirmCallback 是一个回调接口&#xf…

突出最强算法模型——回归算法 !!

文章目录 1、特征工程的重要性 2、缺失值和异常值的处理 (1)处理缺失值 (2)处理异常值 3、回归模型的诊断 (1)残差分析 (2)检查回归假设 (3)Cooks 距离 4、学…

汽车电子论文学习---电动汽车用高功率密度碳化硅电机控制器研究

关键重点: sic的特点:耐压高、开关速度快、开关损耗小;采用sic的控制器,损耗降低70%,续航里程提高5%。sic的模块并联设计难度高于IGBT模块;多芯片并联导致热耦合问题、温升不均,导致部分芯片率…

合纵连横 – 以 Flink 和 Amazon MSK 构建 Amazon DocumentDB 之间的实时数据同步

在大数据时代,实时数据同步已经有很多地方应用,包括从在线数据库构建实时数据仓库,跨区域数据复制。行业落地场景众多,例如,电商 GMV 数据实时统计,用户行为分析,广告投放效果实时追踪&#xff…

【git】提交信息写错了,使用 amend 或者 reset 修改最近一次的提交信息 ,修改上上次/以前的提交信息

如果你的提交信息写错了,比如下面,你想修改【初始化项目】这5个字 修改最近一次的提交新的两个办法 (1)使用 reset 把这个提交重置,然后重新提交,reset 的使用方法请参考这篇文章。但是 reset 这种方法只能…

计算机设计大赛 深度学习人体跌倒检测 -yolo 机器视觉 opencv python

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习的人体跌倒检测算法研究与实现 ** 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满…

消息队列-RabbitMQ:发布确认—发布确认逻辑和发布确认的策略

九、发布确认 1、发布确认逻辑 生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,所有在该信道上面发布的消息都将会被指派一个唯一的 ID (从 1 开始),一旦消息被投递到所有匹配的队列之后,broker 就会发送一个确认给…

设计模式二:代理模式

1、什么是动态代理 可能很多小伙伴首次接触动态代理这个名词的时候,或者是在面试过程中被问到动态代理的时候,不能很好的描述出来,动态代理到底是个什么高大上的技术。不方,其实动态代理的使用非常广泛,例如我们平常使…

华为配置直连三层组网直接转发示例

华为配置直连三层组网直接转发示例 组网图形 图1 配置直连三层组网直接转发示例组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件扩展阅读 业务需求 企业用户接入WLAN网络,以满足移动办公的最基本需求。且在覆盖区域内移动发生漫游时&#xff…

无人机的视频图传技术有哪些?

在操控无人机时,视频图传技术显得尤为关键。通过这项技术,无人机的摄像头所捕捉的画面能实时回传至遥控器,使操作者全面掌握无人机的拍摄情况。同时,无人机图传技术也是衡量无人机性能的重要标准,它关乎飞行距离与时间…

SG-8201CJA(汽车可编程晶体振荡器)

爱普生的SG-8021CJA是一款符合AEC-Q100标准的晶体振荡器,专为要求苛刻的汽车/ADAS应用(如激光雷达和相机ECU)而设计。它采用爱普生的内部低噪声小数NPLL,输出 频率高达170MHz,相位抖动小于1/25,稳定性比之前…

基于多种机器学习模型的西北地区蒸散发模拟与趋势分析_季鹏_2023

基于多种机器学习模型的西北地区蒸散发模拟与趋势分析_季鹏_2023 摘要关键词 1 资料和方法1. 1 研究区域与观测数据1. 2 机器学习模型构建与验证方法1. 3 SHAP 可解释性方法 2 主要结果2. 1 不同模型的模拟性能和泛化能力2. 2 不同模型的可解释性分析2. 3 5 km 分辨率格点蒸散发…

Qt _day1

1.思维导图 2.设计一个简单登录界面 #include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {this->setWindowTitle("原神启动"); // this->setStyleSheet("background-color:rgb(255,184,64)");this->setStyl…

游戏行业洞察:分布式开源爬虫项目在数据采集与分析中的应用案例介绍

前言 我在领导一个为游戏行业巨头提供数据采集服务的项目中,我们面临着实时数据需求和大规模数据处理的挑战。我们构建了一个基于开源分布式爬虫技术的自动化平台,实现了高效、准确的数据采集。通过自然语言处理技术,我们确保了数据的质量和…

剪辑视频调色软件有哪些 剪辑视频软件哪个最好 剪辑视频怎么学 剪辑视频的方法和步骤 会声会影2024 会声会影视频制作教程

看了很多调色教程,背了一堆调色参数,可最终还是调不出理想的效果。别再怀疑自己了,不是你的剪辑技术不行,而是剪辑软件没选对。只要掌握了最基本的调色原理,一款适合自己的视频剪辑软件是很容易出片的。 有关剪辑视频…

ABAQUS应用04——集中质量的添加方法

文章目录 0. 背景1. 集中质量的编辑2. 约束的设置3. 总结 0. 背景 混塔ABAQUS模型中,机头、法兰等集中质量的设置是模型建立过程中的一部分,需要研究集中质量的添加。 1. 集中质量的编辑 集中质量本身的编辑没什么难度,我已经用Python代码…

Bert-VITS-2 效果挺好的声音克隆工具

持中日英三语训练和推理。内置干声分离,切割和标注工具,开箱即用。请点下载量右边的符号查看镜像所对应的具体版本号。 教程地址: sjj​​​​​​​CodeWithGPU | 能复现才是好算法CodeWithGPU | GitHub AI算法复现社区,能复现…

Python classmethod函数

在Python编程中,classmethod()函数是一个内置函数,用于定义类方法。类方法是绑定到类而不是实例的方法,可以通过类名直接调用,并且可以访问类的属性和方法。本文将深入探讨Python中的classmethod()函数,包括基本用法、…