细胞注释:基于人工智能

细胞注释:基于人工智能的方法
TL;DR: 使用基础模型(如 scGPT)或大型语言模型(如 GPT-4)进行自动化的细胞类型注释。scGPT 直接从单细胞数据中学习;GPTcelltype 使用标记基因列表作为提示。两者均可与 Seurat 集成,并减少手动注释时间。
为何使用人工智能进行细胞注释?
传统的注释方法依赖于手动查找标记基因和专家知识。基于人工智能的方法提供:
- 速度: 数秒内注释数千个细胞簇
- 一致性: 在不同数据集间可重复
- 可扩展性: 处理稀有细胞类型和新组织
- 知识整合: 利用数百万个已注释细胞或生物医学文献
方法比较
| 方法 | 类型 | 输入 | 训练数据 | 最佳适用场景 |
|---|---|---|---|---|
| scGPT | 基础模型 | 基因表达 | 3300 万个细胞 | 新型细胞类型、跨物种 |
| GPTcelltype | 大型语言模型 (GPT-4) | 标记基因列表 | 生物医学文本 | 标准组织、快速注释 |
| scimilarity | 细胞嵌入 | 表达谱 | 参考图谱 | 已知细胞类型 |
方法一:scGPT(基础模型)
scGPT 是一个在 3300 万个细胞上预训练的 Transformer 模型。它直接从基因表达中学习细胞类型表征。
何时使用
- ✅ 新型或特征不明确的细胞类型
- ✅ 跨物种注释
- ✅ 与扰动分析集成
- ⚠️ 需要 GPU 和 Python 环境
安装
# 创建 conda 环境(需要 Python 3.7-3.10)
conda create -n scGPT python=3.10 r-base
conda activate scGPT
# 安装稳定版本
pip install scgpt
# 或使用 Poetry 安装开发版本
curl -sSL https://install.python-poetry.org | python3 -
poetry install # 在 scGPT 仓库目录中
注意: scGPT 在 GPU 上运行效果最佳。如果仅使用 CPU,请在推理调用中设置
device='cpu'。
基本用法
import scgpt
# 加载预训练模型
model = scgpt.load_model("scGPT_human")
# 注释 Scanpy AnnData 对象
adata = sc.read_h5ad("pbmc.h5ad")
predictions = scgpt.tasks.cell_type_annotation(model, adata)
# 将预测结果添加到元数据
adata.obs['scGPT_celltype'] = predictions
与 R/Seurat 集成
使用 reticulate 从 R 调用 scGPT:
library(reticulate)
library(Seurat)
# 转换到 scGPT 的 conda 环境
sc <- use_condaenv("scGPT")
scgpt <- import("scgpt")
anndata <- import("anndata")
# 导出 Seurat 对象
SaveH5Seurat(pbmc, "pbmc.h5seurat")
Convert("pbmc.h5seurat", dest = "h5ad")
# 运行 scGPT 注释(在 Python 中)
adata <- anndata$read_h5ad("pbmc.h5ad")
predictions <- scgpt$tasks$cell_type_annotation(model, adata)
# 将结果导入回 Seurat
pbmc$scGPT_celltype <- predictions
方法二:GPTcelltype(基于大型语言模型)
GPTcelltype 使用 OpenAI 的 GPT-4 从标记基因列表推断细胞类型。它与 Seurat 工作流无缝集成。
何时使用
- ✅ 标准组织(PBMC、脑、肺等)
- ✅ 无需复杂设置即可快速注释
- ✅ 基于 Seurat 的工作流
- ⚠️ 需要 OpenAI API 密钥(需付费)
- ⚠️ 存在 AI 幻觉风险
安装
# 从 GitHub 安装
if (!requireNamespace("devtools")) install.packages("devtools")
devtools::install_github("Winnie09/GPTCelltype")
library(GPTCelltype)
设置 API 密钥
从 platform.openai.com/api-keys 获取您的 API 密钥:
# 设置 API 密钥(或添加到 .Renviron 文件)
Sys.setenv(OPENAI_API_KEY = "sk-...")
# 验证
Sys.getenv("OPENAI_API_KEY")
与 Seurat 结合的基本用法
library(Seurat)
library(GPTCelltype)
# 加载 PBMC 数据
pbmc <- readRDS("pbmc_clustered.rds")
# 为所有簇寻找标记基因
all.markers <- FindAllMarkers(pbmc, only.pos = TRUE)
# 使用 GPT-4 进行注释
celltypes <- gptcelltype(
input = all.markers,
tissuename = "human PBMC",
model = "gpt-4",
topgenenumber = 10
)
# 将注释添加到 Seurat 对象
names(celltypes) <- levels(pbmc$seurat_clusters)
pbmc$GPT_celltype <- celltypes[pbmc$seurat_clusters]
自定义基因列表
# 手动定义标记基因集
markers <- list(
cluster0 = c("CD3D", "CD3E", "CD4"),
cluster1 = c("CD14", "LYZ", "S100A8"),
cluster2 = c("CD79A", "MS4A1", "CD19")
)
# 注释
celltypes <- gptcelltype(
input = markers,
tissuename = "PBMC",
model = "gpt-4"
)
成本考量
GPTcelltype 使用 OpenAI API:
- GPT-4: 每次注释运行约 $0.03(30 个簇)
- GPT-3.5-turbo: 更便宜但准确性较低
# 使用 GPT-3.5 以节省成本
celltypes <- gptcelltype(all.markers, model = "gpt-3.5-turbo")
方法三:scimilarity(基于参考)
scimilarity 使用来自参考图谱的预计算细胞嵌入。
快速开始
from scimilarity import CellAnnotation
# 使用 CellTypist 模型加载注释器
annotator = CellAnnotation(model="human_immune")
# 注释
predictions = annotator.predict(adata)
adata.obs['scimilarity_celltype'] = predictions
最佳适用场景: 当参考图谱与您的组织匹配时,进行快速注释。
比较与建议
选择 scGPT 如果:
- 研究稀有/新型细胞类型
- 处理非人类物种
- 需要嵌入用于下游任务
选择 GPTcelltype 如果:
- 分析标准组织(PBMC、肿瘤、脑)
- 希望无需 Python 设置即可快速注释
- 已在使用 Seurat
选择 scimilarity 如果:
- 您的组织在参考数据中有良好代表性
- 需要快速、轻量级的注释
- 在 Python(Scanpy)环境中工作
验证最佳实践
务必验证 AI 预测结果:
检查已知标记基因
# 经典标记基因的小提琴图 VlnPlot(pbmc, features = c("CD3D", "CD14", "MS4A1"), group.by = "GPT_celltype")与手动注释比较
# 混淆矩阵 table(Manual = pbmc$manual_celltype, AI = pbmc$GPT_celltype)审查低置信度预测
- scGPT:检查预测概率
- GPTcelltype:检查提示中使用的标记基因
使用多种方法
# 共识注释 pbmc$consensus <- ifelse( pbmc$scGPT_celltype == pbmc$GPT_celltype, pbmc$scGPT_celltype, "Ambiguous" )
故障排除
GPTcelltype API 错误
错误: "Rate limit exceeded"
修复: 在请求间添加延迟或升级 API 计划
scGPT 内存错误
错误: CUDA 内存不足
修复: 减小批次大小或使用 CPU 模式:
predictions = scgpt.tasks.cell_type_annotation(
model, adata, device='cpu', batch_size=32
)
预测结果不一致
原因: 标记基因不足或聚类效果不佳
修复: 增加 topgenenumber 或优化聚类分辨率
资源
- scGPT 论文: Nature Methods (2024)
- scGPT 仓库: github.com/bowang-lab/scGPT
- GPTcelltype 仓库: github.com/Winnie09/GPTCelltype
- scimilarity 文档: genentech.github.io/scimilarity
另请参阅: