#' Calculate the amounts in all compartments in a compartmental PK system
#' based on a given concentration in the central compartment, and assuming
#' steady state.
#'
#' @param conc concentration in central compartment
#' @param parameters for PK model
#' @param n_cmt number of compartments
#' @export
calc_amts_for_conc <- function(conc = 10, parameters = NULL, n_cmt = 1) {
if(!(n_cmt %in% c(1,2,3))) {
stop("Number of compartments needs to be either 1, 2, or 3.")
}
if(n_cmt == 1) {
if(is.null(parameters$V)) {
stop("Need parameter V!")
}
A <- c(conc * parameters$V)
}
if(n_cmt == 2) {
if(length(unlist(parameters[c("V", "V2")])) != 2) {
stop("Need parameters V, V2!")
}
A <- c(0, 0)
A[1] <- c(conc * parameters$V)
# assuming ss: Q/V * A[1] = Q/V2 * A[2]
# therefore A[2] = Q/V * A[1] / (Q/V2) = V2/V * A[1]
A[2] <- (parameters$V2/parameters$V) * A[1]
}
if(n_cmt == 3) {
if(length(unlist(parameters[c("V", "V2", "V3")])) != 3) {
stop("Need parameters V, V2, V3!")
}
A <- c(0, 0, 0)
A[1] <- c(conc * parameters$V)
A[2] <- (parameters$V2/parameters$V) * A[1]
A[3] <- (parameters$V3/parameters$V) * A[1]
}
return(A)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.