Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bootstrap CSD tracking algorithm #55

Open
Lestropie opened this issue Jun 5, 2014 · 2 comments
Open

Bootstrap CSD tracking algorithm #55

Lestropie opened this issue Jun 5, 2014 · 2 comments
Labels
internship Issues suitable for student projects wishlist

Comments

@Lestropie
Copy link
Member

Apparently a number of people have asked Ben whether his bootstrapping tracking algorithm will be implemented in MRtrix. It will undoubtedly be much slower than other FOD-based algorithms, but still, it would be nice to have it there to play with. It may also be not too hard to implement with the Bootstrap class already implemented.

@Lestropie
Copy link
Member Author

@Lestropie
Copy link
Member Author

Lestropie commented Dec 12, 2022

FYI @bjeurissen: Have a Masters intern student who is going to make an attempt at this.
Feel free to jump in here with any suggestions.

One confound I'm thinking about now is that this issue was listed prior to MSMT. It will potentially be quite tricky to get a command-line interface for tckgen that supports use of MSMT in bootstrap tractography. So we might omit that prospect for now and just focus on soft-constraint single-tissue single-shell CSD.

Below is what I think is a reasonable ordering of steps. May edit as we go.

  • Initial addition and compilation of "new" algorithm as duplicate of existing algorithm

    • Duplicate SD_STREAM algorithm with new name
    • Make new algorithm accessible from the tckgen command-line interface
    • Ensure that tckgen compiles
    • Ensure that the "new" algorithm can be executed from the command-line, and produces the same results as the SD_STREAM algorithm
  • Have algorithm perform CSD internally
    Unlike SD_STREAM, which takes as input a pre-calculated FOD image, this new algorithm will take as input a DWI series, the CSD algorithm will be executed internally across the entire image, and this will then be used as the input for the SD_STREAM algorithm.

    • Change algorithm code to reflect fact that input is DWI rather than FOD
    • Add command-line option allowing the user to provide the response function file as an input to tckgen (this will be a requisite input whenever this algorithm is used)
    • Algorithm constructs a single instance of the MR::DWI::SDeconv::Shared class
    • Algorithm performs CSD, storing results in an internal scratch image
    • Algorithm executes the relevant SD_STREAM functions, but using the internally-calculated FOD image
  • Introduction of bootstrapping to new algorithm

    • Introduce MR::DWI::Bootstrap class as exemplified in the tensor_prob algorithm
    • Remove pre-calculation of FOD scratch image as was implemented above
    • Similarly to as performed in tensor_prob algorithm, bootstrap class replaces interpolation of FOD image for SD_STREAM algorithm; therefore, for each streamline, a new bootstrapped FOD is generated only for those voxels traversed by that streamline
  • Final modification of tckgen .cpp file and command-line interface

    • Add paragraph in Description outlining the algorithm, the required input, and what the algorithm does
    • Add command-line Option Group containing options only relevant to this particular algorithm
      • This option group has to contain the option specifying the input response function for CSD
      • (optional) Include here other options that modulate the behaviour of the CSD algorithm as is done in the dwi2fod command
  • (Optional) Speed up execution of bootstrapping-based tractography algorithms by pre-calculating and storing the residuals for each voxel in an initial pass, and then utilizing those residuals to generate each bootstrap realization:
    Bootstrap tracking: Pre-calculate residuals #575

  • (Optional) Add to Bootstrap class the ability to specify the number of streamlines to be generated using a single bootstrap realization before that realization is discarded and a new one is generated

    • Theoretically, this could be done on a whole-image basis (per thread) or on a per-voxel basis; in the latter case, track the number of different streamlines for which a realization of that voxel has been used (note that this is different to the number of times for which data from that voxel have been requested), and generate a new realization once a threshold is reached. A dense scratch image would be preferable to a voxel-index-based lookup in this instance.

@Lestropie Lestropie added the internship Issues suitable for student projects label Dec 12, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
internship Issues suitable for student projects wishlist
Projects
None yet
Development

No branches or pull requests

1 participant