## -----------------------------------------------------------------------
## Catch errors:
## -----------------------------------------------------------------------
## By default 'catch.errors' is TRUE in BiocParallelParam objects.
SnowParam(workers = 2)
## If 'catch.errors' is FALSE an ill-fated bplapply() simply stops
## displaying the error message.
param <- SnowParam(workers = 2, catch.errors = FALSE)
## Not run:
# > res <- bplapply(list(1, "two", 3), sqrt, BPPARAM = param)
# Error in checkForRemoteErrors(val) :
# one node produced an error: non-numeric argument to mathematical function
# ## End(Not run)
## When 'catch.errors' is TRUE partial results are returned with
## the error.
param <- SnowParam(workers = 2)
X <- list(1, "two", 3)
res <- bplapply(X, sqrt, BPPARAM = param)
res
## Check if the results contain any errors:
fail <- !bpok(res)
fail
## Access the traceback with attr():
tail(attr(res[[2]], "traceback"), 5)
## -----------------------------------------------------------------------
## Resume calculations:
## -----------------------------------------------------------------------
## The 'resume' mechanism is triggered by supplying a list of partial
## results as 'BPREDO'. Data elements that failed are rerun and merged
## with previous results.
## A call of sqrt() on the character "2" returns an error.
param <- SnowParam(workers = 2)
X <- list(1, "two", 3)
res <- bplapply(X, sqrt, BPPARAM = param)
res
## Fix the input data by changing the character "2" to a numeric 2:
X_mod <- list(1, 2, 3)
## Repeat the original call to bplapply() with the partial results as 'BPREDO':
bplapply(X_mod, sqrt, BPPARAM = param , BPREDO = res)
Run the code above in your browser using DataLab