Communitygithub.com

ESM2タンパク質言語モデル

バイオメディカル研究のためのAIエージェントスキルのキュレーションコレクション。ゲノミクス、プロテオミクス、シングルセル解析、臨床AI、タンパク質デザインをカバーします。

ESM2タンパク質言語モデル とは?

このスキルは、ESM2タンパク質言語モデルをAIエージェント(Claude Code、Cursor、Codexなど)から利用するための詳細なガイドです。ESM2は、進化的スケーリングを用いたタンパク質言語モデルであり、配列の尤度スコア(PLL)の算出や埋め込みベクトルの抽出を通じて、タンパク質の自然らしさの評価、配列クラスタリング、変異影響予測などに活用できます。本スキルはModalを使ったコマンドライン実行とPython APIによる直接実行の両方をサポートしており、特にGPU(A10G推奨)を用いた高速なバッチ処理が可能です。また、モデルサイズごとの性能比較、出力形式の解説、PLLの解釈基準、典型的な処理時間とコスト、トラブルシューティング情報が網羅されており、開発者が迅速に実践的な推論ワークフローを構築できるよう設計されています。

対応~Claude Code~Codex CLI~Cursor
npx skills add BioTender-max/awesome-bio-agent-skills

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

ESM2タンパク質言語モデル は何をしますか?

前提条件

要件最小推奨
Python3.8+3.10
PyTorch1.10+2.0+
CUDA11.0+11.7+
GPU VRAM8GB24GB (A10G)
RAM16GB32GB

実行方法

初めてですか? Modalとbiomodalsのセットアップ方法についてはインストールガイドを参照してください。

オプション1: Modal

cd biomodals
modal run modal_esm2_predict_masked.py \
  --input-faa sequences.fasta \
  --out-dir embeddings/

GPU: A10G (24GB) | タイムアウト: デフォルト300秒

オプション2: Python API(推奨)

import torch
import esm

# モデルのロード
model, alphabet = esm.pretrained.esm2_t33_650M_UR50D()
batch_converter = alphabet.get_batch_converter()
model = model.eval().cuda()

# 配列の処理
data = [("seq1", "MKTAYIAKQRQISFVK...")]
batch_labels, batch_strs, batch_tokens = batch_converter(data)

with torch.no_grad():
    results = model(batch_tokens.cuda(), repr_layers=[33])

# 埋め込みの取得
embeddings = results["representations"][33]

主なパラメータ

ESM2モデル

モデルパラメータ数速度品質
esm2_t6_8M8M最速高速スクリーニング用
esm2_t12_35M35M速い良好
esm2_t33_650M650M中程度より良い
esm2_t36_3B3B遅い最良

出力形式

embeddings/
├── embeddings.npy       # (N, 1280) 配列
├── pll_scores.csv       # 各配列のPLL
└── metadata.json        # 配列情報

出力例

正常な実行

$ modal run modal_esm2_predict_masked.py --input-faa designs.fasta
[INFO] ESM2-650Mモデルをロード中...
[INFO] 100配列を処理中...
[INFO] 擬似対数尤度を計算中...

embeddings/pll_scores.csv:
sequence_id,pll,pll_normalized,length
design_0,-0.82,0.15,78
design_1,-0.95,0.08,85
design_2,-1.23,-0.12,72
...

サマリー:
  平均PLL: -0.91
  PLL > 0 の配列: 42/100 (42%)

良い出力の目安:

  • PLL_normalized: > 0.0(より自然な配列)
  • 埋め込み形状: (N, 1280)(650Mモデルの場合)
  • PLLが高いほど自然な配列

決定木

ESM2を使うべきか?
│
├─ 何が必要か?
│  ├─ 配列の妥当性スコア → ESM2 PLL ✓
│  ├─ クラスタリング用埋め込み → ESM2 ✓
│  ├─ 変異影響予測 → ESM2 ✓
│  └─ 構造予測 → ESMFoldを使用
│
├─ どのモデルサイズ?
│  ├─ 高速スクリーニング → esm2_t12_35M
│  ├─ 標準的使用 → esm2_t33_650M ✓
│  └─ 最高品質 → esm2_t36_3B
│
└─ 使用用途?
   ├─ QCフィルタリング → PLL > 0.0 しきい値
   ├─ 多様性解析 → 平均プール埋め込み
   └─ 変異スキャン → 位置ごとの対数オッズ

PLLの解釈

正規化PLL解釈
> 0.2非常に自然な配列
0.0 - 0.2良好、自然に近い
-0.5 - 0.0許容範囲
< -0.5人工的である可能性

標準的なパフォーマンス

キャンペーンサイズ所要時間(A10G)コスト(Modal)備考
100配列5-10分約$1迅速なスクリーニング
1000配列30-60分約$5標準
5000配列2-3時間約$20大規模バッチ

スループット: 650Mモデルで約100-200配列/分


確認

wc -l embeddings/pll_scores.csv  # 入力 + 1(ヘッダー)と一致する必要があります

トラブルシューティング

OOMエラー: より小さなモデルを使用するか、バッチを分割する 処理が遅い: 速度重視の場合はesm2_t12_35Mを使用する PLLスコアが低い: 異常な配列や人工的な配列の可能性を示唆

エラー解釈

エラー原因修正方法
RuntimeError: CUDA out of memory配列が長すぎる、またはバッチサイズが大きいバッチサイズを減らす
KeyError: representation誤った層が指定された650Mモデルでは層33を使用
ValueError: sequence無効なアミノ酸非標準のアミノ酸がないか確認

次へ: chaiまたはboltzによる構造予測 → protein-qcでフィルタリング

関連スキル