docstr: Initialize an IvimModelVP class.
  
  The IVIM model assumes that biological tissue includes a volume
  fraction 'f' of water flowing with a pseudo-diffusion coefficient
  D* and a fraction (1-f: treated as a separate fraction in the variable
  projection method) of static (diffusion only), intra and
  extracellular water, with a diffusion coefficient D. In this model
  the echo attenuation of a signal in a single voxel can be written as
  
      .. math::
  
      S(b) = S_0*[f*e^{(-b*D\*)} + (1-f)e^{(-b*D)}]
  
      Where:
      .. math::
  
      S_0, f, D\* and D are the IVIM parameters.
  
  
  maxiter: int, optional
      Maximum number of iterations for the Differential Evolution in
      SciPy.
      default : 10
  
  xtol : float, optional
      Tolerance for convergence of minimization.
      default : 1e-8
  
  References
  ----------
  .. [1] Le Bihan, Denis, et al. "Separation of diffusion and perfusion
         in intravoxel incoherent motion MR imaging." Radiology 168.2
         (1988): 497-505.
  .. [2] Federau, Christian, et al. "Quantitative measurement of brain
         perfusion with intravoxel incoherent motion MR imaging."
         Radiology 265.3 (2012): 874-881.
  .. [3] Fadnavis, Shreyas et.al. "MicroLearn: Framework for machine
         learning, reconstruction, optimization and microstructure
         modeling, Proceedings of: International Society of Magnetic
         Resonance in Medicine (ISMRM), Montreal, Canada, 2019.
code: def __init__(self, gtab, bounds=None, maxiter=10, xtol=1e-8):
      r"""Initialize an IvimModelVP class.
  
      The IVIM model assumes that biological tissue includes a volume
      fraction 'f' of water flowing with a pseudo-diffusion coefficient
      D* and a fraction (1-f: treated as a separate fraction in the variable
      projection method) of static (diffusion only), intra and
      extracellular water, with a diffusion coefficient D. In this model
      the echo attenuation of a signal in a single voxel can be written as
  
          .. math::
  
          S(b) = S_0*[f*e^{(-b*D\*)} + (1-f)e^{(-b*D)}]
  
          Where:
          .. math::
  
          S_0, f, D\* and D are the IVIM parameters.
  
  
      maxiter: int, optional
          Maximum number of iterations for the Differential Evolution in
          SciPy.
          default : 10
  
      xtol : float, optional
          Tolerance for convergence of minimization.
          default : 1e-8
  
      References
      ----------
      .. [1] Le Bihan, Denis, et al. "Separation of diffusion and perfusion
             in intravoxel incoherent motion MR imaging." Radiology 168.2
             (1988): 497-505.
      .. [2] Federau, Christian, et al. "Quantitative measurement of brain
             perfusion with intravoxel incoherent motion MR imaging."
             Radiology 265.3 (2012): 874-881.
      .. [3] Fadnavis, Shreyas et.al. "MicroLearn: Framework for machine
             learning, reconstruction, optimization and microstructure
             modeling, Proceedings of: International Society of Magnetic
             Resonance in Medicine (ISMRM), Montreal, Canada, 2019.
      """
  
      self.maxiter = maxiter
      self.xtol = xtol
      self.bvals = gtab.bvals
      self.yhat_perfusion = np.zeros(self.bvals.shape[0])
      self.yhat_diffusion = np.zeros(self.bvals.shape[0])
      self.exp_phi1 = np.zeros((self.bvals.shape[0], 2))
      self.bounds = bounds or (BOUNDS[0][1:], BOUNDS[1][1:])
  
imports: import warnings
  import numpy
  from scipy.optimize import least_squares, differential_evolution
  from dipy.reconst.base import ReconstModel
  from dipy.reconst.multi_voxel import multi_voxel_fit
  from dipy.utils.optpkg import optional_package
label_desc: Use image node_id 1 to create a new IvimModelVP object from inherited base classes: ReconstModel with example: obj = IvimModelVP(gtab, bounds, maxiter, xtol)