The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

    sub clump_data { # do nothing here @_; }

Specific handling of Simenes MRI data

MRI:

Key 0029,1010 is the Siemens specific field that contains the ICE mini-headers with dimension information - and position in matrix 0029,1120 is deleted from the header, it is big, containing the whole protocol. They are now parsed into the csa header structure. The important part, the Siemens protocol ASCCONV part, is stored in the ascconv key, see read_text_hdr.

MRS:

In this case, 0029,1110 and 0029,1120 are the proprietary parts of the header.

FUNCTIONS

create_data

Plugin-specific code to create the data structure, in patricular dimensions.

fill_data

fill the data structure from individual DICOM images (slices, echoes, phases ...).

getx, gety, getz

returns name of x .. z dimensions in scanner (or patient?) orientation.

handle_duplicates

What to do if two images with the same position in the stack arrive. Throws an error, atm. Should handle duplicate exports

init_dims

provides support for PDL::Dims. Useful in combination with PDL::IO::Sereal to have a fully qualified data set.

map_slicegroup

returns the number, size and first slice of the current slice group.

parser

plugin specific stuff to parse all the headers

populate_header

Here happens the vendor/modallity specific stuff like parsing private fields. It is required to return a position vector in the series' piddle.

read_dcm

plugin specific stuff to read a DICOM file

setup_dcm

sets useful options for this modality.

sort_protid

alternative to split based on lProtID (matches raw data key). To activate, after running setup_dcm, point option id to \&sort_protid.

Specific options

Nifti

Do we want Nifti output? May be used by your plugin to apply additional steps, eg. more clumps, reorders, setting header fields ...

c_phase_t

Serialize phase and t dimensions