Modules - User Modules

 Additional Installable Modules

Additional modules can be installed via the module installer of the WebGUI (on the Configuration page). User modules are extracted into separate folders under the directory yarra/modules_user. The helper macro for referencing this folder is %bu. For example, when installing the Subtraction module, this binary can be called via %bu/Subtraction/Subtraction (the latter Subtraction refers to the executable name, while the former corresponds to the installation folder name).

 
 Basic GRASP (Matlab)  Reconstruction
Author: Li Feng, Ricardo Otazo, Kai Tobias Block
Version: 0.1a
Website: https://bitbucket.org/yarra-dev/yarramodules-grasp-basic
 Download

Purpose

This module provides a stable Matlab implementation of the GRASP DCE-MRI reconstruction technique. It requires Matlab R2016a or newer. If the Parallel Computing Toolbox has been installed, the reconstruction will be parallelized across slices depending on the available CPU cores. By default, all available cores will be used for the calculation.

When using the module, please cite the following publication:

Feng L, Grimm R, Block KT, Chandarana H, Kim S, Xu J, Axel L, Sodickson DK, Otazo R. Golden-angle radial sparse parallel MRI: combination of compressed sensing, parallel imaging, and golden-angle radial sampling for fast and flexible dynamic volumetric MRI. Magn Reson Med. 2014 Sep;72(3):707-17.

This module uses several open-source Matlab packages developed by other contributors, including the mapVBVD library by Philip Ehses, the NUFFT library developed by Jeff Fessler, and the inifile reader developed by Primoz Cermelj. Please give credit to these developers when using the module.

 

Usage

The ZIP archive contains a template for a mode file that shows how the module can be called. The module should be used in combination with the SetDCMTags module.

yarra_GRASP_basic [input folder] [input file] [output folder] [tmp folder] [mode file]

Typical call:

[Reconstruction]
Bin=%hmb
Args="-nodesktop -nosplash -r %hq try, addpath(genpath('%bu/GRASP_basic/')); yarra_GRASP_basic('%rid/','%rif','%rod','%tmp','%mc'); catch e, disp(e.message); end, quit; %hq"
 

Configuration

Reconstruction settings can be configured in the [GRASP] section of the mode file. If settings are missing, the default values shown below will be used.

[GRASP]
SpokesPerFrame=144     % Defines how many numbers should be used per frame
Lambda=0.02            % Defines the strength of the temporal TV regularization
MaxThreads=[all]       % Defines how many CPU cores should be used. By default, all will be used
ApplyKzFilter=true     % Defines if k-space filtering along kz should be applied for partial Fourier scans
CompressedChannels=10  % Defines when/if channel compression should be used and how many Eigenmodes should be used
SliceFrom=0            % Allows restricting the range of slices to calculate (for faster testing)   
SliceTo=0
 

Limitations

  • The module currently does not perform image-intenstiy normalization (aka Prescan Normalize).
 
 Performance-optimized GRASP (C++)  Reconstruction
Author: Robert Grimm
Version: 3.75
Website: http://www5.cs.fau.de/our-team/grimm-robert

Purpose

Performs a Compressed-Sensing-based 4D DCE-MRI reconstruction using the GRASP reconstruction technique. This module has been implemented in C++ and uses OpenMP parallelization to achieve high reconstruction speed.

Note: This module can only be downloaded after a C2P contract with Siemens has been signed. Please contact your local Siemens collaboration manager. Alternatively, the Matlab-based version of GRASP can be used.

Usage

GraspR [input Twix file] [ini file] [output folder] [tmp folder] [acc #]

Typical call:

[Reconstruction]
Bin=%bu/GRASP/GraspR
Args=%rid/%rif %rid/settings.ini %rod %tmp %vacc

Configuration

The configuration for the GRASP module is done via an ini file (an example file comes with the module). It is recommended to use the example file as template and to overwrite the settings with help of the the IniPatch module (in this way, everything is stored in the .mode file and it is not necessary to maintain multiple ini files).

 PatchCharacterSet  Postprocessing
Author: Kai Tobias Block
Version: 0.1a
Website: https://bitbucket.org/yarra-dev/yarramodules-patchcharacterset

Purpose

Patches the character set of the reconstructed DICOMs and encodes the patient name in the local patient name. Necessary when using the GRASP module with certain PACS systems.

Usage

PatchPatientName [input folder] [output folder] [TWIX file]

Typical call:

[PostProcessing]
Bin1=%bu/PatchCharacterSet/PatchPatientName.sh
Args1=%pid %pod %rid/%rif

Configuration

The character set can be changed directly in the script PatchPatientName.sh.

 Subtraction  Postprocessing
Author: Kai Tobias Block
Version: 0.1a2
 Download

Purpose

Calculates subtraction images from reconstructed image series.

Usage

Subtraction [input folder] [output folder] [mode file]

Typical call:

[PostProcessing]
Bin=%bu/Subtraction/Subtraction
Args=%pid %pod %mc

Configuration

In .mode file:

[Subtraction]
BaselineSeries=2
KeepSourceImages=true
SubtractionMode=0
IncludeSeries=3:end#4
ExcludeSeries=
Keep source images

If KeepSourceImages=false, then only the subtraction images will be sent. If KeepSourceImages=true, both the original images and subtraction images will be sent.

Subtraction mode

If SubtractionMode=0, then negative values will be discarded. If SubtractionMode=1, then the absolute value of the difference is calculated.

Range specification

Using the parameter IncludeSeries, it is possible to specify for which time points subtractions should be calculated (by default, subtractions will be calculated for all images). It is possible to append multiple values using the comma separator (e.g., 4,7,9), and it is possible to specify ranges (e.g 3:7). The keyword end can be used to refer to the last time point, and it is possible to subtract integers (e.g. end-1 refers to the second-last time point). When using the syntax start:end#step, it is possible to specify a step width if a subtraction image should not be calculated for every frame (e.g., 3:end#4). Using the parameter ExcludeSeries, it is possible to exclude individual time points from the calculation. This setting will be evaluated after IncludeSeries.