--- a +++ b/tests/edgepy/test_predFC.py @@ -0,0 +1,47 @@ +import unittest + +import numpy as np + +from inmoose.edgepy import DGEList +from inmoose.utils import rnbinom + + +class test_predFC(unittest.TestCase): + def setUp(self): + y = np.array(rnbinom(80, size=5, mu=20, seed=42)).reshape((20, 4)) + y = np.vstack(([0, 0, 0, 0], [0, 0, 2, 2], y)) + self.group = np.array([1, 1, 2, 2]) + self.d = DGEList(counts=y, group=self.group, lib_size=np.arange(1001, 1005)) + + def test_predFC(self): + design = np.array([[1, 0], [1, 0], [0, 1], [0, 2]]) + with self.assertLogs("inmoose", level="WARNING") as logChecker: + res = self.d.predFC(design=design) + self.assertRegex(logChecker.output[0], "dispersion set to zero") + ref = np.array( + [ + [-12.969746, -11.384905], + [-12.969746, -7.315955], + [-5.500709, -4.270495], + [-6.200135, -4.612279], + [-5.346262, -5.081762], + [-6.492589, -3.739418], + [-5.828765, -3.784606], + [-5.567436, -3.769349], + [-6.097954, -4.416721], + [-6.097954, -3.800063], + [-5.154532, -4.247723], + [-5.828765, -4.366038], + [-5.154532, -4.099175], + [-5.008310, -4.642870], + [-5.601993, -3.914313], + [-5.468468, -3.385668], + [-5.749148, -4.642870], + [-5.129109, -4.416721], + [-5.008310, -3.897303], + [-4.793386, -3.681757], + [-5.601993, -3.710232], + [-5.788407, -4.225364], + ] + ) + self.assertTrue(np.allclose(res, ref, atol=1e-6, rtol=0))