fsl.data.dicom

This module provides the DicomImage class, which represents a volumetric DICOM data series. The DicomImage is simply an `Image which provides accessors for additional DICOM meta data.

The following other functions are provided in this module, which are thin wrappers around functionality provided by Chris Rorden’s dcm2niix program:

enabled

Returns True if dcm2niix is present, and recent enough, False otherwise.

scanDir

Uses the dcm2niix -b o option to generate a BIDS sidecar JSON file for each series in the given DICOM directory.

loadSeries

Takes a DICOM series meta data dictionary, as returned by scanDir(), and loads the associated data as one or more NIFTI images.

See: https://github.com/rordenlab/dcm2niix/

Note

These functions will not work if an executable called dcm2niix cannot be found.

fsl.data.dicom.MIN_DCM2NIIX_VERSION = (1, 0, 2017, 12, 15)

Minimum version of dcm2niix that is required for this module to work.

fsl.data.dicom.CRC_DCM2NIIX_VERSION = (1, 0, 2019, 9, 2)

For versions of dcm2niix orf this version or newer, the -n flag, used to convert a single DICOM series, requires that a CRC checksum identifying the series be passed (see the seriesCRC() function). Versions prior to this require the series number to be passed.

fsl.data.dicom.dcm2niix() str[source]

Tries to find an absolute path to the dcm2niix command. Returns 'dcm2niix' (unqualified) if a specific executable cannot be found.

class fsl.data.dicom.DicomImage(*args, **kwargs)[source]

Bases: Image

The DicomImage is a volumetric Image with some associated DICOM metadata.

The Image class is used to manage the data and the voxel-to-world transformation. Additional DICOM metadata may be accessed via the Image metadata access methods.

__init__(image, metadata, dicomDir, *args, **kwargs)[source]

Create a DicomImage.

Parameters:
  • image – Passed through to Image.__init__().

  • metadata – Dictionary containing DICOM meta-data.

  • dicomDir – Directory that the dicom image was loaded from.

property dicomDir

Returns the directory that the DICOM image data was loaded from.

__annotations__ = {}
__module__ = 'fsl.data.dicom'
fsl.data.dicom.compareVersions(v1, v2)[source]

Compares two dcm2niix versions v1 and v2. The versions are assumed to be in the format returned by installedVersion().

Returns:

  • 1 if v1 is newer than v2

  • -1 if v1 is older than v2

  • 0 if v1 the same as v2.

fsl.data.dicom.enabled()[source]

Returns True if dcm2niix is present, and recent enough, False otherwise.

fsl.data.dicom.scanDir(dcmdir)[source]

Uses the dcm2niix -b o option to generate a BIDS sidecar JSON file for each series in the given DICOM directory. Reads them all in, and returns them as a sequence of dicts.

Some additional metadata is added to each dictionary:
  • DicomDir: The absolute path to dcmdir

Parameters:

dcmdir – Directory containing DICOM series

Returns:

A list of dicts, each containing the BIDS sidecar JSON metadata for one DICOM series.

fsl.data.dicom.seriesCRC(series)[source]

Calculate a checksum string of the given DICOM series.

The returned string is of the form:

SeriesCRC[.echonumber]

Where SeriesCRC is an unsigned integer which is the CRC32 checksum of the SeriesInstanceUID, and echonumber is the EchoNumber of the series - this is only present for multi-echo data, where the series is from the second or subsequent echos.

Parameters:

series – Dict containing BIDS metadata about a DICOM series, as returned by scanDir().

Returns:

String containing a CRC32 checksum for the series.

fsl.data.dicom.loadSeries(series)[source]

Takes a DICOM series meta data dictionary, as returned by scanDir(), and loads the associated data as one or more NIFTI images.

Parameters:

series – Dictionary as returned by scanDir(), containing meta data about one DICOM data series.

Returns:

List containing one or more DicomImage objects.