返回Skills库

ESM:进化尺度建模

MIT
📊 数据知识
K-Dense-AIPython

当直接使用 `esm` Python SDK、ESM3 或 ESMC 模型 ID、Forge/Biohub 推理客户端或 ESMFold2 折叠工作流时使用。

ESM:进化尺度建模

概述

ESM 提供用于理解、生成和设计蛋白质的蛋白质语言模型。此技能用于当前的 EvolutionaryScale/Biohub 工作流:ESM3 用于生成式设计,ESMC 用于表示学习和嵌入,托管的 Forge/Biohub 推理,以及 ESMFold2 全原子结构预测。

核心能力

1. 使用 ESM3 进行蛋白质序列生成

使用多模态生成建模生成具有所需属性的新颖蛋白质序列。

何时使用:

  • 设计具有特定功能属性的蛋白质
  • 完成部分蛋白质序列
  • 生成现有蛋白质的变体
  • 创建具有所需结构特征的蛋白质

基本用法:

from esm.models.esm3 import ESM3
from esm.sdk.api import ESM3InferenceClient, ESMProtein, GenerationConfig

# 在 Hugging Face 上接受许可协议后加载本地开放权重。
model: ESM3InferenceClient = ESM3.from_pretrained("esm3-open").to("cuda")

# 创建蛋白质提示
protein = ESMProtein(sequence="MPRT___KEND")  # '_' 代表被屏蔽的位置

# 生成补全
protein = model.generate(protein, GenerationConfig(track="sequence", num_steps=8))
print(protein.sequence)

通过 Forge API 进行远程/云使用:

import os
import esm
from esm.sdk.api import ESMProtein, GenerationConfig

# 与本地 ESM3 接口相同;令牌来自 ESM_API_KEY(参见"身份验证")
model = esm.sdk.client("esm3-medium-2024-08", token=os.environ["ESM_API_KEY"])

# 生成
protein = model.generate(protein, GenerationConfig(track="sequence", num_steps=8))

有关详细的 ESM3 模型规范、高级生成配置和多模态提示示例,请参阅 references/esm3-api.md

2. 结构预测和反向折叠

使用 ESM3 的结构轨道进行从序列的结构预测或反向折叠(从结构设计序列)。

结构预测:

from esm.sdk.api import ESM3InferenceClient, ESMProtein, GenerationConfig

# 从序列预测结构
protein = ESMProtein(sequence="MPRTKEINDAGLIVHSP...")
protein_with_structure = model.generate(
    protein,
    GenerationConfig(track="structure", num_steps=protein.sequence.count("_"))
)

# 访问预测的结构
coordinates = protein_with_structure.coordinates  # 3D 坐标
pdb_string = protein_with_structure.to_pdb()

反向折叠(从结构设计序列):

# 为目标结构设计序列
protein_with_structure = ESMProtein.from_pdb("target_structure.pdb")
protein_with_structure.sequence = None  # 移除序列

# 生成折叠到此结构的序列
designed_protein = model.generate(
    protein_with_structure,
    GenerationConfig(track="sequence", num_steps=50, temperature=0.7)
)

3. 使用 ESM C 进行蛋白质嵌入

为下游任务(如功能预测、分类或相似性分析)生成高质量嵌入。

何时使用:

  • 为机器学习提取蛋白质表示
  • 计算序列相似性
  • 用于蛋白质分类的特征提取
  • 用于蛋白质相关任务的迁移学习

基本用法:

from esm.models.esmc import ESMC
from esm.sdk.api import ESMProtein, LogitsConfig

# 加载 ESM C 模型
model = ESMC.from_pretrained("esmc_300m").to("cuda")

# 获取嵌入
protein = ESMProtein(sequence="MPRTKEINDAGLIVHSP...")
protein_tensor = model.encode(protein)
logits_output = model.logits(
    protein_tensor,
    LogitsConfig(sequence=True, return_embeddings=True),
)
embeddings = logits_output.embeddings

批处理:

# 编码多个蛋白质
proteins = [
    ESMProtein(sequence="MPRTKEIND..."),
    ESMProtein(sequence="AGLIVHSPQ..."),
    ESMProtein(sequence="KTEFLNDGR...")
]

embeddings_list = [
    model.logits(
        model.encode(p),
        LogitsConfig(sequence=True, return_embeddings=True),
    ).embeddings
    for p in proteins
]

