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

使用ESM3蛋白质语言模型进行快速大规模结构预测

文章目录

  • ESM3介绍
  • ESM3在线使用
  • 本地使用api批量预测
  • ESM相较于AlphaFold的优势


ESM3介绍

ESM3是由EvolutionaryScale(前Meta团队)开发的一款蛋白质大语言模型,于2025年以《用语言模型模拟 5 亿年的进化》为题正式发表在Science上
文章链接: https://www.science.org/doi/10.1126/science.ads0018
在这里插入图片描述

文章展示了一个例子,如何用ESM3设计新型绿色荧光蛋白(GFP),设计出的新蛋白与自然界中最相近的序列相比也仅有58%的相似度,证明该模型在拓展蛋白质新编码空间上具有巨大潜力。

尽管该science论文主推ESM3的蛋白质设计功能,本文仅介绍如何使用ESM3的蛋白质结构预测功能


ESM3在线使用

使用EvolutionaryScale的在线网站可以预测结构、生成新蛋白,速度非常快,500个氨基酸左右的蛋白结构基本几秒内就可以给出,比AlphaFold3快不少

链接: https://forge.evolutionaryscale.ai/tools/predict
在这里插入图片描述
注意非商业使用需要通过学术机构后缀的邮箱来申请

本地使用api批量预测

如果你不想下载那些很大的权重文件到本地,或者你没有算力足够的机器来运行,可以使用官方提供的api来进行批量预测

首先需要在你的电脑上安装esm3,非常简单,只需要

pip install esm

即可安装

安装完毕后在EvolutionaryScale上获取你的api keys

在这里插入图片描述

在下面填入你 EvolutionaryScale和Hugging face的token即可,两个都是可以免费获取的


from huggingface_hub import login
from esm.sdk import client
from esm.sdk.api import ESM3InferenceClient, ESMProtein, GenerationConfighugging_face_token="<your hugging face token>"login(token=hugging_face_token)model: ESM3InferenceClient = client("esm3-large-2024-03", token="<your evolutionary token>")sequence= "MALWMRLLPLLALLALWGPDPAAAFVNQHLCGSHLVEALYLVCGERGFFYTPKTRREAEDLQVGQVELGGGPGAGSLQPLALEGSLQKRGIVEQCCTSICSLYQLENYCN"
# 替换为你感兴趣的蛋白序列protein = ESMProtein(sequence=sequence)protein = model.generate(protein, GenerationConfig(track="structure", num_steps=8,temperature=0.1))
protein.to_pdb("./predict.pdb")

使用EvolutionarySclae的api时可以有以下几种模型进行选择,替换client的模型名称即可:
在这里插入图片描述

同时预测时num_steps和temperature参数都是可调的,num_steps越多消耗的tokens数也越多

每日默认总积分数只有10分,在Credits处可查
在这里插入图片描述

可以通过填写一下表格申请到每日100个credits,填了一下发现几分钟就给通过了,估计也没有人工审批

ESM相较于AlphaFold的优势

之前一直想做大规模蛋白质结构预测,尽管ColabFold和AlphaFold 3都已经公开可用,但这两个模型都需要进行多序列比对,而这一步在部署到本地后十分耗时,之前本人尝试过结果表明一个200氨基酸左右的序列需要近20分钟才能预测完成。

相比之下,如今使用ESM3每个蛋白预测时间在num_steps数设置合适的时候半分钟不到就可以预测完成,极大提高效率。而Credits限制的问题可以通过开多个账号或者本地部署ESM3模型来解决,比解决AlphaFold MSA的问题方便多了。

http://www.dtcms.com/a/275648.html

相关文章:

  • 学习秒杀系统-登录功能(明文密码两次MD5,JSR303参数校验,分布式session)
  • Vue 项目打包部署还存在问题?你知道怎么做吧?
  • 鸿蒙系统防黑秘籍:如何彻底防止恶意应用窃取用户数据?
  • java进阶(一)+学习笔记
  • STM32之LVGL移植
  • 详解缓存淘汰策略:LRU
  • python-enumrate函数
  • NO.3数据结构栈和队列|顺序栈|共享栈|链栈|顺序队|循环队列|链队|双端队列|括号匹配|中缀表达式转后缀|后缀表达式求值
  • JavaScript代码段注入:动态抓取DOM元素的原理与实践
  • GitHub 操作指南:项目协作与自动化工作流实践
  • 【第五节】部署http接口到ubuntu server上的docker内
  • 开源 Arkts 鸿蒙应用 开发(七)数据持久--sqlite关系数据库
  • OSPFv3-一二类LSA
  • 创建 UIKit 项目教程
  • 前端开发中的输出问题
  • 新手向:使用Python将多种图像格式统一转换为JPG
  • 【学习笔记】Linux命令
  • JavaWeb(苍穹外卖)--学习笔记05(MD5)
  • LangChain极速入门:用Python构建AI应用的新范式
  • [特殊字符]LabelMe标注转PaddleSeg数据集:多类掩码自动生成+配置文件输出(附完整Python脚本)
  • Apache Iceberg数据湖高级特性及性能调优
  • 玩转rhel9 Apache
  • linux 系统找出磁盘IO占用元凶 —— 筑梦之路
  • Java零基础笔记12(Java编程核心:面向对象编程高级{常用API、GUI编程})
  • PyTorch多层感知机模型构建与MNIST分类训练
  • 【BurpSuite 2025最新版插件开发】基础篇10(完):日志记录与调试
  • 请求服务端获取broker的机房归属信息异常
  • 剑指offer56_数组中唯一只出现一次的数字
  • JavaScript加强篇——第七章 浏览器对象与存储要点
  • NLP:RNN文本生成案例分享