R Under development (unstable) (2025-09-01 r88761 ucrt) -- "Unsuffered Consequences" Copyright (C) 2025 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(albatross) > data(feems) > cube <- feemscale(feemscatter(cube, rep(24, 4)), na.rm = TRUE) ================================================================================ > # progress argument must work, 1-component model must work > system.time( + jk <- feemjackknife( + cube, nfac = 1, ctol = 1e-4, progress = FALSE + ) + ) user system elapsed 11.62 0.63 12.25 > stopifnot(is.matrix(jk$leaveone[[1]]$A)) > > cols <- list( + estimations = c('loading', 'mode', 'wavelength', 'factor', 'omitted'), + RIP = c('msq.resid', 'Emission', 'Excitation', 'omitted'), + IMP = c('score.overall', 'score.predicted', 'factor', 'omitted') + ) > for (n in names(cols)) stopifnot(cols[[n]] == colnames(coef(jk, n))) > > stopifnot(all.equal(cube, feemcube(jk))) > > # Also test parallel `bootparafac` with postprocessing > library(parallel) > cl <- makeCluster(2) > system.time(jk <- feemjackknife( + cube, nfac = 1, ctol = 1e-4, + parallel = TRUE, cl = cl, .scheduling = 'static' + )) ================================================================================ user system elapsed 0.02 0.00 6.47 > stopCluster(cl) > plot(jk) > stopifnot(is.environment(attr(jk$leaveone[[1]], 'envir'))) > > proc.time() user system elapsed 12.48 0.73 19.93