HALFpipe / HALFpipe

ENIGMA HALFpipe is a user-friendly software that facilitates reproducible analysis of fMRI data
Other
73 stars 12 forks source link

DWI fieldmaps get mixed-up #737

Open emiledangremont opened 1 month ago

emiledangremont commented 1 month ago

What happened? HALFpipe took both the acq-rest and acq-dwi fieldmaps, which resulted in an error, eventhough the acq-dwi fieldmaps have a correct "IntendedFor" label in the JSON (which got overwritten in rawdata)

Is there an error message? [2024-07-23 14:11:04,0441] [nipype.workflow ] [ERROR ] Node merge_op failed to run on host luna-02. [2024-07-23 14:11:04,0445] [nipype.workflow ] [ERROR ] Saving crash info to /ext/scratch/anw/edangremont/HALFpipe/crash-20240723-141104-edangremont-merge_op-dbec5e5e-52fc-4560-a3ca-30084a538273.txt │ File "/usr/local/miniconda/lib/python3.10/site-packages/halfpipe/plugins/multiproc.py", line 71, in run_node │ 49 def run_node(node, updatehash, taskid): │ (...) │ 67 result: dict[str, Any] = dict(result=None, traceback=None, taskid=taskid) │ 68 │ 69 # Try and execute the node via node.run() │ 70 try: │ --> 71 result["result"] = node.run(updatehash=updatehash) │ 72 except Exception: # catch all here │ .................................................. │ node = nipype.fmriprep_wf.single_subject_propark15540_wf.func_prepr │ oc_task_rest_wf.sdc_estimate_wf.pepolar_unwarp_wf.prepare_ep │ i_wf.merge_op │ updatehash = False │ taskid = 22 │ result = {'result': None, │ 'traceback': None, │ 'taskid': 22} │ Any = typing.Any │ node.run = <method 'Node.run' of nipype.fmriprep_wf.single_subject_prop │ ark15540_wf.func_preproc_task_rest_wf.sdc_estimate_wf.pepola │ r_unwarp_wf.prepare_epi_wf.merge_op nodes.py:427> │ .................................................. │ File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 524, in run │ 427 def run(self, updatehash=False): │ (...) │ 520 savepkl(op.join(outdir, "_node.pklz"), self) │ 521 savepkl(op.join(outdir, "_inputs.pklz"), self.inputs.get_traitsfree()) │ 522 │ 523 try: │ --> 524 result = self._run_interface(execute=True) │ 525 except Exception: │ .................................................. │ self = nipype.fmriprep_wf.single_subject_propark15540_wf.func_prepr │ oc_task_rest_wf.sdc_estimate_wf.pepolar_unwarp_wf.prepare_ep │ i_wf.merge_op │ updatehash = False │ op.join = <function 'join' posixpath.py:71> │ outdir = '/ext/scratch/anw/edangremont/HALFpipe/nipype/fmriprep_wf/si │ ngle_subject_propark15540_wf/func_preproc_task_rest_wf/sdc_e │ stimate_wf/pepolar_unwarp_wf/prepare_epi_wf/merge_op' │ self.inputs.get_traitsfree = <method 'BaseTraitedSpec.get_traitsfree' of │ args = │ auto_detect_sensitivity = True │ average_metric = │ environ = {'SUBJECTSDIR': '/opt/freesurfer/subjects', 'OMP │ NUM_THREADS': '1'} │ fixed_timepoint = True │ in_files = ['/ext/scratch/anw/edangremont/HALFpipe/nipype/fm │ riprep_wf/single_subject_propark15540_wf/func_preproc_task_r │ est_wf/sdc_estimate_wf/pepolar_unwarp_wf/prepare_epi_wf/spli │ t/dir-j_tstep-000_pe-000.nii.gz', '/ext/scratch/anw/edangrem │ ont/HALFpipe/nipype/fmriprep_wf/si... │ self._run_interface = <method 'Node._run_interface' of nipype.fmriprep_wf.single_s │ ubject_propark15540_wf.func_preproc_task_rest_wf.sdc_estimat │ e_wf.pepolar_unwarp_wf.prepare_epi_wf.merge_op nodes.py:638> │ .................................................. │ File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 642, in _run_interface │ 638 def _run_interface(self, execute=True, updatehash=False): │ 639 if updatehash: │ 640 self._update_hash() │ 641 return self._load_results() │ --> 642 return self._run_command(execute) │ .................................................. │ self = nipype.fmriprep_wf.single_subject_propark15540_wf.func_prepr │ oc_task_rest_wf.sdc_estimate_wf.pepolar_unwarp_wf.prepare_ep │ i_wf.merge_op │ execute = True │ updatehash = False │ self._update_hash = <method 'Node._update_hash' of nipype.fmriprep_wf.single_sub │ ject_propark15540_wf.func_preproc_task_rest_wf.sdcestimate │ wf.pepolar_unwarp_wf.prepare_epi_wf.merge_op nodes.py:633> │ self._load_results = <method 'Node._load_results' of nipype.fmriprep_wf.single_su │ bject_propark15540_wf.func_preproc_task_rest_wf.sdc_estimate │ _wf.pepolar_unwarp_wf.prepare_epi_wf.merge_op nodes.py:644> │ self._run_command = <method 'Node._run_command' of nipype.fmriprep_wf.single_sub │ ject_propark15540_wf.func_preproc_task_rest_wf.sdcestimate │ wf.pepolar_unwarp_wf.prepare_epi_wf.merge_op nodes.py:690> │ .................................................. │ File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 750, in _run_command │ 690 def _run_command(self, execute, copyfiles=True): │ (...) │ 746 rebase=str2bool(self.config["execution"]["use_relative_paths"]), │ 747 ) │ 748 │ 749 if exc_tb: │ --> 750 raise NodeExecutionError( │ 751 f"Exception raised while executing Node {self.name}.\n\n{result.runtime.traceback}" │ .................................................. │ self = nipype.fmriprep_wf.single_subject_propark15540_wf.func_prepr │ oc_task_rest_wf.sdc_estimate_wf.pepolar_unwarp_wf.prepare_ep │ i_wf.merge_op │ execute = True │ copyfiles = True │ self.config = {'logging': {'workflow_level': 'INFO', │ 'utils_level': 'INFO', │ 'interface_level': 'INFO', │ 'log_to_file': 'false', │ 'log_directory': '/home/anw/edangremont', │ 'log_size': '16384000', │ 'log_rotate': '4'}, │ 'execution': {'create_report': True, │ 'crashdump_dir': PosixPath('/ext/scratch/anw/ │ edangremont/HALFpipe'), │ 'hash_method': 'timestamp', │ 'job_finished_timeout': '5',... │ exc_tb = 'Traceback (most recent call last):\n File "/usr/local/mini │ conda/lib/python3.10/site-packages/nipype/interfaces/base/co │ re.py", line 454, in aggregate_outputs\n setattr(outputs, │ key, val)\n File "/usr/local/miniconda/lib/python3.10/site │ -packages/nipype/interfaces/base/traits_extension.py", line │ 330, in validate\n value = super(File, self).validate(obj │ ekt, name, value, return_pathlike=True)\n File "/usr/local/ │ miniconda/lib/python3.10/site-packages/nipype/interfaces/bas │ e/traits_extension.p... │ NodeExecutionError = <class 'nipype.pipeline.engine.nodes.NodeExecutionError'> │ .................................................. │ ---- (full traceback above) ---- │ File "/usr/local/miniconda/lib/python3.10/site-packages/halfpipe/plugins/multiproc.py", line 71, in run_node │ result["result"] = node.run(updatehash=updatehash) │ File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 524, in run │ result = self._run_interface(execute=True) │ File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 642, in _run_interface │ return self._run_command(execute) │ File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 750, in _run_command │ raise NodeExecutionError( │ NodeExecutionError: Exception raised while executing Node merge_op. │ Traceback (most recent call last): │ File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/interfaces/base/core.py", line 454, in aggregate_outputs │ setattr(outputs, key, val) │ File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/interfaces/base/traits_extension.py", line 330, in validate │ value = super(File, self).validate(objekt, name, value, return_pathlike=True) │ File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/interfaces/base/traits_extension.py", line 135, in validate │ self.error(objekt, name, str(value)) │ File "/usr/local/miniconda/lib/python3.10/site-packages/traits/base_trait_handler.py", line 74, in error │ raise TraitError( │ traits.trait_errors.TraitError: The 'out_file' trait of a RobustTemplateOutputSpec instance must be a pathlike object or string representing an existing file, but a value of '/ext/scratch/anw/edangremont/HALFpipe/nipype/fmriprep_wf/single_subject_propark15540_wf/func_preproc_task_rest_wf/sdc_estimate_wf/pepolar_unwarp_wf/prepare_epi_wf/merge_op/template.nii.gz' <class 'str'> was specified. │ During handling of the above exception, another exception occurred: │ Traceback (most recent call last): │ File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/interfaces/base/core.py", line 401, in run │ outputs = self.aggregate_outputs(runtime) │ File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/interfaces/base/core.py", line 461, in aggregate_outputs │ raise FileNotFoundError(msg) └─FileNotFoundError: No such file or directory '/ext/scratch/anw/edangremont/HALFpipe/nipype/fmriprep_wf/single_subject_propark15540_wf/func_preproc_task_rest_wf/sdc_estimate_wf/pepolar_unwarp_wf/prepare_epi_wf/merge_op/template.nii.gz' for output 'out_file' of a StructuralReference interface

