esm について
esmは、タンパク質研究や設計でEvolutionaryScaleのタンパク質言語モデルを使うためのスキルです。配列設計、構造予測、埋め込み生成をローカルモデルとホストAPIで扱います。
主な機能
- 01ESM3によるタンパク質配列生成
- 02構造予測と逆フォールディング
- 03ESMCによるタンパク質埋め込み
- 04機能条件付き設計
- 05Forgeでのバッチ推論
活用シーン
- 01目標特性を持つタンパク質の設計
- 02既存配列のバリアント生成
- 03配列からの構造予測
- 04分類や類似性解析向け埋め込み生成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ kalarislabs/ research-agent-skills --skill esmインストール後、Claude Code で/esmを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/biohub-platform.mdesm-c-api.mdesm3-api.mdforge-api.mdworkflows.md詳細
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
# Load local open weights after accepting the license on Hugging Face.
model: ESM3InferenceClient = ESM3.from_pretrained("esm3-open").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 経由でリモート/クラウドを利用する場合:
import os
import esm
from esm.sdk.api import ESMProtein, GenerationConfig
# Same interface as local ESM3; token from ESM_API_KEY (see Authentication)
model = esm.sdk.client("esm3-medium-2024-08", token=os.environ["ESM_API_KEY"])
# 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, LogitsConfig
# Load ESM C model
model = ESMC.from_pretrained("esmc_300m").to("cuda")
# Get embeddings
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
バッチ処理:
# Encode multiple proteins
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
# 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 の非同期メソッドを使用して、複数のタンパク質を効率的に処理します。
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 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-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_300m、esmc_600m)を使用します。ホスト型 API クライアントでは、esmc-600m-2024-12 などの日付付きモデル ID を使用します。
選択基準:
- ローカル開発/テスト:
esm3-openまたはesmc_300mを使用 - 本番品質: Forge 経由で
esm3-medium-2024-08を使用 - 最高精度: Forge 経由で
esm3-large-2024-03またはesmc-6b-2024-12を使用 - 高スループット: 明示的な非同期同時実行数の上限を設定して、Forge または Biohub の API を使用
- コストの最適化: 小型モデルを使用し、キャッシュ戦略を実装
インストール
EvolutionaryScale の PyPI パッケージ(esm on PyPI)からインストールします。現在の 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 キーが必要です。トークンをスクリプトにハードコードしたり、バージョン管理にコミットしたりしないでください。
- 環境に
ESM_API_KEYがすでに設定されているか確認します。 - 設定されていない場合は、ローカルの
.envでESM_API_KEYのみを確認します(無関係なシークレットは読み込まないでください)。 - それでも見つからない場合は、Biohub API 用のキーを Biohub developer console で、または従来の Forge ホスト型 ESM3/ESMC へのアクセス用のキーを Forge で作成します。
import os
token = os.environ["ESM_API_KEY"] # raises KeyError if unset
token を省略すると、esm.sdk.client() は ESM_API_KEY を自動的に読み込みます。エンドポイント URL は https://forge.evolutionaryscale.ai や https://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
- ブログ記事:
- コミュニティ: https://bit.ly/3FKwcWd の Slack コミュニティ
- モデルの重み: Hugging Face の EvolutionaryScale および Biohub の組織
責任ある利用
ESM は、タンパク質工学、創薬、科学研究における有益な用途を目的として設計されています。新規タンパク質を設計する際は、Responsible Biodesign Framework(https://responsiblebiodesign.ai/)および Biohub Acceptable Use Policy(https://biohub.org/acceptable-use-policy/)に従ってください。実験による検証の前に、タンパク質設計のバイオセーフティと倫理的な影響を検討してください。
エージェントの作業手順
- 環境を確認します。 ツールのバージョン、参照ゲノム/アノテーションのビルド、入力形式(FASTQ、BAM、VCF、h5ad)を確認します。
- 入力を特定します。 データまたはユーザーに確認して、形式、識別子、パラメーターを確定します。結果に影響する値を推測せず、ユーザーに確認してください。
- まず小規模に実行します。 パイプラインを小さなサブセット(1サンプル、1染色体、数千細胞)で実行します。
- 上記の手順と参照情報に従って、 タスク全体を実行します。
- 結果を検証します。 結果を解釈する前に、QC 指標、サンプルの識別情報、ゲノムビルドの整合性、バッチ効果を確認します。
- 報告します。 実行した内容(バージョン、コマンド、パラメーター)、確認した内容、未確定の事項を明記します。
| このような場合 | 対応 |
|---|---|
| 入力間でゲノムビルドや識別子が一致しない | いったん停止し、続行する前に調整(liftover、ID マッピング)します。 |
| インストール済みのバージョンに、これらの手順に記載された関数、フラグ、エンドポイントがない | インストール済みバージョンのドキュメント(help()、--help、公式ドキュメント)を確認して適切に対応し、ユーザーに伝えます。API を捏造してはいけません。 |
| 必須の入力、識別子、パラメーターが曖昧 | ユーザーに確認するか、実行前に仮定を明示します。 |
整合性に関するルール
- 結果、パラメーター、識別子、引用、統計値を捏造してはいけません。実行または検証できない場合は、そのことを明確に伝えます。
- 統計で裏付けられる範囲を超えて生物学的意義を解釈してはいけません。多重検定補正について報告します。
- ここに記載されているバージョン固有の情報は古くなっている可能性があるため、インストール済みバージョンの公式ドキュメントで確認します。
- 費用が発生する操作、共有 GPU やクラウドの利用枠を消費する操作、個人データや患者データを扱う操作、元に戻せない操作を行う前に、ユーザーに確認します。
関連スキル
sentence-transformers:学習済みの Hugging Fac... を使用し、Python の sentence-transformers(SBERT)ライブラリで、文、テキスト、画像の埋め込みをローカルで生成します。adaptyv:タンパク質実験の設計、提出、結果の取得に Adaptyv Bio Foundry API と Python SDK を使用する方法です。tamarind:REST API または MCP サーバーを介して、Tamarind Bio プラットフォーム上のオープンソースの分子設計・構造生物学ツール群を利用します。