nipreps / dmriprep

dMRIPrep is a robust and easy-to-use pipeline for preprocessing of diverse dMRI data. The transparent workflow dispenses of manual intervention, thereby ensuring the reproducibility of the results.
https://www.nipreps.org/dmriprep
Apache License 2.0
65 stars 24 forks source link

eddy: msg=ECScanManager::GetShellIndicies: Data not shelled #159

Closed levchenkoegor closed 3 years ago

levchenkoegor commented 3 years ago

Description

I tried to run dmriprep on our HPC cluster using singularity with the next command (SUBJ_I is an iterator to send subjects 1 by 1 to cluster):

module load singularity
singularity run --cleanenv ~/my_images/dmriprep-0.5.0.simg ~/OASIS-3/raw_data/controls/ ~/OASIS-3/derivatives_dmriprep/controls/ participant --participant-label $(awk "NR==$SUBJ_I" ~/OASIS-3/controls_dwi_list.txt) -w ~/OASIS-3/work_dmriprep/controls/ --fs-license-file ~/freesurfer_license.txt --fs-no-reconall --skip-bids-validation

During the calculations, an error occurred, that I don't understand.

Output file:

...
210318-02:36:30,644 nipype.workflow INFO:
     [Node] Running "seg_rpt" ("niworkflows.interfaces.reportlets.masks.ROIsPlot")
210318-02:36:42,469 nipype.workflow INFO:
     [Node] Finished "dmriprep_wf.single_subject_OAS30001_wf.anat_preproc_wf.anat_reports_wf.seg_rpt".
210318-02:36:45,279 nipype.workflow ERROR:
     could not run node: dmriprep_wf.single_subject_OAS30001_wf.dwi_preproc_ses_d0757_wf.eddy_wf.eddy
210318-02:36:45,279 nipype.workflow ERROR:
     could not run node: dmriprep_wf.single_subject_OAS30001_wf.dwi_preproc_ses_d3132_run_01_wf.eddy_wf.eddy
210318-02:36:45,279 nipype.workflow ERROR:
     could not run node: dmriprep_wf.single_subject_OAS30001_wf.dwi_preproc_ses_d3132_run_02_wf.eddy_wf.eddy
210318-02:36:45,281 nipype.workflow CRITICAL:
     dMRIPrep failed: Workflow did not execute cleanly. Check log for details
210318-02:36:46,216 cli ERROR:
     Preprocessing did not finish successfully. Errors occurred while processing data from participants: OAS30001 (3). Check the HTML reports for details.
210318-02:36:46,216 cli ERROR:
     Preprocessing did not finish successfully. Errors occurred while processing data from participants: OAS30001 (3). Check the HTML reports for details.

HTML report:

...
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 434, in run
    runtime = self._run_interface(runtime)
  File "/usr/local/miniconda/lib/python3.7/site-packages/nipype/interfaces/fsl/epi.py", line 996, in _run_interface
    runtime = super(Eddy, self)._run_interface(runtime)
  File "/usr/local/miniconda/lib/python3.7/site-packages/nipype/interfaces/base/core.py", line 829, in _run_interface
    self.raise_exception(runtime)
  File "/usr/local/miniconda/lib/python3.7/site-packages/nipype/interfaces/base/core.py", line 760, in raise_exception
    ).format(**runtime.dictcopy())
RuntimeError: Command:
eddy_openmp --flm=quadratic --ff=10.0 --acqp=/home/elevchenko/OASIS-3/raw_data/controls/sub-OAS30001/ses-d3132/dwi/sub-OAS30001_ses-d3132_run-02_dwi_acqparams.txt --bvals=/home/elevchenko/OASIS-3/raw_data/controls/sub-OAS30001/ses-d3132/dwi/sub-OAS30001_ses-d3132_run-02_dwi.bval --bvecs=/home/elevchenko/OASIS-3/raw_data/controls/sub-OAS30001/ses-d3132/dwi/sub-OAS30001_ses-d3132_run-02_dwi.bvec --imain=/home/elevchenko/OASIS-3/raw_data/controls/sub-OAS30001/ses-d3132/dwi/sub-OAS30001_ses-d3132_run-02_dwi.nii.gz --index=/home/elevchenko/OASIS-3/raw_data/controls/sub-OAS30001/ses-d3132/dwi/sub-OAS30001_ses-d3132_run-02_dwi_index.txt --mask=/home/elevchenko/OASIS-3/work_dmriprep/controls/dmriprep_wf/single_subject_OAS30001_wf/dwi_preproc_ses_d3132_run_02_wf/dwi_reference_wf/enhance_and_skullstrip_dwi_wf/combine_masks/sub-OAS30001_ses-d3132_run-02_dwi_b0_mcf_corrected_brain_mask_maths.nii.gz --interp=spline --resamp=jac --niter=5 --nvoxhp=1000 --out=/home/elevchenko/OASIS-3/work_dmriprep/controls/dmriprep_wf/single_subject_OAS30001_wf/dwi_preproc_ses_d3132_run_02_wf/eddy_wf/eddy/eddy_corrected --slm=none
Standard output:
eddy: msg=ECScanManager::GetShellIndicies: Data not shel�
Standard error:
terminate called after throwing an instance of 'EDDY::EddyException'
  what():  eddy: msg=ECScanManager::GetShellIndicies: Data not shelled
Aborted
Return code: 134

I've attached output file and html_report file. output_and_html_report.zip

Do you have any ideas what is the problem? Any comments or ideas are appreciated :)

josephmje commented 3 years ago

Hi @levchenkoegor,

Thank you for posting this issue! The error message you are getting is due to eddy running its own heuristics to determine whether the data is shelled (i.e. single or multi-shell) or non-shelled. Some sampling schemes fail to pass this test. dMRIPrep includes its own tools for validating and parsing the bvec and bval files and we are working our own heuristic to distinguish shelled vs non-shelled schemes that will run upstream of eddy. I think what we need to update in this case is passing the --data_is_shelled argument to eddy by default if the data is indeed detected to be shelled (or even allowing the user to specify this command in dMRIPreps command line.

This pipeline is still under active development and we haven't put out a stable release yet. I would not recommend using it for your final analysis. But you are welcome to keep on posting issues or contribute if you're interested!

levchenkoegor commented 3 years ago

Hi @josephmje,

Thank you for your answer! I got it.

Yes, I know that the stable version is not released yet, but I just excited to try new tools for my data :)

celprov commented 1 year ago

@josephmje any progress on developing dMRIPrep's own heuristic to detect shelled scheme?

I'm running into this error with a dataset I'm trying to run through dMRIPrep.

cc/ @oesteban