关于 esm
ESM 技能用于蛋白质理解、生成与设计,面向蛋白质工程和科研工作。它结合 ESM3 的序列、结构与功能生成能力,以及 ESM C 的蛋白质表示和嵌入。
主要功能
- 01生成和补全蛋白质序列
- 02结构预测与逆折叠
- 03提取蛋白质嵌入
- 04按功能条件生成与注释
- 05迭代优化蛋白质设计
- 06Forge API 异步批处理
适用场景
- 01设计具有指定功能的蛋白质
- 02从结构设计蛋白质序列
- 03提取表示以进行相似性分析
- 04批量处理蛋白质生成任务
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ crazymsn/ academic-skills --skill esm安装后在 Claude Code 中输入/esm确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/esm-c-api.mdesm3-api.mdforge-api.mdworkflows.md详细介绍
ESM:进化尺度建模
概述
ESM 提供先进的蛋白质语言模型,用于理解、生成和设计蛋白质。此技能支持使用两个模型系列:ESM3 可跨序列、结构和功能进行生成式蛋白质设计;ESM C 可高效学习蛋白质表示并生成嵌入。
核心能力
1. 使用 ESM3 生成蛋白质序列
使用多模态生成建模,生成具有所需属性的新型蛋白质序列。
适用场景:
- 设计具有特定功能属性的蛋白质
- 补全部分蛋白质序列
- 生成现有蛋白质的变体
- 创建具有所需结构特征的蛋白质
基本用法:
from esm.models.esm3 import ESM3
from esm.sdk.api import ESM3InferenceClient, ESMProtein, GenerationConfig
# Load model locally
model: ESM3InferenceClient = ESM3.from_pretrained("esm3-sm-open-v1").to("cuda")
# Create protein prompt
protein = ESMProtein(sequence="MPRT___KEND") # '_' represents masked positions
# Generate completion
protein = model.generate(protein, GenerationConfig(track="sequence", num_steps=8))
print(protein.sequence)
通过 Forge API 远程/云端使用:
from esm.sdk.forge import ESM3ForgeInferenceClient
from esm.sdk.api import ESMProtein, GenerationConfig
# Connect to Forge
model = ESM3ForgeInferenceClient(model="esm3-medium-2024-08", url="https://forge.evolutionaryscale.ai", token="<token>")
# Generate
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
# Predict structure from sequence
protein = ESMProtein(sequence="MPRTKEINDAGLIVHSP...")
protein_with_structure = model.generate(
protein,
GenerationConfig(track="structure", num_steps=protein.sequence.count("_"))
)
# Access predicted structure
coordinates = protein_with_structure.coordinates # 3D coordinates
pdb_string = protein_with_structure.to_pdb()
逆折叠(根据结构生成序列):
# Design sequence for a target structure
protein_with_structure = ESMProtein.from_pdb("target_structure.pdb")
protein_with_structure.sequence = None # Remove sequence
# Generate sequence that folds to this structure
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
# Load ESM C model
model = ESMC.from_pretrained("esmc-300m").to("cuda")
# Get embeddings
protein = ESMProtein(sequence="MPRTKEINDAGLIVHSP...")
protein_tensor = model.encode(protein)
# Generate embeddings
embeddings = model.forward(protein_tensor)
批处理:
# Encode multiple proteins
proteins = [
ESMProtein(sequence="MPRTKEIND..."),
ESMProtein(sequence="AGLIVHSPQ..."),
ESMProtein(sequence="KTEFLNDGR...")
]
embeddings_list = [model.logits(model.forward(model.encode(p))) for p in proteins]
有关 ESM C 模型详情、效率对比和高级嵌入策略,请参阅 references/esm-c-api.md。
4. 功能条件控制与注释
使用 ESM3 的功能轨道,生成带有特定功能注释的蛋白质,或根据序列预测功能。
功能条件生成:
from esm.sdk.api import ESMProtein, FunctionAnnotation, GenerationConfig
# Create protein with desired function
protein = ESMProtein(
sequence="_" * 200, # Generate 200 residue protein
function_annotations=[
FunctionAnnotation(label="fluorescent_protein", start=50, end=150)
]
)
# Generate sequence with specified function
functional_protein = model.generate(
protein,
GenerationConfig(track="sequence", num_steps=200)
)
5. 思维链生成
使用 ESM3 的思维链生成方法,迭代优化蛋白质设计。
from esm.sdk.api import GenerationConfig
# Multi-step refinement
protein = ESMProtein(sequence="MPRT" + "_" * 100 + "KEND")
# Step 1: Generate initial structure
config = GenerationConfig(track="structure", num_steps=50)
protein = model.generate(protein, config)
# Step 2: Refine sequence based on structure
config = GenerationConfig(track="sequence", num_steps=50, temperature=0.5)
protein = model.generate(protein, config)
# Step 3: Predict function
config = GenerationConfig(track="function", num_steps=20)
protein = model.generate(protein, config)
6. 使用 Forge API 进行批处理
使用 Forge 的异步执行器,高效处理多个蛋白质。
from esm.sdk.forge import ESM3ForgeInferenceClient
import asyncio
client = ESM3ForgeInferenceClient(model="esm3-medium-2024-08", token="<token>")
# Async batch processing
async def batch_generate(proteins_list):
tasks = [
client.async_generate(protein, GenerationConfig(track="sequence"))
for protein in proteins_list
]
return await asyncio.gather(*tasks)
# Execute
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-sm-open-v1(1.4B)——开放权重,可在本地使用,适合实验esm3-medium-2024-08(7B)——质量与速度的最佳平衡(仅限 Forge)esm3-large-2024-03(98B)——质量最高,但速度较慢(仅限 Forge)
ESM C 模型(嵌入):
esmc-300m(30 层)——轻量级,推理速度快esmc-600m(36 层)——性能均衡esmc-6b(80 层)——表示质量最高
选择标准:
- 本地开发/测试: 使用
esm3-sm-open-v1或esmc-300m - 生产环境质量: 通过 Forge 使用
esm3-medium-2024-08 - 最高准确度: 使用
esm3-large-2024-03或esmc-6b - 高吞吐量: 使用带批处理执行器的 Forge API
- 成本优化: 使用较小的模型并实施缓存策略
安装
基本安装:
uv pip install esm
安装 Flash Attention(推荐,可加快推理速度):
uv pip install esm
uv pip install flash-attn --no-build-isolation
访问 Forge API:
uv pip install esm # SDK includes Forge client
无需其他依赖。在 https://forge.evolutionaryscale.ai 获取 Forge API 令牌。
常见工作流
详细示例和完整工作流请参阅 references/workflows.md,其中包括:
- 使用思维链设计新型 GFP
- 蛋白质变体生成与筛选
- 基于结构的序列优化
- 功能预测流水线
- 基于嵌入的聚类与分析
参考资料
此技能包含全面的参考文档:
references/esm3-api.md- ESM3 模型架构、API 参考、生成参数和多模态提示references/esm-c-api.md- ESM C 模型详情、嵌入策略和性能优化references/forge-api.md- Forge 平台文档、身份验证、批处理和部署references/workflows.md- 完整示例和常见工作流模式
这些参考资料包含详细的 API 规范、参数说明和高级用法模式。请根据具体任务按需加载。
最佳实践
对于生成任务:
- 使用较小的模型开始原型开发(
esm3-sm-open-v1) - 使用 temperature 参数控制多样性(0.0 = 确定性,1.0 = 多样化)
- 对复杂设计采用思维链进行迭代优化
- 使用结构预测或湿实验验证生成的序列
对于嵌入任务:
- 尽可能批量处理序列以提高效率
- 缓存嵌入,以便重复分析时使用
- 计算相似度时对嵌入进行归一化
- 根据下游任务的需求选择合适的模型大小
对于生产部署:
- 使用 Forge API 以获得可扩展性并使用最新模型
- 为 API 调用实现错误处理和重试逻辑
- 监控令牌使用量并实施速率限制
- 考虑使用 AWS SageMaker 部署专用基础设施
资源和文档
- GitHub 仓库: https://github.com/evolutionaryscale/esm
- Forge 平台: https://forge.evolutionaryscale.ai
- 科学论文: Hayes et al., Science (2025) - https://www.science.org/doi/10.1126/science.ads0018
- 博客文章:
- 社区: Slack 社区:https://bit.ly/3FKwcWd
- 模型权重: HuggingFace EvolutionaryScale 组织
负责任地使用
ESM 面向蛋白质工程、药物发现和科学研究等有益应用。设计新型蛋白质时,请遵循负责任生物设计框架(https://responsiblebiodesign.ai/)。在实验验证前,请考虑蛋白质设计的生物安全和伦理影响。