Dear All,
I know that this has been previously discussed on various forums . However, I have noticed some discrepancy in the way EPI echo spacing and readout time are being calculated, specifically for Philips scanner. I will first attempt to summarize various methods that I have found and then through two cases show the discrepancies. I hope that this thread can be used for resolving these. The readout time is an important value that is required for “unwarping” using fieldmap; it is additionally used in diffusion tools like topup etc.
Abbreviations used
WFS
: water-fat shift (per pixel)
ETL
: echo train length
Calculating effective echo spacing (formulae edited for consistent abbreviations)
a) Using OSF formula [1]
effective echo spacing = (((1000 * WFS)/(434.215 * (ETL+1))/acceleration)
b) Using BrainVoyager formula [2]
echo spacing in msec = 1000 * (WFS/(water-fat shift (in Hz) * ETL))
where
ETL = EPI factor + 1
water-fat-shift (Hz) = fieldstrength (T) * water-fat difference (ppm) * resonance frequency (MHz/T)
water-fat difference (ppm) = 3.35 [2]
resonance frequency (MHz/T) = 42.576
effective echo spacing = echo spacing/acceleration
=> effective echo spacing = (1000*(WFS/427.888*ETL))/acceleration
Calculating total readout time (formulae edited for unit preservation and consistency)
a) Using FSL forum post [3]
total readout time = echo spacing * (EPI factor - 1)
b) Using topup FAQ formula [4]
total readout time = echo spacing * EPI factor
c) Using BIDS specification [5]
total readout time = effective echo spacing * (ReconMatrixPE - 1)
I am assuming that folks have interchangeably used echo spacing
and effective echo spacing
in the three formulae here.
Case1: sparse acquisition
Acquisition parameters (from ExamCard (console)):
EPI factor = 45
Act. WFS (pix) / BW (Hz) = 8.881 / 48.9
BW in EPI freq. dir. (Hz) = 3133.3
Min. WFS (pix) / Max. BW (Hz) = 8.859 / 49.0
Reconstruction matrix = 64
SENSE P reduction (AP) = 1.45000005
MB SENSE = no
Act. TR/TE (ms) = 4000 / 30
Min. TR/TE (ms) = 2053 / 12
Substituting above values into the formulae
effective echo spacing
a) OSF Method: = 0.3066
b) BrainVoyager Method: 0.3112
(echo spacing is 0.4512)
Using the BrainVoyager calculated value for readout calculation
a) Forum post formula: 13.6928
b) Topup FAQ formula: 14.0040
c) BIDS formula: 19.6056
Case2: regular acquisition
Acquisition parameters (from ExamCard (console)):
EPI factor = 45
Act. WFS (pix) / BW (Hz) = 8.885 / 48.9
BW in EPI freq. dir. (Hz) = 3131.4
Min. WFS (pix) / Max. BW (Hz) = 8.863 / 49.0
Reconstruction matrix = 64
SENSE P reduction (AP) = 1.45000005
MB SENSE = no
Act. TR/TE (ms) = 3000 / 30
Min. TR/TE (ms) = 2461 / 12
Substituting above values into the formulae
effective echo spacing
a) OSF Method: = 0.3068
b) BrainVoyager Method: 0.3113
(echo spacing is 0.4514)
Using the BrainVoyager calculated value for readout calculation
a) Forum post formula: 13.6972
b) Topup FAQ formula: 14.0085
c) BIDS formula: 19.6119
Questions:
-
There is discrepancy in the definition of echo train length:
dcm2niix
reports theEPI factor
as the echo train length in the JSON file whileBrainVoyager
mentionsETL = EPI factor + 1
. The OSF document mentions thatETL=EPI factor
-
The two formulae for calculating effective echo spacing are almost identical except for the constant term:
OSF/Spinoza centre
uses434.215
while the calculation viaBrainVoyager
results in427.888
. How should we resolve this difference? -
Which method should be used for calculating total readout time?
Look forward to getting some advise on these. Of course, if there is an error in my interpretation, please feel free to point that out. Thank you
References
[1] Document on OSF: https://osf.io/hks7x/
[2] The BrainVoyager guide: https://support.brainvoyager.com/brainvoyager/functional-analysis-preparation/29-pre-processing/78-epi-distortion-correction-echo-spacing-and-bandwidth
[3] FSL forum post: https://www.jiscmail.ac.uk/cgi-bin/webadmin?A2=ind1308&L=FSL&D=0&P=112807
[4] FSL topup FAQ: https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/topup/Faq#How_do_I_know_what_phase-encode_vectors_to_put_into_my_--datain_text_file.3F