Skip to content

baseline

baseline

Baseline correction for time-series data.

This module provides functions for baseline estimation and correction in perfusion time-series data.

GPU/CPU agnostic using the xp array module pattern.

baseline_correction

baseline_correction(data, baseline_frames=5, method='mean')

Correct baseline in time-series data.

Estimates baseline from initial frames and subtracts or normalizes the signal relative to baseline.

GPU/CPU agnostic - operates on same device as input data.

PARAMETER DESCRIPTION
data

Time-series data. Last dimension is time.

TYPE: NDArray[floating]

baseline_frames

Number of initial frames for baseline estimation.

TYPE: int DEFAULT: 5

method

Correction method: - "mean": Subtract mean baseline (additive correction) - "median": Subtract median baseline - "normalize": Divide by mean baseline (multiplicative) - "percent": Convert to percent change from baseline

TYPE: str DEFAULT: "mean"

RETURNS DESCRIPTION
NDArray[floating]

Baseline-corrected data with same shape as input.

RAISES DESCRIPTION
ValueError

If baseline_frames exceeds data length or invalid method.

Examples:

>>> import numpy as np
>>> from osipy.common.signal.baseline import baseline_correction
>>> data = np.random.rand(64, 64, 20, 30) + 100  # Signal with offset
>>> corrected = baseline_correction(data, baseline_frames=5)
>>> print(corrected.shape)
(64, 64, 20, 30)

estimate_baseline_std

estimate_baseline_std(data, baseline_frames=5)

Estimate noise standard deviation from baseline frames.

GPU/CPU agnostic - operates on same device as input data.

PARAMETER DESCRIPTION
data

Time-series data. Last dimension is time.

TYPE: NDArray[floating]

baseline_frames

Number of initial frames for noise estimation.

TYPE: int DEFAULT: 5

RETURNS DESCRIPTION
NDArray[floating]

Standard deviation estimate for each voxel. Shape is data.shape[:-1].

Examples:

>>> import numpy as np
>>> from osipy.common.signal.baseline import estimate_baseline_std
>>> data = np.random.randn(64, 64, 20, 30)
>>> noise_std = estimate_baseline_std(data, baseline_frames=5)
>>> print(noise_std.shape)
(64, 64, 20)