[ PROMPT_NODE_26548 ]
Esm 工作流
[ SKILL_DOCUMENTATION ]
# ESM 工作流与示例
## 概述
本文档提供了使用 ESM3 和 ESM C 进行常见工作流的完整端到端示例。每个工作流都包含设置、执行和分析代码。
## 工作流 1:利用思维链设计新型 GFP
利用 ESM3 的多模态生成能力设计一种新型荧光蛋白。
### 目标
通过跨序列、结构和功能的思维链推理,生成具有特定属性的绿色荧光蛋白 (GFP)。
### 完整实现
python
from esm.models.esm3 import ESM3
from esm.sdk.api import ESMProtein, GenerationConfig, FunctionAnnotation
import matplotlib.pyplot as plt
# 设置
model = ESM3.from_pretrained("esm3-sm-open-v1").to("cuda")
# 第 1 步:定义目标属性
print("第 1 步:定义目标 GFP 属性...")
# 创建具有所需功能的蛋白质
target_length = 238 # 典型的 GFP 长度
protein = ESMProtein(
sequence="_" * target_length,
function_annotations=[
FunctionAnnotation(
label="green_fluorescent_protein",
start=65,
end=75 # 发色团区域
)
]
)
# 第 2 步:生成具有功能约束的初始序列
print("第 2 步:生成初始序列...")
config = GenerationConfig(
track="sequence",
num_steps=target_length // 3, # 逐步生成
temperature=0.7 # 中等多样性
)
protein = model.generate(protein, config)
print(f"生成的序列: {protein.sequence[:50]}...")
# 第 3 步:预测结构
print("第 3 步:预测结构...")
config = GenerationConfig(
track="structure",
num_steps=target_length // 2
)
protein = model.generate(protein, config)
print(f"结构预测完成,坐标形状: {protein.coordinates.shape}")
# 第 4 步:基于结构优化序列
print("第 4 步:基于结构优化序列...")
# 掩盖区域以进行优化 (例如,表面残基)
sequence_list = list(protein.sequence)
# 保留发色团区域,优化其他区域
for i in range(0, 65):
if i % 3 == 0: # 每三个位置优化一次
sequence_list[i] = '_'
for i in range(75, target_length):
if i % 3 == 0:
sequence_list[i] = '_'
protein.sequence = ''.join(sequence_list)
config = GenerationConfig(
track="sequence",
num_steps=50,
temperature=0.5 # 较低的温度用于优化
)
protein = model.generate(protein, config)
# 第 5 步:最终验证
print("第 5 步:最终验证...")
# Predi