mcpField
E
esm

esm

github.com/crazymsnその他2335 回インストール22 週間前に更新
リポジトリ

esm について

ESMは、タンパク質工学や研究向けに、タンパク質の理解、生成、設計を行うスキルです。配列・構造・機能を扱うESM3と、表現や埋め込みを生成するESM Cを利用します。

主な機能

  1. 01タンパク質配列の生成と補完
  2. 02構造予測と逆フォールディング
  3. 03タンパク質埋め込みの抽出
  4. 04機能条件付き生成と注釈
  5. 05タンパク質設計の反復的な改良
  6. 06Forge APIによる非同期バッチ処理

活用シーン

  1. 01目標機能を持つタンパク質の設計
  2. 02構造からの配列設計
  3. 03類似性分析用の表現抽出
  4. 04タンパク質生成タスクの一括処理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/crazymsn/academic-skills --skill esm

インストール後、Claude Code で/esmを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
esm-c-api.md
esm3-api.md
forge-api.md
workflows.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 へのデプロイを検討してください

リソースとドキュメント

責任ある利用

ESM は、タンパク質工学、創薬、科学研究における有益な応用を目的として設計されています。新規タンパク質を設計する際は、Responsible Biodesign Framework (https://responsiblebiodesign.ai/) に従ってください。実験的検証を行う前に、タンパク質設計のバイオセーフティおよび倫理的な影響を検討してください。

コメント