fMRIPrep - Messy volume causes catastrophic normalization failure

Hello all! One participant in our study wound up with a normalization issue, and I’m looking for help deciding what to do.

They start with normal looking functional data.

However, early in their session there are two sequential volumes that look like the picture below.

Apart from those two volumes, there are no issues with the raw functional data. Normalization warps the data-set starting at the problem volume (the prior volumes normalize fine) to the end of the run, causing it to look like the picture below.

I basically need to decide whether to cut the participant, cut out the problem volume and retry normalization, or see if there isn’t some fmriprep option I can tweak to fix this.

This is the code I used for the one participant (to re-check my original analysis). I was on fmriprep v1.4.1

fmriprep-docker /media/shareDrive2/data/comp_incomp/nii /media/shareDrive2/data/sub-05 participant --participant-label 05 --fs-license-file /usr/local/freesurfer/license.txt --output-spaces MNI152NLin2009cAsym:res-2 --write-graph --resource-monitor --nthreads 8 --omp-nthreads 8 --fs-no-reconall

Any help is greatly appreciated!!

fMRIPrep isn’t designed to handle such aberrant data, and there is no way to indicate that volumes should be excluded from motion correction. If you don’t need those volumes (e.g., they’re in dummy scans), then you can try truncating the dataset to exclude them.

Another option could be to motion correct the time series, and take the mean/median image of the motion corrected series. This volume could replace any missing scans. You will also want to add an indicator regressor to indicate that the volume should be excluded from analyses. For example:

dataset/
    derivatives/
        manual_censoring/
            sub-<sub>/
                func/
                    sub-<label>_task-<label>_run-<index>_desc-censor_regressors.tsv
    sub-<sub>/
        func/
            sub-<label>_task-<label>_run-<index>_bold.nii.gz

And the regressors TSV would look something like:

censor_01   censor_02
1            0
0            1
0            0
...

This assumes that you’re censoring the first two volumes. There should be one row per TR.

Note that fMRIPrep does not need the censoring derivatives. This would just be how you would want to package your dataset so that somebody could interpret it.

1 Like

Okay, that makes sense. Thank you so much for your reply!