Synb0 for dwifslpreproc: How?

Hi all,

I am currently analyzing a dataset (b=1000, 64dir, PE-dir=j-) without any RPE acquisitions and I am using Synb0-DISCO. This topic may cover both Synb0 and MRtrix, and I want to double-check whether I have done things correctly:

The steps for each subject:

  1. Denoise and Gibbs ringing removal, and then b0 extraction
  2. Provide acqparams.txt as: [0 -1 0 readout; 0 -1 0 0]
  3. Run Synb0-DISCO with OUTPUTS and INPUTS in the same main analysis folder
  4. dwifslpreproc dwi_denoised_unringed.mif dwi_preprocessed.mif -rpe_none -pe_dir j- -readout readout -eddy_options=" …/Synb0_outputs/topup"

Any comments?


Hi Amir

I’m not going to weigh in on the “correctness” of your approach, because I don’t know any better. But since I’ve also done some experiments with synb0-disco I thought I’d document my steps here for you so we can compare notes :slight_smile:

What I remember is that I had quite a bit of fiddling around to do to get the directions right, maybe due to the interactions of strides / pe dir? I have vague memories of distortion corrections applied the wrong way (so exaggerating the distortion) and struggling to reproduce results between dwifslpreproc, the topup outputs created by synb0-disco, and manually using topup.

Anyhow, this is the process I seem to have ended up with.

  1. :ballot_box_with_check: dwidenoisemrdegibbsINPUTS/b0.nii.gz (I don’t have a record of the exact way I extracted b0.nii.gz
  2. :ballot_box_with_check: same here
    cat synb0-disco/INPUTS/acqparams.txt
    0 -1 0 0.05225
    0 -1 0 0
  3. :ballot_box_with_check: (I had to run synb0-disco in singularity on an HCP cluster because of RAM limitations)
  4. This part I did differently, again not entirely sure why, but I opted to do both topup and eddy using the dwifslpreproc wrapper, so my commands look like this:
    $ mrconvert synb0-disco/OUTPUTS/b0_all.nii.gz synb0_out.mif -import_pe_table synb0-disco/INPUTS/acqparams.txt -strides '-1,+2,+3,+4'
    # where eddy_indices is as many 1s as volumes in degibbs.mif, 31 in my case
    $ cat eddy_indices.txt
    1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
    $ mrconvert degibbs.mif eddy_in.mif  -import_pe_eddy synb0-disco/INPUTS/acqparams.txt eddy_indices.txt -strides '-1,+2,+3,+4'
    $ dwifslpreproc eddy_in.mif topup_eddy_done.mif -rpe_header -se_epi synb0_out.mif

Not particularly helpful in validating your approach I’m afraid, but I usually find it useful seeing what others have done. Good luck, and I’d be interested to hear about what you think of the results!


1 Like

Hi Fiona,

Thanks for your reply, and yes, I am having the same struggle as yours most possibly due to the interactions of strides between T1 and b0s. The pipeline I used generated topup_fieldcoeff.nii.gz with anterior-posterior being reversed (see below; look for the eyeballs in posterior!). I am not sure whether Left-Right was also distorted or not. This resulted in an extreme distortion in the preprocessing step.

So, what I did was to run fslreorient2std on both b0 and T1 in the INPUT folder, rerun Synb0 without any flags, and then pass the topup outputs to the dwifslpreproc.

The results are so far so good!


1 Like