bids-apps / MRtrix3_connectome

Generate subject connectomes from raw BIDS data & perform inter-subject connection density normalisation, using the MRtrix3 software package.
http://www.mrtrix.org/
Apache License 2.0
49 stars 26 forks source link

eddy error, data not shelled #45

Open ajdneuro12 opened 5 years ago

ajdneuro12 commented 5 years ago

Hi @Lestropie,

I spoke too soon, eddy is giving me an error now: dwipreproc: Output of failed command: eddy: msg=ECScanManager::GetShellIndicies: Data not shelled terminate called after throwing an instance of 'EDDY::EddyException' what(): eddy: msg=ECScanManager::GetShellIndicies: Data not shelled I know this issue is with eddy and I can confirm the data is shelled (bvals attached) and I wondering if there is a work around I can use in docker (I think its usually solved by " --data_is_shelled" ?). Thanks again for your help!

Alex sub-NDARINV1EECRFPM_ses-baselineYear1Arm1_dwi.bval.txt

Lestropie commented 5 years ago

D'oh!

There's no way to get around this within the existing tool interface. Obviously with wrapping such a large number of commands, not everything can be exposed.

For the sake of being able to process your data for now, you could just edit the script file to make sure that eddy is always provided with this flag: Just change this line to:

eddy_options = [ "--data_is_shelled" ]

If you are compiling the container yourself, you could edit the script file locally, and then re-build. Otherwise, you could run the container using --entrypoint=/bin/bash, edit the file within the container environment, and then execute the script file with the command-line options that you would otherwise invoke at the run stage.

At my end, probably what I want to do is run the DWI data through mrinfo -shell_bvalues after the initial import, to make sure that MRtrix3 can interpret the data as distinct b-value shells, and then just provide this flag to eddy always (since I don't think it would ever have any detrimental effects, it simply prevents this error from occurring as far as I can tell).

fcnlab commented 5 years ago

Hi @Lestropie,

Yes this worked! Thanks so much for your help!

Best, Alex

Lestropie commented 5 years ago

Notes for self:

The eddy Users Guide says the following:

Please be aware that if you have to use this flag you may be in untested territory and that it is a good idea to check your data extra carefully after having run eddy on it.

Therefore don't want to set this flag and have it used in all circumstances. Instead it will be necessary to:

  1. Ensure that MRtrix3 is capable of reading the DWI data as shells;

  2. Attempt to run eddy without this flag;

  3. If eddy fails, specifically with an error message relating to data not consisting of shells, try re-running with this flag.

Points 2 and 3 may in fact be better addressed within MRtrix3 dwipreproc rather than within MRtrix3_connectome.