Skip to content

Commit 2f2e2e1

Browse files
committed
test multi scalars in testthat
1 parent cc67464 commit 2f2e2e1

1 file changed

Lines changed: 103 additions & 0 deletions

File tree

tests/testthat/test-merge.R

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,3 +137,106 @@ test_that("mergeModelArrays returns proper structure", {
137137
expect_equal(nInputFiles(merged$data, "FD2"), length(src))
138138
expect_equal(nElements(merged$data, "FD"), nElements(ma_fd, "FD"))
139139
})
140+
141+
test_that("merged ModelArrays work with analyseOneElement helpers", {
142+
h5_path <- system.file("extdata", "n50_fixels.h5", package = "ModelArray")
143+
ma_fd <- ModelArray(h5_path, scalar_types = c("FD"))
144+
src <- sources(ma_fd)[["FD"]]
145+
base <- scalars(ma_fd)[["FD"]]
146+
147+
ma2 <- new("ModelArray",
148+
scalars = list(
149+
FD2 = base * 1.5 + 2,
150+
FD3 = log(base + 1)
151+
),
152+
sources = list(FD2 = src, FD3 = src),
153+
results = list(),
154+
path = c(FD2 = h5_path, FD3 = h5_path)
155+
)
156+
157+
phen1 <- data.frame(
158+
subject_id = paste0("subj_", seq_along(src)),
159+
source_file = src,
160+
age = seq_along(src),
161+
stringsAsFactors = FALSE
162+
)
163+
phen2 <- data.frame(
164+
subject_id = rev(paste0("subj_", seq_along(src))),
165+
source_file = rev(src),
166+
stringsAsFactors = FALSE
167+
)
168+
169+
merged <- mergeModelArrays(
170+
list(ma_fd, ma2),
171+
list(phen1, phen2),
172+
merge_on = "subject_id"
173+
)
174+
175+
lm_init <- suppressWarnings(analyseOneElement.lm(
176+
1L,
177+
FD ~ FD2 + FD3 + age,
178+
merged$data,
179+
merged$phenotypes,
180+
scalar = "FD",
181+
var.terms = c("estimate", "statistic", "p.value"),
182+
var.model = c("adj.r.squared", "p.value"),
183+
num.subj.lthr = 1,
184+
num.stat.output = 12,
185+
flag_initiate = TRUE,
186+
on_error = "stop"
187+
))
188+
expect_true("FD2.estimate" %in% lm_init$column_names)
189+
expect_true("FD3.estimate" %in% lm_init$column_names)
190+
191+
lm_fit <- suppressWarnings(ModelArray.lm(
192+
FD ~ FD2 + FD3 + age,
193+
merged$data,
194+
merged$phenotypes,
195+
scalar = "FD",
196+
element.subset = as.integer(1:2),
197+
verbose = FALSE,
198+
pbar = FALSE,
199+
n_cores = 1,
200+
on_error = "stop"
201+
))
202+
expect_true(all(is.finite(lm_fit$FD2.estimate)))
203+
expect_true(all(is.finite(lm_fit$FD3.estimate)))
204+
205+
gam_init <- analyseOneElement.gam(
206+
1L,
207+
FD ~ s(age) + FD2 + FD3,
208+
merged$data,
209+
merged$phenotypes,
210+
scalar = "FD",
211+
var.smoothTerms = c("edf", "statistic", "p.value"),
212+
var.parametricTerms = c("estimate", "statistic", "p.value"),
213+
var.model = c("adj.r.squared", "dev.expl"),
214+
num.subj.lthr = 1,
215+
num.stat.output = 12,
216+
flag_initiate = TRUE,
217+
flag_sse = FALSE,
218+
on_error = "stop"
219+
)
220+
expect_true("FD2.estimate" %in% gam_init$column_names)
221+
expect_true("FD3.estimate" %in% gam_init$column_names)
222+
223+
wrap_out <- analyseOneElement.wrap(
224+
1L,
225+
function(data) {
226+
data.frame(
227+
mean_fd = mean(data$FD, na.rm = TRUE),
228+
cor_fd2 = cor(data$FD, data$FD2, use = "complete.obs"),
229+
cor_fd3 = cor(data$FD, data$FD3, use = "complete.obs")
230+
)
231+
},
232+
merged$data,
233+
merged$phenotypes,
234+
scalar = "FD",
235+
num.subj.lthr = 1,
236+
num.stat.output = 4,
237+
flag_initiate = FALSE,
238+
on_error = "stop"
239+
)
240+
expect_true(is.finite(unname(wrap_out[[3]])))
241+
expect_true(is.finite(unname(wrap_out[[4]])))
242+
})

0 commit comments

Comments
 (0)