iFOD2 might be failed to track the simulation fiber bundle

Hi MRtrix Users,

I am wondering the tracking error with iFOD2.
I made one fiber bundle and simulated the DWI ( 60 gradient directions and b=1000).
The DWI was added Rician noise with High SNR.
The fODF was estimated and I qualified it and confirm it was correctly estimated.
SD_Streem algorithm could track the fiber properly, but iFOD2 could not generate proper fibers.

Does anyone have an idea?

Here is all the data I used.

The command is below.

dwi2response tax dwi.mif rf.txt
dwi2fod csd dwi.mif rf.txt fod.mif 
tckgen -algorithm SD_STREAM fod.mif track_SD.tck -seed_image seed.mif -select 2000
tckgen -algorithm iFOD2 fod.mif track_iFOD2.tck -seed_image seed.mif -select 2000

The simulation fiber bundle is below.

The reconstruct fODF is below.

The result with SD_Streem is below.

The result with iFOD2 is below.

Seed region is below.

I finally got a good parameter that cutoff is above 0.075, and I got the proper fiber bundle.

tckgen -algorithm iFOD2 -cutoff 0.075 fod.mif track_iFOD1.tck -seed_image seed.mif -select 2000

Glad you got to the bottom of it. Indeed, the cutoff is going to be critical here. The default is set assuming your fODF has been estimated using (MSMT-)CSD with an appropriately calibrated response function, and/or intensity normalised using mtnormalise. This being simulated data, there’s a good chance the scaling differs from what’s expected, which would require a different cutoff.

Otherwise, if you used regular CSD (not the MSMT variant), the default cutoff is probably now too low for noisy data, especially if unconstrained using ACT – similar issue to this thread.

1 Like

Or if you’re really interested in the interaction between CSD algorithm / tracking cutoff and tracking outcomes, check out this monster figure I made when we were in the process of revising the default cutoff.

1 Like