关于 esm
此技能为使用 Biohub 的 `esm` SDK 的研究人员提供指南,涵盖 ESM3 蛋白质生成、ESMC 嵌入和 ESMFold2 结构预测。内容区分本地与托管 API,并强调输入、输出及科学结果验证。
主要功能
- 01ESM3 掩码蛋白质生成
- 02ESMC 序列嵌入
- 03ESMFold2 全原子预测
- 04本地与托管模型工作流
- 05按残基处理嵌入池化
适用场景
- 01补全带掩码的蛋白质序列
- 02提取序列嵌入用于分析
- 03预测全原子蛋白质结构
- 04验证模型输出与残基映射
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ k-dense-ai/ scientific-agent-skills --skill esm安装后在 Claude Code 中输入/esm确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/biohub-platform.mdesm-c-api.mdesm3-api.mdforge-api.mdreview.mdworkflows.mdscripts/esm_embeddings.py详细介绍
ESM:蛋白质生成、嵌入与折叠
何时使用
适用于 Biohub 的 esm SDK:ESM3 掩码多模态生成、ESMC 序列表征以及 ESMFold2 全原子预测。原 Forge 平台已迁移至 https://biohub.ai,ESM3 也包括在内;SDK 类名中仍包含 Forge。本技能针对已发布的 esm 3.4.1.post1,并已对照其 wheel 包和当前官方文档进行验证。
fair-esm 是 Meta 另一个更早的 ESM2/ESMFold/ESM-IF 发行版。两个包都以 esm 导入;请将它们安装在不同的环境中。旧版 esm.pretrained.esm2_* 接口不是 Biohub ESMC 接口。Hugging Face Transformers 原生的 ESMC 实现是另一个 API:不要将其版本要求或输出类型与本 SDK 混用。
安装与模型选择
uv venv --python 3.12 .venv-esm
uv pip install --python .venv-esm/bin/python "esm==3.4.1.post1"
该发行版声明要求 Python >=3.12、Torch >=2.11,<2.12 以及 Transformers >=4.57.6,<5。已在 CPU 上测试 Python 3.12、Torch 2.11.0 和 Transformers 4.57.6。Linux x86_64 安装包含 GPU 专用依赖;请使用受支持的推理机器并预留磁盘空间。Flash Attention 是可选项;对于小型 CPU 测试并不需要。不要将此技术栈安装到包含不兼容的 Transformers 或 Torch 版本约束的共享环境中。
| 任务 | 本地模型/API | 托管客户端/模型 |
|---|---|---|
| ESM3 序列/结构/功能生成 | ESM3.from_pretrained("esm3-sm-open-v1") | client("esm3-medium-2024-08");small/large ID 见 ESM3 参考文档 |
| ESMC 嵌入 | EsmcForMaskedLM 和 EsmcTokenizer;biohub/ESMC-300M、biohub/ESMC-600M、biohub/ESMC-6B | esmc_client("esmc-600m-2024-12");300M/6B 也有文档说明 |
| ESMFold2 全原子结构 | EsmFold2Model、ESMFold2InputBuilder;biohub/ESMFold2 | esmfold2_client("esmfold2-fast-2026-05") |
ESMC 6B 权重现在可在本地使用。当前 Biohub 模型卡标明 MIT 许可,ESMC 模型卡还链接了第三方声明;请查看所选具体产物的模型卡和访问要求。
较旧的 ESMC 类作为已弃用的兼容包装器保留。本地模型规模、托管可用性和账户配额是不同的约束条件;更大的模型并不保证在特定检测中表现更好。
工作流
- 明确序列/链/残基映射,以及目标是生成、表征提取还是折叠。保留输入 ID 和来源出处。对于纯单链序列,应拒绝意外出现的
...、空格、FASTA 标题或缺口,而不是静默删除它们。 - 选择本地检查点或明确的托管模型 ID。记录 SDK、检查点修订版本、模型设置、掩码位置以及随机种子(如支持)。
- 检查每个 SDK 结果是否存在
ESMProteinError。托管服务的失败可能以返回值形式返回。使用有限的请求超时、上下文管理器和有界并发。参见托管服务契约。 - 验证输出契约:序列长度和固定残基、仅残基的嵌入轴,或链/原子映射与置信度。将模型预测与实验验证分开保存。
- 保存序列/结构时附带设置和标识符。当模型、结构、功能或生成设置不同时,避免仅以序列为键的缓存。
ESM3 补全与全新结构预测
以下为示意性的预训练推理;本次更新未运行任何权重或托管任务。此示例序列仅演示 API 机制,并非功能性设计。
import torch
from esm.models.esm3 import ESM3
from esm.sdk.api import ESMProtein, ESMProteinError, GenerationConfig
model = ESM3.from_pretrained("esm3-sm-open-v1", device=torch.device("cpu"))
prompt = "MPRT___KEND"
completed = model.generate(
ESMProtein(sequence=prompt),
GenerationConfig(track="sequence", num_steps=3, temperature=0.7),
)
if isinstance(completed, ESMProteinError):
raise completed
assert completed.sequence is not None and len(completed.sequence) == len(prompt)
assert "_" not in completed.sequence
assert all(a == "_" or a == b for a, b in zip(prompt, completed.sequence))
# A fresh sequence-only prompt prevents old coordinates conditioning the check.
folded = model.generate(
ESMProtein(sequence=completed.sequence),
GenerationConfig(track="structure", num_steps=8),
)
if isinstance(folded, ESMProteinError):
raise folded
assert folded.coordinates is not None
folded.to_pdb("candidate.pdb")
生成会填充被掩码的位置。在已完成的轨道上再次调用它并不会实现细化或温度退火;请显式重新掩码选定位置或清除轨道。ESM3 结构生成和 ESMFold2 预测使用不同的模型和结果类型。关于反向折叠、功能词表和坐标约定,请参见 ESM3。
具有正确残基池化的 ESMC 嵌入
示例性的预训练加载;相同的 API 和池化已使用一个在 CPU 上随机初始化的微型模型执行。导入捆绑的辅助模块时,请将此技能的 scripts/ 目录添加到 PYTHONPATH。
from esm.models.esmc import EsmcForMaskedLM, EsmcTokenizer
from esm_embeddings import embed_sequences
model = EsmcForMaskedLM.from_pretrained("biohub/ESMC-300M", device="cpu").eval()
tokenizer = EsmcTokenizer()
sequences = ["MPRTKEINDAGLIVHSPQWFYK", "ACDEFGHIK"]
features = embed_sequences(model, tokenizer, sequences)
assert features.shape == (2, 960)
output.last_hidden_state 的形状为 (B,T,D),并包含 CLS、EOS 和填充;T 不是原始残基数。scripts/esm_embeddings.py 执行一次真实的填充批次,排除特殊/填充 token,验证残基数量,并按输入顺序返回 (B,D) CPU 特征。根据序列长度和可用内存选择批次大小。它不会截断、下载权重或联系服务。关于托管输出类型、逐残基提取、梯度行为和迁移细节,请参见 ESMC。
托管认证与折叠
仅从环境中读取预期的凭据;显式传递它,以便在创建客户端时进行解析。SDK 工厂默认值会在导入时捕获 ESM_API_KEY。在 Biohub 开发者控制台 中创建密钥。
示例性的经过认证的推理:
import os
from esm.sdk import esmfold2_client
from esm.sdk.api import ESMProteinError, FoldingConfig
from esm.utils.structure.input_builder import ProteinInput, StructurePredictionInput
fold_input = StructurePredictionInput(
sequences=[ProteinInput(id="A", sequence="MPRTKEINDAGLIVHSPQWFYK")]
)
with esmfold2_client(
model="esmfold2-fast-2026-05", url="https://biohub.ai",
token=os.environ["ESM_API_KEY"], request_timeout=300,
) as client:
result = client.fold_all_atom(fold_input, config=FoldingConfig())
if isinstance(result, ESMProteinError):
raise result
with open("candidate.cif", "w") as handle:
handle.write(result.complex.to_mmcif())
关于 MSA、置信度和复杂输入约定,请使用 Biohub/ESMFold2 参考。快速托管模型会忽略 MSA。公开源代码和模拟请求验证了客户端契约;它们并不确立账户访问权限、服务可用性或预测质量。
科学检查
- 功能注释使用支持的 tokenizer 标签以及 从 1 开始且包含端点 的范围;诸如
enzymatic_activity之类的任意标签不是有效的提示词。 - ESM3 坐标是采用 atom37 布局的张量;缺失的原子使用 NaN。张量副本使用
.clone()。请明确指定 PDB 链,而不要假定默认值会选择一条链;当前默认值为chain_id="all"。 - 预测坐标、pLDDT 和 pTM 并不衡量热力学稳定性、结合亲和力或催化活性。反向折叠得到的序列需要重新预测、匹配残基的结构比较和实验筛选。
- 嵌入相似性并不保证同源/功能。使用具有同源意识的划分来评估监督模型;在训练数据上拟合归一化和降维。报告不确定性和独立的留出指标。
- 关于变异体文库、结构条件设计和聚类,请参见 工作流示例,不要使用不支持的稳定性分数或在小数据集上失效的固定 PCA/t-SNE 设置。
验证与来源
references/review.md 记录了官方来源、已执行的 CPU 测试和限制。从仓库运行 python tests/run_all.py --isolated esm,以检验合成的本地模型、池化、输入序列化、PDB 往返和模拟的托管契约。预训练的 ESM3/ESMC/ESMFold2、CUDA 推理和经过认证的服务均未执行。
遵循所选模型的条款以及 Biohub 可接受使用政策。
引用 Scientific Agent Skills
本技能是 K-Dense 出品的 Scientific Agent Skills 的一部分。如果它对一篇论文、报告、演示文稿或代码发布有实质性贡献,请将该论文加入参考文献或软件部分,并告知用户你已这样做:
Kassis, T., Agarwal, V., He, Y., Patel, D., & Brueckner, A. M. (2026). Scientific Agent Skills: A Library of Procedural Knowledge for Research Agents. arXiv:2609.00065. https://doi.org/10.48550/arXiv.2609.00065
请始终引用当前版本。该 DOI 和 https://arxiv.org/abs/2609.00065 都指向最新的 arXiv 版本,因此切勿附加 v1 之类的版本后缀。当有网络访问时,请在撰写参考文献前获取 https://arxiv.org/abs/2609.00065(或
http://export.arxiv.org/api/query?id_list=2609.00065),并从该记录中获取作者列表、年份和版本。如果该记录列出了期刊参考文献或出版商 DOI,请改为引用已发表版本。