nipreps / fmriprep

fMRIPrep is a robust and easy-to-use pipeline for preprocessing of diverse fMRI data. The transparent workflow dispenses of manual intervention, thereby ensuring the reproducibility of the results.
https://fmriprep.org
Apache License 2.0
638 stars 295 forks source link

Crash when using --cifti-output #3282

Closed kjamison closed 6 months ago

kjamison commented 6 months ago

What happened?

fmriprep crashes when I include --cifti-output 91k. It works fine when I remove that argument.

What command did you use?

apptainer run --containall --cleanenv -B mydata/bids:/bids -B mydata/output:/output -B mydata/work:/work -B mydata/freesurfer_license.txt:/opt/freesurfer/license.txt -B mydata/templateflow:/opt/templateflow --env TEMPLATEFLOW_HOME=/opt/templateflow  fmriprep_23.2.1.sif /bids /output participant --fs-license-file /opt/freesurfer/license.txt --work-dir /work --fs-subjects-dir /bids/derivatives/freesurfer --fs-no-reconall --output-spaces MNI152NLin6Asym:res-2 MNI152NLin2009cAsym:res-2 --cifti-output 91k --write-graph --stop-on-first-crash

What version of fMRIPrep are you running?

23.2.1

How are you running fMRIPrep?

Singularity

Is your data BIDS valid?

Yes

Are you reusing any previously computed results?

FreeSurfer

Please copy and paste any relevant log output.

Traceback (most recent call last):
  File "/opt/conda/envs/fmriprep/lib/python3.10/site-packages/nipype/pipeline/plugins/multiproc.py", line 292, in _send_procs_to_workers
    num_subnodes = self.procs[jobid].num_subnodes()
  File "/opt/conda/envs/fmriprep/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 1309, in num_subnodes
    self._check_iterfield()
  File "/opt/conda/envs/fmriprep/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 1332, in _check_iterfield
    raise ValueError(
ValueError: Input surface_in was not set but it is listed in iterfields.

When creating this crashfile, the results file corresponding
to the node could not be found.
240506-17:11:42,592 nipype.workflow CRITICAL:
     fMRIPrep failed: Traceback (most recent call last):
  File "/opt/conda/envs/fmriprep/lib/python3.10/site-packages/nipype/pipeline/plugins/multiproc.py", line 292, in _send_procs_to_workers
    num_subnodes = self.procs[jobid].num_subnodes()
  File "/opt/conda/envs/fmriprep/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 1309, in num_subnodes
    self._check_iterfield()
  File "/opt/conda/envs/fmriprep/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 1332, in _check_iterfield
    raise ValueError(
ValueError: Input surface_in was not set but it is listed in iterfields.

When creating this crashfile, the results file corresponding
to the node could not be found.
240506-17:11:44,269 nipype.workflow INFO:
     [Node] Setting-up "fmriprep_23_2_wf.sub_01_wf.curv_wf.get_surfaces" in "/work/fmriprep_23_2_wf/sub_01_wf/curv_wf/get_surfaces".
240506-17:11:44,314 nipype.workflow INFO:
     [Node] Executing "get_surfaces" <nipype.interfaces.io.FreeSurferSource>
240506-17:11:44,314 nipype.workflow WARNING:
     [Node] Error on "fmriprep_23_2_wf.sub_01_wf.curv_wf.get_surfaces" (/work/fmriprep_23_2_wf/sub_01_wf/curv_wf/get_surfaces)
240506-17:11:45,379 cli ERROR:
     Preprocessing did not finish successfully. Errors occurred while processing data from participants: 01 (1). Check the HTML reports for details.

Additional information / screenshots

No response

tsalo commented 6 months ago

It looks like this is the same bug as in #3071. I don't think you can have CIFTI outputs without running FreeSurfer.

kjamison commented 6 months ago

I guess I misunderstood the --fs-no-reconall flag. I didn't want it to RERUN freesurfer, but the outputs exist. It does run and produce cifti outputs if I remove the "--fs-no-reconall" flag. As mentioned in the issue you reference, it would be helpful if the error message was more clear

effigies commented 6 months ago

Closing as a duplicate of #3071.