|
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() |