a b/tests/deseq2/test_vst.py
1
import unittest
2
3
import numpy as np
4
5
from inmoose.deseq2 import makeExampleDESeqDataSet, varianceStabilizingTransformation
6
7
8
class Test(unittest.TestCase):
9
    def test_varianceStabilizingTransform(self):
10
        """check that variance StabilizingTransform works as expected"""
11
        dds = makeExampleDESeqDataSet(n=15, m=12, seed=42)
12
        vst = varianceStabilizingTransformation(dds)
13
14
        ref = np.array(
15
            [
16
                [
17
                    3.823017,
18
                    3.8230169,
19
                    5.985321,
20
                    4.913315,
21
                    4.161231,
22
                    1.494246,
23
                    4.823440,
24
                    5.450071,
25
                    3.823017,
26
                    1.3401978,
27
                    3.595272,
28
                    3.823017,
29
                ],
30
                [
31
                    -0.451858,
32
                    0.6581684,
33
                    2.810054,
34
                    1.254434,
35
                    -0.451858,
36
                    4.077032,
37
                    -0.451858,
38
                    -0.451858,
39
                    4.086414,
40
                    -0.4518580,
41
                    1.546176,
42
                    2.955590,
43
                ],
44
                [
45
                    8.061588,
46
                    6.3072368,
47
                    4.637324,
48
                    1.851704,
49
                    4.161231,
50
                    7.255872,
51
                    0.824648,
52
                    5.171055,
53
                    5.671037,
54
                    5.1710549,
55
                    5.919773,
56
                    8.977944,
57
                ],
58
                [
59
                    4.243021,
60
                    6.7404002,
61
                    6.359506,
62
                    2.576007,
63
                    5.365497,
64
                    5.015233,
65
                    2.906480,
66
                    8.951864,
67
                    4.671504,
68
                    5.9054920,
69
                    6.892472,
70
                    5.308661,
71
                ],
72
                [
73
                    2.178302,
74
                    -0.4518580,
75
                    1.105434,
76
                    -0.451858,
77
                    1.395415,
78
                    -0.451858,
79
                    -0.451858,
80
                    3.694642,
81
                    3.500141,
82
                    0.6253966,
83
                    3.595272,
84
                    -0.451858,
85
                ],
86
                [
87
                    2.955590,
88
                    -0.4518580,
89
                    -0.451858,
90
                    2.576007,
91
                    1.847902,
92
                    1.494246,
93
                    0.824648,
94
                    3.183966,
95
                    3.500141,
96
                    1.3401978,
97
                    3.135366,
98
                    4.359573,
99
                ],
100
                [
101
                    -0.451858,
102
                    3.3285650,
103
                    1.664144,
104
                    2.261056,
105
                    1.641409,
106
                    2.586723,
107
                    4.623337,
108
                    6.141930,
109
                    -0.451858,
110
                    -0.4518580,
111
                    2.834227,
112
                    6.598715,
113
                ],
114
                [
115
                    4.359573,
116
                    2.0207666,
117
                    4.118937,
118
                    1.851704,
119
                    4.233253,
120
                    2.920369,
121
                    -0.451858,
122
                    3.183966,
123
                    2.057386,
124
                    1.0399000,
125
                    1.012888,
126
                    4.359573,
127
                ],
128
                [
129
                    2.178302,
130
                    -0.4518580,
131
                    -0.451858,
132
                    6.038225,
133
                    5.755725,
134
                    3.416888,
135
                    2.327658,
136
                    3.183966,
137
                    3.082433,
138
                    3.9153624,
139
                    5.408736,
140
                    -0.451858,
141
                ],
142
                [
143
                    3.226560,
144
                    3.2613786,
145
                    2.992774,
146
                    3.553961,
147
                    2.184300,
148
                    1.494246,
149
                    0.824648,
150
                    -0.451858,
151
                    -0.451858,
152
                    1.0399000,
153
                    3.264959,
154
                    -0.451858,
155
                ],
156
                [
157
                    5.249530,
158
                    1.0834807,
159
                    2.992774,
160
                    3.925805,
161
                    4.896815,
162
                    6.210543,
163
                    4.823440,
164
                    6.519649,
165
                    5.630417,
166
                    -0.4518580,
167
                    4.875050,
168
                    7.268652,
169
                ],
170
                [
171
                    4.749485,
172
                    4.3272243,
173
                    4.791961,
174
                    5.117967,
175
                    2.962466,
176
                    4.791961,
177
                    4.791961,
178
                    4.367923,
179
                    6.588150,
180
                    5.6595787,
181
                    4.791961,
182
                    4.749485,
183
                ],
184
                [
185
                    5.472762,
186
                    2.3195612,
187
                    3.154617,
188
                    3.688910,
189
                    4.896815,
190
                    4.791961,
191
                    4.163592,
192
                    3.183966,
193
                    2.816266,
194
                    3.1140628,
195
                    1.012888,
196
                    6.972229,
197
                ],
198
                [
199
                    3.650416,
200
                    4.1161861,
201
                    4.335770,
202
                    6.507277,
203
                    6.111061,
204
                    8.069817,
205
                    5.319135,
206
                    5.736698,
207
                    5.786454,
208
                    -0.4518580,
209
                    7.342527,
210
                    7.587853,
211
                ],
212
                [
213
                    4.910890,
214
                    1.6362631,
215
                    4.690736,
216
                    6.817270,
217
                    1.847902,
218
                    6.556714,
219
                    3.832819,
220
                    3.694642,
221
                    -0.451858,
222
                    4.9890014,
223
                    2.210771,
224
                    4.116186,
225
                ],
226
            ]
227
        )
