Skip to content

tckgen: Change default step size for RK4#1747

Closed
Lestropie wants to merge 2 commits intodevfrom
tckgen_rk4_stepsize
Closed

tckgen: Change default step size for RK4#1747
Lestropie wants to merge 2 commits intodevfrom
tckgen_rk4_stepsize

Conversation

@Lestropie
Copy link
Copy Markdown
Member

First proposed change to default tracking parameters aspart of #1729.

First-order algorithms use a very small default step size in order to mitigate curvature overshoot. An alternative solution to curvature overshoot is to use the 4th-order Runge-Kutta method. Therefore, when the latter is activated using the -rk4 option in tckgen, there is no longer a good justification to keep the default step size very small. However in the current code, the same default step size of 1/10th of a voxel is used regardless of the use of RK4.

Initially I was going to make the default step size with RK4 1/2 of a voxel, mimicking the default for iFOD2. However I then considered that for default iFOD2 parameters, there are in fact 3 vertices per 1/2-voxel "step" that are used for sampling 5TT image / ROIs more densely. If the default step size for these first-order algorithms with RK4 were to be 1/2 the size of a diffusion image voxel, there may be a risk of "jumping" features that are defined at a smaller spatial scale. I therefore went for a compromise of 1/4 of a voxel size.

This brings run times with RK4 closer to that without. The fraction of streamlines retained vs. rejected is generally comparable between no RK4 / RK4 with 1/10th voxel step / RK4 with 1/4 voxel step. As far as results are concerned it's difficult to judge the tractograms as being any different.

(iFOD1 and sd_stream outputs are looking particularly woeful however; the latter is probably related to #1630, may need to look into the former).

If this change is accepted it may alter the considerations within #1630.

There is also a further question in here with respect to the interaction between RK4 and the maximum angle. Internally RK4 involves taking two fibre orientation estimates at half a step size away from the current vertex. Currently, no maximum angle constraint is applied at those two points (with the exception of ifod1, which needs its rejection sampling constrained); the maximum angle constraint is only applied based on the fibre orientation estimate at the new vertex. Question is: Should a restriction of half / all of the maximum angle constraint be applied to those two interior calculation points?

For first-order algorithms for which 4th-order Runge-Kutta is available, make the default step size 1/4 of a voxel, rather than 1/10th.
@Lestropie Lestropie requested a review from jdtournier October 1, 2019 03:11
@Lestropie Lestropie self-assigned this Oct 1, 2019
@Lestropie
Copy link
Copy Markdown
Member Author

Superseded by #1833.

@Lestropie Lestropie closed this Jan 8, 2020
@Lestropie Lestropie deleted the tckgen_rk4_stepsize branch January 11, 2020 09:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant