Learn R Programming

dcemriS4 (version 0.20.2)

dcemri.spline: Bayesian P-Splines for Dynamic Contrasat-Enhanced MRI Data

Description

Quantitative analysis of DCE-MRI typically involves the convolution of an arterial input function (AIF) with a nonlinear pharmacokinetic model of the contrast agent concentration. This function takes a semi-parametric penalized spline smoothing approach, with which the AIF is convolved with a set of B-splines to produce a design matrix using locally adaptive smoothing parameters based on Bayesian penalized spline models (P-splines).

Usage

## S3 method for class 'array':
dcemri.spline(conc, time, img.mask, time.input=time,
              model="weinmann", aif="tofts.kermode", user=NULL,
              aif.observed=NULL, nriters=500, thin=5,
              burnin=100, ab.hyper=c(1e-5,1e-5),
              ab.tauepsilon=c(1,1/1000), k=4, p=25, rw=2,
              knots=NULL, nlr=FALSE, t0.compute=FALSE,
              samples=FALSE, multicore=FALSE, verbose=FALSE, ...) 
dcemri.spline.single(conc, time, D, time.input, p, rw, knots, k,
                     A, t0.compute=FALSE, nlr=FALSE, nriters=500,
                     thin=5, burnin=100, ab.hyper=c(1e-5,1e-5),
                     ab.tauepsilon=c(1,1/1000), silent=0,
                     multicore=FALSE, model=NULL,
                     model.func=NULL, model.guess=NULL,
                     samples=FALSE, B=NULL)

Arguments

conc
is an array of gadolinium (Gd) concentration.
time
is a vector of time points from the acquisition.
img.mask
is a logical array of voxels to fit.
time.input
is a vector of time points of observed arterial gadolinium (Gd) concentration (default = time).
model
is the compartmental model to be used. Acceptable models include: AATH or weinmann (default).
aif
is the arterial input function. Values include: tofts.kermode, fritz.hansen or observed. If observed you must provide the observed concentrations in aif.observed
aif.observed
is a user-defined vector of arterial concentrations observed at time.input.
multicore
(logical) use the multicore package.
verbose
(logical) allows text-based feedback during execution of the function (default = FALSE).
nlr
(logical) returns the generated samples.
user
ab.hyper
ab.tauepsilon
Hyper-prior parameters for observation error Gamma prior.
p
t0.compute
samples
If TRUE output includes samples drawn from the posterior distribution for all parameters.
k
knots
rw
nriters
Total number of iterations.
thin
Thining factor.
burnin
Number of iterations for burn-in.
D
B
A
silent
model.func
model.guess
...

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:

Details

See Schmid et al. (2009) for more details.

References

Schmid, V., Whitcher, B., Padhani, A.R. and G.-Z. Yang (2009) A semi-parametric technique for the quantitative analysis of dynamic contrast-enhanced MR images based on Bayesian P-splines, IEEE Transactions on Medical Imaging, 28 (6), 789-798.

See Also

dcemri.bayes, dcemri.lm, dcemri.map

Examples

Run this code
data("buckley")
xi <- seq(5, 300, by=5)
img <- array(t(breast$data)[,xi], c(13,1,1,60))
mask <- array(TRUE, dim(img)[1:3])
time <- buckley$time.min[xi]

## Generate AIF params using the orton.exp function from Buckley's AIF
aif <- buckley$input[xi]

fit.spline <- dcemri.spline(img, time, mask, aif="fritz.hansen",
                            nriters=250, nlr=TRUE)
fit.spline.aif <- dcemri.spline(img, time, mask, aif="observed",
                                aif.observed=aif, nriters=250,
                                nlr=TRUE)

plot(breast$ktrans, fit.spline$ktrans, xlim=c(0,1), ylim=c(0,1),
     xlab=expression(paste("True ", K^{trans})),
     ylab=expression(paste("Estimated ", K^{trans})))
points(breast$ktrans, fit.spline.aif$ktrans, pch=2)
abline(0, 1, lwd=1.5, col="red")
legend("right", c("fritz.hansen", "observed"), pch=1:2)

cbind(breast$ktrans, fit.spline$ktrans[,,1], fit.spline.aif$ktrans[,,1])

Run the code above in your browser using DataLab