This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Should I normalize and scale my data again after doing subset(seu, idents=" ") in Seurat?

I am quite beginner using single cell data and I am trying to run the first steps (QC filtering, normalization, scale etc). However, I am wondering if I have to re-normalize and scale the data again if I subset my seu object with a particular cell type.

Considering that my seu object has ~10 different cell types, and I want to get an object with one:

seu_subset <- subset(seu, idents=c("cell_type1"))

Should I normalize and scale my data again? --> Seurat::NormalizeData(), Seurat::FindVariableFeatures() and Seurat::ScaleData(seu) *Note that the original seu is already filtered, normalized and scaled

I have checked on google and I found this issue, but I got confused with the last answers/questions about what I should do (and it is more correct).

Any feedback will be really appreciated.

Thanks in advance

normalization seurat scrna-seq

1 answer

You would be better off getting list of barcodes for all the cells in your cell_type1, obtain raw data for those barcodes from unnormalized data and proceed to QC filtering, normalization, scaling etc.. as you did for your complete dataset.

Thanks very much for your reply!

I don't know if I properly understood your answer. I can understand that after subsetting I should scale again. But why QC filtering again?

At least the way how I am working is that my complete seu is QC filtered for all the cells and/or a particular cell.

That is, if I stablish a % mito cutoff for all cells and then a particular % mito cutoff for a particular subset of cells, I end generating a merged seu objects with those 2 filterings (the original % cutoff for all cells without that particular subset of cells + that particular subset of cells with the new cutoff)

seu_group1 <- subset(seu, idents="Group1") 
seu_group1_filt <- subset(seu_group1,  subset = percent.mito < 10)


#keep all cells except group1Cells 
CellIdents <- levels(Idents(seu))[!grepl("Group1", levels(Idents(seu)))] 
seu_filt <- subset(seu, subset = percent.mito < 40, idents = CellIdents)


#merge and generate my final filtered dataset
seu_ALL_filtered <- merge(seu_group1_filt, seu_filt)

Therefore... why should I have my final complete/final seu not QC filtered? Or is it because you do not consider a final seu object as "final" (QC filtered)? *I put an example with % mitochondrias, but it can be droplets or other sources of noise.

Thanks again for your help :)

Log in to answer this question.