MarioniLab / miloDE

Framework for sensitive DE testing (using neighbourhoods)
Other
57 stars 2 forks source link

How to specify contrasts? #38

Open liz-is opened 6 months ago

liz-is commented 6 months ago

Hi,

thanks for the cool package, it's been useful and easy to use so far!

I have a control condition and three "treatment" conditions, and I'd like to compare each treatment to control. My condition metadata column is set up as a factor with four levels. I can't figure out how to specify the appropriate contrast as an argument to de_test_neighbourhoods. The documentation for de_test_neighbourhoods says this should be a string, and to look at the edgeR docs for the syntax. In the edgeR docs I see two ways of specifying contrasts: using makeContrasts, or as a numeric vector.

I tried contrasts = "Treat1-Control" by extrapolating from the makeContrasts syntax, but this gave me the following error:

Quitting from lines 267-280 (miloDE.Rmd)                                                                                 
Error in glmFit.default(y, design = design, dispersion = dispersion, offset = offset,  :                                 
  Design matrix not of full rank.  The following coefficients not estimable:                                             
 ConditionTreat1 ConditionTreat2 ConditionTreat3

Any suggestions about what I should be putting instead? I really couldn't find any section in the edgeR docs where they specify contrast as a string. A section reference or an example would be really helpful.

amissarova commented 5 months ago

Hi @liz-is, apologies for a long silence.

Its hard to answer this wo seeing design model matrix (can you share it perhaps?) - but naively i would assume that you have some redundancy in your matrix. I wonder if the covariates you include n your matrix create such design? So yeah, if you could share with me your design and specifically model matrix you get from this design, I could maybe help a bit more?

So maybe changing the formula to avoid the redundancy would be the way to go.