Closed micw42 closed 2 years ago
Thank you for the explanation! I realized that I was using the log1p(counts)
slot in the SCTransform()
output, instead of the pearson residuals. The actual pearson residuals are very similar to the ones from sctransform::vst()
. Do you recommend using log1p(counts)
or the pearson residuals for building a regression model?
Depends on the use case. For integration, we make use of pearson residuals. But for DE, I would recommend using the corrected counts (log1p(corrected counts) as in the data
) slot.
I see, thanks again. What are the benefits of using log1p(corrected counts) instead of the pearson residuals?
For DE it results in reducing the false positives as we show in the benchmarks here. See this vignette for an application - corrected counts are comparable across experiments (after approrpriate median sequencing depth correction) while pearson residuals are not.
Hello, I'm new to using SCTransform. I'm confused about the difference between
sctransform::vst()
andSeurat::SCTransform()
. The documentation says thatSeurat::SCTransform()
callssctransform::vst()
, but they produce very different results.df
is a data frame containing raw counts with genes as rows and samples as columns. I used this code to normalize the data withsctransform::vst()
:df1 = sctransform::vst(as.matrix(df))$y %>% as.data.frame()
This is whatdf1
looks like:I used this code to normalize the data with
Seurat::SCTransform()
:df2 = df %>% as.matrix() %>% CreateSeuratObject() %>% SCTransform() %>% GetAssayData() %>% as.data.frame()
This is whatdf2
looks like:Can you please explain why
sctransform::vst()
andSeurat::SCTransform()
results are different? Also, which one do you recommend for very sparse scRNA-seq data (~90% of all raw counts are 0)? Thank you so much for your help!