Thanks Kevin - it's reassuring to hear you think it's warranted!
Hi
I'm hoping to use limma to analyze a metabolite dataset for differential 'expression' across replicate conditions (~200 metabolites).
I've normalized and log-transformed my data with MetaboAnalyst defaults (normalize metabolites to the sum for a sample -> log10 transform -> row-scale metabolites across samples).
I have a random-effects design and I like limma's ability to account for this... And I have seen some mass spec analyses advocating limma for similar analyses, although this helpful post seems to advocate against it, although I'm not as convinced given limma's widespread use on RNAseq (with voom).
Is there any reason I shouldn't do this? It seems to work well, but I'm a bit concerned that the default row-scaling masks mean-variance relationships (which maybe would be better accounted for with voom on the raw data)?
Thanks for any advice!
1 answer
Hey, you are referring to a post by me.
My main concern in the other thread, having worked in the metabolomics field, was that a person may use limma on, e.g., the unlogged and unscaled metabolite levels, which would be skewed data for sure.
Based on your description of your data processing steps, I think that the use of limma is valid. As I imply in my other thread, you can also just fit your own regression models to the data, as we were doing in my former lab in Boston.
So, I think that limma is AOK for your data.
Kevin
Sure thing. The word 'Metabolomics' is also a biocView on the Bioconductor limma page: https://bioconductor.org/packages/release/bioc/html/limma.html
I'm late to the party, but I wanted to add a comment on scaling the data prior to limma analysis since I'm doing something similar right now. In my case, applying auto-scaling seems to lead to "p-values becoming a monotonic function of fold change" as indicated in a previous Bioconductor discussion. I wonder if OP is implying auto-scaling when he mentioned row-scaling and whether he ran into a similar phenomenon (I think he meant rowNorm from MetaboAnalyst, but wanted to double-check).
Also, it seems like MetaboAnalystR skips scaling according to their documentation:
mSet<-Normalization(mSet, rowNorm="MedianNorm", transNorm="LogNorm", scaleNorm="NULL", ratio=FALSE, ratioNum=20)
Let me know what you guys think. Thanks!
Log in to answer this question.