Estimation of the intrinsic tissue relaxivity is achieved through nonlinear optimization and the dynamic signal intensities are converted into contrast agent concentration.
1 2 3 4 5 6 7 
signal 
is the vector of signal intensities as a function of flip angles. 
alpha 
is the vector of flip angles (in degrees). 
TR 
is the relaxation time (in seconds) used in the acquisition of the MRI data. 
guess 
is the vector of initial values for the parameters of interest: M0 and R10. 
nprint 
is an integer, that enables controlled printing of
iterates if it is positive. In this case, estimates of 
dynamic 
a multidimensional array of contrast agent concentrations. The last dimension is assumed to be temporal, while the previous dimenions are assued to be spatial. 
flip.mask,dyn.mask 
is a (logical) multidimensional array that identifies the voxels to be analyzed. 
dangle 
is the flip angle used to acquire the dynamic MRI data. 
flip 
a multidimensional array of contrast agent concentrations. The last dimension is assumed to be a function of the flip angles, while the previous dimenions are assued to be spatial. 
fangles 
is the vector of flip angles (in degrees). 
r1 
is the spinlattice relaxivity constant (default = 4.39 for 1.5T). For 3T data it may be necessary to adjust this value. 
verbose 
is a logical variable (default = 
The E10.lm
and R10.lm
functions estimate parameters for
a vector of observed MR signal intensities, as a function of flip
angle, using the following relationship
S(α) = m_0 \frac{\sin(α) ≤ft(1  \exp{\textrm{TR}/\textrm{T}_1}\right)}{≤ft(1  \cos(α) \exp{\textrm{TR}/\textrm{T}_1}\right)}.
The only difference between the two functions is exactly what is being
estimated in the nonlinear least squares formulation. They both
require the function nls.lm
that uses the
LevenbergMarquardt algorithm.
The CA.fast
function calls on R1.fast
to rearrange the
assumed multidimensional (2D or 3D) structure of the multiple
flipangle data into a single matrix to take advantage of internal R
functions instead of loops when calling E10.lm
. Conversion of
the dynamic signal intensities to contrast agent concentration is
performed via
[Gd] = \frac{1}{r_1}≤ft(\frac{1}{\textrm{T}_1}  \frac{1}{\textrm{T}_{10}}\right).
The CA2.fast
function assumes only two flip angles have been
acquired and uses an approximation to the nonlinear relationship
between signal intensity and flip angle enable to conversion from
signal intensity to contrast agent concentration.
A list structure is produced with (all or some of the) parameter estimates
M0 
Scaling factor between signal intensity and T1. 
R10 
Preinjection tissue relaxation rate (3D array); R10=1/T10. 
R1t 
Timevarying tissue relaxation rate (4D array); R1(t)=1/T1(t). 
conc 
Contrast agent concentration (4D array). 
and information about the convergence of the nonlinear optimization routine.
The longitudinal relaxivity is set, by default, to r1=4/(mM s) which is a reasonable value for gadolinium contrast agents at 1.5 Tesla. Doublecheck the scanning procedure manual to ensure the correct value is used.
B. Whitcher
Buxton, R.B. (2002) Introduction to Functional Magnetic Resonance Imaging: Principles & Techniques, Cambridge University Press: Cambridge, UK.
Li, K.L., Zhu, X.P., Waterton, J. and Jackson, A. (2000) Improved 3D quantiative mapping of blood volume and endothelial permeability in brain tumors, Journal of Magnetic Resonance Imaging, 12, 347357.
Li, K.L., Zhu, X.P., KamalyAsl, I.D., Checkley, D.R., Tessier, J.J.L., Waterton, J.C. and Jackson, A. (2000) Quantification of endothelial permeability, leakage space, and blood volume in brain tumors using combined T1 and T2* contrastenhanced dynamic MR imaging, Journal of Magnetic Resonance Imaging, 11, 575585.
Parker, G.J.M. and Padhani, A.R. (2003) T1w DCEMRI: T1weighted Dynamic Contrastenhanced MRI, in Quantiative MRI of the Brain (P. Tofts ed.), Wiley: Chichester, UK, pp. 341364.
dcemri.lm
, nls.lm
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22  ## Parameters for simulated data
S0 < 100
TR < 5 / 1000 # seconds
T1 < 1.5 # seconds
alpha < seq(2,24,by=2) # degrees
## Signal intensities for spoiled gradient echo image
gre < function(S0, TR, T1, alpha) {
theta < alpha * pi/180 # radians
S0 * (1  exp(TR/T1)) * sin(theta) / (1  cos(theta) * exp(TR/T1))
}
set.seed(1234)
signal < array(gre(S0, TR, T1, alpha) + rnorm(length(alpha), sd=.15),
c(rep(1,3), length(alpha)))
out < R1.fast(signal, array(TRUE, rep(1,3)), alpha, TR)
unlist(out)
par(mfrow=c(1,1))
plot(alpha, signal, xlab="Flip angle", ylab="Signal intensity")
lines(alpha, gre(S0, TR, T1, alpha), lwd=2, col=1)
lines(alpha, gre(drop(out$M0), TR, 1/drop(out$R10), alpha), lwd=2, col=2)

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.
All documentation is copyright its authors; we didn't write any of that.