Should data normalization be performed first and then batch correction?

My metabolomics data were obtained in two batches. To correct this, I performed:

  1. data filtering: mSet<-FilterVariable(mSet, “iqr”, “F”, 30),
  2. normalization: mSet<-Normalization(mSet, “GroupPQN”, “LogNorm”, “MeanCenter”, “QC”, ratio=FALSE, ratioNum=20),
  3. and then batch correction with “Combat,” “EigenMS,” “ANCOVA,” and “QC_RLSC” methods.
    Except for QC_RLSC, the other methods generate many values equal to zero. Is it correct to perform normalization before batch correction for all these methods? Does any of them perform normalization when running the function?
    Thank you very much.

In general, batch correction methods have their own normalization, scaling, etc to detect and correct batch effect. You can consider batch correction is an enhanced version of normalization. If you perform filtering & normalization first, you could dilute the batch signals, which could interfere with batch correction.

1 Like

Does it also apply to RNA-seq data. I mean, can you do batch correction and then normalization with DESeq2?