a b/tests/limma/test_squeezeVar.py
1
import unittest
2
3
import numpy as np
4
5
from inmoose.limma import squeezeVar
6
7
8
class Test(unittest.TestCase):
9
    def test_squeezeVar(self):
10
        with self.assertRaisesRegex(ValueError, expected_regex="var is empty"):
11
            squeezeVar(np.array([]), df=3)
12
13
        res = squeezeVar(np.array([1]), df=3)
14
        self.assertEqual(res["df_prior"], 0)
15
        self.assertTrue(np.array_equal(res["var_prior"], [1]))
16
        self.assertTrue(np.array_equal(res["var_post"], [1]))
17
18
        res = squeezeVar(np.array([0.5, 1.3, 7.8]), df=3)
19
        self.assertAlmostEqual(res["df_prior"], 2.830777, places=6)
20
        self.assertAlmostEqual(res["var_prior"], 1.676927, places=6)
21
        self.assertTrue(
22
            np.allclose(res["var_post"], [1.071385, 1.482994, 4.827317], atol=1e-6)
23
        )
24
25
        res = squeezeVar(
26
            np.array([0.5, 0.5, 1.3, 1.3, 7.8, 7.8]),
27
            df=20,
28
            covariate=[1, 2, 3, 4, 5, 6],
29
        )
30
        self.assertAlmostEqual(res["df_prior"], 15.44626, places=5)
31
        self.assertTrue(
32
            np.allclose(
33
                res["var_prior"],
34
                [0.4322342, 0.6426360, 1.0331707, 1.9359150, 4.2277336, 9.9836662],
35
                atol=1e-6,
36
            )
37
        )
38
        self.assertTrue(
39
            np.allclose(
40
                res["var_post"],
41
                [0.4704700, 0.5621558, 1.1837250, 1.5771098, 6.2433295, 8.7515664],
42
                atol=1e-6,
43
            )
44
        )