Error running preproc script.... EDDY::KMatrixException: ....Data not shelled

Dear all,
I got following error message while running eddy with preproc script.

terminating with uncaught exception of type EDDY::KMatrixException: KMatrixException: msg=MultiShellKMatrix::SetDiffusionPar: Data not shelled

Top up works fine, but eddy failed.

Here is my logfile:

  mrconvert /Users/..../E_merged_denoised.mif /Users/.../dwipreproc-tmp-H4MSKE/dwi.mif -fslgrad /Users/.../E_allbvecs.bvec /Users/..../E_allbvals.bval
    mrconvert /Users/..../E_b0.mif /Users/..../dwipreproc-tmp-H4MSKE/topup_in.mif
    mrinfo dwi.mif -export_grad_mrtrix grad.b
    mrconvert topup_in.mif topup_in.nii -import_pe_table topup_manual_pe_scheme.txt -stride -1,+2,+3,+4 -export_pe_table topup_datain.txt
    topup --imain=topup_in.nii --datain=topup_datain.txt --out=field --fout=field_map.nii.gz --config=/Applications/FSL/etc/flirtsch/b02b0.cnf
    mrconvert dwi.mif -import_pe_table dwi_manual_pe_scheme.txt - | mrinfo - -export_pe_eddy applytopup_config.txt applytopup_indices.txt
    dwiextract dwi.mif -import_pe_table dwi_manual_pe_scheme.txt -pe 0,-1,0,0.1 dwi_pe_1.nii
    applytopup --imain=dwi_pe_1.nii --datain=applytopup_config.txt --inindex=1 --topup=field --out=dwi_post_topup.nii.gz --method=jac
    mrconvert dwi_post_topup.nii.gz -grad grad.b - | dwi2mask - - | maskfilter - dilate - | mrconvert - mask.nii -datatype float32 -stride -1,+2,+3
    mrconvert dwi.mif -import_pe_table dwi_manual_pe_scheme.txt dwi.nii -stride -1,+2,+3,+4 -export_grad_fsl bvecs bvals -export_pe_eddy eddy_config.txt eddy_indices.txt

On the Fsl email list I found some similar question https://www.jiscmail.ac.uk/cgi-bin/webadmin?A2=ind1609&L=fsl&D=0&P=115815
but the answere was to run eddy with the –data_is_shelled option.
_This switch will override the internal check to ensure that date are acquired on a set of b-value shells (as opposed to DSI). It has emerged that the internal check is a little too stringent for some popular (shelled) acquisitions. By specifying --data_is_shelled you “promise” that is is actually shelled._

Because I want to use eddy on all my multishell data at the same time I merged all my shells to a big multishell dataset thus I dont have to do a registration an bmatrix rotation afterwards. I guess it would work with the recommended data_is_shelled option!

Maybe somebody had the same problem and could help me.
Thank you.
Max

Hi Max,

If you are confident that the --data_is_shelled option will solve your problem, the dwipreproc script has an option -eddy_options that allows you to pass command-line options through to eddy. One detail I will add is that this appears to sometimes not work due to the limitations of the Python command-line parsing library used; so your usage will need to appear as follows (note in particular the empty space within the quotation marks):

dwipreproc ... -eddy_options "--data_is_shelled "

Cheers
Rob

Thank you for your help,
in the end I just process each data single wise. So next time I will try your recommendation!
Thank you anyway
Best
Max