I’d appreciate any help regarding sift2 in fixelconnectivity. I was performing fixel-based analysis, base on the single-tissue (b=0,1000) dwi data.
According to the documentation the step 21. Reduce biases in tractogram densities was using tcksift tracks_20_million.tck wmfod_template.mif tracks_2_million_sift.tck -term_number 2000000, but I doing this step by using tcksift2 tracks_10_million.tck wmfod_template.mif sift2_weights.txt, maybe the sift2 has some advanteges? Like, it doesn’t discard the vast majority streamlines (SIFT or SIFT2 in connectome generation).
But the options for fixelconnectivity (mrtrix3 version 3.0.7) didn’t include the -tck_weights_in. I found out an enhancement (fixelconnectivity: Enhancements by Lestropie · Pull Request #2273 · MRtrix3/mrtrix3 · GitHub), which including this option. Thus, I tried to build the fixelconnectivity using the #2273 's /cmd/fixelconnectivity.cpp and /src/fixel/matrix.h, matrix.cpp.
The error was: ERROR: cannot find header file “fixel/fixel.h” (from file “src/fixel/matrix.h”)
But I didn’t see a fixel/fixed.h file in the site of #2273. I noticed that there is a fixed.h file in the 3.0.7’s src/dwi/tractography/SIFT2/ dir.
I’m wondering
whether the fixel.h in this directory can replace the fixel/fixel.h required for the build?
and if SIFT2 is still the recommended way to reduce tractogram-density bias?
This feature has been a part of our development branch for quite some time, so certainly compiles as it stands. You likely won’t be able to compile it through merely copying individual source code files because the development branch has undergone other extensive changes against which that version of fixelconnectivity has been modified. If you don’t have the C++ capability to be rebasing code, you will be better off cloning the development branch wholesale, and doing a targeted build of just the fixelconnectivity command. Note that the instructions for compilation from source are different on the dev branch.
There’s not a huge amount to be gained from use of SIFT2 here. Even if template tractogram over-generation prior to SIFT is expensive, here it’s not run once per participant, only once per analysis template, so is not generally prohibitive. One could instead use the algorithmic efficiency benefit to increase the number of streamlines from which the fixel-fixel connectivity matrix is built, but it can’t be increased too far due to RAM limitations. There are conversely ways in which this could conceivably be deleterious, so check the resulting weights for positive outliers that would be detrimental for fixel-fixel connectivity matrix construction.
If you do want to tinker, I would suggest additionally utilising dynamic seeding for template tractography so that you’re less likely to get few streamlines with huge weights.
Hi, Rob
Thanks for the detaild explanation. Given that C++ is quite difficult for me, and the benefits of SIFT2 don’t seem substantial enough, I’ll stick with the doc-recommended SIFT.
Thank you!
Bests,
Yaqin