比较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、绘图使用的数据层可能并不相同。确认变量特征残差是否满足这些输入要求;若不确定,先用小子集跑一次下游步骤,检查缺失特征、维度和警告信息。这个兼容性试验只能排除接口问题,正式分析仍需保留预设科学流程,不能为了减少内存而悄悄改变特征集合。