I know that Voom function from limma package from Bioconductor converts raw counts into log-CPM values and then Normalization is applied on that, with normalize.method argument.

I would like to know clearly for RNA-Seq data:

  1. how this normalization is done (statistically) ?

  2. normalization across samples and normalization across genes. But don't the know how it is done statistically.


1 Answer 1


As you answered yourself @Death Metal, voom will by default not perform additional normalization.
However in virtually all cases you would want to do some kind of normalization at least to correct for differences in sequenced reads between the samples. This is why in the manual (page 71 right at the top) the calcNormFactors function from edgeR is used. This does a global TMM normalization for differences in library size.

Basically voom assumes that you did a normalization and will not do a second one because this could cause all kinds of problems.

In some cases you may prefer normalization other than TMM, for example if the number of genes detected in your samples is widely different. In this case is could be better to do quantile normalization that is available through the normalizeBetweenArrays function in voom.
However, this may over-correct your data and get rid of many interesting differences. In these cases I have found qsmooth quite helpful. Here quantile normalization is only applied across groups if the local distributions are similar enough.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.