Single-Shell (+B0) 3-Tissue CSD

shconv: [ERROR] unknown option “-mask”
sh2amp: [ERROR] unknown option “-gradient”

ss3t_csd_beta1 should be accessing those executables in your MRtrix3Tissue bin directory, but it appears to be calling different versions of the commands in which those options have been depracated, presumably from your usual MRtrix3 installation (more recent than v3.0_RC3). The python API should handle finding the correct executables, or else defaults to whatever (version matched or not) MRtrix3 commands it can find in the system path, which is my best guess for what’s happening in your case.

Some steps to help figure out what’s wrong:

  1. What steps did you follow to install MRtrix3Tissue? Is it somehow in conflict with an MRtrix3 installation?

  2. To confirm whether this is the problem, run your ss3t_csd_beta1 command again with the -debug option (this will generate a lot of output). Look for something like

    ss3t_csd_beta1: [DEBUG] run.version_match() (from run.py:314): Using non-version-matched executable for shconv: ...
    

    before the error occurs

  3. It would also be useful to know your system path, so the output from echo $PATH (or the Windows equivalent). Also, to find out where the python module is trying (and presumably failing) to find the version matched executables, run

    # Change this to the path of your MRtrix3Tissue installation
    libpath=/full/path/to/MRtrix3Tissue/lib
    python3 -c "import sys; sys.path.insert(0,'''$libpath'''); from mrtrix3 import BIN_PATH; print(BIN_PATH)"
    

Hopefully that should help at least pin point what’s going wrong.

I think this is due to the fact that I have only 2 shells (B=0 and B=1000) to find 3 tissues, is it correct?

Yes, correct. In theory, you can also get only WM and GM ODFs (ditching CSF) by only supplying those two response functions, although I’ve met a fair amount of scepticism for this approach (the WM signal can get overly “suppressed” in partial volume voxels).
I still find the WM+CSF approach useful over pure single-shell single-tissue CSD, as you get some free water signal suppression which reduces some of the noise in WM ODFs. Of course what’s best for you depends on your specific application.
There has been a fair amount of discussion of this on the forum, here are some useful threads on the topic:
Msmt-csd
Single shell vs. "Single tissue"
Fixel-Based Analysis on single shell data

Fiona

2 Likes