What is the exact command that you used to run Halfpipe? apptainer run --containall --bind /:/ext /data/anw/anw-gold/NP/doorgeefluik/container_apps/halfpipe-halfpipe-latest.sif

Which settings did you use? { "halfpipe_version": "1.2.2.post1.dev84+g0c6346c", "schema_version": "3.0", "timestamp": "2024-07-23_13-25", "global_settings": { "dummy_scans": 0, "slice_timing": true, "use_bbr": null, "skull_strip_algorithm": "ants", "run_mriqc": false, "run_fmriprep": true, "run_halfpipe": true, "fd_thres": 0.5, "anat_only": false, "write_graph": false, "hires": false, "run_reconall": false, "t2s_coreg": false, "medial_surface_nan": false, "bold2t1w_dof": 9, "fmap_bspline": true, "force_syn": false, "longitudinal": false, "regressors_all_comps": false, "regressors_dvars_th": 1.5, "regressors_fd_th": 0.5, "skull_strip_fixed_seed": false, "skull_strip_template": "OASIS30ANTs", "aroma_err_on_warn": false, "aroma_melodic_dim": -200, "sloppy": false }, "files": [ { "datatype": "bids", "path": "/ext/scratch/anw/edangremont/Test_data" } ], "settings": [ { "ica_aroma": true, "smoothing": { "fwhm": 6.0 }, "bandpass_filter": { "hp_width": 128.0, "type": "gaussian" }, "name": "p", "output_image": true } ], "features": [], "models": [] }

HippocampusGirl commented 3 weeks ago

This may be a duplicate of #422