Skip to content

dataset

dataset

PerfusionDataset container for imaging data and metadata.

This module provides the core data container for perfusion imaging data, supporting 3D and 4D arrays with associated acquisition metadata.

PerfusionDataset dataclass

PerfusionDataset(
    data,
    affine,
    modality,
    time_points=None,
    acquisition_params=AcquisitionParams(),
    source_path=None,
    source_format="unknown",
    quality_mask=None,
)

Container for perfusion imaging data and metadata.

This dataclass holds the loaded imaging data along with spatial transformation, temporal information, and acquisition parameters.

ATTRIBUTE DESCRIPTION
data

3D or 4D array of image data with shape (x, y, z) or (x, y, z, t).

TYPE: NDArray[floating]

affine

4x4 affine transformation matrix mapping voxel to world coordinates.

TYPE: NDArray[floating]

modality

Perfusion imaging modality (DCE, DSC, ASL, IVIM).

TYPE: Modality

time_points

Time vector in seconds for dynamic (4D) data. Must have length equal to data.shape[3] if data is 4D.

TYPE: NDArray[floating] | None

acquisition_params

Modality-specific acquisition parameters.

TYPE: AnyAcquisitionParams

source_path

Original file path if loaded from disk.

TYPE: Path | None

source_format

Source file format ('nifti', 'dicom', 'bids').

TYPE: str

quality_mask

Boolean mask of valid voxels. Shape must match spatial dimensions.

TYPE: NDArray[bool_] | None

RAISES DESCRIPTION
ValueError

If data is not 3D or 4D, if affine is not 4x4, or if time_points length does not match 4th dimension.

Examples:

>>> import numpy as np
>>> from osipy.common.dataset import PerfusionDataset
>>> from osipy.common.types import Modality, DCEAcquisitionParams
>>> data = np.random.rand(64, 64, 20, 30)
>>> affine = np.eye(4)
>>> time = np.linspace(0, 300, 30)
>>> params = DCEAcquisitionParams(tr=5.0, te=2.0, flip_angles=[2, 5, 10, 15])
>>> dataset = PerfusionDataset(
...     data=data,
...     affine=affine,
...     modality=Modality.DCE,
...     time_points=time,
...     acquisition_params=params,
... )

shape property

shape

Return the shape of the data array.

spatial_shape property

spatial_shape

Return the spatial dimensions (x, y, z).

n_timepoints property

n_timepoints

Return the number of time points (0 for 3D data).

is_dynamic property

is_dynamic

Return True if data is 4D (dynamic/time-series).

voxel_size property

voxel_size

Return voxel dimensions in mm from affine matrix.

__post_init__

__post_init__()

Validate dataset after initialization.