比较SCTransform的内存方案,不能只看任务是否跑完。保留的residuals范围、模型版本和回归变量都会影响分析内容;改变这些设置可能改变下游输入。先固定科学目标和输入,再对可接受的配置做试跑,并把结果验证与资源指标放在一起比较。

列出不应变化的条件

每轮固定原始counts、细胞集合、assay、Seurat/sctransform版本、回归变量、随机种子和后续PCA/聚类步骤。明确下游是否需要全基因residuals。Seurat文档说明 return.only.var.genes=TRUE 时scale.data只保留可变基因;conserve.memory=TRUE 不构建完整residual矩阵、会更慢并强制只返回可变基因。若研究目标需要全基因数据,这两个配置不能只因为更省内存就直接替换。

比较项运行时记录结果验收
运行条件版本、参数、输入细胞数方法与目标一致
资源作业峰值、墙钟、worker、临时盘指标注明观测口径
SCT输出assay/layer、residual维度必要特征未被意外丢弃
下游步骤PCA等参数和完成状态输入来源与预期相符

用一份代表性数据做对照

在副本中先测一份中等或偏大的样本,比较默认流程与研究上允许的内存选项。每次只改变一个设置,保存完整控制台日志和系统资源记录。确认两个方案的特征集合、SCT assay内容和下游输入是否符合预设;若改变了残差范围或模型设置,应在分析方法中如实说明,不能只因聚类图相似就宣称统计输入完全等价。

saveRDS(obj, "input-original.rds")
obj_test <- readRDS("input-original.rds")
obj_test <- SCTransform(
  obj_test,
  assay = "RNA",
  vst.flavor = "v2",
  return.only.var.genes = TRUE,
  conserve.memory = TRUE,
  verbose = TRUE
)
dim(obj_test[["SCT"]][["scale.data"]])

示例参数需按安装版本核对。上述设置适用于下游明确只需要可变特征残差的情形;如要保留全基因残差,不要照搬。脚本另需记录软件版本、输入摘要和回归变量,并在独立目录执行。

解释峰值并决定下一步

R对象大小、GNU Time最大RSS和调度器/容器统计不是同一口径。若函数中止但作业统计未触顶,检查稠密矩阵和临时副本;如果单worker成功而多worker失败,评估worker是否复制了counts或拟合对象。先用相同输入复测一次关键配置,检查报告和后续PCA,再决定调整并发、算法参数或容量。小样本峰值只代表该次试跑,不保证正式样本或多人并发相同。

最终建议写清测试覆盖范围、结果条件和剩余未知项。输入规模、Seurat版本、样本并发或SCT选项变化后,重新测关键步骤。需要额外内存时,以实际任务峰值、所需并发和保留周期为依据比较候选资源,而不是套用固定“每十万细胞多少内存”的经验值。

检查是否真的需要全基因结果

把下游软件函数和输入层写进分析方案:PCA使用的features、差异检验的assay/layer、绘图使用的数据层可能并不相同。确认变量特征残差是否满足这些输入要求;若不确定,先用小子集跑一次下游步骤,检查缺失特征、维度和警告信息。这个兼容性试验只能排除接口问题,正式分析仍需保留预设科学流程,不能为了减少内存而悄悄改变特征集合。