Communitygithub.com

BioTender-max/awesome-bio-agent-skills

一个精心整理的AI Agent技能集合,专为生物医学研究设计,涵盖基因组学、蛋白质组学、单细胞分析、临床AI和蛋白质设计。

awesome-bio-agent-skills 是什么?

BioTender-max/awesome-bio-agent-skills 是一个面向生物医学研究领域的AI Agent技能合集,旨在为研究人员和开发者提供即插即用的工具模块。该仓库包含多个专门化的技能,如ESM2蛋白质语言模型的使用,涉及基因组学、蛋白质组学、单细胞分析、临床AI和蛋白质设计等方向。针对ESM2技能,用户可在Modal平台或本地Python环境中运行,支持从快速筛选(如8M参数模型)到高精度分析(如3B参数模型)。技能提供了详细的参数配置、输出格式说明、性能基准和决策树,帮助用户选择合适的模型规模和运行方式,并包含PLL(伪对数似然)评分解释、故障排除和验证步骤。该合集适用于Cline、Cursor、Claude Code等AI Agent平台,通过标准化工作流降低生物信息学工具的使用门槛。

兼容平台~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 显存8GB24GB (A10G)
内存16GB32GB

如何运行

第一次使用? 请参阅 安装指南 了解如何设置 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
│
└─ 使用场景?
   ├─ 质量控制过滤 → 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 进行过滤。

相关技能