Pairs of regions of interest or whole brain tractography?

Dear MRtrix experts,

I have a fiber tracking project in which I am using tckgen to estimate the connectivity between pairs of regions of interest (ROIs). The general workflow is like this: First, I use another software (FreeSurfer) to generate a whole bunch of binary masks that indicate each ROI. Then I run a double for-loop to loop through all the ROIs and all the ROIs again. This way I can use every ROI as a " -seed_image " and " -include " every other ROI in turn to attempt fiber tracking between every pair of ROIs, like so:

tckgen FiberOrientationDist.nii.gz ${ROIname1}_${ROIname2}.tck -seed_image $ROImask1 -include $ROImask2 -seeds 10000

I then use tckstats to tally the number successful attempts into a text file. Of course, this method is a little wasteful, because it calculates both ROI-1 to ROI-2 and ROI-2 to ROI-1 (which should be statistically the same), and it also calculates ROI-1 to ROI-1, etc. But never mind that for now.

Using this approach I can get an estimate of how well-connected any pair of ROIs are among my anatomically-defined collection of ROIs. My question for you is: is this a valid approach? The only alternative I can think of would be to do a whole-brain tractography (without the use of masks) and then afterword, using the same double for-loop approach to examine each pair of ROIs, load up the .tck file and somehow (I don’t know what the command would be) eliminate any streams that do not pass through both ROIs, based on the two ROI masks, and finally use tckstats to put the resulting stream counts into a text file.

Both of these approaches would be similar: the one I am using creates a .tck file, and ultimately a text file, for each ROI-pair; the possible alternative would create only one .tck file and then count specific streams (somehow) and similarly produce a text file for each ROI-pairs (based on the streams that pass through both region masks). There might be a theoretical justification for one over the other, I don’t know – or even a better way of achieving a similar thing. Do you have any advice on this?

Hey @jdtournier: Have you started working your way through that manuscript yet? :upside_down_face:

So there’s a few different components here

  1. Doing a tckgen -seed_image $ROI1 -include $ROI2 is indeed very wasteful. For every run using the same -seed_image, the streamlines actually generated are going to be comparable; it’s only the selection of whether or not the streamline gets written to the output file, based on -include, that varies. But streamlines generated using -seed_image $ROI1 -include $ROI2 that instead intersect $ROI3 are being discarded, despite the fact that you’d actually be interested in such streamlines if they’d just arisen from one of the other tckgen calls. Far more efficient would be to run tckgen -seed_image $ROI1 once, then run tckedit -include $ROIx once for each of the other regions.

  2. Even that approach is still clumsy, as it requires a lot of command invocations to produce not much final outcome data. It would be far more elegant to produce a single set of streamlines, reconstructing all possible pathways in the brain, and then from that select, for every possible pair of nodes, those streamlines that intersect specifically those two regions.

  3. Even that’s still not ideal, because (at least in its current state) tckedit relies on selecting streamlines that have vertices contained within a ROI. FreeSurfer ROIs are defined entirely within the GM, whereas streamlines are principally present in the WM, and so relying on explicit overlap between the two is potentially error-prone.
    Command tck2connectome provides a fractionally better streamline-to-parcel assignment mechanism, and will operate on a whole-brain tractogram as per point 2.

  4. What you have with the original experiment is estimates of “fraction of all streamlines from ROI 1 that connect to ROI 2”, sometimes referred to as “probability of connectivity”. What we have focused on instead is estimating density of connections. I would suggest reading the SIFT and SIFT2 manuscripts, since those are the relevant methods provided in MRtrix3.


Erm… It’s next on my to-do list! :grimacing: