| Title: | Loewe's Additivity | 
| Version: | 0.1.0 | 
| Description: | Estimate model parameters to determine whether two compounds have synergy, antagonism, or Loewe's Additivity. | 
| License: | MIT + file LICENSE | 
| Depends: | R (≥ 3.1.0) | 
| Encoding: | UTF-8 | 
| LazyData: | true | 
| Suggests: | testthat (≥ 2.1.0), knitr, rmarkdown, kableExtra, devtools | 
| Imports: | dplyr, tidyr, magrittr, rlang, ggplot2, metR, gridExtra, rootSolve, viridis | 
| RoxygenNote: | 7.0.2 | 
| VignetteBuilder: | knitr | 
| NeedsCompilation: | no | 
| Packaged: | 2020-03-16 13:02:40 UTC; shannon | 
| Author: | Shannon Gallagher [aut, cre], Michael Fay [aut] | 
| Maintainer: | Shannon Gallagher <skgallagher19@gmail.com> | 
| Repository: | CRAN | 
| Date/Publication: | 2020-03-24 17:00:07 UTC | 
Pipe operator
Description
See magrittr::%>% for details.
Usage
lhs %>% rhs
Calculate the Sum of Squared Error
Description
Calculate the Sum of Squared Error
Usage
SSE_GIA(par, data, GIA_fn = base_GIA, fn_list = NULL)
Arguments
| par | named vector of parameters | 
| data | 
 | 
| GIA_fn | function to calculate GIA | 
| fn_list | additional arguments to pass GIA_fn | 
Value
sum of square error between observed and estimated
Estimate GIA according to the base model
Description
Estimate GIA according to the base model
Usage
base_GIA(model_params, dose_A, dose_B, fn_list = NULL)
Arguments
| model_params | named vector of parameters to be used in function. Specifically, the named parameters must be "beta_A", "beta_B", "gamma_A", "gamma_B", "tau_1", and "tau_2". See details for more info. | 
| dose_A | numeric vector of doses (e.g. mg/mL) of dose_A | 
| dose_B | numeric vector of doses (e.g. mg/mL) of dose_B | 
| fn_list | NULL | 
Value
estimated GIA for each combination of dose A and dose B
Details
The equation is given in full as follows.  The GIA (%) is given a as a function of the model parameters and the doses A_i and B_i, respectively.  The doses scaled by the respective ED50s \beta_A and \beta_B are denoted by A_i^* and B_i^*, respectively.  The parameters \gamma_A and \gamma_B are shape parameters.  The parameters \tau_1 and \tau_2 are interaction parameters.  Finally, \lambda_i is a weighted combination of dose A and dose B.
GIA_i = 100\%(1 - e^{-\psi_i})
\psi_i = \log(2)u_i^{v_i}
u_i = A^*_i + B_i^* + \tau_1  A^*_i B^*_i
v_i = \lambda_i \gamma_A + (1-\lambda_i) \gamma_B + \tau_1 \tau_2\lambda_i (1 - \lambda_i) \gamma_A \gamma_B
\lambda_i = \frac{A_i^*}{A_i^* + B_i^*}
A_i^* = A_i / \beta_A
B_i^* = B_i / \beta_B
Examples
model_params <- c("beta_A" = 1, "beta_B" = 2, "gamma_A" = .5,
"gamma_B" = .6,  "tau_1" = 1, "tau_2" = 0)
dose_A <- c(0, 1, 0)
dose_B <- c(0, 0, 1)
base_GIA(model_params, dose_A, dose_B)
Helper function for the bootstrap results
Description
Helper function for the bootstrap results
Usage
boot_GIA(
  par,
  gia_df,
  gia_est,
  n_boot = 100,
  alpha = 0.05,
  GIA_fn = base_GIA,
  S_fn = calc_S_base,
  fn_list = NULL,
  verbose = FALSE
)
Arguments
| par | named vector of parameters, that correspond to those used in 'GIA_fn'. | 
| gia_df | data frame with the following columns 
 | 
