Skip to content

base

base

Base classes for vendor-specific DICOM parsing.

This module defines the abstract base class and common data structures for extracting vendor-specific metadata from DICOM files.

VendorMetadata dataclass

VendorMetadata(
    vendor="",
    software_version=None,
    tr=None,
    te=None,
    ti=None,
    flip_angle=None,
    field_strength=None,
    sequence_name=None,
    sequence_type=None,
    labeling_type=None,
    post_labeling_delay=None,
    labeling_duration=None,
    bolus_cutoff_flag=None,
    bolus_cutoff_delay=None,
    background_suppression=None,
    bs_pulse_times=None,
    venc=None,
    m0_type=None,
    b_values=None,
    b_vectors=None,
    temporal_resolution=None,
    slice_timing=None,
    extra=dict(),
)

Container for vendor-extracted DICOM metadata.

This dataclass holds metadata extracted from vendor-specific private tags, providing a normalized interface for accessing acquisition parameters regardless of scanner manufacturer.

ATTRIBUTE DESCRIPTION
vendor

Scanner manufacturer name.

TYPE: str

software_version

Scanner software version.

TYPE: str | None

tr

Repetition time in milliseconds.

TYPE: float | None

te

Echo time in milliseconds.

TYPE: float | None

ti

Inversion time in milliseconds (for IR sequences).

TYPE: float | None

flip_angle

Flip angle in degrees.

TYPE: float | None

field_strength

Magnetic field strength in Tesla.

TYPE: float | None

sequence_name

Pulse sequence name.

TYPE: str | None

sequence_type

Sequence type (e.g., 'GRE', 'SE', 'EPI').

TYPE: str | None

labeling_type

ASL labeling type (e.g., 'PCASL', 'PASL', 'VSASL').

TYPE: str | None

post_labeling_delay

Post-labeling delay(s) in milliseconds for ASL.

TYPE: float | list[float] | None

labeling_duration

Labeling duration in milliseconds for ASL.

TYPE: float | None

b_values

Array of b-values in s/mm^2 for diffusion/IVIM.

TYPE: NDArray[floating] | None

b_vectors

Array of b-vectors (Nx3) for diffusion.

TYPE: NDArray[floating] | None

temporal_resolution

Time between dynamic acquisitions in seconds.

TYPE: float | None

slice_timing

Slice acquisition times in milliseconds.

TYPE: list[float] | None

bolus_cutoff_flag

Whether bolus cutoff (QUIPSS) was applied for PASL.

TYPE: bool | None

bolus_cutoff_delay

Bolus cutoff delay time in milliseconds.

TYPE: float | None

background_suppression

Whether background suppression was applied for ASL.

TYPE: bool | None

bs_pulse_times

Background suppression pulse timing in milliseconds.

TYPE: list[float] | None

venc

Velocity encoding value in cm/s for velocity-selective ASL.

TYPE: float | None

m0_type

M0 calibration type ('separate', 'included', 'absent').

TYPE: str | None

extra

Additional vendor-specific parameters not in standard fields.

TYPE: dict[str, Any]

Notes

All timing values are in milliseconds unless otherwise noted. Parameters that cannot be extracted are set to None.

has_asl_params

has_asl_params()

Check if ASL-specific parameters are available.

RETURNS DESCRIPTION
bool

True if labeling_type and post_labeling_delay are set.

has_diffusion_params

has_diffusion_params()

Check if diffusion/IVIM parameters are available.

RETURNS DESCRIPTION
bool

True if b_values are set.

to_dict

to_dict()

Convert metadata to dictionary.

RETURNS DESCRIPTION
dict[str, Any]

Dictionary representation of metadata.

VendorParser

Bases: ABC

Abstract base class for vendor-specific DICOM parsing.

Subclasses implement vendor-specific extraction logic for Siemens, GE, and Philips scanners.

Examples:

>>> parser = SiemensParser()
>>> if parser.can_parse(dcm):
...     metadata = parser.extract_metadata(dcm)
...     print(metadata.labeling_type)
'PCASL'

can_parse abstractmethod

can_parse(dcm)

Check if this parser can handle the given DICOM dataset.

PARAMETER DESCRIPTION
dcm

DICOM dataset to check.

TYPE: Dataset

RETURNS DESCRIPTION
bool

True if this parser can extract vendor-specific metadata.

extract_metadata abstractmethod

extract_metadata(dcm)

Extract vendor-specific metadata from DICOM dataset.

PARAMETER DESCRIPTION
dcm

DICOM dataset to parse.

TYPE: Dataset

RETURNS DESCRIPTION
VendorMetadata

Extracted metadata with vendor-specific parameters.