diff options
author | Johannes Ranke <jranke@uni-bremen.de> | 2016-12-21 10:35:16 +0100 |
---|---|---|
committer | Johannes Ranke <jranke@uni-bremen.de> | 2016-12-21 10:35:16 +0100 |
commit | b847fec686bc1db59079412eb18063d3514ecf75 (patch) | |
tree | 0ca2ed22905b022f9beb70ec989884718ca34385 /R/twa.R | |
parent | b07bdb3d8732a24a1fc9e8185cd6a2b21d7d0ca3 (diff) |
TWA calculation for SFO, FOMC and DFOP (parent)
Diffstat (limited to 'R/twa.R')
-rw-r--r-- | R/twa.R | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/R/twa.R b/R/twa.R new file mode 100644 index 00000000..e8894b0b --- /dev/null +++ b/R/twa.R @@ -0,0 +1,65 @@ +# Copyright (C) 2016 Johannes Ranke +# Contact: jranke@uni-bremen.de + +# This file is part of the R package mkin + +# mkin is free software: you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation, either version 3 of the License, or (at your option) any later +# version. + +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +# details. + +# You should have received a copy of the GNU General Public License along with +# this program. If not, see <http://www.gnu.org/licenses/> + +twa <- function(fit, windows) { + parms.all <- c(fit$bparms.optim, fit$bparms.fixed) + obs_vars <- fit$obs_vars + if (length(obs_vars) > 1) { + warning("Calculation of maximum time weighted average concentrations is", + "currently only implemented for the parent compound using", + "analytical solutions") + } + obs_var <- obs_vars[1] + spec = fit$mkinmod$spec + type = spec[[1]]$type + + M0 <- parms.all[paste0(obs_var, "_0")] + + if (type == "SFO") { + k_name <- paste0("k_", obs_var) + if (fit$mkinmod$use_of_ff == "min") { + k_name <- paste0(k_name, "_sink") + } + k <- parms.all[k_name] + twafunc <- function(t) { + M0 * (1 - exp(- k * t)) / (k * t) + } + } + if (type == "FOMC") { + alpha <- parms.all["alpha"] + beta <- parms.all["beta"] + twafunc <- function(t) { + M0 * (beta)/(t * (1 - alpha)) * ((t/beta + 1)^(1 - alpha) - 1) + } + } + if (type == "DFOP") { + k1 <- parms.all["k1"] + k2 <- parms.all["k2"] + g <- parms.all["g"] + twafunc <- function(t) { + M0/t * ((g/k1) * (1 - exp(- k1 * t)) + ((1 - g)/k2) * (1 - exp(- k2 * t))) + } + } + if (type %in% c("HS", "IORE", "SFORB")) { + stop("Calculation of maximum time weighted average concentrations is currently ", + "not implemented for the ", type, " model.") + } + res <- twafunc(windows) + names(res) <- windows + return(res) +} |