dipy / bl_apps_dipy_track

Brainlife wrapper app for dipy_track workflows.
BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

App currently appears to have no parameter input for number of desired streamlines #2

Open DanNBullock opened 3 years ago

DanNBullock commented 3 years ago

Not sure if this is a design choice, but the app interface (https://brainlife.io/app/5ea7dbebf1745d70baf80678) doesn't currently have a parameter input for this. seed_density parameter input theoretically is linked to the number of streamlines in the output, however the controls on this are extremely non-granular ( 1 vs 2 leads an 8 fold increase, and continues geometrically from there, I presume) and are also obfuscated by the associated number of valid voxels found in the seeding mask (a value that the user probably doesn't know off the top of their head).

For many common use cases, users will want to be able to specify the number of streamlines they are obtaining from their tractography generation, but that isn't possible with the current setup.

skoudoro commented 3 years ago

I think this is a design choice. We let the user have a postprocessing step and filter all the streamlines as they want. They can use Quickbundle, Recodbundles, other tools, or homemade methods to filter the streamlines.

skoudoro commented 3 years ago

Also, a more restrictive mask can help to reduce the number of desired streamlines. Having a mask and seed to just a specific region, let you have less streamlines.

EDIT: How do you estimate the number of streamlines that you need? How do you know that you do not miss some important streamline?

DanNBullock commented 3 years ago

We let the user have a postprocessing step and filter all the streamlines as they want

Occasionally I do engage in post-processing in order to remove biologically implausible fibers, but I think one of my goals when I do a whole brain tractogram is to obtain as unbiased a model of white matter structure as possible. If I have faith in the tractography generation algorithm (insofar as its ability to generate an accurate model of bran anatomy) then I should do as little post-processing modification as possible, because otherwise I'm imposing my biases upon the tractogram.

Also, a more restrictive mask can help to reduce the number of desired streamlines.

This ability typically useful when attempting to model specific structures, but I don't know that people would typically think of this as a standard way of controlling the number of output streamlines. If my goal is to obtain whole brain tractography, I'm not sure I would know how to reduce the size of the tracking mask without biasing my tractography results.

How do you estimate the number of streamlines that you need

In many tractography papers I've encountered authors will specify a number up front for how many streamlines they include a whole brain tractome (i.e. 100,000; 500,000; 1 million or more, typically in round intervals like that). I don't know if there's a heuristic for this, but over time the number that people are typically expected to use has increased. It may just be a tradeoff between convention, storage/processing capacity, and current understanding of what constitutes "good coverage".

How do you know that you do not miss some important streamline

I think that the underlying assumption is that if you're using a probabilistic tractography algorithm that you're eventually converging to the "truth". This is a problem more generally though because there is no ground truth that we really have for this, so there really is no way to know what an important streamline constitutes. The ability to explicitly or implicitly specify a streamline number is tangential to this, I believe.