mrsiprep.parcellation.tissue_regression

MIDAS-style (Maudsley et al. 2006, Eq. 4-5) tissue-fraction regression.

For each parcel, solve across its MRSI voxels

Y_n = beta_GM * W_GM_n + beta_WM * W_WM_n + bias + eps

by ordinary least squares, where Y_n is the metabolite signal at voxel n and W_GM_n/W_WM_n are that voxel's GM/WM tissue fractions. The fitted beta_GM/beta_WM are direct estimates of the pure-GM and pure-WM metabolite concentration in the parcel -- the paper's tissue-based quantification. This is the MIDAS-mode-only alternative to the weighted-mean regional extraction, which reports tissue fractions only as covariates.

Eq. 5's mixed-effects multi-subject extension is out of scope for a single recording; this module implements the single-subject Eq. 4 model.

Functions

fit_tissue_regression(values, gm_fraction, ...)

Ordinary least squares fit of Y = beta_GM*W_GM + beta_WM*W_WM + bias.

regional_tissue_regression(config, subject, ...)

Per-parcel, per-metabolite MIDAS Eq.

Classes

RegressionResult(beta_gm, beta_wm, bias, ...)

class mrsiprep.parcellation.tissue_regression.RegressionResult(beta_gm: 'float', beta_wm: 'float', bias: 'float', se_gm: 'float', se_wm: 'float', r_squared: 'float', condition_number: 'float', n_voxels: 'int', rank_deficient: 'bool')[source]

Bases: object

Parameters:
  • beta_gm (float)

  • beta_wm (float)

  • bias (float)

  • se_gm (float)

  • se_wm (float)

  • r_squared (float)

  • condition_number (float)

  • n_voxels (int)

  • rank_deficient (bool)

beta_gm: float
beta_wm: float
bias: float
condition_number: float
n_voxels: int
r_squared: float
rank_deficient: bool
se_gm: float
se_wm: float
mrsiprep.parcellation.tissue_regression.fit_tissue_regression(values, gm_fraction, wm_fraction, min_voxels=10, min_fraction_range=0.2, condition_number_max=30.0)[source]

Ordinary least squares fit of Y = beta_GM*W_GM + beta_WM*W_WM + bias.

Sets rank_deficient=True (and betas/SEs to NaN) when the region has too few voxels, too little GM/WM fraction variation to separate the tissue contributions, or an ill-conditioned design matrix. Without this guard, lstsq on a near-homogeneous region (e.g. deep WM, W_GM ~ 0 everywhere) would return numerically unstable, misleading betas.

Parameters:
  • values (ndarray)

  • gm_fraction (ndarray)

  • wm_fraction (ndarray)

  • min_voxels (int)

  • min_fraction_range (float)

  • condition_number_max (float)

Return type:

RegressionResult

mrsiprep.parcellation.tissue_regression.regional_tissue_regression(config, subject, session, metabolite_maps, parcels, qcmasks, tissue_mrsi)[source]

Per-parcel, per-metabolite MIDAS Eq. 4 regression; writes a TSV.

Parameters:
  • subject (str)

  • session (str | None)

  • metabolite_maps (dict[str, Path])

  • parcels (ParcellationResult)

  • qcmasks (dict[str, Path])

  • tissue_mrsi (dict[str, Path])

Return type:

Path