| gia_est | estimated values of GIA (these will be used as the 'truth') | 
| n_boot | number of boot straps to use to estimate confidence intervals of the parameters, GIA estimates, and values of S. The default is 100. If n_boot = 0, then no bootstraps will be run and only the point estimates will be returned. | 
| alpha | value of alpha. Default is .05 | 
| GIA_fn | function to calculate the GIA from dose_A and dose_B combinations and given set of parameters. Default is base_GIA | 
| S_fn | Function to calculate S. Default is calc_S_base | 
| fn_list | additional arguments to pass to GIA_fn | 
| verbose | logical indicating whether we should print where we are in the process. Default is FALSE. | 
Value
a list with the following elements
- params_esta data frame of dimension # of params x 4 where each row in the data frame is a parameter and where the columns are the mean, lower, alpha/2 quantile,and upper,100 - alpha/2 quantile 
- S_est a data frame of one row x 4 where we provide the mean, lower, and upper estimates 
- GIA_estthe original data with additional columns of the mean, lower, and upper estimates for each dose combination 
Calculate S generally
Description
Calculate S generally
Usage
calc_S(best_pars, S_fn = calc_S_base, fn_list = NULL)
Arguments
| best_pars | named vector of parameters. "tau_1" must be a name. As must "tau_2" and "gamma_A" and "gamma_B" | 
| S_fn | function to calculate | 
| fn_list | NULL | 
Value
Hewlett's S for the given model
Examples
best_pars <- c("tau_1" = 0,
              "tau_2" = 1,
              "gamma_A" = 1,
               "gamma_B" = 1)
calc_S_base(best_pars) # should be 1
Calculate S from given tau_1 for base model
Description
Calculate S from given tau_1 for base model
Usage
calc_S_base(best_pars, fn_list = NULL)
Arguments
| best_pars | named vector of parameters. "tau_1" must be a name. As must "tau_2" and "gamma_A" and "gamma_B" | 
| fn_list | NULL | 
Value
Hewlett's S for the base model.
Examples
best_pars <- c("tau_1" = 0,
              "tau_2" = 1,
              "gamma_A" = 1,
               "gamma_B" = 1)
calc_S_base(best_pars) # should be 1
CyRPA and RIPR
Description
The data is the raw data for a combination dose of CyRPA and RIPR.
- well
- one of iRBC (the max), uRBC (the min), RPMI (??), or comb (which is short for combination) 
- RIPR
- dose of RIPR in mg/mL 
- CyRPA
- dose of CyRPA in mg/mL 
- expxyrepz
- the results from experiment x, sub item y, repetition z 
Usage
cyrpa_ripr
Format
An object of class data.frame with 38 rows and 15 columns.
Examples
data("cyrpa_ripr")
head(cyrpa_ripr)
Helper function to generate code to run an experiment
Description
Helper function to generate code to run an experiment
Usage
design_experiment(
  levels_A = c(0, 1 * 2^(-4:2)),
  levels_B = c(0, 2 * 2^(-4:2)),
  par = c(beta_A = 1, beta_B = 2, gamma_A = 0.5, gamma_B = 0.5, tau_1 = 3, tau_2 = 0.05),
  n_rep = 1,
  n_sims = 100,
  noise_par = c(a0 = 3, a1 = 0.01)
)
Arguments
| levels_A | levels of A used in the combination | 
| levels_B | levels of B used in the combination | 
| par | named vector of model parameters | 
| n_rep | number of total repetitions of experiment | 
| n_sims | number of simulations to run | 
| noise_par | named vector with 'a0' and 'a1' which are used to generate noise for the GIA. | 
Details
prints out code to copy and paste into R to simulate the expected coverage of your experiment under your designed hypothesis
Function to design an experimental grid of combinations
Description
Function to design an experimental grid of combinations
Usage
design_grid(
  levels_A = c(0, 1 * 2^(-4:2)),
  levels_B = c(0, 2 * 2^(-4:2)),
  n_rep = 1
)
Arguments
| levels_A | levels of A used in the combination | 
| levels_B | levels of B used in the combination | 
| n_rep | number of total repetitions of experiment | 
Value
data frame with columns dose_A, dose_B, and GIA for all possible combinations
Take in dose A and dose B combinations and estimate GIA
Description
Take in dose A and dose B combinations and estimate GIA
Usage
estimate_GIA(model_params, dose_A, dose_B, fn = base_GIA, fn_list = NULL)
Arguments
| model_params | named vector of parameters to be used in function | 
| dose_A | numeric vector of doses (e.g. mg/mL) of dose_A | 
| dose_B | numeric vector of doses (e.g. mg/mL) of dose_B | 
| fn | the function used to calculate GIA. The default is base_GIA. See ?base_GIA for more details. | 
| fn_list | additional parameters to pass to the function to estimate GIA | 
Value
vector of the same size of dose_A and dose_B where each entry is the estimated GIA for the combination of dose A and dose B
Examples
model_params <- c("beta_A" = 1, "beta_B" = 2, "gamma_A" = .5,
"gamma_B" = .6,  "tau_1" = 1, "tau_2" = 0)
dose_A <- c(0, 1, 0)
dose_B <- c(0, 0, 1)
estimate_GIA(model_params, dose_A, dose_B)
Estimate the parameters for a given data set and model
Description
Estimate the parameters for a given data set and model
Usage
estimate_params(
  data,
  init_params = c(beta_A = 0.25, beta_B = 0.25, gamma_A = 0.5, gamma_B = 0.5, tau_1 = 0,
    tau_2 = 0),
  n_boot = 100,
  GIA_fn = base_GIA,
  S_fn = calc_S_base,
  fn_list = NULL,
  alpha = 0.05,
  verbose = FALSE
)
Arguments
| data | data frame with the following columns 
 | 
