Switch to unified view

a b/tests/limma/test_contrasts.py
1
import unittest
2
3
import numpy as np
4
from patsy import dmatrix
5
6
from inmoose.limma import makeContrasts
7
8
9
class Test(unittest.TestCase):
10
    def test_makeContrasts(self):
11
        self.assertTrue(
12
            np.array_equal(
13
                makeContrasts(contrasts=["B-A", "C-B", "C-A"], levels=["A", "B", "C"]),
14
                [[-1, 0, -1], [1, -1, 0], [0, 1, 1]],
15
            )
16
        )
17
        self.assertTrue(
18
            np.array_equal(
19
                makeContrasts(contrasts="A-(B+C)/2", levels=["A", "B", "C"]),
20
                [[1.0], [-0.5], [-0.5]],
21
            )
22
        )
23
24
        design = dmatrix("0+A+B", {"A": ["a1", "a2", "a1"], "B": ["b1", "b2", "b3"]})
25
        self.assertTrue(
26
            np.array_equal(
27
                makeContrasts(contrasts="A[a1]-A[a2]", levels=design),
28
                [[1.0], [-1.0], [0.0], [0.0]],
29
            )
30
        )
31
32
        # test support for underscores in contrasts
33
        self.assertTrue(
34
            np.array_equal(
35
                makeContrasts(
36
                    contrasts=["T_T[B_1]-T[A_0]", "T[C_2]-T_T[B_1]", "T[C_2]-T[A_0]"],
37
                    levels=["T[A_0]", "T_T[B_1]", "T[C_2]"],
38
                ),
39
                [[-1, 0, -1], [0, 1, 1], [1, -1, 0]],
40
            )
41
        )