--- a +++ b/vignettes/Rcpp_API.Rmd @@ -0,0 +1,110 @@ +--- +title: "outbreaker2: Rcpp API" +author: "Thibaut Jombart" +date: "`r Sys.Date()`" +output: + rmarkdown::html_vignette: + toc: true + toc_depth: 2 +vignette: > + %\VignetteIndexEntry{outbreaker2: Rcpp API} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +--- + + + +# List of available functions + +The C++ functions bound to R via Rcpp used in *outbreaker2* for priors, +likelihoods and movements are not visible to the user, as they are not exported +by the package. However, advanced users can access these functions using `get_cpp_api()`, which returns an environment with all relevant functions: + +```{r} +library(outbreaker2) + +## get all functions in an environment +x <- get_cpp_api() +x + +## check content +ls(x) + +## all functions are Rcpp bindings to a C++ function +x$cpp_ll_all + +``` + + + +# Function signatures + +These functions take the following arguments: +```{r, arguments} + +list_args <- lapply(x, args)[ls(x)] +list_args + +``` + +Arguments are detailed in the next section. + + + +# Arguments + +Arguments of the Rcpp-bound C++ functions are: +```{r} + +list_formals <- lapply(x, formals) +args <- sort(unique(unlist(lapply(list_formals, names)))) +args + +``` + +- **`alpha`**: a vector of integers of length 'N' (number of cases), indicating + infectors of each case, with values from 1 to N; missing values should be + `NA` + +- **`config`**: a list containing configuration settings as returned by + `create_config` + +- **`custom_function`**: a R function for a custom prior, with a single + argument, which must be a list of parameters and augmented data with the + class `outbreaker_param`; returned values must be **on the log scale** + +- **`custom_functions`**: a list of R functions obeying the rules of +`custom_function`, named according to the priors; currently available names are: + +```{r, echo = FALSE} + +temp <- sub("cpp_prior_", "", ls(x, pattern = "cpp_prior.*")) +setdiff(temp, "all") + +``` + +- **`custom_ll`**: a R function for a custom likelihood, taking two arguments: + `data` (see `data`), and `param` (see `param`) + +- **`custom_prior`**: same as `custom_function` + +- **`data`**: a valid 'outbreaker_data' list + +- **`i`**: an integer scalar indicating the index of a case, from 1 to N (number of cases) + +- **`list_custom_ll`**: a list of R functions obeying the rules of `custom_ll`, + named according to the computed likelihood component; available names are: + +```{r, echo = FALSE} +temp <- sub("cpp_ll_", "", ls(x, pattern = "cpp_ll.*")) +setdiff(temp, c("timing", "all")) +``` + +- **`param`**: a list containing parameters and augmented data with the class + `outbreaker_param` + +- **`t_inf`**: a vector of integers of length N (number of cases), indicating + infection dates of each case; missing values should be `NA` + + +- **`x`**: a vector of integers to be sampled from