Print

Print


Hi again,

Well I found a tutorial that answers my question, in case anyone is interested:

https://lcni.uoregon.edu/kb-articles/kb-0003

Done by the people at LCNI.


After using topup in FSL, you need to use SPM to get the VDM. In order to do this, you need to get the:

"Effective echo spacing" 

(We use the "effective" echo spacing, rather than the actual echo spacing, in order to include the effects of parallel imaging, phase oversampling, etc. Siemens has helpfully included this information in the DICOM file with the parameter "Bandwidth Per Pixel Phase Encode", stored in DICOM tag (0019, 1028). Multiplying this by the size of the reconstructed image in the phase direction (aka the number of reconstructed phase lines) will give you the reciprocal of the effective echo spacing. The size of the image in the phase direction is *usually* the first number in the field (0051, 100b), AcquisitionMatrixText. You can also just read the effective echo spacing from the Series Info screen in MRIConvert if you are running the latest version.)

Effective Echo Spacing (s) = 1/(BandwidthPerPixelPhaseEncode * MatrixSizePhase)

and "Total readout Time"

(The total readout time (FSL definition) is the time from the center of the first echo to the center of the last)

Total readout time (FSL) = (number of echoes - 1) * echo spacing

(You can either use the actual echo spacing and the actual number of phase encodes for the number of echoes, or the effective echo spacing and the number of reconstructed phase lines (easier to get from the DICOM). In fact, for the majority of scans the length of a single echo is so short compared to the readout time that you can use the SPM definition of total readout time. SPM defines it to be from the beginning of the first echo to the end of the last echo. This is a little simpler, and we can just use the reciprocal of the Bandwidth Per Pixel Phase Encode)

Total Readout Time (SPM) = 1/(BandwidthPerPixelPhaseEncode)

(Since the Bandwidth Per Pixel Phase Encode is in Hz, this will give the readout time in seconds.) 

Then go to SPM and do:

If your fieldmap was created using method 2 (blip opposite), you will have to use FSL & topup to calculate a field map as discussed above. In that case, you will need to load a precalculated fieldmap using the obvious button. The fieldmap needs to already be in Hz, must have a filename starting with "fpm", and must be in a NIFTI pair file format.

The lower window has information about the EPI image you wish to unwarp. This is where we need to total readout time, which is also in the defaults file like this:

pm_def.TOTAL_EPI_READOUT_TIME = 21.1 // Replace with the right value for your data!

This is the total epi readout time in ms for the BOLD series you are correcting, NOT the total readout time from the field map acquisition. See the above discussion on total readout time for how to get this from the DICOM. "EPI based fieldmap" should be "no", and "apply jacobian modulation" should also be "no". Polarity of the blips depends not only on your acquisition but also on how your data was converted to NIFTI, so it could be either + or - ve. The easiest thing to do is to try it both ways. Once these parameters are set, load an EPI image. After a moment, you'll see the fieldmap, warped EPI, and unwarped EPI in the graphics window.

That's it.