aboutsummaryrefslogtreecommitdiff
path: root/R
diff options
context:
space:
mode:
Diffstat (limited to 'R')
-rw-r--r--R/DFOP.solution.R27
-rw-r--r--R/FOMC.solution.R36
-rw-r--r--R/HS.solution.R29
-rw-r--r--R/IORE.solution.R37
-rw-r--r--R/SFO.solution.R22
-rw-r--r--R/SFORB.solution.R35
-rw-r--r--R/parent_solutions.R231
7 files changed, 231 insertions, 186 deletions
diff --git a/R/DFOP.solution.R b/R/DFOP.solution.R
deleted file mode 100644
index 608e7e18..00000000
--- a/R/DFOP.solution.R
+++ /dev/null
@@ -1,27 +0,0 @@
-#' Double First-Order in Parallel kinetics
-#'
-#' Function describing decline from a defined starting value using the sum of
-#' two exponential decline functions.
-#'
-#' @param t Time.
-#' @param parent.0 Starting value for the response variable at time zero.
-#' @param k1 First kinetic constant.
-#' @param k2 Second kinetic constant.
-#' @param g Fraction of the starting value declining according to the first
-#' kinetic constant.
-#' @return The value of the response variable at time \code{t}.
-#' @references FOCUS (2006) \dQuote{Guidance Document on Estimating Persistence
-#' and Degradation Kinetics from Environmental Fate Studies on Pesticides in
-#' EU Registration} Report of the FOCUS Work Group on Degradation Kinetics,
-#' EC Document Reference Sanco/10058/2005 version 2.0, 434 pp,
-#' \url{http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics}
-#' @examples
-#'
-#' plot(function(x) DFOP.solution(x, 100, 5, 0.5, 0.3), 0, 4, ylim = c(0,100))
-#'
-#' @export
-DFOP.solution <- function(t, parent.0, k1, k2, g)
-{
- parent = g * parent.0 * exp(-k1 * t) +
- (1 - g) * parent.0 * exp(-k2 * t)
-}
diff --git a/R/FOMC.solution.R b/R/FOMC.solution.R
deleted file mode 100644
index f5e6a7ea..00000000
--- a/R/FOMC.solution.R
+++ /dev/null
@@ -1,36 +0,0 @@
-#' First-Order Multi-Compartment kinetics
-#'
-#' Function describing exponential decline from a defined starting value, with
-#' a decreasing rate constant.
-#'
-#' The form given here differs slightly from the original reference by
-#' Gustafson and Holden (1990). The parameter \code{beta} corresponds to 1/beta
-#' in the original equation.
-#'
-#' @param t Time.
-#' @param parent.0 Starting value for the response variable at time zero.
-#' @param alpha Shape parameter determined by coefficient of variation of rate
-#' constant values.
-#' @param beta Location parameter.
-#' @return The value of the response variable at time \code{t}.
-#' @note The solution of the FOMC kinetic model reduces to the
-#' \code{\link{SFO.solution}} for large values of \code{alpha} and
-#' \code{beta} with \eqn{k = \frac{\beta}{\alpha}}{k = beta/alpha}.
-#' @references FOCUS (2006) \dQuote{Guidance Document on Estimating Persistence
-#' and Degradation Kinetics from Environmental Fate Studies on Pesticides in
-#' EU Registration} Report of the FOCUS Work Group on Degradation Kinetics,
-#' EC Document Reference Sanco/10058/2005 version 2.0, 434 pp,
-#' \url{http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics}
-#'
-#' Gustafson DI and Holden LR (1990) Nonlinear pesticide dissipation in soil:
-#' A new model based on spatial variability. \emph{Environmental Science and
-#' Technology} \bold{24}, 1032-1038
-#' @examples
-#'
-#' plot(function(x) FOMC.solution(x, 100, 10, 2), 0, 2, ylim = c(0, 100))
-#'
-#' @export
-FOMC.solution <- function(t, parent.0, alpha, beta)
-{
- parent = parent.0 / (t/beta + 1)^alpha
-}
diff --git a/R/HS.solution.R b/R/HS.solution.R
deleted file mode 100644
index 890ad8ff..00000000
--- a/R/HS.solution.R
+++ /dev/null
@@ -1,29 +0,0 @@
-#' Hockey-Stick kinetics
-#'
-#' Function describing two exponential decline functions with a break point
-#' between them.
-#'
-#' @param t Time.
-#' @param parent.0 Starting value for the response variable at time zero.
-#' @param k1 First kinetic constant.
-#' @param k2 Second kinetic constant.
-#' @param tb Break point. Before this time, exponential decline according to
-#' \code{k1} is calculated, after this time, exponential decline proceeds
-#' according to \code{k2}.
-#' @return The value of the response variable at time \code{t}.
-#' @references FOCUS (2006) \dQuote{Guidance Document on Estimating Persistence
-#' and Degradation Kinetics from Environmental Fate Studies on Pesticides in
-#' EU Registration} Report of the FOCUS Work Group on Degradation Kinetics,
-#' EC Document Reference Sanco/10058/2005 version 2.0, 434 pp,
-#' \url{http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics}
-#' @examples
-#'
-#' plot(function(x) HS.solution(x, 100, 2, 0.3, 0.5), 0, 2, ylim=c(0,100))
-#'
-#' @export
-HS.solution <- function(t, parent.0, k1, k2, tb)
-{
- parent = ifelse(t <= tb,
- parent.0 * exp(-k1 * t),
- parent.0 * exp(-k1 * tb) * exp(-k2 * (t - tb)))
-}
diff --git a/R/IORE.solution.R b/R/IORE.solution.R
deleted file mode 100644
index 58807108..00000000
--- a/R/IORE.solution.R
+++ /dev/null
@@ -1,37 +0,0 @@
-#' Indeterminate order rate equation kinetics
-#'
-#' Function describing exponential decline from a defined starting value, with
-#' a concentration dependent rate constant.
-#'
-#' @param t Time.
-#' @param parent.0 Starting value for the response variable at time zero.
-#' @param k__iore Rate constant. Note that this depends on the concentration
-#' units used.
-#' @param N Exponent describing the nonlinearity of the rate equation
-#' @return The value of the response variable at time \code{t}.
-#' @note The solution of the IORE kinetic model reduces to the
-#' \code{\link{SFO.solution}} if N = 1. The parameters of the IORE model can
-#' be transformed to equivalent parameters of the FOMC mode - see the NAFTA
-#' guidance for details.
-#' @references NAFTA Technical Working Group on Pesticides (not dated) Guidance
-#' for Evaluating and Calculating Degradation Kinetics in Environmental Media
-#' @keywords manip
-#' @examples
-#'
-#' plot(function(x) IORE.solution(x, 100, 0.2, 1.3), 0, 2, ylim = c(0, 100))
-#' \dontrun{
-#' fit.fomc <- mkinfit("FOMC", FOCUS_2006_C, quiet = TRUE)
-#' fit.iore <- mkinfit("IORE", FOCUS_2006_C, quiet = TRUE)
-#' fit.iore.deS <- mkinfit("IORE", FOCUS_2006_C, solution_type = "deSolve", quiet = TRUE)
-#'
-#' print(data.frame(fit.fomc$par, fit.iore$par, fit.iore.deS$par,
-#' row.names = paste("model par", 1:4)))
-#' print(rbind(fomc = endpoints(fit.fomc)$distimes, iore = endpoints(fit.iore)$distimes,
-#' iore.deS = endpoints(fit.iore)$distimes))
-#' }
-#'
-#' @export
-IORE.solution <- function(t, parent.0, k__iore, N)
-{
- parent = (parent.0^(1 - N) - (1 - N) * k__iore * t)^(1/(1 - N))
-}
diff --git a/R/SFO.solution.R b/R/SFO.solution.R
deleted file mode 100644
index 17c16a4d..00000000
--- a/R/SFO.solution.R
+++ /dev/null
@@ -1,22 +0,0 @@
-#' Single First-Order kinetics
-#'
-#' Function describing exponential decline from a defined starting value.
-#'
-#' @param t Time.
-#' @param parent.0 Starting value for the response variable at time zero.
-#' @param k Kinetic constant.
-#' @return The value of the response variable at time \code{t}.
-#' @references FOCUS (2006) \dQuote{Guidance Document on Estimating Persistence
-#' and Degradation Kinetics from Environmental Fate Studies on Pesticides in
-#' EU Registration} Report of the FOCUS Work Group on Degradation Kinetics,
-#' EC Document Reference Sanco/10058/2005 version 2.0, 434 pp,
-#' \url{http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics}
-#' @examples
-#'
-#' \dontrun{plot(function(x) SFO.solution(x, 100, 3), 0, 2)}
-#'
-#' @export
-SFO.solution <- function(t, parent.0, k)
-{
- parent = parent.0 * exp(-k * t)
-}
diff --git a/R/SFORB.solution.R b/R/SFORB.solution.R
deleted file mode 100644
index 2abe4577..00000000
--- a/R/SFORB.solution.R
+++ /dev/null
@@ -1,35 +0,0 @@
-#' Single First-Order Reversible Binding kinetics
-#'
-#' Function describing the solution of the differential equations describing
-#' the kinetic model with first-order terms for a two-way transfer from a free
-#' to a bound fraction, and a first-order degradation term for the free
-#' fraction. The initial condition is a defined amount in the free fraction
-#' and no substance in the bound fraction.
-#'
-#' @param t Time.
-#' @param parent.0 Starting value for the response variable at time zero.
-#' @param k_12 Kinetic constant describing transfer from free to bound.
-#' @param k_21 Kinetic constant describing transfer from bound to free.
-#' @param k_1output Kinetic constant describing degradation of the free
-#' fraction.
-#' @return The value of the response variable, which is the sum of free and
-#' bound fractions at time \code{t}.
-#' @references FOCUS (2006) \dQuote{Guidance Document on Estimating Persistence
-#' and Degradation Kinetics from Environmental Fate Studies on Pesticides in
-#' EU Registration} Report of the FOCUS Work Group on Degradation Kinetics,
-#' EC Document Reference Sanco/10058/2005 version 2.0, 434 pp,
-#' \url{http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics}
-#' @examples
-#'
-#' \dontrun{plot(function(x) SFORB.solution(x, 100, 0.5, 2, 3), 0, 2)}
-#'
-#' @export
-SFORB.solution = function(t, parent.0, k_12, k_21, k_1output) {
- sqrt_exp = sqrt(1/4 * (k_12 + k_21 + k_1output)^2 + k_12 * k_21 - (k_12 + k_1output) * k_21)
- b1 = 0.5 * (k_12 + k_21 + k_1output) + sqrt_exp
- b2 = 0.5 * (k_12 + k_21 + k_1output) - sqrt_exp
-
- parent = parent.0 *
- (((k_12 + k_21 - b1)/(b2 - b1)) * exp(-b1 * t) +
- ((k_12 + k_21 - b2)/(b1 - b2)) * exp(-b2 * t))
-}
diff --git a/R/parent_solutions.R b/R/parent_solutions.R
new file mode 100644
index 00000000..f3d3e963
--- /dev/null
+++ b/R/parent_solutions.R
@@ -0,0 +1,231 @@
+#' Single First-Order kinetics
+#'
+#' Function describing exponential decline from a defined starting value.
+#'
+#' @family parent solutions
+#' @param t Time.
+#' @param parent_0 Starting value for the response variable at time zero.
+#' @param k Kinetic rate constant.
+#' @return The value of the response variable at time \code{t}.
+#' @references
+#' FOCUS (2006) \dQuote{Guidance Document on Estimating Persistence
+#' and Degradation Kinetics from Environmental Fate Studies on Pesticides in
+#' EU Registration} Report of the FOCUS Work Group on Degradation Kinetics,
+#' EC Document Reference Sanco/10058/2005 version 2.0, 434 pp,
+#' \url{http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics}
+#' FOCUS (2014) \dQuote{Generic guidance for Estimating Persistence
+#' and Degradation Kinetics from Environmental Fate Studies on Pesticides in
+#' EU Registration} Report of the FOCUS Work Group on Degradation Kinetics,
+#' Version 1.1, 18 December 2014
+#' \url{http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics}
+#' @examples
+#'
+#' \dontrun{plot(function(x) SFO.solution(x, 100, 3), 0, 2)}
+#'
+#' @export
+SFO.solution <- function(t, parent_0, k)
+{
+ parent = parent_0 * exp(-k * t)
+}
+
+#' First-Order Multi-Compartment kinetics
+#'
+#' Function describing exponential decline from a defined starting value, with
+#' a decreasing rate constant.
+#'
+#' The form given here differs slightly from the original reference by
+#' Gustafson and Holden (1990). The parameter \code{beta} corresponds to 1/beta
+#' in the original equation.
+#'
+#' @family parent solutions
+#' @inherit SFO.solution
+#' @param alpha Shape parameter determined by coefficient of variation of rate
+#' constant values.
+#' @param beta Location parameter.
+#' @note The solution of the FOMC kinetic model reduces to the
+#' \code{\link{SFO.solution}} for large values of \code{alpha} and
+#' \code{beta} with \eqn{k = \frac{\beta}{\alpha}}{k = beta/alpha}.
+#' @references FOCUS (2006) \dQuote{Guidance Document on Estimating Persistence
+#' and Degradation Kinetics from Environmental Fate Studies on Pesticides in
+#' EU Registration} Report of the FOCUS Work Group on Degradation Kinetics,
+#' EC Document Reference Sanco/10058/2005 version 2.0, 434 pp,
+#' \url{http://esdac.jrc.ec.europa.eu/projects/degradation-kinetics}
+#'
+#' Gustafson DI and Holden LR (1990) Nonlinear pesticide dissipation in soil:
+#' A new model based on spatial variability. \emph{Environmental Science and
+#' Technology} \bold{24}, 1032-1038
+#' @examples
+#'
+#' plot(function(x) FOMC.solution(x, 100, 10, 2), 0, 2, ylim = c(0, 100))
+#'
+#' @export
+FOMC.solution <- function(t, parent_0, alpha, beta)
+{
+ parent = parent_0 / (t/beta + 1)^alpha
+}
+
+#' Indeterminate order rate equation kinetics
+#'
+#' Function describing exponential decline from a defined starting value, with
+#' a concentration dependent rate constant.
+#'
+#' @family parent solutions
+#' @inherit SFO.solution
+#' @param k__iore Rate constant. Note that this depends on the concentration
+#' units used.
+#' @param N Exponent describing the nonlinearity of the rate equation
+#' @note The solution of the IORE kinetic model reduces to the
+#' \code{\link{SFO.solution}} if N = 1. The parameters of the IORE model can
+#' be transformed to equivalent parameters of the FOMC mode - see the NAFTA
+#' guidance for details.
+#' @references NAFTA Technical Working Group on Pesticides (not dated) Guidance
+#' for Evaluating and Calculating Degradation Kinetics in Environmental Media
+#' @examples
+#'
+#' plot(function(x) IORE.solution(x, 100, 0.2, 1.3), 0, 2, ylim = c(0, 100))
+#' \dontrun{
+#' fit.fomc <- mkinfit("FOMC", FOCUS_2006_C, quiet = TRUE)
+#' fit.iore <- mkinfit("IORE", FOCUS_2006_C, quiet = TRUE)
+#' fit.iore.deS <- mkinfit("IORE", FOCUS_2006_C, solution_type = "deSolve", quiet = TRUE)
+#'
+#' print(data.frame(fit.fomc$par, fit.iore$par, fit.iore.deS$par,
+#' row.names = paste("model par", 1:4)))
+#' print(rbind(fomc = endpoints(fit.fomc)$distimes, iore = endpoints(fit.iore)$distimes,
+#' iore.deS = endpoints(fit.iore)$distimes))
+#' }
+#'
+#' @export
+IORE.solution <- function(t, parent_0, k__iore, N)
+{
+ parent = (parent_0^(1 - N) - (1 - N) * k__iore * t)^(1/(1 - N))
+}
+
+#' Double First-Order in Parallel kinetics
+#'
+#' Function describing decline from a defined starting value using the sum of
+#' two exponential decline functions.
+#'
+#' @family parent solutions
+#' @inherit SFO.solution
+#' @param t Time.
+#' @param k1 First kinetic constant.
+#' @param k2 Second kinetic constant.
+#' @param g Fraction of the starting value declining according to the first
+#' kinetic constant.
+#' @examples
+#'
+#' plot(function(x) DFOP.solution(x, 100, 5, 0.5, 0.3), 0, 4, ylim = c(0,100))
+#'
+#' @export
+DFOP.solution <- function(t, parent_0, k1, k2, g)
+{
+ parent = g * parent_0 * exp(-k1 * t) +
+ (1 - g) * parent_0 * exp(-k2 * t)
+}
+
+#' Hockey-Stick kinetics
+#'
+#' Function describing two exponential decline functions with a break point
+#' between them.
+#'
+#' @family parent solutions
+#' @inherit HS.solution
+#' @param tb Break point. Before this time, exponential decline according to
+#' \code{k1} is calculated, after this time, exponential decline proceeds
+#' according to \code{k2}.
+#' @examples
+#'
+#' plot(function(x) HS.solution(x, 100, 2, 0.3, 0.5), 0, 2, ylim=c(0,100))
+#'
+#' @export
+HS.solution <- function(t, parent_0, k1, k2, tb)
+{
+ parent = ifelse(t <= tb,
+ parent_0 * exp(-k1 * t),
+ parent_0 * exp(-k1 * tb) * exp(-k2 * (t - tb)))
+}
+
+#' Single First-Order Reversible Binding kinetics
+#'
+#' Function describing the solution of the differential equations describing
+#' the kinetic model with first-order terms for a two-way transfer from a free
+#' to a bound fraction, and a first-order degradation term for the free
+#' fraction. The initial condition is a defined amount in the free fraction
+#' and no substance in the bound fraction.
+#'
+#' @family parent solutions
+#' @inherit HS.solution
+#' @param k_12 Kinetic constant describing transfer from free to bound.
+#' @param k_21 Kinetic constant describing transfer from bound to free.
+#' @param k_1output Kinetic constant describing degradation of the free
+#' fraction.
+#' @return The value of the response variable, which is the sum of free and
+#' bound fractions at time \code{t}.
+#' @examples
+#'
+#' \dontrun{plot(function(x) SFORB.solution(x, 100, 0.5, 2, 3), 0, 2)}
+#'
+#' @export
+SFORB.solution = function(t, parent_0, k_12, k_21, k_1output) {
+ sqrt_exp = sqrt(1/4 * (k_12 + k_21 + k_1output)^2 + k_12 * k_21 - (k_12 + k_1output) * k_21)
+ b1 = 0.5 * (k_12 + k_21 + k_1output) + sqrt_exp
+ b2 = 0.5 * (k_12 + k_21 + k_1output) - sqrt_exp
+
+ parent = parent_0 *
+ (((k_12 + k_21 - b1)/(b2 - b1)) * exp(-b1 * t) +
+ ((k_12 + k_21 - b2)/(b1 - b2)) * exp(-b2 * t))
+}
+
+#' Logistic kinetics
+#'
+#' Function describing exponential decline from a defined starting value, with
+#' an increasing rate constant, supposedly caused by microbial growth
+#'
+#' @family parent solutions
+#' @inherit SFO.solution
+#' @param kmax Maximum rate constant.
+#' @param k0 Minumum rate constant effective at time zero.
+#' @param r Growth rate of the increase in the rate constant.
+#' @note The solution of the logistic model reduces to the
+#' \code{\link{SFO.solution}} if \code{k0} is equal to \code{kmax}.
+#' @examples
+#'
+#' # Reproduce the plot on page 57 of FOCUS (2014)
+#' plot(function(x) logistic.solution(x, 100, 0.08, 0.0001, 0.2),
+#' from = 0, to = 100, ylim = c(0, 100),
+#' xlab = "Time", ylab = "Residue")
+#' plot(function(x) logistic.solution(x, 100, 0.08, 0.0001, 0.4),
+#' from = 0, to = 100, add = TRUE, lty = 2, col = 2)
+#' plot(function(x) logistic.solution(x, 100, 0.08, 0.0001, 0.8),
+#' from = 0, to = 100, add = TRUE, lty = 3, col = 3)
+#' plot(function(x) logistic.solution(x, 100, 0.08, 0.001, 0.2),
+#' from = 0, to = 100, add = TRUE, lty = 4, col = 4)
+#' plot(function(x) logistic.solution(x, 100, 0.08, 0.08, 0.2),
+#' from = 0, to = 100, add = TRUE, lty = 5, col = 5)
+#' legend("topright", inset = 0.05,
+#' legend = paste0("k0 = ", c(0.0001, 0.0001, 0.0001, 0.001, 0.08),
+#' ", r = ", c(0.2, 0.4, 0.8, 0.2, 0.2)),
+#' lty = 1:5, col = 1:5)
+#'
+#' # Fit with synthetic data
+#' logistic <- mkinmod(parent = mkinsub("logistic"))
+#'
+#' sampling_times = c(0, 1, 3, 7, 14, 28, 60, 90, 120)
+#' parms_logistic <- c(kmax = 0.08, k0 = 0.0001, r = 0.2)
+#' d_logistic <- mkinpredict(logistic,
+#' parms_logistic, c(parent = 100),
+#' sampling_times)
+#' d_2_1 <- add_err(d_logistic,
+#' sdfunc = function(x) sigma_twocomp(x, 0.5, 0.07),
+#' n = 1, reps = 2, digits = 5, LOD = 0.1, seed = 123456)[[1]]
+#'
+#' m <- mkinfit("logistic", d_2_1, quiet = TRUE)
+#' plot_sep(m)
+#' summary(m)$bpar
+#' endpoints(m)$distimes
+#'
+#' @export
+logistic.solution <- function(t, parent_0, kmax, k0, r)
+{
+ parent = parent_0 * (kmax / (kmax - k0 + k0 * exp (r * t))) ^(kmax/r)
+}

Contact - Imprint