Hi there, I'm currently analyzing 4 single cell datasets that are the same population of cells treated 4 different ways. What I've been doing is creating individual Seurat objects to do some basic data exploration within sample, then merging the datasets and using the JoinLayers() function. Afterwhich, I'll do the following:
SCTransform
CellCycleScoring
SCTransform w/ regression
RunPCA
FindNeighbors
FindClusters
RunUMAP
Question 1: is this a valid strategy? I'm not using IntegrateLayers or finding anchors since the only batch with these samples is the treatment condition. However, I'm noticing that the conditions are still clustering discretely, although with an obvious pseudotime corresponding to expected phenotype differences with treatment.
Using the old NormalizeData approach produces a nearly perfectly symmetrical UMAP where each quadrant is a different treatment that I didn't think was valid.
Question 2: I'm running into issues with memory running SCTransform on larger objects. I have an instance with 48gb ram, 350 gb memory and my instance crashes during the second SCTransform call on an object with ~250k cells and ~32k genes. I saw the conserve.memory flag in the SCTransform function, but I'm not sure how that might affect my downstream goals of using FindMarkers with various subpopulations. I'm looking into BPCells but it doesn't look like it plays nicely with SCTransform, and based on the above,
0 answers
No answers yet.
Log in to answer this question.
Let me say that in general, in almost all cases so far over the years, simple log transformation and integration via harmony was sufficient. These more complicated, slow and memory-hungry methods for me have always added more trouble than good. It looks here like a simple confounding by treatment. Try harmony, it almost certainly will give a nice clustering by celltype.