Closed
Conversation
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.
Member
Author
|
Superseded by #1833. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
-rk4option intckgen, 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.
(
iFOD1andsd_streamoutputs 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?