Fmriprep errors on ds001506

Hi, I’m trying to run fmriprep (1.5.8) on ds001506.

Several functional runs fail with crash messages as shown below (a nibabel.load failure). All of the working folder NIFTIs mentioned in the message, as well as the original scan, look intact (can be loaded into fsleyes without any problems) I also verified the original scan’s checksum. How to debug this? Which file can’t be loaded?

Edit: I’m using the fmriprep-docker interface.

Node: fmriprep_wf.single_subject_02_wf.func_preproc_ses_perceptionNaturalImageTraining01_task_perception_run_02_wf.bold_reg_wf.fsl_bbr_wf.flt_bbr
Working directory: /scratch/fmriprep_wf/single_subject_02_wf/func_preproc_ses_perceptionNaturalImageTraining01_task_perception_run_02_wf/bold_reg_wf/fsl_bbr_wf/flt_bbr

Node inputs:

angle_rep =
apply_isoxfm =
apply_xfm =
args =
bbrslope =
bbrtype =
bgvalue =
bins =
coarse_search =
compress_report = auto
cost =
cost_func = bbr
datatype =
display_init =
dof = 6
echospacing =
environ = {‘FSLOUTPUTTYPE’: ‘NIFTI_GZ’}
fieldmap =
fieldmapmask =
fine_search =
force_scaling =
in_file = /scratch/fmriprep_wf/single_subject_02_wf/func_preproc_ses_perceptionNaturalImageTraining01_task_perception_run_02_wf/bold_reference_wf/enhance_and_skullstrip_bold_wf/apply_mask/uni_xform_masked.nii.gz
in_matrix_file = /scratch/fmriprep_wf/single_subject_02_wf/func_preproc_ses_perceptionNaturalImageTraining01_task_perception_run_02_wf/bold_reg_wf/fsl_bbr_wf/flt_bbr_init/uni_xform_masked_flirt.mat
in_weight =
interp =
min_sampling =
no_clamp =
no_resample =
no_resample_blur =
no_search =
out_file =
out_log =
out_matrix_file =
out_report = report.svg
output_type = NIFTI_GZ
padding_size =
pedir =
ref_weight =
reference = /scratch/fmriprep_wf/single_subject_02_wf/anat_preproc_wf/brain_extraction_wf/copy_xform/sub-02_ses-anatomy_T1w_ras_valid_corrected_masked_xform.nii.gz
rigid2D =
save_log =
schedule = /usr/share/fsl/5.0/etc/flirtsch/bbr.sch
searchr_x =
searchr_y =
searchr_z =
sinc_width =
sinc_window =
uses_qform =
verbose =
wm_seg = /scratch/fmriprep_wf/single_subject_02_wf/anat_preproc_wf/t1w_dseg/sub-02_ses-anatomy_T1w_ras_valid_corrected_masked_xform_seg_wm.nii.gz
wmcoords =
wmnorms =

Traceback (most recent call last):
File “/usr/local/miniconda/lib/python3.7/site-packages/nipype/pipeline/plugins/multiproc.py”, line 67, in run_node
result[“result”] = node.run(updatehash=updatehash)
File “/usr/local/miniconda/lib/python3.7/site-packages/nipype/pipeline/engine/nodes.py”, line 516, in run
result = self._run_interface(execute=True)
File “/usr/local/miniconda/lib/python3.7/site-packages/nipype/pipeline/engine/nodes.py”, line 635, in _run_interface
return self._run_command(execute)
File “/usr/local/miniconda/lib/python3.7/site-packages/nipype/pipeline/engine/nodes.py”, line 741, in _run_command
result = self._interface.run(cwd=outdir)
File “/usr/local/miniconda/lib/python3.7/site-packages/nipype/interfaces/base/core.py”, line 398, in run
runtime = self._post_run_hook(runtime)
File “/usr/local/miniconda/lib/python3.7/site-packages/niworkflows/interfaces/registration.py”, line 182, in _post_run_hook
return super(FLIRTRPT, self)._post_run_hook(runtime)
File “/usr/local/miniconda/lib/python3.7/site-packages/nipype/interfaces/mixins/reporting.py”, line 50, in _post_run_hook
self._generate_report()
File “/usr/local/miniconda/lib/python3.7/site-packages/niworkflows/interfaces/report_base.py”, line 67, in _generate_report
compress=self.inputs.compress_report),
File “/usr/local/miniconda/lib/python3.7/site-packages/niworkflows/viz/utils.py”, line 371, in plot_registration
np.unique(contour.get_fdata()), [0, 2, 3, 41, 42])
File “/usr/local/miniconda/lib/python3.7/site-packages/nibabel/dataobj_images.py”, line 356, in get_fdata
data = np.asanyarray(self._dataobj, dtype=dtype)
File “/usr/local/miniconda/lib/python3.7/site-packages/numpy/core/numeric.py”, line 553, in asanyarray
return array(a, dtype, copy=False, order=order, subok=True)
File “/usr/local/miniconda/lib/python3.7/site-packages/nibabel/arrayproxy.py”, line 393, in array
arr = self._get_scaled(dtype=dtype, slicer=())
File “/usr/local/miniconda/lib/python3.7/site-packages/nibabel/arrayproxy.py”, line 360, in _get_scaled
scaled = apply_read_scaling(self._get_unscaled(slicer=slicer), scl_slope, scl_inter)
File “/usr/local/miniconda/lib/python3.7/site-packages/nibabel/arrayproxy.py”, line 339, in _get_unscaled
mmap=self._mmap)
File “/usr/local/miniconda/lib/python3.7/site-packages/nibabel/volumeutils.py”, line 534, in array_from_file
getattr(infile, ‘name’, ‘object’)))
OSError: Expected 13631488 bytes, got 9287259 bytes from object

  • could the file be damaged?

This might be relevant. Trying to produce only T1w-space functional files while still running Freesurfer recon-all, the run described above was preceeded by running the anatomical pipeline alone:

fmriprep-docker /cifs_storage/ds001506/ds001506_download/ /cifs_storage/ds001506 --participant_label 02 --fs-subjects-dir ~/ds001506/freesurfer-subjects --work-dir ~/work-dir --anat-only --fs-license-file ~/fs_license.txt

I then ran a functional pipeline without a surface reconstruction (to avoid the production of fsaverage5 functional files):

fmriprep-docker /cifs_storage/ds001506/ds001506_download/ /cifs_storage/ds001506 --participant_label 02 --fs-subjects-dir ~/ds001506/freesurfer-subjects --work-dir ~/work-dir --fs-license-file ~/fs_license.txt --output-spaces T1w --task perception --fs-no-reconall

Strangely, this crashes for something like 15% of the functional runs.