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: Evolutionary Scale Modeling
概要
ESM は、タンパク質の理解、生成、設計のための最先端のタンパク質言語モデルを提供します。このスキルでは、2 つのモデルファミリーを扱えます。配列、構造、機能にまたがる生成的なタンパク質設計のための 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. Chain-of-Thought 生成
ESM3 の chain-of-thought 生成アプローチを使って、タンパク質設計を反復的に改良します。
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
追加の依存関係は不要です。Forge API トークンは https://forge.evolutionaryscale.ai で取得できます。
一般的なワークフロー
詳細な例と完全なワークフローについては、references/workflows.md を参照してください。この資料には以下が含まれます。
- chain-of-thought を用いた新規 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 は、タンパク質工学、創薬、科学研究における有益な応用を目的として設計されています。新規タンパク質を設計する際は、Responsible Biodesign Framework (https://responsiblebiodesign.ai/) に従ってください。実験的検証を行う前に、タンパク質設計のバイオセーフティおよび倫理的な影響を検討してください。