Handle inflated log2FC while using interaction term in DESeq2
Entering edit mode
15 months ago
Shred ▴ 960

Hi guys, I'm working with a 8 samples experiment (lower than 3x replicates, I know..) with a design like

> colData(dds)
DataFrame with 8 rows and 2 columns
          condition traitment
           <factor>  <factor>
4200-JS-1     norm       ctrl
4200-JS-2     norm       ctrl
4200-JS-3     norm       trt 
4200-JS-4     norm       trt 
4200-JS-5     hyper      ctrl
4200-JS-6     hyper      ctrl
4200-JS-7     hyper      trt 
4200-JS-8     hyper      trt

I want to study the condition effect, the traitment effect either ̶t̶h̶e̶ ̶d̶i̶f̶f̶e̶r̶e̶n̶c̶e̶s̶ ̶b̶e̶t̶w̶e̶e̶n̶ ̶̶h̶y̶p̶e̶r̶̶ ̶s̶a̶m̶p̶l̶e̶s̶ ̶w̶h̶i̶l̶e̶ ̶t̶r̶a̶i̶t̶e̶d̶ if the treatment has a larger effect based on condition. To do so I'm using this design with DESeq2 design= ~ condition + traitment + condition:traitment. I noticed huge differences with/without using lfcShrink while comparing either condition and traitment : these could be seen in the example below, where the top 3 genes (ordered by log2FC) are different and got much lower log2FC values.


log2 fold change (MLE): condition hyper vs norm 
Wald test p-value: condition hyper vs norm 
DataFrame with 17767 rows and 6 columns
                 baseMean log2FoldChange     lfcSE      stat      pvalue
                <numeric>      <numeric> <numeric> <numeric>   <numeric>
geneA            240.9457        21.6993   3.30544   6.56473 5.21265e-11
geneB            50.4875         21.6070   4.78560   4.51501 6.33143e-06
geneC            304.5952        21.4911   3.23791   6.63734 3.19403e-11


log2 fold change (MAP): condition hyper vs norm 
Wald test p-value: condition hyper vs norm 
DataFrame with 17767 rows and 5 columns
                 baseMean log2FoldChange     lfcSE      pvalue        padj
                <numeric>      <numeric> <numeric>   <numeric>   <numeric>
geneD            631.54567       11.96124 2.614552 6.15494e-16 1.16952e-13
geneE            21.29594        6.36406  2.750908 1.04394e-04 1.83497e-03
geneF            8.50908         4.94140  2.807262 8.57969e-04          NA

Now, in order to study the last wanted scenario, I'm using:

res=results(dds, list(c("condition_hyper_vs_norm", "conditionhyper.traitmenttrt")), alpha = 0.05)

Here I haven't got the possibility to use lfcShrink because of interaction term. As could be seen by the attached Volcano plot, some genes have extreme high log2FC differences as before. How to handle them? Is there any different lfcShrink which could be used with interaction terms? Volcano plot

RNAseq DESeq2 R • 715 views
Entering edit mode

You should check that the contrast you are studying tells you what you think it does. Here the interaction term is telling you whether the treatment has a larger effect in hyper samples than it does in normal samples, i'm not sure thats what you want from your description: "the differences between hyper samples while traited"

Entering edit mode

In terms of what to do about your shrinkinages if this really is the design you want, you might be better asking on support.bioconductor.org, where Mike Love hangs out more frequently.

Entering edit mode

Yeah you're right, I've got a lapsus. If in some days I won't get any answer, I'd post on Bioconductor as well: cross posting might be confusing sometimes.


Login before adding your answer.

Traffic: 1200 users visited in the last hour
Help About
Access RSS

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6