a b/tests/deseq2/test_linear_mu.py
1
import unittest
2
3
import numpy as np
4
5
from inmoose.deseq2 import (
6
    DESeqDataSet,
7
    estimateDispersionsFit,
8
    estimateDispersionsGeneEst,
9
    estimateDispersionsMAP,
10
    makeExampleDESeqDataSet,
11
    nbinomWaldTest,
12
)
13
14
15
class Test(unittest.TestCase):
16
    def test_linear_mu(self):
17
        """test that the use of linear model for fitting mu works as expected"""
18
19
        dds = makeExampleDESeqDataSet(
20
            n=100,
21
            m=4,
22
            interceptMean=10,
23
            interceptSD=3,
24
            dispMeanRel=lambda x: 0.5,
25
            sizeFactors=[0.5, 1, 1, 2],
26
        )
27
        dds = dds.estimateSizeFactors()
28
        dds1 = DESeqDataSet(dds.copy())
29
        dds1 = estimateDispersionsGeneEst(dds1, linearMu=False)
30
        dds2 = estimateDispersionsGeneEst(dds.copy(), linearMu=True)
31
        mu1 = dds1.layers["mu"]
32
        mu2 = dds2.layers["mu"]
33
        cors = np.diag(np.corrcoef(mu1, mu2)[: mu1.shape[0], mu1.shape[1] :])
34
        self.assertTrue(np.all(cors > 1 - 1e-6))
35
36
        dds2 = estimateDispersionsFit(dds2, fitType="mean")
37
        dds2 = estimateDispersionsMAP(dds2)
38
        dds2 = nbinomWaldTest(dds2)
39
        dds2.results()