228
229
        self.assertTrue(np.allclose(vst.X, ref.T, atol=2e-2))
230
231
        ref = np.array(
232
            [
233
                [
234
                    3.701496,
235
                    3.7014964,
236
                    5.958395,
237
                    4.8565583,
238
                    4.0653149,
239
                    0.8610695,
240
                    4.7630157,
241
                    5.411009,
242
                    3.701496,
243
                    0.6327990,
244
                    3.4527199,
245
                    3.701496,
246
                ],
247
                [
248
                    -2.822746,
249
                    -0.4959506,
250
                    2.562285,
251
                    0.5019767,
252
                    -2.8227460,
253
                    3.9753014,
254
                    -2.8227460,
255
                    -2.822746,
256
                    3.985348,
257
                    -2.8227460,
258
                    0.9362035,
259
                    2.732023,
260
                ],
261
                [
262
                    8.055215,
263
                    6.2857065,
264
                    4.568530,
265
                    1.3618038,
266
                    4.0653149,
267
                    7.2447271,
268
                    -0.2002053,
269
                    5.123623,
270
                    5.637539,
271
                    5.1236227,
272
                    5.8915925,
273
                    8.974568,
274
                ],
275
                [
276
                    4.152433,
277
                    6.7244620,
278
                    6.338743,
279
                    2.2835920,
280
                    5.3240677,
281
                    4.9623662,
282
                    2.6750276,
283
                    8.948426,
284
                    4.604330,
285
                    5.8770306,
286
                    6.8781302,
287
                    5.265561,
288
                ],
289
                [
290
                    1.790356,
291
                    -2.8227460,
292
                    0.267767,
293
                    -2.8227460,
294
                    0.7155806,
295
                    -2.8227460,
296
                    -2.8227460,
297
                    3.561685,
298
                    3.347746,
299
                    -0.5558881,
300
                    3.4527199,
301
                    -2.822746,
302
                ],
303
                [
304
                    2.732023,
305
                    -2.8227460,
306
                    -2.822746,
307
                    2.2835920,
308
                    1.3566659,
309
                    0.8610695,
310
                    -0.2002053,
311
                    2.993639,
312
                    3.347746,
313
                    0.6327990,
314
                    2.9384128,
315
                    4.276066,
316
                ],
317
                [
318
                    -2.822746,
319
                    3.1566484,
320
                    1.103729,
321
                    1.8953193,
322
                    1.0717726,
323
                    2.2965211,
324
                    4.5538679,
325
                    6.117780,
326
                    -2.822746,
327
                    -2.8227460,
328
                    2.5906548,
329
                    6.581130,
330
                ],
331
                [
332
                    4.276066,
333
                    1.5866643,
334
                    4.020143,
335
                    1.3618038,
336
                    4.1420452,
337
                    2.6911747,
338
                    -2.8227460,
339
                    2.993639,
340
                    1.634489,
341
                    0.1617874,
342
                    0.1175492,
343
                    4.276066,
344
                ],
345
                [
346
                    1.790356,
347
                    -2.8227460,
348
                    -2.822746,
349
                    6.0122710,
350
                    5.7241411,
351
                    3.2553183,
352
                    1.9788499,
353
                    2.993639,
354
                    2.877997,
355
                    3.8014500,
356
                    5.3685344,
357
                    -2.822746,
358
                ],
359
                [
360
                    3.041855,
361
                    3.0811437,
362
                    2.774996,
363
                    3.4072156,
364
                    1.7980092,
365
                    0.8610695,
366
                    -0.2002053,
367
                    -2.822746,
368
                    -2.822746,
369
                    0.1617874,
370
                    3.0851780,
371
                    -2.822746,
372
                ],
373
                [
374
                    5.204619,
375
                    0.2324742,
376
                    2.774996,
377
                    3.8127224,
378
                    4.8394025,
379
                    6.1875168,
380
                    4.7630157,
381
                    6.501071,
382
                    5.595959,
383
                    -2.8227460,
384
                    4.8167596,
385
                    7.257606,
386
                ],
387
                [
388
                    4.685865,
389
                    4.2418104,
390
                    4.730196,
391
                    5.0687489,
392
                    2.7399816,
393
                    4.7301962,
394
                    4.7301962,
395
                    4.284902,
396
                    6.570435,
397
                    5.6258120,
398
                    4.7301962,
399
                    4.685865,
400
                ],
401
                [
402
                    5.434311,
403
                    1.9687389,
404
                    2.960316,
405
                    3.5554177,
406
                    4.8394025,
407
                    4.7301962,
408
                    4.0678339,
409
                    2.993639,
410
                    2.569582,
411
                    2.9141319,
412
                    0.1175492,
413
                    6.958660,
414
                ],
415
                [
416
                    3.513271,
417
                    4.0172023,
418
                    4.250864,
419
                    6.4885385,
420
                    6.0863872,
421
                    8.0634801,
422
                    5.2763471,
423
                    5.704694,
424
                    5.755538,
425
                    -2.8227460,
426
                    7.3320319,
427
                    7.579001,
428
                ],
429
                [
430
                    4.854038,
431
                    1.0645175,
432
                    4.624456,
433
                    6.8021604,
434
                    1.3566659,
435
                    6.5386078,
436
                    3.7121294,
437
                    3.561685,
438
                    -2.822746,
439
                    4.9351593,
440
                    1.8316982,
441
                    4.017202,
442
                ],
443
            ]
444
        )
445
446
        dds = makeExampleDESeqDataSet(n=15, m=12, seed=42)
447
        vst = varianceStabilizingTransformation(dds, fitType="mean")
448
449
        self.assertTrue(np.allclose(vst.X, ref.T, atol=3e-2))