test_that("addExperiments handles parameters correctly", {
reg = makeTestExperimentRegistry()
prob = addProblem(reg = reg, "p1", data = iris, fun = function(job, data, x, y, ...) stopifnot(is.numeric(x) && is.character(y)), seed = 42)
algo = addAlgorithm(reg = reg, "a1", fun = function(job, data, instance, a, b, ...) { print(str(a)); checkmate::assertList(a, len = 1, names = "named"); checkmate::assertDataFrame(b); } )
prob.designs = list(p1 = data.table(x = 1:2, y = letters[1:2]))
algo.designs = list(a1 = data.table(a = list(list(x = 1)), b = list(iris)))
repls = 2
ids = addExperiments(prob.designs, algo.designs, repls = repls, reg = reg)
expect_data_table(ids, nrow = 4, key = "job.id")
ids = addExperiments(prob.designs, algo.designs, repls = repls, reg = reg)
expect_data_table(ids, nrow = 0, key = "job.id")
ids = addExperiments(prob.designs, algo.designs, repls = repls + 1L, reg = reg)
expect_data_table(ids, nrow = 2, key = "job.id")
submitAndWait(reg, ids)
expect_true(nrow(findErrors(reg = reg)) == 0)
})
test_that("addExperiments creates default designs", {
reg = makeTestExperimentRegistry()
prob = addProblem(reg = reg, "p1", data = iris)
prob = addProblem(reg = reg, "p2", data = cars)
algo = addAlgorithm(reg = reg, "a1", fun = function(job, data, instance) nrow(data))
algo = addAlgorithm(reg = reg, "a2", fun = function(job, data, instance) ncol(data))
ids = addExperiments(reg = reg)
expect_equal(findExperiments(reg = reg)$job.id, 1:4)
expect_equal(as.character(reg$defs$problem), rep(c("p1", "p2"), each = 2))
expect_equal(as.character(reg$defs$algorithm), rep(c("a1", "a2"), times = 2))
})
test_that("addExperiments / user provided designs", {
reg = makeTestExperimentRegistry()
addProblem(reg = reg, "p1", data = iris, fun = function(...) list(...))
addProblem(reg = reg, "p2", data = cars, fun = function(...) list(...))
addAlgorithm(reg = reg, "a1", fun = function(...) list(...))
addAlgorithm(reg = reg, "a2", fun = function(...) ncol(data))
prob.designs = list(p1 = data.table(a = 1, b = 2:4))
algo.designs = list(a1 = data.table(c = 3:8), a2 = data.table())
ids = addExperiments(reg = reg, prob.designs = prob.designs, algo.designs = algo.designs, combine = "bind")
expect_data_table(ids, nrow = 9, key = "job.id")
tab = getJobPars(reg = reg)
pars = unwrap(getJobPars(reg = reg))
expect_set_equal(pars$problem, "p1")
expect_set_equal(pars$algorithm, c("a1", "a2"))
expect_equal(pars$a, rep(1L, 9))
expect_equal(pars$b, rep(2:4, 3))
expect_equal(pars$c, c(3:8, rep(NA, 3)))
expect_error(addExperiments(reg = reg, prob.designs = list(p1 = data.table(job = 2))), "reserved keyword 'job'")
expect_error(addExperiments(reg = reg, algo.designs = list(a2 = data.table(instance = "foo"))), "reserved keyword 'instance'")
prob.designs = c(prob.designs, list(p2 = data.table()))
ids = addExperiments(reg = reg, prob.designs = prob.designs, algo.designs = algo.designs, combine = "bind")
expect_data_table(ids, nrow = 7, key = "job.id")
expect_data_table(unwrap(getJobPars(reg = reg)), nrow = 16)
ids = addExperiments(reg = reg, prob.designs = prob.designs, algo.designs = algo.designs, combine = "crossprod")
expect_data_table(ids, nrow = 12, key = "job.id")
expect_data_table(unwrap(getJobPars(reg = reg)), nrow = 28)
if (getRversion() < "4.0.0") {
pd = list(p1 = data.frame(foo = letters[1:2]))
withr::with_options(list(stringsAsFactors = NULL), {
expect_warning(addExperiments(reg = reg, prob.designs = pd), "stringsAsFactors")
})
withr::with_options(list(stringsAsFactors = TRUE), {
expect_warning(addExperiments(reg = reg, prob.designs = pd), "stringsAsFactors")
})
withr::with_options(list(stringsAsFactors = FALSE), {
addExperiments(reg = reg, prob.designs = pd)
})
}
})
# reg = makeTestExperimentRegistry()
# addProblem(reg = reg, "p1", data = iris, fun = function(job, data, ...) nrow(data))
# addAlgorithm(reg = reg, "a1", fun = function(job, data, instance, ...) NULL)
# addAlgorithm(reg = reg, "a2", fun = function(job, data, instance, ...) NULL)
# prob.designs = list(p1 = data.table(x = 1:500))
# algo.designs = list(a1 = data.table(y = 1:50), a2 = data.table(y = 1:20))
# repls = 2
# profvis::profvis(addExperiments(prob.designs, algo.designs = algo.designs, repls = repls, reg = reg))
# ids = findExperiments(reg = reg)
# profvis::profvis(submitJobs(ids = s.chunk(ids), reg = reg))
# profvis::profvis(unwrap(getJobPars(reg = reg)))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.