PEPOLAR SDC for (cs-)DSI

Summary of what happened:

Hi all,

We’ve recently been trying out a cs-DSI sequence here at UCSB (which we got, I believe, from @mattcieslak) and I’m hoping to get some insights on processing these data through qsiprep. We collected one set of DSI images with A>>P phase encoding + an additional P>>A spin-echo sequence for SDC. My initial understanding was that we could use SHORELine for HMC, which would generate the A>>P b=0 images needed for subsequent SDC via 3dQwarp, as per:

Phase Encoding POLARity (PEPOLAR) techniques (also called blip-up/blip-down): This is the implementation from sdcflows, using 3dQwarp to correct a DWI series using a fieldmap in the fmaps directory [Jezzard1995]. The reverse phase encoding direction scan can come from the fieldmaps directory or the dwi directory.

It seems qsiprep is defaulting to TOPUP instead, though, and thus throws an error that TOPUP is not supported with SHORELine (see traceback below). So, I’m basically just wondering if—in this case—we actually need to collect both AP/PA SE fieldmaps, or need a P>>A DSI (which unfortunately our protocol won’t have time for), or if there’s just something else super obvious I’m missing entirely.

Thanks in advance for the help!

Command used (and if a helper script was used, a link to the helper script or the command generated):

/opt/singularity/bin/singularity run --cleanenv \
	--bind /zwork/tyler/task28/data:/input \
	--bind /zwork/tyler/task28/dwiDerivs:/output \
	--bind /zwork/tyler/task28/dwiWork:/work \
	--bind /sw/freesurfer/license.txt:/license.txt \
	/zwork/tyler/qsiprep/qsiprep-1.0.1.sif /input /output participant \
	--participant-label ${subID} \
	--work-dir /work \
	--anat-modality T1w \
	--denoise-method dwidenoise \
	--unringing-method rpg \
	--b0-to-t1w-transform Rigid \
	--output-resolution 1.7 \
	--hmc-model 3dSHORE \
	--hmc-transform Rigid \
	--fs-license-file /license.txt

Version:

1.0.1

Environment (Docker, Singularity / Apptainer, custom installation):

Singularity

Data formatted according to a validatable standard? Please provide the output of the validator:

	 Collected data:
dwi:
- /input/sub-02/dwi/sub-02_dwi.nii.gz
flair: []
fmap:
- /input/sub-02/fmap/sub-02_acq-dwi_dir-PA_epi.nii.gz
roi: []
sbref: []
t1w:
- /input/sub-02/anat/sub-02_T1w.nii.gz
t2w: []

Relevant log outputs (up to 20 lines):

Traceback (most recent call last):
  File "/opt/conda/envs/qsiprep/lib/python3.10/multiprocessing/process.py", line 314, in _bootstrap
    self.run()
  File "/opt/conda/envs/qsiprep/lib/python3.10/multiprocessing/process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/qsiprep/cli/workflow.py", line 118, in build_workflow
    retval['workflow'] = init_qsiprep_wf()
  File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/qsiprep/workflows/base.py", line 82, in init_qsiprep_wf
    single_subject_wf = init_single_subject_wf(subject_id, session_ids)
  File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/qsiprep/workflows/base.py", line 400, in init_single_subject_wf
    dwi_preproc_wf = init_dwi_preproc_wf(
  File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/qsiprep/workflows/dwi/base.py", line 251, in init_dwi_preproc_wf
    hmc_wf = init_qsiprep_hmcsdc_wf(
  File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/qsiprep/workflows/dwi/hmc_sdc.py", line 182, in init_qsiprep_hmcsdc_wf
    raise Exception('TOPUP is not supported with SHORELine ')
Exception: TOPUP is not supported with SHORELine 

I believe we’re using the same protocol (or at least a very similar one) in a current project. I’m not a dMRI expert, and @mattcieslak is currently at ISMRM, but I can at least share the settings we’re using, which @mattcieslak recommended and which seem to work pretty well:

-skip-bids-validation \
--denoise-method dwidenoise \
--output-resolution 1.7 \
--subject-anatomical-reference sessionwise \
--hmc-model 3dSHORE \
--pepolar-method DRBUDDI \
--b1-biascorrect-stage none

So we have DRBUDDI enabled instead of topup. Our DWI scans are also prescan normalized, so we have B1 bias correction disabled (see Preprocessing — qsiprep 1.0.2.dev3+gc74ff2f documentation).

2 Likes

Hi @tsantander! @tsalo is exactly right, topup can only be used with Eddy and Eddy can’t be used with these sequences. Luckily DRBUDDI works really well here. It’s on our list to make a better warning for this when a non-shelled scheme is input

1 Like

Thanks, Matt + @tsalo! Good to know DRBUDDI ought to work—I was checking out some of the TORTOISE documentation the other day, seemed like it needed dwi data in both PE directions (rather than dwi + one opposite spin-echo) so I hadn’t tried it yet. Will give that a shot now!