Almost every modern fMRI protocol (at SIEMENS scanners) uses GRAPPA. However, only very few people pay a lot of attention on optimal usage of the GRAPPA auto-callibration data. I realized the importance of optimizing GRAPPA parameters when doing high-resolution EPI. At high resolutions, GRAPPA-related noise can become an increasingly important limitation. This is especially true with the low bandwidth that the body gradient coils force us to use.
In this blog-post I will explain how the GRAPPA kernel-size affects the fMRI data quality, how you can change it, how you can find out which kernel-size was used, and I will descrive simple software tools to identify regions that might benefit from adaptations of the GRAPPA-kernel size.
Effect of GRAPPA kernel-size
The GRAPPA kernel is used to synthesize missing k-space lines in accelerated acquisitions. Its exact working principles are a bit technical. If you are interested in the full mathematical model, I found the original GRAPPA paper quite comprehensive and understandable.
In my simplified understanding of the working principle of GRAPPA, the GRAPPA kernel defines the size of the spacial smoothness of the coil-sensitivity maps. This comes from the k-space feature that small objects in k-space (small kernels) are associated with smooth objects in image space. Larger objects in k-space (larger kernels), on the other hand, are associated with sharper objects in image space.
Keeping this in mind, the GRAPPA-kernel size must have some effect on the spacial distribution of the g-factor penalty.
Namely, smaller GRAPPA kernels will have smoother defined regions of the high g-factor penalty
Small kernel example:
Large kernel example :
The corresponding temporal stability is apparent in tSNR maps.
The GRAPPA parameter of the data shown are: 7T, resol. = 0.75mm, phase-encoding direction = A>>P, GRAPPA-factor = 3, ACS-scheme = FLASH (30 dummies, FA 5deg, BWDTH = 100 Hz/px), #ref lines = 48, FOV = 130 mm, Coil = 32ch Nova.
As you can see, in my data, the GRAPPA-kernel size has an effect of about 20-30% improvement/reduction in the final tSNR.
When the area of interest is suffering from large g-factor penalties (usually close to the center of the FOV), I would recommend a small GRAPPA kernel. When the area of interest is just outside the area of large g-factor penalties, I would use larger kernels.
This, of course is highly dependent on the FOV, the GRAPPA factor, the CAIPI FOV-shift, and the size of the RF coils. As such, for smaller RF-coil elements (e.g. in surface arrays, high-channel count arrays) or very large FOV, larger GRAPPA-kernal sized would be recommended.
It is also worth pointing out that the GRAPPA-kernel-size also affects the reconstruction speed. Larger kernels result in longer reconstruction durations. In my, experiments however, I am not really limited by reconstruction speed. So, I done mind. practiCal compared the reconstruction durations more rigorously in his blog.
How to change the kernel-size on a VB17 SIEMENS system
There are multiple ways how you can change the GRAPPA-kernel size on a SIEMENS VB17 scanner. Below, I describe the most common approaches.
Adjustment by changing Ice-Configurations (recommended)
- Start “xbuilder” (Ctrl+Esc and run xbuilder)
- Open the file c:/MedCom/config/Ice/IceConfig.evp
- Find parameter ICE/CONFIG/iPAT/ImprovedGrappa and set it to “1”
- Find ICE/CONFIG/iPAT/GrappaPSize or ICE/CONFIG/iPAT/GrappaSegements just below and change them as you wish. E.g. change GrappaPSize from 4 to 2.
Note: The file IceConfig.evp is overwritten every time a new ‘patient’ is registered. Hence, if you mess around in IceConfig.evp, there is no danger that you affect other people scanning after you. However, it also means that you should always apply your changes after your patient is registered.
Note: The GRAPPA-kernel size in the current IceConfig.evp file is also used for Retro-Recon. This means that when you want to RetroRecon an old dataset while a different patient is currently registered. The setup of the current patient will be used. This feature also allows you to reconstruct the same date with multiple GRAPPA-kernel sizes. Just change IceConfig.evp in the current patient and any data will be reconstructed with the current set of parameters during RetroRecon in Twix.
Adjustment by setting it in the Ice-Program
The values within the IceConfig.evp can be overruled in the IceProgram. I.e. if you use your own IceProgram, you can include additional changes as follows:
I do not really have good experiences with this way of doing it. I found that it sometimes fails (in RetroRecon only) when there are conflicting parameters in IceConfig.evp and the IceProgram*.evp.
Adjustment within the sequence special card
Some WIP sequences allow you to adjust the kernel-size via the sequence special card. E.g. the CMRR MutliBand sequence allows you to choose 3×3, 5×3 and 5×5 (slice-size x read-size).
How to find out which kernel-size was eventually used
Very often you would like to find out which GRAPPA-Kernel size was used. And/or you want to double check whether your manually changed kernel-size was properly applied. You can check the used GRAPPA-kernel size in the Twix data as follows:
- Start Twix (Ctrl+Esc and run twix)
- Select the dataset in the left panel (red), open RetroRecon (blue), and click on edit (green).
- The used GRAPPA-kernel size can be seen in -> XProtocol-> IRIS -> PIPI -> GrappaFindWs -> Functor (black arrow).
Simple software to explore optimal GRAPPA-kernel sizes for a given ROI
The program LN_GFACTOR is part of the standalone C++ software suite LAYNII. Its whole purpose is to find regions of particularly high g-factor penalty for a given dataset, GRAPPA-factor, phase-encoding direction.
It can be called with the following command:
LN_GFACTOR -input input.nii -output GFACTOR.nii -variance 1 -direction 1 -grappa 2 -cutoff 150
It will provide outputs as shown above. G-factor maps and simulated noise distribution.