Skip to content

Commit a90eeef

Browse files
committed
improve testing for fold change
1 parent a4fd613 commit a90eeef

File tree

1 file changed

+98
-61
lines changed

1 file changed

+98
-61
lines changed

tests/testthat/test-foldchange.R

Lines changed: 98 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,101 @@
1-
# fold_change
2-
test_that('fold_change',{
3-
set.seed('57475')
4-
5-
# data
6-
D = iris_DatasetExperiment()
7-
8-
# two groups
9-
F = filter_smeta(mode='exclude',levels='setosa',factor_name='Species')
10-
F = model_apply(F,D)
11-
12-
D = predicted(F)
13-
14-
# add column for paired data
15-
D$sample_meta$sample_id=c(1:50,1:50)
16-
D$data[1:50,2] = NA
17-
D$data[1:25,3] = NA
18-
19-
# unpaired
20-
FF = fold_change(factor_name='Species',method="geometric",control_group='versicolor')
21-
FF = model_apply(FF,D)
22-
m=exp(mean(log(D$data[D$sample_meta$Species=='virginica',1]))) / exp(mean(log((D$data[D$sample_meta$Species=='versicolor',1]))))
23-
expect_equal(FF$fold_change[1,1],m,tolerance=0.00001)
24-
expect_true(is.na(FF$fold_change[2,1]))
25-
m=exp(mean(log(na.exclude(D$data[D$sample_meta$Species=='virginica',3])))) / exp(mean(log(na.exclude(D$data[D$sample_meta$Species=='versicolor',3]))))
26-
expect_equal(FF$fold_change[3,1],m,tolerance=0.00001)
27-
28-
FF$method = 'median'
29-
FF = model_apply(FF,D)
30-
m = median(D$data[D$sample_meta$Species=='virginica',1]) / median(D$data[D$sample_meta$Species=='versicolor',1])
31-
expect_equal(FF$fold_change[1,1],m,tolerance=0.00001)
32-
expect_true(is.na(FF$fold_change[2,1]))
33-
m = median(D$data[D$sample_meta$Species=='virginica',3],na.rm = TRUE) / median(D$data[D$sample_meta$Species=='versicolor',3],na.rm = TRUE)
34-
expect_equal(FF$fold_change[3,1],m,tolerance=0.00001)
35-
36-
FF$method = 'mean'
37-
FF = model_apply(FF,D)
38-
m = mean(D$data[D$sample_meta$Species=='virginica',1]) / mean(D$data[D$sample_meta$Species=='versicolor',1])
39-
expect_equal(FF$fold_change[1,1],m,tolerance=0.00001)
40-
expect_true(is.na(FF$fold_change[2,1]))
41-
m = mean(D$data[D$sample_meta$Species=='virginica',3],na.rm=TRUE) / mean(D$data[D$sample_meta$Species=='versicolor',3],na.rm=TRUE)
42-
expect_equal(FF$fold_change[3,1],m,tolerance=0.00001)
43-
44-
# paired
45-
FF = fold_change(factor_name='Species',method="geometric",paired=TRUE,sample_name = 'sample_id')
46-
FF = model_apply(FF,D)
47-
m=exp(mean(log(D$data[D$sample_meta$Species=='virginica',1])-log(D$data[D$sample_meta$Species=='versicolor',1])))
48-
expect_equal(FF$fold_change[1,1],m,tolerance=0.00001)
49-
expect_true(is.na(FF$fold_change[2,1]))
50-
51-
FF$method = 'median'
52-
FF = model_apply(FF,D)
53-
m = median(D$data[D$sample_meta$Species=='virginica',1] / D$data[D$sample_meta$Species=='versicolor',1])
54-
expect_equal(FF$fold_change[1,1],m,tolerance=0.00001)
55-
expect_true(is.na(FF$fold_change[2,1]))
56-
57-
FF$method = 'mean'
58-
FF = model_apply(FF,D)
59-
m = mean(D$data[D$sample_meta$Species=='virginica',1] / D$data[D$sample_meta$Species=='versicolor',1])
60-
expect_equal(FF$fold_change[1,1],m,tolerance=0.00001)
61-
expect_true(is.na(FF$fold_change[2,1]))
621

632

3+
test_that('fold_change unpaired',{
4+
set.seed('57475')
5+
6+
# data
7+
D = iris_DatasetExperiment()
8+
9+
# add some missing values
10+
D$data[1:50,2] = NA
11+
D$data[1:25,3] = NA
12+
13+
# unpaired
14+
FF = fold_change(factor_name='Species',method="geometric",control_group='versicolor')
15+
FF = model_apply(FF,D)
16+
# check some fold changes
17+
m=exp(mean(log(na.exclude(D$data[D$sample_meta$Species=='virginica',1])))) / exp(mean(log(na.exclude(D$data[D$sample_meta$Species=='versicolor',1]))))
18+
expect_equal(FF$fold_change$`virginica/versicolor`[1],m,tolerance=0.00001)
19+
20+
m=exp(mean(log(na.exclude(D$data[D$sample_meta$Species=='setosa',4])))) / exp(mean(log(na.exclude(D$data[D$sample_meta$Species=='versicolor',4]))))
21+
expect_equal(FF$fold_change$`setosa/versicolor`[4],m,tolerance=0.00001)
22+
23+
m=exp(mean(log(na.exclude(D$data[D$sample_meta$Species=='virginica',3])))) / exp(mean(log(na.exclude(D$data[D$sample_meta$Species=='setosa',3]))))
24+
expect_equal(FF$fold_change$`virginica/setosa`[3],m,tolerance=0.00001)
25+
26+
# check some NA
27+
expect_true(is.na(FF$fold_change$`virginica/setosa`[2]))
28+
expect_true(is.na(FF$fold_change$`setosa/versicolor`[2]))
29+
30+
FF$method = 'median'
31+
FF = model_apply(FF,D)
32+
# check some fold changes
33+
m = median(D$data[D$sample_meta$Species=='virginica',1],na.rm = TRUE) / median(D$data[D$sample_meta$Species=='versicolor',1],na.rm = TRUE)
34+
expect_equal(FF$fold_change$`virginica/versicolor`[1],m,tolerance=0.00001)
35+
36+
m = median(D$data[D$sample_meta$Species=='setosa',4],na.rm = TRUE) / median(D$data[D$sample_meta$Species=='versicolor',4],na.rm = TRUE)
37+
expect_equal(FF$fold_change$`setosa/versicolor`[4],m,tolerance=0.00001)
38+
39+
m = median(D$data[D$sample_meta$Species=='virginica',3],na.rm = TRUE) / median(D$data[D$sample_meta$Species=='setosa',3],na.rm = TRUE)
40+
expect_equal(FF$fold_change$`virginica/setosa`[3],m,tolerance=0.00001)
41+
42+
# check some NA
43+
expect_true(is.na(FF$fold_change$`virginica/setosa`[2]))
44+
expect_true(is.na(FF$fold_change$`setosa/versicolor`[2]))
45+
46+
FF$method = 'mean'
47+
FF = model_apply(FF,D)
48+
m = mean(D$data[D$sample_meta$Species=='virginica',1],na.rm = TRUE) / mean(D$data[D$sample_meta$Species=='versicolor',1],na.rm = TRUE)
49+
expect_equal(FF$fold_change$`virginica/versicolor`[1],m,tolerance=0.00001)
50+
51+
m = mean(D$data[D$sample_meta$Species=='setosa',4],na.rm = TRUE) / mean(D$data[D$sample_meta$Species=='versicolor',4],na.rm = TRUE)
52+
expect_equal(FF$fold_change$`setosa/versicolor`[4],m,tolerance=0.00001)
53+
54+
m = mean(D$data[D$sample_meta$Species=='virginica',3],na.rm = TRUE) / mean(D$data[D$sample_meta$Species=='setosa',3],na.rm = TRUE)
55+
expect_equal(FF$fold_change$`virginica/setosa`[3],m,tolerance=0.00001)
56+
57+
# check some NA
58+
expect_true(is.na(FF$fold_change$`virginica/setosa`[2]))
59+
expect_true(is.na(FF$fold_change$`setosa/versicolor`[2]))
60+
61+
6462
})
63+
64+
test_that('fold_change paired',{
65+
set.seed('57475')
66+
67+
# data
68+
D = iris_DatasetExperiment()
69+
70+
# two groups
71+
F = filter_smeta(mode='exclude',levels='setosa',factor_name='Species')
72+
F = model_apply(F,D)
73+
74+
D = predicted(F)
75+
76+
# add column for paired data
77+
D$sample_meta$sample_id=c(1:50,1:50)
78+
D$data[1:50,2] = NA
79+
D$data[1:25,3] = NA
80+
81+
# paired
82+
FF = fold_change(factor_name='Species',method="geometric",paired=TRUE,sample_name = 'sample_id',control_group = 'versicolor')
83+
FF = model_apply(FF,D)
84+
m=exp(mean(log(D$data[D$sample_meta$Species=='virginica',1])-log(D$data[D$sample_meta$Species=='versicolor',1])))
85+
expect_equal(FF$fold_change[1,1],m,tolerance=0.00001)
86+
expect_true(is.na(FF$fold_change[2,1]))
87+
88+
FF$method = 'median'
89+
FF = model_apply(FF,D)
90+
m = median(D$data[D$sample_meta$Species=='virginica',1] / D$data[D$sample_meta$Species=='versicolor',1])
91+
expect_equal(FF$fold_change[1,1],m,tolerance=0.00001)
92+
expect_true(is.na(FF$fold_change[2,1]))
93+
94+
FF$method = 'mean'
95+
FF = model_apply(FF,D)
96+
m = mean(D$data[D$sample_meta$Species=='virginica',1] / D$data[D$sample_meta$Species=='versicolor',1])
97+
expect_equal(FF$fold_change[1,1],m,tolerance=0.00001)
98+
expect_true(is.na(FF$fold_change[2,1]))
99+
100+
101+
})

0 commit comments

Comments
 (0)