| init_params | named vector of parameters, that correspond to those used in 'GIA_fn'. These will be used as the initial guesses. A default is provided. | 
| n_boot | number of boot straps to use to estimate confidence intervals of the parameters, GIA estimates, and values of S. The default is 100. If n_boot = 0, then no bootstraps will be run and only the point estimates will be returned. | 
| GIA_fn | function to calculate the GIA from dose_A and dose_B combinations and given set of parameters. Default is base_GIA | 
| S_fn | Function to calculate S. Default is calc_S_base | 
| fn_list | additional arguments to pass to GIA_fn | 
| alpha | alpha level used to produce CIs. The bootstrap will use a two-tailed method. The default is .05 to produce a 95% CI | 
| verbose | logical indicating whether we should print where we are in the process. Default is FALSE. | 
Value
a list with the following elements
- params_esta data frame of dimension # of params x 4 where each row in the data frame is a parameter and where the columns are the mean, lower, alpha/2 quantile, and upper,100 - alpha/2 quantile 
- S_est a data frame of one row x 4 where we provide the mean, lower, and upper estimates 
- GIA_estthe original data with additional columns of the mean, lower, and upper estimates for each dose combination 
- SSESum of Square Error for the model under the best (mean) parameters 
Examples
df <- loewesadditivity::cyrpa_ripr
df$dose_A <- df$CyRPA
df$dose_B <- df$RIPR
data <- fortify_gia_data(df)
model_params <- c("beta_A" = .5, "beta_B" = .5,
                 "gamma_A" = .5, "gamma_B" = .5,
                 "tau_1" = 0, "tau_2" = 0)
n_boot <- 10
GIA_fn <- base_GIA
S_fn <- calc_S_base
fn_list <- NULL
alpha <- .05
verbose <- FALSE
out <- estimate_params(data = data,
init_params = model_params,
n_boot = n_boot,
GIA_fn = GIA_fn,
S_fn = S_fn,
fn_list = fn_list,
alpha = alpha,
verbose = verbose)
names(out)
Put GIA measurements into a dplyr format
Description
Put GIA measurements into a dplyr format
Usage
fortify_gia_data(data)
Arguments
| data | data frame of GIA measurements 
 | 
Value
long data frame with columns well, dose_A, dose_B, plate, exp_num (experiment number), plate (a or b), rep_num (repetition number), gia_mean, and average iRBC and uRBC
Examples
df <- loewesadditivity::rh5_ama1ron2
df$dose_A <- df$RH5
df$dose_B <- df$AMA1RON2
fortified_df <- fortify_gia_data(df)
head(fortified_df)
Helper function to get the ED50 line
Description
Helper function to get the ED50 line
Usage
get_ed_line(
  grid_width = 50,
  par,
  GIA_fn = base_GIA,
  fn_list = NULL,
  ed_val = 50
)
Arguments
| grid_width | number of levels to find points at | 
| par | named vector of parameters | 
| GIA_fn | function to calculate GIA | 
| fn_list | additional parameters to pass to GIA_fn | 
| ed_val | Which line to compute. Default is 50 | 
Value
data frame with the following columns
- dose_A
- dose of A (unscaled) 
- dose_B
- dose of B (unscaled) 
- GIA
- value of GIA % 
Make a grid of points
Description
Make a grid of points
Usage
make_grid(n = 40, par, Amax = 2, Bmax = 2, n_reps = 1)
Arguments
| n | number of levels on each side (Total grid is n^2). Default is 40 | 
| par | named vector of model parameters | 
| Amax | max amount of number of ED50s. Default is 2 | 
| Bmax | max amount of number of ED50s. Default is 2. | 
| n_reps | number of replicates to repeat entire grid/experiment. Default is 1. | 
Value
data frame with the following columns
- dose_A
- unscaled dose of A 
- dose_B
- unscaled dose o B 
- rep
- replicate number 
Examples
n <- 40
 par <- c("beta_A" = 1, "beta_B" = 2)