有关 ESM C 模型详细信息、效率比较和高级嵌入策略,请参阅 references/esm-c-api.md

4. 功能条件和注释

使用 ESM3 的功能轨道生成具有特定功能注释的蛋白质或从序列预测功能。

功能条件生成:

from esm.sdk.api import ESMProtein, FunctionAnnotation, GenerationConfig

# 创建具有所需功能的蛋白质
protein = ESMProtein(
    sequence="_" * 200,  # 生成 200 个残基的蛋白质
    function_annotations=[
        FunctionAnnotation(label="fluorescent_protein", start=50, end=150)
        ]
)

# 生成具有指定功能的序列
functional_protein = model.generate(
    protein,
    GenerationConfig(track="sequence", num_steps=200)
)

5. 思维链生成

使用 ESM3 的思维链生成方法迭代优化蛋白质设计。

from esm.sdk.api import GenerationConfig

# 多步细化
protein = ESMProtein(sequence="MPRT" + "_" * 100 + "KEND")

# 步骤 1:生成初始结构
config = GenerationConfig(track="structure", num_steps=50)
protein = model.generate(protein, config)

# 步骤 2:基于结构细化序列
config = GenerationConfig(track="sequence", num_steps=50, temperature=0.5)
protein = model.generate(protein, config)

# 步骤 3:预测功能
config = GenerationConfig(track="function", num_steps=20)
protein = model.generate(protein, config)

6. 使用 Forge API 进行批处理

使用 Forge 的异步方法高效处理多个蛋白质。

import os
import asyncio
import esm
from esm.sdk.api import ESMProtein, GenerationConfig

client = esm.sdk.client("esm3-medium-2024-08", token=os.environ["ESM_API_KEY"])

# 异步批处理
async def batch_generate(proteins_list):
    tasks = [
        client.async_generate(protein, GenerationConfig(track="sequence"))
        for protein in proteins_list
    ]
    return await asyncio.gather(*tasks)

# 执行
proteins = [ESMProtein(sequence=f"MPRT{'_' * 50}KEND") for _ in range(10)]
results = asyncio.run(batch_generate(proteins))

有关详细的 Forge API 文档、身份验证、速率限制和批处理模式,请参阅 references/forge-api.md

模型选择指南

ESM3 模型(生成式):

  • esm3-open (1.4B) - 开放权重,在 Hugging Face 上接受许可协议后可本地使用
  • esm3-medium-2024-08 (7B) - 质量和速度的最佳平衡(仅 Forge)
  • esm3-large-2024-03 (98B) - 最高质量,较慢(仅 Forge)

ESM C 模型(嵌入):

  • esmc_300m / esmc-300m-2024-12 (30 层) - 轻量级,快速推理(开放权重,本地)
  • esmc_600m / esmc-600m-2024-12 (36 层) - 平衡性能(开放权重,本地)
  • esmc-6b-2024-12 (80 层) - 最大质量(Forge API;本地 6B 权重需要 Forge 或 SageMaker)

本地 ESMC.from_pretrained() 示例使用带下划线的别名(esmc_300mesmc_600m)。托管 API 客户端使用带日期的模型 ID,例如 esmc-600m-2024-12

选择标准:

  • 本地开发/测试:使用 esm3-openesmc_300m
  • 生产质量:通过 Forge 使用 esm3-medium-2024-08
  • 最高精度:通过 Forge 使用 esm3-large-2024-03esmc-6b-2024-12
  • 高吞吐量:使用带有明确异步并发限制的 Forge 或 Biohub API
  • 成本优化:使用较小的模型,实施缓存策略

安装

从 PyPI 安装(EvolutionaryScale 发布的 `esm`)。当前 PyPI 版本:3.2.3(2025 年 10 月 14 日)。需要 Python >=3.12,<3.13

基本安装:

uv pip install "esm==3.2.3"

使用 Flash Attention(推荐用于 NVIDIA GPU 上更快的推理):

uv pip install "esm==3.2.3"
uv pip install flash-attn --no-build-isolation

Forge 客户端随 esm 包一起提供 - ESM3 或 ESMC 的 Forge 推理无需额外安装。

身份验证

