Converting between scanner- and T1w space using supplied affine transforms


Been testing tedana lately, using the preprocessed echos produced by fmriprep using the --me-output-echos option.

When projecting the optimally combined data resulting from tedanas pipeline to T1w-space (using the affine “scanner-to-T1w”-transforms supplied by fMRIprep), I noted some slight but systematic differences between tedana’s output and the optimally combined T1w-space data produced within the fMRIprep-workflow (i.e. *_space-T1w_desc-preproc_bold.nii.gz). Initially I thought this could be due to several factors (tedana uses a different mask etc.), but after some simple sanity checking I can now recreate the issue using data from the fMRIprep workflow only.

Here’s a distilled version of the setup:

  • fMRIprep (21.0.1) with --output-spaces T1w func. SDC using pepolar approach (BOLD EPI PE-direction = AP)

  • antsApplyTransform to bring preprocessed data in func/scanner space to T1w space (similar to @tsalo’s recent PR :

Here’s a gif comparing the converted data (scanner space → T1w space) with the T1w space data produced by fMRIprep

One would not expect the two datasets to be identical due to the additional interpolation-step taken on the converted data, but there seems to be some nonlinear differences as well, producing almost full “voxel shifts” anteriorly but only minor differences posteriorly.

Posterior voxel: scale shift, but highly correlated timeseries:

Anterior voxel (within cortical ribbon). Uncorrelated timeseries.

The non-linear looking differences between the two volumes almost makes me wonder if there could be differences in the SDC-steps taken for the --output-spaces T1w and the --output-spaces func workflows. However, before going into full debug-mode I wanted to check with the users/developers if I’m missing or misunderstanding something obvious here.



Continued this issue in

1 Like