Skip to content

multi_pld

multi_pld

Multi-PLD ASL quantification with ATT estimation.

This module implements CBF and ATT (arterial transit time) estimation from multi-PLD ASL data using the Buxton general kinetic model. Parameter naming follows the OSIPI ASL Lexicon conventions: CBF in mL/100g/min and ATT in ms.

GPU/CPU agnostic using the xp array module pattern. NO scipy dependency - uses custom Levenberg-Marquardt implementation.

References

.. [1] OSIPI ASL Lexicon, https://osipi.github.io/ASL-Lexicon/ .. [2] Buxton RB et al. (1998). A general kinetic model for quantitative perfusion imaging with arterial spin labeling. Magn Reson Med 40(3):383-396. .. [3] Dai W et al. (2012). Reduced resolution transit delay prescan for quantitative continuous arterial spin labeling perfusion imaging. Magn Reson Med 67(5):1252-1265. .. [4] Suzuki Y et al. (2024). MRM 91(4):1411-1421.

MultiPLDParams dataclass

MultiPLDParams(
    labeling_scheme=PCASL,
    plds=None,
    label_duration=1800.0,
    t1_blood=1650.0,
    t1_tissue=1330.0,
    partition_coefficient=0.9,
    labeling_efficiency=0.85,
)

Parameters for multi-PLD ASL quantification.

ATTRIBUTE DESCRIPTION
labeling_scheme

Type of labeling (PASL, CASL, pCASL).

TYPE: LabelingScheme

plds

Array of post-labeling delays in milliseconds.

TYPE: NDArray[floating]

label_duration

Labeling duration in milliseconds (for pCASL/CASL).

TYPE: float

t1_blood

T1 of arterial blood in milliseconds.

TYPE: float

t1_tissue

T1 of gray matter tissue in milliseconds.

TYPE: float

partition_coefficient

Blood-brain partition coefficient (λ).

TYPE: float

labeling_efficiency

Labeling efficiency (α).

TYPE: float

__post_init__

__post_init__()

Set default PLD schedule if none provided.

MultiPLDResult dataclass

MultiPLDResult(
    cbf_map, att_map, quality_mask, r_squared=None
)

Result of multi-PLD ASL quantification.

ATTRIBUTE DESCRIPTION
cbf_map

CBF map in mL/100g/min (OSIPI ASL Lexicon).

TYPE: ParameterMap

att_map

Arterial transit time (ATT) map in ms (OSIPI ASL Lexicon).

TYPE: ParameterMap

quality_mask

Mask of reliable voxels.

TYPE: NDArray[bool_]

r_squared

Goodness of fit (R-squared) map.

TYPE: NDArray[floating] | None

BuxtonMultiPLDModel

Bases: BaseASLModel

Buxton general kinetic model for multi-PLD ATT estimation.

Estimates CBF (mL/100g/min) and ATT (seconds) from multi-PLD ASL.

References

.. [1] OSIPI ASL Lexicon, https://osipi.github.io/ASL-Lexicon/ .. [2] Buxton RB et al. MRM 1998;40(3):383-396.

name property

name

Return model registry name.

parameters property

parameters

Return fitted parameter names.

parameter_units property

parameter_units

Return parameter units per OSIPI ASL Lexicon.

reference property

reference

Return literature reference for this model.

labeling_type property

labeling_type

Return ASL labeling type.

get_bounds

get_bounds()

Return parameter bounds for CBF and ATT fitting.

quantify_multi_pld

quantify_multi_pld(delta_m, m0, params=None, mask=None)

Quantify CBF and ATT from multi-PLD ASL data.

Uses voxel-wise fitting of the Buxton general kinetic model to simultaneously estimate CBF and ATT via fit_image(). Output units follow the OSIPI ASL Lexicon: CBF in mL/100g/min, ATT in ms.

PARAMETER DESCRIPTION
delta_m

Difference magnetization at each PLD, shape (..., n_plds). Last dimension corresponds to PLDs.

TYPE: NDArray[floating]

m0

Equilibrium magnetization (M0, a.u.) from calibration.

TYPE: NDArray[floating] | float

params

Quantification parameters.

TYPE: MultiPLDParams | None DEFAULT: None

mask

Brain mask.

TYPE: NDArray[bool_] | None DEFAULT: None

RETURNS DESCRIPTION
MultiPLDResult

CBF map (mL/100g/min) and ATT map (ms) with quality metrics.

Examples:

>>> import numpy as np
>>> from osipy.asl.quantification.multi_pld import quantify_multi_pld, MultiPLDParams
>>> delta_m = np.random.rand(64, 64, 20, 6) * 50
>>> params = MultiPLDParams(plds=np.array([200, 500, 1000, 1500, 2000, 2500]))
>>> result = quantify_multi_pld(delta_m, m0=1000.0, params=params)
References

.. [1] OSIPI ASL Lexicon, https://osipi.github.io/ASL-Lexicon/