Forge API 访问需要 API 密钥。切勿在脚本中硬编码令牌或将其提交到版本控制。

  1. 检查环境中是否已设置 ESM_API_KEY
  2. 如果未设置,只在本地 .env 中检查 ESM_API_KEY(不要加载不相关的机密信息)。
  3. 如果仍然缺失,在 Biohub 开发者控制台为 Biohub API 创建密钥,或在 Forge 为旧版 Forge 托管的 ESM3/ESMC 访问创建密钥。
import os

token = os.environ["ESM_API_KEY"]  # 如果未设置则抛出 KeyError

当省略 token 参数时,esm.sdk.client() 会自动读取 ESM_API_KEY。将端点 URL 固定为可信主机,例如 https://forge.evolutionaryscale.aihttps://biohub.ai;不要从不可信的用户输入中获取 API 主机地址。

Biohub 平台: EvolutionaryScale 和 Forge 现在通过 biohub.ai 提供当前的托管模型。SDK 类名可能仍引用 "Forge"。有关 ESMFold2 和 Biohub 特定的设置,请参阅 references/biohub-platform.md

常见工作流

有关详细示例和完整工作流,请参阅 references/workflows.md,其中包括:

  • 使用思维链的新颖 GFP 设计
  • 蛋白质变体生成和筛选
  • 基于结构的序列优化
  • 功能预测管道
  • 基于嵌入的聚类和分析

参考

此技能包含全面的参考文档:

  • references/esm3-api.md - ESM3 模型架构、API 参考、生成参数和多模态提示
  • references/esm-c-api.md - ESM C 模型详细信息、嵌入策略和性能优化
  • references/forge-api.md - Forge 平台文档、身份验证、批处理和部署
  • references/biohub-platform.md - Biohub API 迁移、ESMFold2 结构预测以及开发者控制台身份验证
  • references/workflows.md - 完整示例和常见工作流模式

这些参考包含详细的 API 规范、参数描述和高级使用模式。根据特定任务需要加载它们。

最佳实践

对于生成任务:

  • 从较小的模型开始进行原型设计(esm3-open
  • 使用温度参数控制多样性(0.0 = 确定性,1.0 = 多样化)
  • 使用思维链进行复杂设计的迭代细化
  • 使用结构预测或湿实验室实验验证生成的序列

对于嵌入任务:

  • 尽可能批处理序列以提高效率
  • 为重复分析缓存嵌入
  • 计算相似性时归一化嵌入
  • 根据下游任务要求使用适当的模型大小

对于生产部署:

  • 使用 Forge API 以实现可扩展性和最新模型
  • 为 API 调用实施错误处理和重试逻辑
  • 监控令牌使用并实施速率限制
  • 考虑使用 AWS SageMaker 进行专用基础设施部署

资源和文档

  • GitHub 仓库: https://github.com/Biohub/esm(当前 ESMC/ESMFold2/Biohub 文档;ESM3 文档仍从该仓库链接)
  • Forge 平台: https://forge.evolutionaryscale.ai
  • Biohub 平台: https://biohub.ai
  • 科学论文: Hayes et al., Science (2025) - https://www.science.org/doi/10.1126/science.ads0018
  • 博客文章:
  • ESM3 发布:https://www.evolutionaryscale.ai/blog/esm3-release
  • ESM C 发布:https://www.evolutionaryscale.ai/blog/esm-cambrian
  • 社区: 位于 https://bit.ly/3FKwcWd 的 Slack 社区
  • 模型权重: Hugging Face 上的 EvolutionaryScale 和 Biohub 组织

负责任使用

ESM 旨在用于蛋白质工程、药物发现和科学研究中的有益应用。在设计新颖蛋白质进行实验验证之前,请遵循负责任生物设计框架(https://responsiblebiodesign.ai/)以及 Biohub 可接受使用政策(https://biohub.org/acceptable-use-policy/)。考虑蛋白质设计的生物安全和伦理影响。

兼容工具

Claude CodeOpenClawHermes Agent

数据来源:claude-scientific-skillsMIT 许可) | 查看上游来源

上游项目:K-Dense-AI/scientific-agent-skills / claude-scientific-skills | 收录时间:2026-08-18 | 更新:2026-08-18

本页面内容基于上游开源许可项目整理,仅供学习参考。AI铺子不对第三方内容承担责任, 详情请参阅免责声明