1
1
# filter d-ratio
2
- test_that(' d-ratio filter works as expected' ,{
2
+ test_that(' d-ratio filter works as expected using sd ratio ' ,{
3
3
set.seed(' 57475' )
4
4
# DatasetExperiment
5
5
DE = MTBLS79_DatasetExperiment(filtered = TRUE )
6
6
M = dratio_filter(
7
7
threshold = 20 ,
8
8
qc_label = ' QC' ,
9
- factor_name = ' Class'
9
+ factor_name = ' Class' ,
10
+ method = ' ratio' ,
11
+ dispersion = ' sd'
12
+ )
13
+ M = model_apply(M ,DE )
14
+
15
+ # manually compute d-ratio
16
+ qc_mad = unlist(
17
+ lapply(DE $ data [DE $ sample_meta $ Class == ' QC' ,],sd ,na.rm = TRUE )
18
+ )
19
+ sa_mad = unlist(
20
+ lapply(DE $ data [DE $ sample_meta $ Class != ' QC' ,],sd ,na.rm = TRUE )
21
+ )
22
+ dr = (qc_mad / (sa_mad ))* 100
23
+
24
+ # check manual vs fcn
25
+ expect_true(all(dr == M $ d_ratio $ d_ratio ))
26
+
27
+ # check values havent changed
28
+ expect_equal(dr [[1 ]],23.05762 ,tolerance = 5e-6 )
29
+ expect_equal(dr [[100 ]],64.49242 ,tolerance = 5e-6 )
30
+
31
+ # just number of filtered columns
32
+ expect_true(ncol(predicted(M ))== 725 )
33
+ expect_true(ncol(DE )- ncol(predicted(M ))== 854 )
34
+ expect_true(ncol(DE )- ncol(predicted(M ))== sum(dr > 20 ))
35
+ })
36
+
37
+ test_that(' d-ratio filter works as expected using mad ratio' ,{
38
+ set.seed(' 57475' )
39
+ # DatasetExperiment
40
+ DE = MTBLS79_DatasetExperiment(filtered = TRUE )
41
+ M = dratio_filter(
42
+ threshold = 20 ,
43
+ qc_label = ' QC' ,
44
+ factor_name = ' Class' ,
45
+ method = ' ratio' ,
46
+ dispersion = ' mad'
47
+ )
48
+ M = model_apply(M ,DE )
49
+
50
+ # manually compute d-ratio
51
+ qc_mad = unlist(
52
+ lapply(DE $ data [DE $ sample_meta $ Class == ' QC' ,],mad ,na.rm = TRUE )
53
+ )
54
+ sa_mad = unlist(
55
+ lapply(DE $ data [DE $ sample_meta $ Class != ' QC' ,],mad ,na.rm = TRUE )
56
+ )
57
+ dr = (qc_mad / (sa_mad ))* 100
58
+
59
+ # check manual vs fcn
60
+ expect_true(all(dr == M $ d_ratio $ d_ratio ))
61
+
62
+ # check values havent changed
63
+ expect_equal(dr [[1 ]],14.14758 ,tolerance = 5e-6 )
64
+ expect_equal(dr [[100 ]],48.23871 ,tolerance = 5e-6 )
65
+
66
+ # just number of filtered columns
67
+ expect_true(ncol(predicted(M ))== 834 )
68
+ expect_true(ncol(DE )- ncol(predicted(M ))== 745 )
69
+ expect_true(ncol(DE )- ncol(predicted(M ))== sum(dr > 20 ))
70
+ })
71
+
72
+ test_that(' d-ratio filter works as expected using sd euclidean' ,{
73
+ set.seed(' 57475' )
74
+ # DatasetExperiment
75
+ DE = MTBLS79_DatasetExperiment(filtered = TRUE )
76
+ M = dratio_filter(
77
+ threshold = 20 ,
78
+ qc_label = ' QC' ,
79
+ factor_name = ' Class' ,
80
+ method = ' euclidean' ,
81
+ dispersion = ' sd'
82
+ )
83
+ M = model_apply(M ,DE )
84
+
85
+ # manually compute d-ratio
86
+ qc_mad = unlist(
87
+ lapply(DE $ data [DE $ sample_meta $ Class == ' QC' ,],sd ,na.rm = TRUE )
88
+ )
89
+ sa_mad = unlist(
90
+ lapply(DE $ data [DE $ sample_meta $ Class != ' QC' ,],sd ,na.rm = TRUE )
91
+ )
92
+ dr = qc_mad / sqrt((qc_mad ^ 2 ) + (sa_mad ^ 2 ))* 100
93
+
94
+ # check manual vs fcn
95
+ expect_true(all(dr == M $ d_ratio $ d_ratio ))
96
+
97
+ # check values havent changed
98
+ expect_equal(dr [[1 ]],22.46809 ,tolerance = 5e-6 )
99
+ expect_equal(dr [[100 ]],54.19862 ,tolerance = 5e-6 )
100
+
101
+ # just number of filtered columns
102
+ expect_true(ncol(predicted(M ))== 747 )
103
+ expect_true(ncol(DE )- ncol(predicted(M ))== 832 )
104
+ expect_true(ncol(DE )- ncol(predicted(M ))== sum(dr > 20 ))
105
+ })
106
+
107
+ test_that(' d-ratio filter works as expected using mad euclidean' ,{
108
+ set.seed(' 57475' )
109
+ # DatasetExperiment
110
+ DE = MTBLS79_DatasetExperiment(filtered = TRUE )
111
+ M = dratio_filter(
112
+ threshold = 20 ,
113
+ qc_label = ' QC' ,
114
+ factor_name = ' Class' ,
115
+ method = ' euclidean' ,
116
+ dispersion = ' mad'
10
117
)
11
118
M = model_apply(M ,DE )
12
119
@@ -17,17 +124,17 @@ test_that('d-ratio filter works as expected',{
17
124
sa_mad = unlist(
18
125
lapply(DE $ data [DE $ sample_meta $ Class != ' QC' ,],mad ,na.rm = TRUE )
19
126
)
20
- dr = ( qc_mad / ( qc_mad + sa_mad ))* 100
127
+ dr = qc_mad / sqrt(( qc_mad ^ 2 ) + ( sa_mad ^ 2 ))* 100
21
128
22
129
# check manual vs fcn
23
130
expect_true(all(dr == M $ d_ratio $ d_ratio ))
24
131
25
132
# check values havent changed
26
- expect_equal(dr [[1 ]],12.39 ,tolerance = 1e3 )
27
- expect_equal(dr [[100 ]],32.54 ,tolerance = 1e3 )
133
+ expect_equal(dr [[1 ]],14.00808 ,tolerance = 5e-6 )
134
+ expect_equal(dr [[100 ]],43.44776 ,tolerance = 5e-6 )
28
135
29
136
# just number of filtered columns
30
- expect_true(ncol(predicted(M ))== 1052 )
31
- expect_true(ncol(DE )- ncol(predicted(M ))== 527 )
137
+ expect_true(ncol(predicted(M ))== 850 )
138
+ expect_true(ncol(DE )- ncol(predicted(M ))== 729 )
32
139
expect_true(ncol(DE )- ncol(predicted(M ))== sum(dr > 20 ))
33
140
})
0 commit comments