I am using DESeq2 to perform a differential expression analysis, but I obtained very strange results for some genes. For some genes, I have very high log2FoldChange with very low p-value as displayed in the following table.

enter image description here

When I look the normalized expression values for these genes. I can see that these genes are expressed in only one single sample (condition1= samples from 1 to 7, condition2 = samples 8 to 13).

enter image description here

Could you please tell me how to avoid DESeq2 to detect these genes as differentially expressed ?

I am using to following commands:

dds                      <- DESeqDataSetFromHTSeqCount(sampleTable = sampleTable, directory = directory, design= ~ condition)
dds                      <- DESeq(dds)
res                      <- results(dds, contrast=c("condition",condition1,condition2))
  • $\begingroup$ What are the size factors for these samples (sizeFactors(dds))? I suspect that sample10 is just really wonky and throwing everything off, so you'll probably want to just exclude it. $\endgroup$
    – Devon Ryan
    Nov 7, 2017 at 11:17
  • $\begingroup$ I have check that but the factor is in the range of other samples... I have similar situations with other samples.. $\endgroup$
    – Bob
    Nov 7, 2017 at 12:48
  • 2
    $\begingroup$ Have you made any of the diagnostic plots related to cook's cutoff distance? If so, post some. If not, make some (see the here for an example). $\endgroup$
    – Devon Ryan
    Nov 7, 2017 at 12:52

1 Answer 1


I'm guessing here, but I suspect this is at least in part due to the fact that all your samples in condition 1 are not expressed at all.

Formally you have an infinitely large fold-change between condition1 and condition2. Most tools solve this by adding a small pseudocount to unexpressed samples, but this will still result in a very high fold change. So far for the big fold-change.

If I had to guess at the reason why this is significant I would think in terms of dispersion estimation. This Bioconductor post has some discussion with the authors of DESeq2 on how this works.

Finally: calculating differential expression on these genes in these samples will never be really informative, as they really are only expressed in one sample. The way I see it you have two options:

  1. Exclude the sample from your analysis. Straightforward, but does not solve this problem for other samples.
  2. Filter your genes before calculating differential expression, i.e. remove all genes that are not expressed in a large number of samples. This approach is standard in for instance sleuth. A good starting point would be to remove genes that are not expressed in 75% of your samples.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.