out <- make_grid(n = 2, par = par)
exp_out <- data.frame(dose_A = c(0, 2, 0, 2),
                      dose_B = c(0, 0, 4, 4),
                      rep = 1)
Plot the surface and observations
Description
Plot the surface and observations
Usage
plot_curves(
  est_list,
  dose_A = "Dose A",
  dose_B = "Dose B",
  title = "Curves of Dose Combos",
  subtitle = "",
  base_size = 14
)
Arguments
| est_list | output from  | 
| dose_A | to pass to ggplot | 
| dose_B | to pass to ggplot | 
| title | to pass to ggplot | 
| subtitle | to pass to ggplot | 
| base_size | to pass to ggplot | 
Value
ggplot object
Examples
df <- loewesadditivity::cyrpa_ripr
df$dose_A <- df$CyRPA
df$dose_B <- df$RIPR
data <- fortify_gia_data(df)
model_params <- c("beta_A" = .5, "beta_B" = .5,
                 "gamma_A" = .5, "gamma_B" = .5,
                 "tau_1" = 0, "tau_2" = 0)
n_boot <- 10
GIA_fn <- base_GIA
S_fn <- calc_S_base
fn_list <- NULL
alpha <- .05
verbose <- FALSE
out <- estimate_params(data = data,
init_params = model_params,
n_boot = n_boot,
GIA_fn = GIA_fn,
S_fn = S_fn,
fn_list = fn_list,
alpha = alpha,
verbose = verbose)
plots <- plot_curves(out, dose_A = "CyRPA",
dose_B = "RIPR")
Plot the estimated isobologram
Description
Plot the estimated isobologram
Usage
plot_isobologram(
  est_list,
  dose_A = "Dose A",
  dose_B = "Dose B",
  GIA_fn = base_GIA,
  fn_list = NULL,
  title = "Isobologram Dose Combos",
  subtitle = "",
  base_size = 14
)
Arguments
| est_list | output from  | 
| dose_A | to pass to ggplot | 
| dose_B | to pass to ggplot | 
| GIA_fn | function to calculate GIA | 
| fn_list | additional arguments to pass to GIA fn | 
| title | to pass to ggplot | 
| subtitle | to pass to ggplot | 
| base_size | to pass to ggplot | 
Value
ggplot object
Examples
df <- loewesadditivity::cyrpa_ripr
df$dose_A <- df$CyRPA
df$dose_B <- df$RIPR
data <- fortify_gia_data(df)
model_params <- c("beta_A" = .5, "beta_B" = .5,
                 "gamma_A" = .5, "gamma_B" = .5,
                 "tau_1" = 0, "tau_2" = 0)
n_boot <- 10
GIA_fn <- base_GIA
S_fn <- calc_S_base
fn_list <- NULL
alpha <- .05
verbose <- FALSE
out <- estimate_params(data = data,
init_params = model_params,
n_boot = n_boot,
GIA_fn = GIA_fn,
S_fn = S_fn,
fn_list = fn_list,
alpha = alpha,
verbose = verbose)
plot_curves(out, dose_A = "CyRPA",
dose_B = "RIPR")
Plot the surface and observations
Description
Plot the surface and observations
Usage
plot_surface(
  est_list,
  GIA_fn = base_GIA,
  fn_list = NULL,
  xlab = "Dose A",
  ylab = "Dose B",
  title = "Surface Plot of Doses",
  subtitle = "",
  base_size = 14
)
Arguments
| est_list | output from  | 
| GIA_fn | function to calculate GIA | 
| fn_list | additional arguments to pass to GIA fn | 
| xlab | to pass to ggplot | 
| ylab | to pass to ggplot | 
| title | to pass to ggplot | 
| subtitle | to pass to ggplot | 
| base_size | to pass to ggplot | 
Value
ggplot object
Examples
df <- loewesadditivity::cyrpa_ripr
df$dose_A <- df$CyRPA
df$dose_B <- df$RIPR
data <- fortify_gia_data(df)
model_params <- c("beta_A" = .5, "beta_B" = .5,
                 "gamma_A" = .5, "gamma_B" = .5,
                 "tau_1" = 0, "tau_2" = 0)
