bpok {BiocParallel} | R Documentation

## Resume computation with partial results

### Description

Identifies unsuccessful results returned from `bplapply`, `bpmapply`, `bpvec`, `bpaggregate` or `bpvectorize`.

### Usage

      bpok(x, type = bperrorTypes())

      bperrorTypes()

### Arguments

`x` | Results returned from a call to `bp*apply`.
`type` | A character(1) error type, from the vector returned by `bperrorTypes()` and described below

### Details

`bpok()` returns a `logical()` vector: FALSE for any jobs that resulted in an error. `x` is the result list output by `bplapply`, `bpmapply`, `bpvec`, `bpaggregate` or `bpvectorize`.

`bperrorTypes()` returns a character() vector of possible error types generated during parallel evaluation. Types are:

- `bperror`: Any of the following errors. This is the default value for `bpok()`.

- `remote_error`: An R error occurring while evaluating `FUN()`, e.g., taking the square root of a character vector, `sqrt("One")`.

- `unevaluated_error`: When `*Param(stop.on.error = TRUE)` (default), a remote error halts evaluation of other tasks assigned to the same worker. The return value for these unevaluated elements is an error of type `unevaluated_error`.

- `not_available_error`: Only produced by `DoparParam()` when a remote error occurs during evaluation of an element of `X` – `DoparParam()` sets all values after the remote error to this class.

- `worker_comm_error`: An error occurring while trying to communicate with workers, e.g., when a worker quits unexpectedly. when this type of error occurs, the length of the result may differ from the length of the input `X`.

### Author(s)

Michel Lang, Martin Morgan and Valerie Obenchain

### Examples

    ## -----------------------------------------------------------------------
    ## Catch errors:
    ## -----------------------------------------------------------------------

    ## By default 'stop.on.error' is TRUE in BiocParallelParam objects.  If
    ## 'stop.on.error' is TRUE an ill-fated bplapply() simply stops,
    ## displaying the error message.
    param <- SnowParam(workers = 2, stop.on.error = TRUE)
    tryCatch({
        bplapply(list(1, "two", 3), sqrt, BPPARAM = param)
    }, error=identity)

    ## If 'stop.on.error' is FALSE then the computation continues. Errors
    ## are signalled but the full evaluation can be retrieved
    param <- SnowParam(workers = 2, stop.on.error = FALSE)
    X <- list(1, "two", 3)
    result <- bptry(bplapply(X, sqrt, BPPARAM = param))
    result

    ## Check for errors:
    fail <- !bpok(result)
    fail

    ## Access the traceback with attr():
    tail(attr(result[[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. Fix the input
    ## data by changing the character "2" to a numeric 2:
    X_mod <- list(1, 2, 3)
    bplapply(X_mod, sqrt, BPPARAM = param , BPREDO = result)

[Package BiocParallel version 1.28.3 Index]