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 的根本区别

下面是从数学原理到实践效果的最关键区别:

  1. 归一化方式与数学模型不同

NormalizeData(传统) • 线性归一化(library size) • 对数转换 log1p • 假设每个基因的噪音一样(错误假设)

SCTransform • 用负二项分布拟合基因的噪音 • 计算 Pearson residuals • 数学上更合理、噪音建模更真实 • 变异稳定化 → cluster 分离更清晰

  1. HVG 选择方式不同

Normalize:

选“变异度高”的基因(受测序深度影响)

SCT:

直接根据 Pearson residuals 自动确定高变基因,不受深度偏倚

👉 HVG 通常更合理 → 后续 PCA/UMAP 更稳健

  1. 是否自动回归协变量

Normalize + ScaleData:

你必须手动写:

ScaleData(obj, vars.to.regress = c("percent.mt", "nCount_RNA"))

SCT:

自动将测序深度纳入模型 不需要再回归 nCount_RNA 只需要额外回归 mt(若必要):

SCTransform(obj, vars.to.regress = "percent.mt")

  1. 技术效应对 cluster 的影响

Normalize:

技术噪音更容易造成“假 cluster”。

SCT:

更真实地反映生物差异,减少假 cluster。

  1. 整合(Integration)效果不同

Normalize:

整合效果差,尤其样本多时。

SCT(强烈推荐):

Seurat v4/v5 官方推荐的整合方式。

🔍 SCTransform 的优缺点总结表

方法 优点 缺点 适用场景
NormalizeData + ScaleData 经典、稳定、简单;与旧分析兼容 易受测序深度影响;批次整合弱 小项目、老数据复现、已做部分分析
SCTransform 数学模型严谨;噪音校正强;cluster 清晰;整合效果最好 不兼容传统流程;不能中途切换;较耗时 多样本、多批次、高噪音数据;从头分析