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:
|
software_version |
Scanner software version.
TYPE:
|
tr |
Repetition time in milliseconds.
TYPE:
|
te |
Echo time in milliseconds.
TYPE:
|
ti |
Inversion time in milliseconds (for IR sequences).
TYPE:
|
flip_angle |
Flip angle in degrees.
TYPE:
|
field_strength |
Magnetic field strength in Tesla.
TYPE:
|
sequence_name |
Pulse sequence name.
TYPE:
|
sequence_type |
Sequence type (e.g., 'GRE', 'SE', 'EPI').
TYPE:
|
labeling_type |
ASL labeling type (e.g., 'PCASL', 'PASL', 'VSASL').
TYPE:
|
post_labeling_delay |
Post-labeling delay(s) in milliseconds for ASL.
TYPE:
|
labeling_duration |
Labeling duration in milliseconds for ASL.
TYPE:
|
b_values |
Array of b-values in s/mm^2 for diffusion/IVIM.
TYPE:
|
b_vectors |
Array of b-vectors (Nx3) for diffusion.
TYPE:
|
temporal_resolution |
Time between dynamic acquisitions in seconds.
TYPE:
|
slice_timing |
Slice acquisition times in milliseconds.
TYPE:
|
bolus_cutoff_flag |
Whether bolus cutoff (QUIPSS) was applied for PASL.
TYPE:
|
bolus_cutoff_delay |
Bolus cutoff delay time in milliseconds.
TYPE:
|
background_suppression |
Whether background suppression was applied for ASL.
TYPE:
|
bs_pulse_times |
Background suppression pulse timing in milliseconds.
TYPE:
|
venc |
Velocity encoding value in cm/s for velocity-selective ASL.
TYPE:
|
m0_type |
M0 calibration type ('separate', 'included', 'absent').
TYPE:
|
extra |
Additional vendor-specific parameters not in standard fields.
TYPE:
|
Notes
All timing values are in milliseconds unless otherwise noted. Parameters that cannot be extracted are set to None.
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
¶
Check if diffusion/IVIM parameters are available.
| RETURNS | DESCRIPTION |
|---|---|
bool
|
True if b_values are set. |
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
¶
Check if this parser can handle the given DICOM dataset.
| PARAMETER | DESCRIPTION |
|---|---|
dcm
|
DICOM dataset to check.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
bool
|
True if this parser can extract vendor-specific metadata. |
extract_metadata
abstractmethod
¶
Extract vendor-specific metadata from DICOM dataset.
| PARAMETER | DESCRIPTION |
|---|---|
dcm
|
DICOM dataset to parse.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
VendorMetadata
|
Extracted metadata with vendor-specific parameters. |