n_boot <- 10
GIA_fn <- base_GIA
S_fn <- calc_S_base
fn_list <- NULL
alpha <- .05
verbose <- FALSE
out <- estimate_params(data = data,
init_params = model_params,
n_boot = n_boot,
GIA_fn = GIA_fn,
S_fn = S_fn,
fn_list = fn_list,
alpha = alpha,
verbose = verbose)
plot_surface(out)
RH5 and AMA1RON2
Description
The data is the raw data for a combination dose of RH5 and AMA1RON2. The data was collected by PEOPLE and on DATE on this GRANT.
Usage
rh5_ama1ron2
Format
a 38 x 15 data set where the columns are of the following format
- well
- one of iRBC (the max), uRBC (the min), RPMI (??), or comb (which is short for combination) 
- AMA1RON2
- dose of AMA1RON2 in mg/mL 
- RH5
- dose of RH5 in mg/mL 
- expxyrepz
- the results from experiment x, sub item y, repetition z 
Examples
data("rh5_ama1ron2")
head(rh5_ama1ron2)
RH5 and RH4
Description
The data is the raw data for a combination dose of RH5 and RH4. The data was originally published in Williams et al. (2018).
Usage
rh5_rh4
Format
a 48 x 3 data set where the columns are of the following format
- RH4
- dose of RH4 in mg/mL 
- RH5
- dose of RH5 in mg/mL 
- GIA
- Percent Growth inhibition assay averaged over two experiments 
Examples
data("rh5_rh4")
head(rh5_rh4)
Simulate a GIA model with an assumed error structure
Description
Simulate a GIA model with an assumed error structure
Usage
simulate_coverage(
  n_sims = 10,
  n_boot = 100,
  verbose = TRUE,
  experimental_grid,
  model_par,
  alpha = 0.05,
  noise_par = c(a0 = 2, a1 = 0.01),
  GIA_fn = base_GIA,
  S_fn = calc_S_base,
  fn_list = NULL
)
Arguments
| n_sims | number of coverage simulations | 
| n_boot | number of bootstraps to use in each simulation | 
| verbose | logical indicating whether we should use print statements. Default is TRUE | 
| experimental_grid | data frame with columns 'dose_A' and 'dose_B' | 
| model_par | named vector of parameters corresponding to those used in GIA_fn() | 
| alpha | alpha level used to produce confidence intervals for each bootstrap | 
| noise_par | named vector for the noise parameter.  Must have names "a0" and "a1".  See  | 
| GIA_fn | function used to calculate GIA. Default is base_GIA(). | 
| S_fn | function to calculate S | 
| fn_list | additional parameters to pass to GIA_fn | 
Value
list with the following entries
- interaction_cov
- This is the percent of times 0 was in the (1-alpha)% confidence interval for the interaction term "tau_1" from the simulated results 
- params_cov
- This is the percent of times the true model parameter (those from model_par) lies in the (marginal) 95% confidence interval for that model parameter. 
- tau_pos
- This is the percent of times the (1-alpha)% CI of "tau_1" was completely above 0. 
- tau_neg
- This is the percent of times (1-alpha)% CI of "tau_1" is completely below zero 
Examples
df <- loewesadditivity::cyrpa_ripr
df$dose_A <- df$CyRPA
df$dose_B <- df$RIPR
data <- fortify_gia_data(df)
model_params <- c("beta_A" = .247, "beta_B" = .224,
                  "gamma_A" = .734, "gamma_B" = .806,
                  "tau_1" = .28, "tau_2" = -.28)
experimental_grid <- make_grid(par = model_params,
                               n = 5)
n_boot <- 100
n_sims <- 10
GIA_fn <- base_GIA
S_fn <- calc_S_base
fn_list <- NULL
alpha <- .05
verbose <- TRUE
## NOT RUN
##out <- simulate_coverage(n_sims = n_sims,
  ##                      n_boot = n_boot,
   ##                     verbose = TRUE,
    ##                    experimental_grid = experimental_grid,
     ##                   model_par = model_params,
     ##                   alpha = .05,
   ##                     noise_par = c("a0" = 3, "a1" = .01),
   ##                     GIA_fn = base_GIA,
   ##                     fn_list = NULL)
##out