This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Limma for metabolomics data

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!

limma metabolomics de r rna-seq

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

Thanks Kevin - it's reassuring to hear you think it's warranted!

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.