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]