Handle inflated log2FC while using interaction term in DESeq2

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 the differences between hyper samples while traited. 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.

Before:

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

After:

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

Read more here: Source link