This is a test version of Biostars. For the public version, visit https://www.biostars.org.
RNA-Seq normalization using limma or DESeq2

Hello,

I just started analysis of RNA Seq Data (bulk - whole genome). I was trying to normalize data using limma package (voom). Is it correct to create a DGE list, then use calcNormFactors (method TMM) and then voom (normalize = none)? I've went through different papers, but I'm not really sure which is better to use. After doing some plots on normalized data, I would say, this one looks the best. However I still have problems with making a heatmap for downgenes (it was only working for upgenes). I was also working on DESeq2, and then using vst function on dds object. Is it okay if I use varianceStabilizingTransformation on a dds object to do heatmaps for upregulated genes and gene set enrichment, but I would use getVarianceStabilizedData to do WGCNA analysis? What is the difference between them? Which one should I decide on? Thank you for your help

rna-seq normalization dseq2 limma

1 answer

For limma-voom, follow the chapter 15 from the user guide. It recommends voom( ..., normalize="quantile" ) if the data is noisy, otherwise, `voom( ..., normalize="none" ) should be fine. Search the BioConductor forum as well.

My understanding is varianceStabilizingTransformation(), and getVarianceStabilizedData() return the same numerical values, but different R objects: the former returns an ExpressionSet object (hence, it has lots of information in addition to the variance stabilied counts), the later, a matrix with the transformed values. Both are fine for PCAs, heatmaps, etc - though I myself prefer rlog().

However I still have problems with making a heatmap for downgenes (it was only working for upgenes).

In general, heatmaps are done with all differentially expressed genes, up- and down-regulated. Why are you performing them separately?

Thank you. My data seems to be pretty noisy. Also, is it ok to use only DESeq2 without any other steps like vst?

When you use DESeq2, the differential expression analysis will be performed on the normalised, un-transformed counts. One then uses the variance-stabilising or regularised log transformation for downstream analyses, like PCA, MDS, hierarchical clustering / heatmap generation, et cetera.

I updated my answer to cover some of your other questions.

Also, is it ok to use only DESeq2 without any other steps like vst?

Kevin Blighe already answered this below.

Thank you very much! I'm just thinking, because of the time it takes to run vst in WGCNA, if I could use both of them on different kinds of analysis (varianceStabilizingTransformation for PCA, up/downgenes heatmpas, fgsea and getVarianceStabilizedData for WGCNA).
Why do you prefer rlog? What is the difference in your case?

I'm doing it together, but it's displaying me things only for upgenes.

Also, I'm still hesitating, between voom and DESeq2 to normalize my data. I did different kind of analysis, my data are not the best and it's hard to get some good heatmaps. I was planning to do heatmaps for 20 up and 20 downregulated genes and then run gene set enrichment to find specific pathways in which my genes are involved (showing it on dotplots). Also I thought about displaying some fgsea results (using MGsigDB pathways) on heatmaps and doing WGCNA (dotplots on particular modules). I don't know what else I could do to pull out some information from it. I thought about grouping my genes according to their function but I have no idea how could I do that in R (I'm looking through the whole genome, not some specific genes).

Log in to answer this question.