R/kineticmodel.R

##
##
## Copyright (c) 2009, Brandon Whitcher and Volker Schmid
## All rights reserved.
## 
## Redistribution and use in source and binary forms, with or without
## modification, are permitted provided that the following conditions are
## met:
## 
##     * Redistributions of source code must retain the above copyright
##       notice, this list of conditions and the following disclaimer. 
##     * Redistributions in binary form must reproduce the above
##       copyright notice, this list of conditions and the following
##       disclaimer in the documentation and/or other materials provided
##       with the distribution.
##     * The names of the authors may not be used to endorse or promote
##       products derived from this software without specific prior
##       written permission.
## 
## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
## HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
##
##
## $Id: kineticmodel.R 332 2010-01-29 16:54:07Z bjw34032 $

kineticModel <- function(time, par, model="extended", aif="fritz.hansen") {

  d <- dim(par["ktrans"])
  if (!is.numeric(d)) {
    d <- length(par["ktrans"])
  }
  T <- length(time)
  dd <- prod(d)
  
  if (!(is.numeric(par["kep"]))) {
    par["kep"] <- par["ktrans"] / par["ve"]
  }
  
  p <- aifParameters(aif)
  func.model <- compartmentalModel(model)
  result <- switch(model,
                   weinmann = {
                     func.model(rep(time, dd),
                                ##rep(log(par$ktrans), each=TRUE),
                                ##rep(log(par$kep), each=TRUE),
                                rep(log(par), each=TRUE),
                                p)
                     },
                   extended = {
                     func.model(rep(time, dd),
                                ##rep(log(par$vp), each=TRUE),
                                ##rep(log(par$ktrans), each=TRUE),
                                ##rep(log(par$kep), each=TRUE),
                                rep(log(par), each=TRUE),
                                p)
                   },
                   stop("Model is not currently supported."))
  result <- array(result, c(T,dd))
  result <- aperm(result, c(2:length(dim(result)),1))
  return(drop(result))
}

Try the dcemriS4 package in your browser

Any scripts or data that you put into this service are public.

dcemriS4 documentation built on May 2, 2019, 4:33 p.m.