@@ -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