a b/tests/deseq2/test_zero_zero.py
1
import unittest
2
3
import numpy as np
4
5
from inmoose.deseq2 import DESeq, makeExampleDESeqDataSet
6
from inmoose.utils import Factor
7
8
9
class zero_zero(unittest.TestCase):
10
    def test_zero_zero(self):
11
        """test that contrast of two groups with all zeros - LFC zeroed out"""
12
13
        # test comparison of two groups with all zeros
14
        dds = makeExampleDESeqDataSet(
15
            m=8, n=100, sizeFactors=[1, 1, 0.5, 0.5, 1, 1, 2, 2]
16
        )
17
        dds.obs["condition"] = Factor(np.repeat(["A", "B", "C", "D"], 2))
18
        dds.design = "~condition"
19
        dds.counts()[:, 0] = [100, 110, 0, 0, 100, 110, 0, 0]
20
        dds.counts()[:, 1] = np.repeat(0, 8)
21
        dds = DESeq(dds)
22
23
        res = dds.results(contrast=["condition", "D", "B"])
24
        self.assertEqual(res.log2FoldChange.iloc[0], 0)
25
        res = dds.results(contrast=[0, -1, 0, 1])
26
        self.assertEqual(res.log2FoldChange.iloc[0], 0)
27
        res = dds.results(contrast=["condition_D_vs_A", "condition_B_vs_A"])
28
        self.assertEqual(res.log2FoldChange.iloc[0], 0)
29
30
        res = dds.results(name="condition_D_vs_A")
31
        self.assertNotEqual(res.log2FoldChange.iloc[0], 0)
32
        res = dds.results([0, 0, 0, 1])
33
        self.assertNotEqual(res.log2FoldChange.iloc[0], 0)
34
35
        # if all samples have 0, should be NA
36
        res = dds.results(contrast=["condition", "D", "B"])
37
        self.assertTrue(np.isnan(res.log2FoldChange.iloc[1]))
38
        res = dds.results(contrast=[0, -1, 0, 1])
39
        self.assertTrue(np.isnan(res.log2FoldChange.iloc[1]))