Communitygithub.com

BioTender-max/awesome-bio-agent-skills

精心策劃的 AI 代理技能集合,專為生物醫學研究設計,涵蓋基因體學、蛋白質體學、單細胞分析、臨床 AI 及蛋白質設計。

awesome-bio-agent-skills 是什麼?

這是一個名為「BioTender-max/awesome-bio-agent-skills」的 AI 代理技能資料庫,專門為生物醫學研究提供頂尖的處理能力。本技能(ESM2 蛋白質語言模型)可讓代理執行蛋白質序列的擬似對數機率(PLL)評分、產生嵌入向量(embedding),從而判斷序列的自然程度、進行品質篩選或變異效應預測。此技能支援 Modal 雲端執行及 Python API 兩種方式,並提供從 8M 到 3B 參數的多種 ESM2 模型,讓使用者在速度與品質之間取得平衡。在常見的 A10G GPU 上,處理 100 條序列約需 5-10 分鐘,成本僅約 $1,非常適合研究團隊或個人開發者進行高通量蛋白質設計驗證。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add BioTender-max/awesome-bio-agent-skills

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

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 進行品質篩選。

相關技能