I meet a problem when I use fixel2sh and the documentation of this function is a little vague to me. Is there anyone can help me. Thank you in advance.
I used fod2fixel to generate a folder (fixel_folder) which contain two files (directions.mif and index.mif). I would like to convert the fixel files back to the fod file and then I used fixel2sh by:
fixel2sh directions.mif index.mif fod_back.mif
fixel2sh threw a error out. I am curious about what is the right way to use this function. Thank you!
Ok, without the actual error message, it’s still hard to tell exactly what the problem is, but the most obvious one is that the command expects 2 arguments, as shown on its help page – you’ve provided three arguments.
The next issue is likely to be that if all you have is the index and directions file, there is no information about the amplitude of each peak. I’d expect the command to handle that by assigning unit amplitude to each fixel, but I’m not sure, I’d need to double-check. The main point though is that what the command expects as its first argument is the fixel data file for the amplitudes of each fixel – I suggest you take a look at the description of the fixel format if this isn’t making much sense…
I recommend you run fod2fixel again, this time using the -afd or -peak_amp option to generate an additional fixel data file with an estimate of each fixel’s amplitude. Assuming you’ve called that file amp.mif (it can be whatever you want), within a fixel folder called test (which will also contain the index.mif and directions.mif files), then you should be able to invoke fixel2sh like this:
fixel2sh test/amp.mif WM_FODs_restore.mif
The command will figure out where to find the index and directions files since they’re expected to be in the same folder as the fixel data file you’ve provided.
Thank you so much for your explanation. I put directions.mif, index.mif and peak_amplitude.mif together in the same folder ‘test’ and ran the command again: fixel2sh test/amp.mif WM_FODs_restore.mif
and found that WM_FODs_restore.mif was generated successfully.
We can see that the size of each FOD voxel in the restored FOD image is little bit larger than that in the original one. This can be also reflected from the value of the first order of these FODs. It is very weird. Also, another question comes up. How can the fixel2sh restore a FOD image only using direction and amplitude information (I only used index.mif, directions.mif, and peak_amplitude.mif). I think the amplitude information has a lot of ambiguity since two totally different FODs may have same amplitude but different dispersion as mentioned by The difference of FOD - MRtrix3 Community
I think you’ve actually addressed your own concern there. Using sparse fixel direction & amplitude information, the FOD image can’t be perfectly restored. Any complexity within the FOD shape over and above what can be represented using a small set of directions & amplitudes will be lost, including all forms of orientation dispersion. All fixel2sh does is sum apodized Point Spread Functions (aPSFs) generated with directions and amplitudes corresponding to the input fixels.
The goal of this work was to obtain a more detailed parameterisation of each fixel such that this additional FOD information could be captured and then potentially utilised. But as with many things I’ve never had the time to invest in getting it ready for public use.
I think the amplitude information has a lot of ambiguity since two totally different FODs may have same amplitude but different dispersion
We agree; hence why we advocate for use of the FD measure as the integral of the FOD lobe rather than the peak amplitude, as this is invariant to orientation dispersion.