Protocol optimization
The precision and accuracy of estimated IVIM parameters depend on the
imaging parameters, in particular choice of b-values and similar parameters.
Several methods for protocol optimization exist, all with the pros and cons.
The algorithm for protocol optimization provided in this package builds on
minimization of the Cramér-Rao Lower Bound (CRLB), which is a measure of the
theoretically lowest variance of an estimated parameter given an experimental
setup.[1] The algorithm implemented in this package has been used to optimize
b-values for the simplified IVIM model.[2] The function here does however
provide compatibility with models in all regimes, and both monopolar and bipolar
diffusion encoding (API).
References:
API
ivim.optimize
Methods for Cramer-Rao lower bounds optmization of b-value schemes.
- ivim.optimize.crlb(D: ndarray[Any, dtype[float64]], f: ndarray[Any, dtype[float64]], regime: str, bmax: float = 1000, fitK: bool = False, K: ndarray[Any, dtype[float64]] | None = None, bthr: float = 200, Dstar: ndarray[Any, dtype[float64]] | None = None, v: ndarray[Any, dtype[float64]] | None = None, tau: ndarray[Any, dtype[float64]] | None = None, seq: str = 'monopolar', system_constraints: dict = {})
Optimize b-values (and possibly c-values) using Cramer-Rao lower bounds optmization.
- Parameters:
D – diffusion coefficients to optimize over [mm2/s]
f – perfusion fractions to optimize over (same size as D)
regime – IVIM regime to model: no (= sIVIM), diffusive (long encoding time) or ballistic (short encoding time)
bmax – (optional) the largest b-value that can be returned by the optimization
fitK – (optional) if True, optimize with the intention to be able to fit K in addition to D and f
K – (optional) kurtosis coefficients to optimize over if fitK and for bias term if minbias
bthr – (optional) the smallest non-zero b-value that can be returned by the optimization
Dstar – (optional) pseudodiffusion coefficients [mm2/s]
v – (optional) velocity for optimization and/or bias term [mm/s]
tau – (optional) correlation times [s]
seq – (optional) type of diffusion encoding gradient, ‘monopolar’ or ‘bipolar’
system_constraints – (optional) dictionary with system constraints (key: ‘Gmax’,’t180’,’risetime’)
- Output:
b: optimized b-values a: fraction of total acquisition time to spend at each b-value in b fc: booleans telling if each b-value should be acquired with a flow-compensated (fc) or non-flow-compensated pulse sequence
Examples
>>> D = [1e-3,1.1e-3] >>> f = [0.1,0.15] >>> Dstar = [20e-3,20e-3] >>> bmax = 800 >>> b,a = crlb(D,f,'diffusive',bmax=bmax,Dstar=Dstar) >>> print(b) [ 0. 39.3715187 199.80682516 800. ] >>> print(a) [0.15952579 0.30527184 0.35411006 0.18109231]