[dfe06d]: / tests / testthat / test_data.R

Download this file

162 lines (109 with data), 4.7 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
context("Test outbreaker data and settings")
## test data ##
test_that("test: data are processed fine", {
## skip on CRAN
skip_on_cran()
## get data
x <- fake_outbreak
out <- outbreaker_data(dates = x$onset, dna = x$dna, w_dens = x$w)
out_nodna <- outbreaker_data(dates = x$onset, w_dens = x$w)
## check output
expect_is(out, "list")
expect_is(out$D, "matrix")
expect_equal(out$max_range, 11)
expect_equal(out_nodna$L, 0)
expect_equal(out$L, 1e4)
expect_equal(out$w_dens, out$f_dens)
expect_equal(out$log_w_dens[1,], out$log_f_dens)
expect_error(outbreaker_data(dates = 1, w_dens = c(0,-1)),
"w_dens has negative entries")
expect_error(outbreaker_data(dates = 1, w_dens = c(0,1), f_dens = c(0,-1)),
"f_dens has negative entries")
wrong_lab_dna <- x$dna
rownames(wrong_lab_dna) <- paste0("host_", seq_len(nrow(wrong_lab_dna)))
expect_error(outbreaker_data(dates = x$onset, dna = wrong_lab_dna, w_dens = x$w),
"DNA sequence labels don't match case ids")
})
test_that("outbreaker_data accepts epicontacts and case labelling", {
## skip on CRAN
skip_on_cran()
## outbreaker time, ctd, no DNA ##
## analysis
set.seed(1)
## get data
x <- fake_outbreak
ids_char <- replicate(length(fake_outbreak$sample),
paste(sample(letters, 5, TRUE), collapse = ""))
ids_num <- sample.int(1000, length(fake_outbreak$sample), FALSE)
## check for character and numeric ids
for(ids in list(ids_char, ids_num)) {
## make epi_contacts object
tTree <- data.frame(i = ids[x$ances],
j = ids[1:length(x$ances)])
ctd <- sim_ctd(tTree, eps = 0.9, lambda = 0.1)
epi_c <- suppressWarnings(epicontacts::make_epicontacts(linelist = data.frame(id = ids),
contacts = ctd,
directed = TRUE))
data <- outbreaker_data(dates = x$onset,
dna = x$dna,
ctd = epi_c,
w_dens = x$w)
## test recursiveness
data <- outbreaker_data(data = data)
## check correct contacts are labelled as 1 in matrix
ctd_ind <- apply(ctd, 2, match, ids)
expect_equal(rep(1, nrow(ctd)), data$contacts[ctd_ind[,c(2, 1)]])
expect_equal(rep(0, nrow(ctd)), data$contacts[ctd_ind])
## check directionality is being passed
config <- create_config(data = data)
## check ids are carried through
expect_equal(data$ids, epi_c$linelist$id)
## make sure directionality is carried through
expect_true(config$ctd_directed)
## case labelling via dates
dates <- x$onset
names(dates) <- ids
data <- outbreaker_data(dates = dates,
dna = x$dna,
ctd = ctd,
w_dens = x$w)
## test recursiveness
data <- outbreaker_data(data = data)
## check direcionality working
config <- create_config(ctd_directed = TRUE,
data = data)
## check contact numbers are being updated
data <- add_convolutions(data, config)
## check ids are carried through
expect_equal(data$ids, as.character(ids))
## make sure directionality is carried through
expect_true(config$ctd_directed)
## check the number of contacts are correct
expect_equal(nrow(ctd), sum(data$contacts))
## toggle directionality
data <- outbreaker_data(dates = dates,
dna = x$dna,
ctd = ctd,
w_dens = x$w)
data <- outbreaker_data(data = data)
config <- create_config(ctd_directed = FALSE)
data <- add_convolutions(data, config)
## check the number of contacts are correct
expect_equal(2*nrow(ctd), sum(data$contacts))
## check correct contacts are labelled as 1 in matrix
ctd_ind <- apply(ctd, 2, match, ids)
ctd_ind <- rbind(ctd_ind, ctd_ind[,c(2, 1)])
expect_equal(rep(1, 2*nrow(ctd)), data$contacts[ctd_ind])
## make sure directionality is carried through
expect_false(config$ctd_directed)
## identify non-matching labels
wrong_dna <- x$dna
rownames(wrong_dna) <- 1:length(x$onset)
expect_error(data <- outbreaker_data(dates = dates,
dna = wrong_dna,
ctd = ctd,
w_dens = x$w,
ctd_directed = TRUE),
"DNA sequence labels don't match case ids")
}
})