Learn R Programming

dcemriS4 (version 0.51)

dcemri.lm: Pharmacokinetic Models for Dynamic Contrast-Enhanced MRI Data

Description

Parameter estimation for single compartment models is performed using literature-based or user-specified arterial input functions. The Levenburg-Marquardt algorithm does the heavy lifting.

Usage

## S3 method for class 'array':
dcemri.lm(conc, time, img.mask, model="extended", aif=NULL,
          control=minpack.lm::nls.lm.control(), user=NULL, guess=NULL,
          multicore=FALSE, verbose=FALSE, ...)

Arguments

conc
is a multidimensional (1D-4D) array of contrast agent concentrations. The last dimension is assumed to be temporal, while the previous dimensions are assumed to be spatial.
time
is a vector of acquisition times (in minutes) relative to injection of the contrast agent. Negative values should be used prior to the injection.
img.mask
is a (logical) multidimensional array that identifies the voxels to be analyzed. Has to have same dimension as conc minus temporal dimension.
model
is a character string that identifies the type of compartmental model to be used. Acceptable models include: [object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
aif
is a character string that identifies the parameters of the type of arterial input function (AIF) used with the above model. Acceptable values are:
  • tofts.kermode
{(default) for the weinmann and

Value

  • Parameter estimates and their standard errors are provided for the masked region of the multidimensional array. All multi-dimensional arrays are provided in nifti format.

    They include:

  • ktransTransfer rate from plasma to the extracellular, extravascular space (EES).
  • kepRate parameter for transport from the EES to plasma.
  • veFractional occupancy by EES (the ratio between $K^{trans}$ and $k_{ep}$).
  • vpFractional occupancy by plasma.
  • ktranserrorStandard error for $K^{trans}$.
  • keperrorStandard error for $k_{ep}$.
  • vperrorStandard error for $v_p$.
  • The residual sum-of-squares is also provided, along with the original acquisition times (for plotting purposes).

item

  • control
  • user
  • guess
  • multicore
  • verbose
  • ...

code

FALSE

pkg

multicore

Details

Compartmental models are the solution to the modified general rate equation (Kety 1951). The specific parametric models considered here include the basic Kety model $$C_t(t)=K^{trans}\left[C_p(t)\otimes\exp(-k_{ep}t)\right],$$ where $\otimes$ is the convoluation operator, and the so-called extended Kety model $$C_t(t)=v_pC_p(t)+K^{trans}\left[C_p(t)\otimes\exp(-k_{ep}t)\right].$$ The arterial input function must be either literature-based (with fixed parameters) or the exponential AIF from Orton et al. (2008) with user-defined parameters.

References

Ahearn, T.S., Staff, R.T., Redpath, T.W. and Semple, S.I.K. (2005) The use of the Levenburg-Marquardt curve-fitting algorithm in pharmacokinetic modelling of DCE-MRI data, Physics in Medicine and Biology, 50, N85-N92.

Fritz-Hansen, T., Rostrup, E., Larsson, H.B.W, Sondergaard, L., Ring, P. and Henriksen, O. (1993) Measurement of the arterial concentration of Gd-DTPA using MRI: A step toward quantitative perfusion imaging, Magnetic Resonance in Medicine, 36, 225-231.

Orton, M.R., Collins, D.J., Walker-Samuel, S., d'Arcy, J.A., Hawkes, D.J., Atkinson, D. and Leach, M.O. (2007) Bayesian estimation of pharmacokinetic parameters for DCE-MRI with a robust treatment of enhancement onset time, Physics in Medicine and Biology 52, 2393-2408. Orton, M.R., d'Arcy, J.A., Walker-Samuel, S., Hawkes, D.J., Atkinson, D., Collins, D.J. and Leach, M.O. (2008) Computationally efficient vascular input function models for quantitative kinetic modelling using DCE-MRI, Physics in Medicine and Biology 53, 1225-1239.

Tofts, P.S., Brix, G, Buckley, D.L., Evelhoch, J.L., Henderson, E., Knopp, M.V., Larsson, H.B.W., Lee, T.-Y., Mayr, N.A., Parker, G.J.M., Port, R.E., Taylor, J. and Weiskoff, R. (1999) Estimating kinetic parameters from dynamic contrast-enhanced $T_1$-weighted MRI of a diffusable tracer: Standardized quantities and symbols, Journal of Magnetic Resonance, 10, 223-232.

Tofts, P.S. and Kermode, A.G. (1984) Measurement of the blood-brain barrier permeability and leakage space using dynamic MR imaging. 1. Fundamental concepts, Magnetic Resonance in Medicine, 17, 357-367.

Weinmann, H.J., Laniado, M. and Mutzel, W. (1984) Pharmacokinetics of Gd-DTPA/dimeglumine after intraveneous injection into healthy volunteers, Physiological Chemistry and Physics and Medical NMR, 16, 167-172.

See Also

dcemri.bayes, dcemri.map, dcemri.spline, nls.lm

Examples

Run this code
data("buckley")

## Empirical arterial input function
img <- array(t(breast$data), c(13,1,1,301))
time <- buckley$time.min
mask <- array(TRUE, dim(img)[1:3])

## Estimate kinetic parameters directly from Buckley's empirical AIF
fit1 <- dcemri.lm(img, time, mask, model="weinmann", aif="empirical",
                  user=buckley$input)
fit2 <- dcemri.lm(img, time, mask, model="extended", aif="empirical",
                  user=buckley$input)

## Set up breast data for dcemri
xi <- seq(5, 300, by=3)
img <- array(t(breast$data)[,xi], c(13,1,1,length(xi)))
time <- buckley$time.min[xi]
input <- buckley$input[xi]

## Generate AIF params using the orton.exp function from Buckley's AIF
(aifparams <- orton.exp.lm(time, input))
fit3 <- dcemri.lm(img, time, mask, model="orton.exp", aif="user",
                  user=aifparams)

## Scatterplot comparing true and estimated Ktrans values
plot(breast$ktrans, fit1$ktrans, xlim=c(0,0.75), ylim=c(0,0.75),
     xlab=expression(paste("True ", K^{trans})),
     ylab=expression(paste("Estimated ", K^{trans})))
points(breast$ktrans, fit2$ktrans, pch=2)
points(breast$ktrans, fit3$ktrans, pch=3)
abline(0, 1, lwd=1.5, col=2)
legend("bottomright", c("weinmann/empirical", "extended/empirical",
                        "orton.exp/user"), pch=1:3)
cbind(breast$ktrans, fit1$ktrans[,,1], fit2$ktrans[,,1], fit3$ktrans[,,1])

## Scatterplot comparing true and estimated Ktrans values
plot(breast$vp, fit1$vp, type="n", xlim=c(0,0.15), ylim=c(0,0.15),
     xlab=expression(paste("True ", v[p])),
     ylab=expression(paste("Estimated ", v[p])))
points(breast$vp, fit2$vp, pch=2)
points(breast$vp, fit3$vp, pch=3)
abline(0, 1, lwd=1.5, col=2)
legend("bottomright", c("extended/empirical","orton.exp/user"), pch=2:3)
cbind(breast$vp, fit2$vp[,,1], fit3$vp[,,1])

Run the code above in your browser using DataLab