b0 field map distortion correction

Dear AFNI Experts,

I am analyzing a fMRI dataset collected by others, in which they provided field map images to do distortion correction. Have not done this before, luckily I found the program epi_b0_correct.py, which was just added in afni. But I got confused about several questions:

  1. According to a webpage describing field map correction, there are different kinds of field map images: phase map(use in SPM toolbox), magnitude map(used in FSL TOPUP). And think the images in current dataset are magnitude map (please see attached), which were collected using Siemens with epse2d1_80. There is one volume of AP direction map and one volume of PA direction map for each run of the epi images. So could I use these to create the phase map as the frequency input of epi_b0_correct.py?
  2. If I could use this, should I do the correction before register? or I should do this with all other space transformation in one time?

Thanks!!!

Below is the file for sequence protocol
“Modality”:“MR”,
“MagneticFieldStrength”:3,
“ImagingFrequency”:123.223,
“Manufacturer”:“Siemens”,
“ManufacturersModelName”:“TrioTim”,
“InstitutionName”:“Caltech_Tim32”,
“SoftwareVersions”:“syngo_MR_B17”,
“MRAcquisitionType”:“2D”,
“SeriesDescription”:“SE_EPI_Fieldmap_Neg”,
“ProtocolName”:“SE_EPI_Fieldmap_Neg”,
“ScanningSequence”:“EP”,
“SequenceVariant”:“SK”,
“ScanOptions”:“FS”,
“SequenceName”:“epse2d1_80”,
“ImageType”:[
“ORIGINAL”,
“PRIMARY”,
“M”,
“ND”,
“MOSAIC”
],
“SeriesNumber”:10,
“AcquisitionTime”:“13:55:38.332500”,
“AcquisitionNumber”:1,
“SliceThickness”:2.5,
“SpacingBetweenSlices”:2.5,
“SAR”:0.369622,
“EchoTime”:0.05,
“RepetitionTime”:4.8,
“FlipAngle”:90,
“PartialFourier”:1,
“BaseResolution”:80,
“ShimSetting”:[
9524,
-10487,
15763,
564,
-11,
300,
-153,
-176
],
“TxRefAmp”:311.684,
“PhaseResolution”:1,
“ReceiveCoilName”:“32Ch_Head”,
“CoilString”:“C:HEA;HEP”,
“PulseSequenceDetails”:“%CustomerSeq%_cmrr_mbep2d_se”,
“PercentPhaseFOV”:100,
“PhaseEncodingSteps”:80,
“AcquisitionMatrixPE”:80,
“ReconMatrixPE”:80,
“BandwidthPerPixelPhaseEncode”:23.148,
“EffectiveEchoSpacing”:0.000540003,
“DerivedVendorReportedEchoSpacing”:0.000540003,
“TotalReadoutTime”:0.0426603,
“PixelBandwidth”:2404,
“DwellTime”:2.6e-06,
“PhaseEncodingDirection”:“j”,
“SliceTiming”:[

Hello,

Sorry for being so slow on this.

You mention is one volume of AP direction map and one volume of PA direction map for each run of the epi images. Those are opposite phase directions, they are not B0 distortion maps.

What we do in this case is to non-linearly register the forward direction (PA?) with the reverse direction (AP?) map, and then take the “midpoint” or the sqrt(xform). That can be done easily in afni_proc.py, but providing one pair of those images using -blip_forward_dset and -blip_reverse_dset. Very easy.

The difficulty here would be doing this per run. Right now, afni_proc.py is only able to do this once across all runs. You could work around this limitation by running AP per run, maybe giving it the first run’s volreg base for the rest to align to, or you could just use the first pair only.

I will ponder this going forward.

  • rick