Switch to side-by-side view

--- a
+++ b/tests/deseq2/test_zero_zero.py
@@ -0,0 +1,39 @@
+import unittest
+
+import numpy as np
+
+from inmoose.deseq2 import DESeq, makeExampleDESeqDataSet
+from inmoose.utils import Factor
+
+
+class zero_zero(unittest.TestCase):
+    def test_zero_zero(self):
+        """test that contrast of two groups with all zeros - LFC zeroed out"""
+
+        # test comparison of two groups with all zeros
+        dds = makeExampleDESeqDataSet(
+            m=8, n=100, sizeFactors=[1, 1, 0.5, 0.5, 1, 1, 2, 2]
+        )
+        dds.obs["condition"] = Factor(np.repeat(["A", "B", "C", "D"], 2))
+        dds.design = "~condition"
+        dds.counts()[:, 0] = [100, 110, 0, 0, 100, 110, 0, 0]
+        dds.counts()[:, 1] = np.repeat(0, 8)
+        dds = DESeq(dds)
+
+        res = dds.results(contrast=["condition", "D", "B"])
+        self.assertEqual(res.log2FoldChange.iloc[0], 0)
+        res = dds.results(contrast=[0, -1, 0, 1])
+        self.assertEqual(res.log2FoldChange.iloc[0], 0)
+        res = dds.results(contrast=["condition_D_vs_A", "condition_B_vs_A"])
+        self.assertEqual(res.log2FoldChange.iloc[0], 0)
+
+        res = dds.results(name="condition_D_vs_A")
+        self.assertNotEqual(res.log2FoldChange.iloc[0], 0)
+        res = dds.results([0, 0, 0, 1])
+        self.assertNotEqual(res.log2FoldChange.iloc[0], 0)
+
+        # if all samples have 0, should be NA
+        res = dds.results(contrast=["condition", "D", "B"])
+        self.assertTrue(np.isnan(res.log2FoldChange.iloc[1]))
+        res = dds.results(contrast=[0, -1, 0, 1])
+        self.assertTrue(np.isnan(res.log2FoldChange.iloc[1]))