At high resolution EPI, the gradients are pushed to their limits and the ramp sampling ratio is particularly large. This means that the ghosting is increased and the Nyquist ghost correction is getting more important. In this post, I describe how to change the Nyquist ghost correction algorithm.
Nyquist ghost correction becomes challenging with large ramp sampling ratios
For a given gradient strengths, any time delay between odd and even lines in k-space refers to a shift in read direction. Hence, without ramp sampling, a given delay can be easilty corrected for with a global realignment of odd and even k-space lines. When the gradient strengths is not constant anymore during ramp sampling, however, time delay cannot be approximated with a a gloabl shift (phase offset). During the ramps, a given time delay refers to different shift distances. Hence, with high ramp sampling factors, the two fit parameters in the phase correction cannot completely correct for all eddy currents.
Additionally, field drifts due to gratient temperature changes can then be translated to additional phase offsets and additional EPI-ghosting.
How to change the Nyquist ghost correction
Changing the phase correction algorithm in the protocol editor
Very few sequences allow the user to change the phase correction algorithm. In this case its very easy to adjust. I have the best experienced with the ‘local’ phase correction scheme. I also found that the ‘local’ phase correction should reduce the changing ghosting over time. Strangely, sometimes, the tSNR is higher for the ‘normal’ phase correction scheme, though the ghosting makes the image completely unusable.
Changing the phase correction algorithm in the sequence code
The phase correction algorithm can be set in the sequence code as follows by setting the parameter pSeqExpo->setOnlinePhaseCorrectionAlgo().
Changing the phase correction algorithm in the Ice-Configurations
You can change the reconstruction method via Twix at the scanner. This method is helpful when you don’t have the sequence code. It is also very helpful, when you want to reconstruct the same dataset multiple times with different phase correction methods:
- Start twix (Ctrl+Esc and run twix)
- select the dataset in the left panel
- click the edit symbol
- click on edit
- search for iOnlinePhasCorrectionAlgo
- select iOnlinePhasCorrectionAlgo
- change number to 68
- click save
- reconstruct by clicking Start
Note however, that if the phase correction is hard coded in the sequence, the parameters in the iceConfig file are not used.
There are multiple algorithms implemented that you can choose from. As far as I understand the assignment is as follows:
0 no phase correction: the ghosts look horrible
1: IsOnlinePCCCrossCorr (iterative and patented algorithm from SIEMENS explained in the ICE manual)
2: IsOnlinePCAutoCorr (different iterative and patented algorithm from SIEMENS explained in the ICE manual)
7=4,2,1 a.k.a Pixel-by-pixel fit with one parameter: unusable for me because the ghosts are very bad
68: default for some: correlation estimation of odd and even lines (two parameters) multiplied by the magnitude (according to Polimeni).
summing any of these together enables those algorithms (e.g. 1+2+4 = 7: CrossCorr, AutoCorr & Primary Mode)
You can check which algorithms correspond to which parameters by opening the twix and viewing “onlinetse” under the “PIPE”.
Some of these algorithms are only accessible, if you have the IceFunctor: onlinetse or onlinetse_advanced, which is included in some C2Ps.
Sometimes different combinations of the algorithms above are also referred to “global”, local (68)”, Pixel-by-pixel (6), normal.
As usual with sequence stuff. I learned everything from Ben Poser. I want to thank Joseph Vu for the discussions about this on github.
4 thoughts on “EPI phase correction algorithms”
Hi Renzo, how do your results with the different options get affected by the choice of phased array Rx coil? With the 32ch coil on my Trio, we routinely see problems in inferior axial slices whereby one portion of a Nyquist ghost will appear to blink from TR to TR, as the phase correction oscillates between two states affected by motion, random noise, etc. We understand it is a consequence of having each channel’s ghosts corrected independently, regardless of the SNR available in any given channel. With a birdcage coil or a smaller array, especially in the TIM mode that Siemens uses for its 12ch coil, there is always a large SNR available. But things seem to get quite sensitive in 32ch coils, even at 3 T.
One other separate note about ramp sampling and Nyquist ghost stability. We’ve found that the biggest limitation to aggressive ramp sampling – say, more than 50% of the ADC period on the two ramps – is our facility’s power stability. We don’t have a local power conditioner, so the compliance of the gradient amps is dependent on whatever else might be happening on the circuit supplying our scanner its nominal 480 V, 3-phase power. (We used to see 500 V quite often during evenings and on weekends.) So we find that up to a certain echo spacing (as a proxy for ramp sampling percentage), all is okay with the ghost correction, but all of a sudden the ghosts become horrendous. On my Trio, the shortest possible echo spacing for a typical 64 point readout over ~20cm FOV is 0.43 ms. But below 0.47 ms there is a pronounced sensitivity to power stability, and the ghosting essentially prohibits echo spacing at 0.45 ms or less.
Hi practiCal fMRI,
Regarding your first point:
I am also having more troubles with ghosting for dense arrays. Especially with the 32ch visual coil, the ghosting is much worse compared to the 32ch NOVA. No matter which phase correction algorithms is used.
I fully agree with your explanation that it is a result from applying the phase correction for every channel independently.
I think it makes a lot of sense to to the phase correction for every channel individually. The eddy currents are locally different, so the local distributions of the coil sensitivities will “see” different delays between odd and even lines. E.g. slide 4 here: https://f1000research.com/slides/6-1149.
For smaller channels and for higher field strengths, the local heterogeneity of the coil sensitivities increases. The “local” phase correction algorithm uses the magnitude strengths as a weighting factor during the fit. So for small channels and high fields, the ghost correction is optimized on a very small ROI only. And hence, all the signal outside that ROI aliases all over the place.
I found a comment on this in the 2D-EPI sequence code at the place where the “local” phase-correction is set saying:
// this modification is chosed after discusion with Thorsten Feiweier @ Siemens Erlangen
// it should reduce the increasing ghosting over time when using the 32ch coils in long scans
I wish I would know what this discussion was about. It sounds related to the issue you are describing.
Regarding the second point:
Wow, I didn’t know this could be a problem. I need to ask our guys here, if this might be a problem for us too.
I certainly see considerably worse ghosting with shorter echo spacings: https://layerfmri.files.wordpress.com/2017/11/screenshot-2017-11-26-17-30-54.png?w=1082&h=554
However, I always figured it would be due to the acoustic resonances. Maybe its not.
Hi Renzo, I don’t have anything else to offer on the ghost correction in array coils, I’m afraid. But I shall certainly continue to be on the lookout for better methods! Ultimately, we may need to move to scanners with faster gradients – either shielding the heart or using asymmetric gradient sets – so that we can use flyback EPI and get rid of ghosting altogether.
Re. power stability and ghosting, it is really difficult to separate mechanical resonances from electrical instability. The only solid way I’ve done it is to have the power changed on me, without my knowledge, so that I started to fail my QA testing. After investigation, we discovered that campus had changed the transformer and switching gear supplying my facility. The new power specs were way worse than previously, and we lived with that new condition for a couple of years. (I had to modify – dumb down – my QA to render it useful again. Grrr.) What I did find, however, is that when I had my previous short echo spacing – the one in the old QA – I would see ghosts swirl with a definite period. That is, they aren’t simply more intense, they also modulate in a very obvious way. Since this phenomenon began with the power switch, my conclusion is that it’s a feature of the power instability.
Tomorrow I’ll try to dig out some old test data for you.
Found an example! Had included it in this blog:
See the video, Excessive Ramp Sampling, right over the word “swirl.”