Setup

This section describes the setup procedure.

Authentication

The data are stored in an account on https://kf.kobotoolbox.org. The login credentials for that account are shared among the PLAY Project staff. To access the site’s API programmatically, an API key was downloaded and added to the local ~/.Renviron file.

The KoBoToolBox API key is not synched to GitHub.

Set-up

To test whether the local system has the API key installed, we run the command Sys.getenv("KOBO_API_KEY").

Check KoBo API Key

kb_api <- Sys.getenv("KOBO_API_KEY")
if ((length(kb_api) != 1) || (!is.character(kb_api))) {
  stop("'KOBO_API_KEY' not installed in .Renviron")
} else {
  message("'KOBO_API_KEY' installed.")
}
## 'KOBO_API_KEY' installed.

Check Databrary credentials

The databraryr package handles authenticating to Databrary. For scripting access to Databrary that require authentication, it is useful to store the user’s Databrary login (email) in .Renviron using the R command Sys.setenv(DATABRARY_LOGIN = "<email@provider.com>") where you substitute your Databrary login (email) for <email@provider.com>. When this has been accomplished the following code can be run to check the status of the saved variable.

db_logon <- Sys.getenv("DATABRARY_LOGIN")
if ((length(db_logon) != 1) || (!is.character(db_logon)) || (db_logon == "")) {
  stop("'DATABRARY_LOGIN' not installed in .Renviron")
} else {
  message("'DATABRARY_LOGIN' installed.")
}
## 'DATABRARY_LOGIN' installed.

Install dependencies

We now use the renv package to manage package dependencies.

Load/source helper functions

Most of the work is contained in R/functions.R. This is sourced when we run tar_make() from the targets package.

We run targets::tar_make() manually for the time being.

None of the outputs are synced to GitHub.

0.1 Approach

To make the workflow more robust and reproducible, much of the work is embedded in functions and extensive use is made of the {targets} package. This document describes the workflow, but none of these code chunks are executed.

We leave execution to the targets::tar_make() function which updates components as needed.

I am currently working on implementing most of the functions using the box package. This allows better isolation of dependencies within different components of the workflow.

The box-related functions are in a new play/ directory, and the R source files are divided into categories. The functions related to processing the screening/demographic data are in play/screen.R.

They will be loaded into the workspace via box::use(play/screen) or for modules within play/ via box::use(./screen).