SCTransform(SCT)是 Seurat 团队专门为 scRNA-seq 开发的一种 基于负二项分布的正则化方法 + 变异稳定化处理(variance stabilizing transform)。
⭐ 推荐在以下情况下使用:
① 当数据批次多 / 样本间差异较大的时候(强烈推荐)
SCTransform 对技术噪音(测序深度、线粒体比例、细胞大小等)建模,因此对: • 多个样本 • 多个批次 • 多平台混合 • 多组织来源
这些状况非常稳健,比 NormalizeData + ScaleData 更能减少 batch effect。
⸻
② 在需要高精度整合(Seurat Integration)时
Seurat v4/v5 推荐在整合前对每个样本单独做 SCTransform:
obj.list <- SplitObject(obj, split.by="sample")
obj.list <- lapply(obj.list, function(x) SCTransform(x))
features <- SelectIntegrationFeatures(obj.list)
obj.list <- PrepSCTIntegration(obj.list, anchor.features = features)
anchors <- FindIntegrationAnchors(object.list = obj.list, normalization.method = "SCT")
combined <- IntegrateData(anchorset = anchors, normalization.method = "SCT")
👉 如果你的目标是整合不同组、批次,这基本是最佳选择。
⸻
③ 你需要非常清晰的 cluster 分离(更强的生物学信号)
SCT 会使 cluster 更清晰,尤其对: • 免疫细胞 • 高噪音细胞类型 • 整个组织的 heterogeneity(例如肝脏、小肠、肾脏等)
⸻
④ 原始数据噪音大 / 测序深度差异大
例如 10x、Drop-seq、不同 chemistries 混合等。
SCT 的正则化模型可以纠正: • library size(测序深度) • technical noise • overdispersion
效果比 NormalizeData 稳定得多。
⸻
❌ 什么时候不要使用 SCTransform?
① 你已用 Normalize → HVG → ScaleData 分析了一半
⚠️ 中途换到 SCTransform = 前处理完全不兼容! • HVG 不同 • PCA 不同 • 距离矩阵不同 • cluster 会改变 • 不能无缝合并
👉 你之前的分析必须保持一致,不能混用。
⸻
② 你要和旧算法(如鉴定 marker、分群)的结果保持一致
Normalize + Scale 是最传统的方式,特别是在: • 你拿到别人已处理的数据 • 你要复现论文结果 • downstream 工具依赖“对数归一化”矩阵
这种情况不能用 SCT。
⸻
③ 数据量非常小(< 2000 细胞)
SCT 需要一定样本量做正则化,否则不稳定。
⸻
④ 有多模态数据整合(例如 RNA + protein 的 CITE-seq)且你想维持 protein assay 原结构
这时可以使用 SCT,但必须对 RNA 用 SCT,对 protein 维持原状态。 如果你完全不熟悉,会容易踩坑。
⸻
🧬 SCTransform 与 Normalize + Scale 的根本区别
下面是从数学原理到实践效果的最关键区别:
⸻
- 归一化方式与数学模型不同
NormalizeData(传统) • 线性归一化(library size) • 对数转换 log1p • 假设每个基因的噪音一样(错误假设)
SCTransform • 用负二项分布拟合基因的噪音 • 计算 Pearson residuals • 数学上更合理、噪音建模更真实 • 变异稳定化 → cluster 分离更清晰
⸻
- HVG 选择方式不同
Normalize:
选“变异度高”的基因(受测序深度影响)
SCT:
直接根据 Pearson residuals 自动确定高变基因,不受深度偏倚
👉 HVG 通常更合理 → 后续 PCA/UMAP 更稳健
⸻
- 是否自动回归协变量
Normalize + ScaleData:
你必须手动写:
ScaleData(obj, vars.to.regress = c("percent.mt", "nCount_RNA"))
SCT:
自动将测序深度纳入模型 不需要再回归 nCount_RNA 只需要额外回归 mt(若必要):
SCTransform(obj, vars.to.regress = "percent.mt")
⸻
- 技术效应对 cluster 的影响
Normalize:
技术噪音更容易造成“假 cluster”。
SCT:
更真实地反映生物差异,减少假 cluster。
⸻
- 整合(Integration)效果不同
Normalize:
整合效果差,尤其样本多时。
SCT(强烈推荐):
Seurat v4/v5 官方推荐的整合方式。
⸻
🔍 SCTransform 的优缺点总结表
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| NormalizeData + ScaleData | 经典、稳定、简单;与旧分析兼容 | 易受测序深度影响;批次整合弱 | 小项目、老数据复现、已做部分分析 |
| SCTransform | 数学模型严谨;噪音校正强;cluster 清晰;整合效果最好 | 不兼容传统流程;不能中途切换;较耗时 | 多样本、多批次、高噪音数据;从头分析 |