diff --git a/.Rbuildignore b/.Rbuildignore index 4d607a1..c20741d 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -60,3 +60,5 @@ Rplots.pdf$ #---------------------------- ^.ghi ^.issues +^.*\.Rproj$ +^\.Rproj\.user$ diff --git a/.gitignore b/.gitignore index f9413af..bd07cc9 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,5 @@ .make/*.md.rsp docs/ .Rdump +.Rproj.user +BiocParallel.FutureParam.Rproj diff --git a/DESCRIPTION b/DESCRIPTION index 970004e..3872d16 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -8,7 +8,10 @@ Imports: methods Suggests: markdown, - R.rsp + R.rsp, + future.batchtools +Remotes: + bioc::BiocParallel VignetteBuilder: R.rsp Title: Use Futures with BiocParallel @@ -21,5 +24,5 @@ License: LGPL (>= 2.1) LazyLoad: TRUE URL: https://BiocParallel.FutureParam.futureverse.org, https://github.com/HenrikBengtsson/BiocParallel.FutureParam BugReports: https://github.com/HenrikBengtsson/BiocParallel.FutureParam/issues -RoxygenNote: 7.1.1 +RoxygenNote: 7.1.2 Roxygen: list(markdown = TRUE) diff --git a/NAMESPACE b/NAMESPACE index e433fdf..ebe6c8a 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -6,10 +6,13 @@ if (getRversion() >= "3.6.0") { importFrom(BiocParallel,.BiocParallelParam_prototype) } export(FutureParam) +importFrom(BiocParallel,bpRNGseed) +importFrom(BiocParallel,bpexportglobals) importFrom(BiocParallel,bplog) importFrom(BiocParallel,bplogdir) importFrom(BiocParallel,bploop) importFrom(BiocParallel,bpok) +importFrom(BiocParallel,bpoptions) importFrom(BiocParallel,bpparam) importFrom(BiocParallel,bpstopOnError) importFrom(BiocParallel,bpthreshold) diff --git a/R/FutureParam-class.R b/R/FutureParam-class.R index d41593e..5727407 100644 --- a/R/FutureParam-class.R +++ b/R/FutureParam-class.R @@ -121,10 +121,11 @@ setReplaceMethod("bplogdir", c("FutureParam", "character"), function(x, value) { ### #' @importFrom methods setMethod -#' @importFrom BiocParallel bplog bpok bpparam bpstopOnError bpthreshold bptimeout +#' @importFrom BiocParallel bplog bpok bpparam bpstopOnError bpthreshold bptimeout bpexportglobals #' @importFrom future future resolve value setMethod("bplapply", c("ANY", "FutureParam"), function(X, FUN, ..., BPREDO=list(), BPPARAM=bpparam()) { .composeTry <- importBP(".composeTry") + .workerOptions <- importBP('.workerOptions') .error_bplist <- importBP(".error_bplist") .log_load <- importBP(".log_load") .redo_index <- importBP(".redo_index") @@ -140,9 +141,14 @@ setMethod("bplapply", c("ANY", "FutureParam"), function(X, FUN, ..., BPREDO=list .log_load(bplog(BPPARAM), bpthreshold(BPPARAM)) - FUN <- .composeTry(FUN, bplog(BPPARAM), bpstopOnError(BPPARAM), - stop.immediate=bpstopOnError(BPPARAM), - timeout=bptimeout(BPPARAM)) + OPTIONS <- .workerOptions( + log = bplog(BPPARAM), + stop.on.error = bpstopOnError(BPPARAM), + timeout = bptimeout(BPPARAM), + exportglobals = bpexportglobals(BPPARAM) + ) + + FUN <- .composeTry(FUN, OPTIONS, bpRNGseed(BPPARAM)) ## Create futures fs <- list() @@ -173,11 +179,12 @@ setMethod("bplapply", c("ANY", "FutureParam"), function(X, FUN, ..., BPREDO=list #' @importFrom methods setMethod -#' @importFrom BiocParallel bploop bplog bptimeout bpstopOnError +#' @importFrom BiocParallel bploop bplog bptimeout bpstopOnError bpoptions bpRNGseed #' @importFrom future future resolve value -setMethod("bpiterate", c("ANY", "ANY", "FutureParam"), function(ITER, FUN, ..., REDUCE, init, reduce.in.order=FALSE, BPPARAM=bpparam()) { +setMethod("bpiterate", c("ANY", "ANY", "FutureParam"), function(ITER, FUN, ..., REDUCE, init, reduce.in.order=FALSE, BPREDO = list(),BPPARAM=bpparam(),BPOPTIONS = bpoptions()) { .composeTry <- importBP(".composeTry") - + .workerOptions <- importBP(".workerOptions") + ITER <- match.fun(ITER) FUN <- match.fun(FUN) hasREDUCE <- !missing(REDUCE) @@ -192,8 +199,14 @@ setMethod("bpiterate", c("ANY", "ANY", "FutureParam"), function(ITER, FUN, ..., } } - FUN <- .composeTry(FUN, bplog(BPPARAM), bpstopOnError(BPPARAM), - timeout=bptimeout(BPPARAM)) + OPTIONS <- .workerOptions( + log = bplog(BPPARAM), + stop.on.error = bpstopOnError(BPPARAM), + timeout = bptimeout(BPPARAM), + exportglobals = bpexportglobals(BPPARAM) + ) + + FUN <- .composeTry(FUN, OPTIONS, bpRNGseed(BPPARAM)) ARGFUN <- function(value) c(list(value), list(...))