Skip to content
Snippets Groups Projects

Some bugfixes and more flexible concentration lengths

Merged Sebastian Henz requested to merge develop into master
5 files
+ 13
9
Compare changes
  • Side-by-side
  • Inline
Files
5
+ 11
10
@@ -31,7 +31,9 @@
#'
#' @param model_a,model_b The ecxsys models of the toxicants.
#' @param concentration_a,concentration_b The concentrations of the toxicants in
#' the mixture. Both vectors must be the same length.
#' the mixture. Both vectors must either be the same length or the longer
#' length must be a multiple of the shorter length. That's because the shorter
#' concentration vector gets recycled to the length of the longer one.
#' @param proportion_ca The proportion of concentration addition in the
#' calculation of the toxicant stress of the mixture. Must be between 0 and 1.
#' @param effect_max Controls the scaling of the result. This represents the
@@ -61,11 +63,11 @@
#'
#' # Example of symmetric prediction:
#' conc_a <- c(0, 0.03, 0.3, 3)
#' conc_b <- rep(5.5, 4)
#' conc_b <- 5.5
#' prop_ca <- 0.75
#' effect_a <- predict_mixture(toxicant_a , toxicant_b , conc_a, conc_b, prop_ca)
#' effect_b <- predict_mixture(toxicant_b , toxicant_a , conc_b, conc_a, prop_ca)
#' identical(effect_a$mixture_effect, effect_b$mixture_effect)
#' mix_a <- predict_mixture(toxicant_a , toxicant_b , conc_a, conc_b, prop_ca)
#' mix_b <- predict_mixture(toxicant_b , toxicant_a , conc_b, conc_a, prop_ca)
#' identical(mix_a$effect, mix_b$effect)
#'
#' @export
predict_mixture <- function(model_a,
@@ -81,7 +83,6 @@ predict_mixture <- function(model_a,
is.numeric(concentration_b),
length(concentration_a) > 0,
length(concentration_b) > 0,
length(concentration_a) == length(concentration_b),
all(!is.na(concentration_a)),
all(!is.na(concentration_b)),
proportion_ca >= 0,
@@ -129,11 +130,11 @@ predict_mixture <- function(model_a,
proportion_sam <- 1 - proportion_ca
stress_tox_total <- stress_tox_ca * proportion_ca + stress_tox_sam * proportion_sam
stress_total <- stress_tox_total + sys_total
mixture_effect <- stress_to_effect(stress_total) * effect_max
effect <- stress_to_effect(stress_total) * effect_max
# unname() to remove the name when concentration_a is a single number.
mixture_effect <- unname(mixture_effect)
data.frame(concentration_a, concentration_b, mixture_effect)
# Setting row.names to NULL to prevent row names when one of the
# concentrations is a single number.
data.frame(concentration_a, concentration_b, effect, row.names = NULL)
}
Loading