I’m a fan of FATCAT, but I had a question (not directly related to FATCAT). I’m using MINIP with AND logic. My understanding is that should limit tracks to only those between ROI pairs (e.g., ROI1-ROI1). However, when I look at the *.grid file and the images that are put out by the -dump_rois (e.g., NET_000_ctx-lh-lateralorbitofrontal__ctx-lh-lateralorbitofrontal.nii.gz, I notice there are large numbers of tracks with high FA, and that they extend well beyond the ROI that is being considered (see attached figure).

The command I’m using is:

3dTrackID -mode MINIP -mini_num 5 -mask dwi_mask_ERODE2.nii.gz -netrois sel_indt_aparc+aseg_REN_gm_GMI.nii.gz -dti_in dt -prefix indipairs -logic AND -uncert dt_UNC.nii.gz -alg_Nseed_X 1 -alg_Nseed_Y 1 -alg_Nseed_Z 1 -nifti -targ_surf_stop -prefix targ_surf_stop -dump_rois BOTH

The ROIs were created from freesurfer using the guidance in the online tutorial and fit the FA map quite well. Am I misunderstanding what 3dTrackID is doing or what AND means in this context?



Hi, Matt-

The subject of this thread struck me as funny, because of course FATCAT was created minimal logic (except in coming up with the acronym)!

Anyways… to your question:
Connections that are ROI_1-ROI_2, ROI_1-ROI_48, ROI_71-ROI_902, etc. but not ROI_1-ROI-1, ROI_75-ROI_75, etc., are “pairwise” connections-- these are what are referred to as “AND-logic” connections. That is, strictly speaking, they are connections between two distinct ROIs (for example, the kept tracts are the ones that go through ROI_1 and ROI_2). Sidenote: controlling how the tracts are ‘trimmed’ at those ROI surfaces is described pictorially here:

Connections that are ROI_1-ROI_1, etc. are “individual ROI” connections-- these are referred to as “OR-logic” connections. The tracts in this case are not restricted to just being within that particular ROI, but instead they are the tracts that go through that region to anywhere else (e.g., they go through ROI_1 to ROI_2 or to ROI_3 or to ROI_4 or to anywhere else).

In the output *.grid files, the strict “AND-logic” connections are the ones represented by off-diagonals, and the “OR-logic” connections are on the diagonals.

Somewhat trickily, when you have “3dTrackID -logic AND …”, you get both the pairwise and the individual-wise tracts. That is, you get both the OR- and AND-logic tracts (which is a grammatically+logically funny sentence to read). Thus, in your dump_rois output directory, you will see things that look like:
NET_000_A__A.nii.gz <— “OR” logic bundle
NET_000_A__B.nii.gz <— “AND” logic bundle
NET_000_A__C.nii.gz <— “AND” logic bundle
NET_000_B__B.nii.gz <— “OR” logic bundle
NET_000_B__C.nii.gz <— “AND” logic bundle
… etc.
Basically, you get the “OR” logic bundles for free, and can ignore them if you want.

When you just use “3dTrackID -logic OR …”, you will only get individual-wise tracts, that is just the OR-logic ones, and your dump_rois directory would just look like:
NET_000_A__A.nii.gz <— “OR” logic bundle
NET_000_B__B.nii.gz <— “OR” logic bundle
… etc.

I know this is a bit confusing, in part because the code outputs a bit “extra” with the AND-logic.

In practice, if you want to think about “within-network” WM, then using the strictly AND-logic connections (that is, ones between distinct ROI pairs) makes the most sense to me. If you want to investigate the WM around a particular region (say, for surgical planning purposes), then the OR-logic might make sense (where does any WM around/through this region go?). Basically, the OR-logic connections are must less specific than the strict AND-logic ones; by definition, for a given ROI, the strict AND-logic connections are subsets (or equal to) the set of tracts in the OR-logic connections through it.

The ability to pick out only the strict AND-logic connections from the output is reason for the “-trackid_no_or” option in fat_proc_connec_vis, described here:

Does that help clarify the matters a bit?


Perfectly. Thanks!