scGPT 单细胞基础模型的应用
单细胞基础模型是在海量单细胞表达谱上预训练的深度学习模型,把一个细胞的基因表达当作「句子」、基因当作「词」,学习基因之间的共表达规律。scGPT 基于 Transformer,输入是基因标识和离散化后的表达值,预训练后可输出细胞嵌入和基因嵌入,再用于细胞类型注释、批次整合、扰动预测等任务。同类模型还有 Geneformer、scFoundation、UCE 等,输入编码和预训练数据各不相同。典型输入是已质控的单细胞计数矩阵(h5ad 或 Seurat 对象)。它的价值在于借用大规模图谱的先验,但并不保证在每个数据集上都优于传统流程,使用时必须与 PCA、scVI 等基线对照。
什么时候用
- 需要把新数据映射到大规模图谱的表征空间,做跨数据集比较
- 细胞类型标注样本有限,希望借助预训练模型微调提升注释效果
- 已有 Seurat 或 scVI 结果,想用另一种表征交叉验证聚类和注释
- 多个批次或平台的数据需要整合,想比较基础模型嵌入与常规方法的效果
- 研究基因嵌入相似性,探索功能相关基因或候选调控关系
不适合的情况
- 数据来自预训练语料中很少见的物种或组织,模型先验可能不适用
- 没有 GPU 又要处理几十万细胞的微调任务,计算成本过高
- 只需要常规聚类和 marker 注释时,传统流程更透明、成本更低
需要准备的数据
- 原始计数矩阵
- h5ad 或 Seurat 对象,建议提供未归一化计数,由模型自带的预处理完成归一化和分箱
- 基因标识
- 需与模型词表一致:scGPT 使用基因符号,Geneformer 使用 Ensembl ID,不匹配的基因会被丢弃
- 预训练模型权重
- 按组织和物种选择合适的预训练检查点,记录所用权重名称以便复现
- 细胞标签(微调时)
- 用于注释微调的参考数据需有可靠细胞类型标签,类别命名要统一
- 批次与样本信息
- obs 中的批次、样本、条件列,用于整合评估和避免信息泄漏
分析步骤
- 1
质控与基因对齐
先完成常规质控,去掉低质量细胞和双细胞。把基因名统一为模型词表格式,统计有多少基因能匹配上。做对的标志:高变基因中大部分能映射到词表;匹配率很低通常是物种或命名方式不对。
- 2
选择基因与预处理
按模型要求选择输入基因(如高变基因)并完成归一化和表达值分箱。注意不要在输入前额外做 scale 或批次校正,否则与预训练时的分布不一致。
- 3
提取零样本嵌入
不做训练,直接用预训练模型前向计算得到每个细胞的嵌入向量,再用 UMAP 可视化并与已知标签对照。做对的标志:主要细胞类型能分开,同类细胞不按批次分群。
- 4
建立对照基线
在同一数据上计算 HVG + PCA 和 scVI 等常规表征,用相同的聚类和评估流程比较。没有基线对照,就无法判断基础模型是否真的带来增益。
- 5
微调注释模型
当零样本效果不够时,用带标签的参考数据微调分类头或全模型。按样本或批次划分训练集与验证集,避免同一供体的细胞同时出现在两边。
- 6
预测与复核
对查询数据输出预测标签和置信度,低置信度细胞单独标记。用经典 marker 的表达逐类核对预测结果,罕见或新状态细胞不要强行归入已有类别。
- 7
量化评估
用 scIB 类指标评估:ARI、NMI、细胞类型 ASW 衡量生物信号保留,批次 ASW、iLISI 等衡量批次混合;注释任务看宏平均 F1 和各类别召回率。
关键参数与决策
输入基因数量
常见做法是取数千个高变基因作为输入。基因太少会丢失细胞身份信息,太多会增加显存消耗;应与预训练时的设置保持接近,并检查词表匹配后实际剩余的基因数。
零样本还是微调
零样本不需要标签、速度快,适合探索和整合;微调需要可靠标签和 GPU,适合有明确参考的注释任务。先跑零样本和基线,确认有差距再决定是否微调。
预训练检查点选择
有全人体通用模型,也有针对特定器官或疾病的模型。研究对象属于某一组织时可比较通用和专用检查点;鼠源数据需先做同源基因转换并预期效果下降。
训练集与验证集划分
按供体或样本划分而不是按细胞随机划分。按细胞随机划分会让同一供体的细胞同时进入两侧,验证指标虚高,换新样本时效果明显变差。
批次变量的使用
部分任务支持把批次作为条件输入。批次与生物学分组完全重合时(如每个条件一个批次),校正可能抹掉真实差异,应先在实验设计层面确认可分离性。
常见错误
- 把基因符号和 Ensembl ID 混用:大量基因无法匹配词表,模型实际只看到少数基因,嵌入质量下降但不会报错。
- 输入已经 log 和 scale 过的矩阵:与预训练分布不一致,表达分箱失真,零样本嵌入可能比 PCA 还差。
- 只看 UMAP 好不好看就下结论:UMAP 受参数影响很大,应以 ARI、ASW、LISI 等量化指标和基线对比为准。
- 微调时按细胞随机划分数据:同一供体的细胞同时出现在训练集和验证集,准确率虚高,外部数据表现明显下降。
- 把模型预测标签直接当最终注释:参考中不存在的细胞类型会被归到最相似的已知类别,必须用 marker 复核。
- 忽略计算资源就直接全量微调:全模型微调显存需求高,细胞数多时容易中途失败,应先抽样把流程跑通再扩大规模。
结果怎么看
细胞嵌入 UMAP
按细胞类型和批次分别着色。理想情况是同类细胞聚在一起、不同批次充分混合;若按批次分成几块,说明批次信号未被消除;若不同细胞类型混成一团,说明嵌入丢失了生物学信息。
整合评估指标表
列出基础模型嵌入与 PCA、scVI 等基线的 ARI、NMI、ASW、LISI 等指标。生物保留和批次去除通常需要权衡,只有在两类指标上都不差于基线时,才能说基础模型更适合这份数据。
注释混淆矩阵
行为真实标签、列为预测标签。对角线外的集中区域说明哪些细胞类型容易混淆,常见于相近亚群(如 CD4 与 CD8 T 细胞亚群)。某一类召回率很低时,要检查训练集中该类细胞数量是否过少。
预测置信度分布
每个细胞预测类别的概率分布。大部分细胞应有较高置信度;低置信度细胞若集中在某一簇,可能是参考中缺失的细胞类型或低质量细胞,需单独分析而不是硬分类。
和相近方法怎么选
scGPT 与 Geneformer
两者都基于 Transformer,但输入编码不同:scGPT 使用基因标识加分箱表达值,Geneformer 把基因按相对表达排序后作为输入,并使用 Ensembl ID。哪个更好依任务和数据而定,建议在自己数据上并行比较。
基础模型与 scVI、Harmony 整合
scVI 和 Harmony 针对当前数据集训练或校正,透明、成熟、资源需求低;基础模型借用预训练先验,可在跨数据集映射时提供额外信息。已有独立评测发现零样本嵌入并不总优于这些方法,应以基线对照结果为准。
基础模型注释与 SingleR、CellTypist
SingleR 和 CellTypist 依赖参考表达谱或线性分类器,速度快、易解释;基础模型微调可能在相近亚群上更细致,但需要 GPU 和更严格的验证。常规注释可先用前者,难分亚群再考虑微调。
常见问题
scGPT 必须用 GPU 吗?
提取零样本嵌入在小数据上可以用 CPU 跑通,但速度慢;微调基本需要 GPU,显存大小决定能用的批大小和输入基因数。建议先抽取部分细胞验证流程,再在 GPU 环境中处理完整数据。
scGPT 能用于小鼠单细胞数据吗?
公开的主要预训练权重以人类数据为主。小鼠数据需先把基因转换为人类同源基因,一对多或无同源的基因会丢失,效果通常低于人类数据。使用前应与常规流程比较,确认嵌入仍能区分主要细胞类型。
单细胞大模型的效果一定比传统方法好吗?
不一定。部分独立评测显示,零样本细胞嵌入在聚类和批次整合上并不总是优于 HVG + PCA 或 scVI。基础模型的优势更多体现在跨数据集映射和标签稀缺时的微调,结论应以你自己数据上的基线对照为准。
细胞嵌入是什么,有什么用?
细胞嵌入是模型为每个细胞输出的一个固定长度向量,表达相似的细胞向量也相近。它可以替代 PCA 结果用于构建邻居图、聚类和 UMAP,也可作为分类器的输入特征做注释或预测。
微调需要多少标注细胞?
没有统一的硬门槛,关键是每个类别都有足够且来自多个供体的细胞。极少数细胞的类别很难学好,可合并到上一级类别或单独处理。验证时一定按供体划分,才能反映在新样本上的真实表现。
在 Codar 里怎么做
在 Codar 中说明数据和目标后,会先确认物种、基因命名和任务类型,再读取本地或公开的单细胞数据,完成基因与 scGPT 词表的对齐,提取细胞嵌入并做细胞类型注释,需要时用带标签的参考数据微调。交付嵌入 UMAP、注释结果与置信度、混淆矩阵或评估指标表,以及可复现的分析脚本。
我有 6 个样本的人 PBMC 单细胞 h5ad,想用 scGPT 提取细胞嵌入并做细胞类型注释,低置信度的细胞单独列出来