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,1020 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.
This will fail for vNav navigator scans where the ascconv protocol is missing. It could be copied from the last setter.
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_csa
parses the 0029,XX10 or 20 fields containing Siemens CSA header information.
read_dcm
plugin specific stuff to read a DICOM file
read_text_hdr
parses the ASCCONV part of Siemens data header into the ascconv field of the piddle header. All special characters except [a-z0-9]i are converted to _ -- no quoting of hash keys required! You don't need to load this yourself.
This should handle setter/vNav, ascconv data is available from the target only, even though the series contains the navigator. Storing data from the last setter should be done somehow.
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