biexponential
biexponential
¶
IVIM bi-exponential signal model.
This module implements the IVIM bi-exponential model for separating diffusion and perfusion contributions in DWI data, following the OSIPI CAPLEX definitions for IVIM quantities.
IVIM parameters:
- D (diffusion coefficient): True tissue diffusion coefficient, units mm^2/s.
- D* (pseudo-diffusion coefficient): Perfusion-related incoherent motion coefficient, units mm^2/s.
- f (perfusion fraction): Fraction of signal arising from the perfusion (microvascular) compartment, dimensionless [0, 1].
References
.. [1] Le Bihan D et al. (1988). Separation of diffusion and perfusion in intravoxel incoherent motion MR imaging. Radiology 168(2):497-505. .. [2] Lemke A et al. (2010). An in vivo verification of the intravoxel incoherent motion effect in diffusion-weighted imaging of the abdomen. Magn Reson Med 64(6):1580-1585. .. [3] OSIPI CAPLEX, https://osipi.github.io/OSIPI_CAPLEX/ .. [4] Dickie BR et al. MRM 2024. doi:10.1002/mrm.30101
IVIMParams
dataclass
¶
Parameters for IVIM model.
All diffusion parameters are stored in SI-consistent units (mm^2/s).
| ATTRIBUTE | DESCRIPTION |
|---|---|
s0 |
Signal intensity at b=0 (arbitrary units).
TYPE:
|
d |
Tissue diffusion coefficient (D) in mm^2/s. Typical range: 0.5e-3 to 2.0e-3 mm^2/s.
TYPE:
|
d_star |
Pseudo-diffusion coefficient (D*) in mm^2/s. Represents perfusion contribution. Typical range: 5e-3 to 20e-3 mm^2/s (much higher than D).
TYPE:
|
f |
Perfusion fraction (f), dimensionless [0, 1]. Fraction of signal from perfusion compartment. Typical range: 0.05-0.30.
TYPE:
|
References
.. [1] OSIPI CAPLEX, https://osipi.github.io/OSIPI_CAPLEX/
IVIMModel
¶
Bases: BaseSignalModel, ABC
Abstract base class for IVIM models.
predict
¶
Predict signal at given b-values.
Accepts both dict/dataclass and array parameters transparently.
| PARAMETER | DESCRIPTION |
|---|---|
b_values
|
Diffusion weighting values in s/mm².
TYPE:
|
params
|
Parameter array
TYPE:
|
xp
|
Array module (numpy or cupy). Inferred from b_values when omitted.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
NDArray[floating]
|
Predicted signal intensity. |
predict_batch
¶
Predict signal for multiple voxels simultaneously.
Reshapes b_values to a column vector and delegates to
:meth:_predict, which handles broadcasting.
| PARAMETER | DESCRIPTION |
|---|---|
b_values
|
b-values in s/mm², shape (n_b,).
TYPE:
|
params_batch
|
Parameter values, shape (n_params, n_voxels).
TYPE:
|
xp
|
Array module (numpy or cupy).
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
NDArray[floating]
|
Predicted signal, shape (n_b, n_voxels). |
IVIMBiexponentialModel
¶
Bases: IVIMModel
IVIM bi-exponential model.
The bi-exponential model describes the DWI signal as:
S(b) = S0 * [(1-f) * exp(-b*D) + f * exp(-b*D*)]
where: - S0 is the signal at b=0 - f is the perfusion fraction - D is the tissue diffusion coefficient - D* is the pseudo-diffusion coefficient
This model assumes that D* >> D, so the perfusion component decays rapidly at low b-values.
References
.. [1] Le Bihan D et al. (1988). Radiology 168(2):497-505. .. [2] OSIPI CAPLEX, https://osipi.github.io/OSIPI_CAPLEX/
params_to_array
¶
Convert IVIMParams or dict to array.
Handles the D* → d_star field mapping.
get_bounds
¶
Return physiological parameter bounds.
Bounds follow OSIPI TF2.4 recommendations for IVIM parameters. f upper bound of 0.7 accommodates tissues with high perfusion fraction such as liver and intestine.
IVIMSimplifiedModel
¶
Bases: IVIMModel
Simplified IVIM model.
Assumes D >> D, so exp(-bD*) is approximately 0 for b > b_threshold:
S(b) = S0 * (1-f) * exp(-b*D) for b > b_threshold
S(0) = S0
This allows two-step fitting: 1. Fit mono-exponential at high b-values to get D 2. Fit f from low b-values
References
.. [1] Le Bihan D et al. (1988). Radiology 168(2):497-505. .. [2] OSIPI CAPLEX, https://osipi.github.io/OSIPI_CAPLEX/
Initialize simplified model.
| PARAMETER | DESCRIPTION |
|---|---|
b_threshold
|
b-value threshold above which perfusion contribution is negligible (s/mm²).
TYPE:
|