Would appreciate confirmation that my pipeline is accurate to calculate FA in ROIs

The goal is to calculate diffusivity in specific ROIs.

My steps were to preprocess, normalize, and register the ROI mask to subject native space. I am confident in those commands as the output look good.

To get DTI values I then used :

#whole brain streamlines, probabilistic (includes random variation/noise)
tckgen -act ${dir_out_sub}/anatomical/${subject}_T1_5tt_coreg.mif -backtrack -seed_gmwmi ${dir_out_sub}/anatomical/${subject}_gmwmSeed_coreg.mif -seed_image ${dir_out_sub}/preprocessed/dwi_${subject}_mask.mif -nthreads 8 -minlength 25 -cutoff 0.06 -select 10M ${dir_out_sub}/basis_functions/wmfod_norm_${subject}.mif ${outDir}/${subject}_WholeBrain_ACT_10M.tck -info

echo "Sifting the tracks with tcksift:" #-term_number 10M <not needed?
tcksift -act ${dir_out_sub}/anatomical/${subject}_T1_5tt_coreg.mif  ${outDir}/${subject}_WholeBrain_ACT_10M.tck ${dir_out_sub}/basis_functions/wmfod_norm_${subject}.mif ${outDir}/${subject}_sift_10mio.tck

echo "convert ROI into mif and then mask"
mrconvert ${dir_out_sub}/Warped_Tract/${subject}_LEFT.nii.gz ${dir_out_sub}/Warped_Tract/${subject}_LEFT.mif
mrthreshold ${dir_out_sub}/Warped_Tract/${subject}_LEFT.mif ${dir_out_sub}/Warped_Tract/${subject}_LEFT_mask.mif

echo "tckedit to get streamlines within ROI mask"
tckedit ${outDir}/${subject}_sift_10mio.tck  ${outDir}/${subject}_sift_LEFT_10mio.tck -mask ${dir_out_sub}/Warped_Tract/${subject}_LEFT_mask.mif

echo "calculating mean FA in subject space / ROI"
tcksample -stat_tck mean ${outDir}/${subject}_sift_LEFT_10mio.tck ${dir_out_sub}/tensors/FA_${subject}.mif ${meanDIR}/FA/${subject}_LEFT_meanFA.txt

I then use R to calculate the average of the entire ${subject}_LEFT_meanFA.txt output file.

Is there any issue with my approach? Or suggestions to improve? Thanks in advance.

*also should my tcksift command above produce less than 10million streamlines?

Hi Shai,

Your approach is slightly unusual. You are selecting only those streamline vertices that reside within a mask, then obtaining interpolated samples of the image at those vertices, then averaging along each set of connected vertices (subsets of the original streamlines) within that mask, then averaging across streamline subsets. Where the ROI can be defined on the same voxel grid as the image to be sampled, it is far more elegant to simply take the mean of that image within the mask. Indeed it doesn’t even require tractography. It’s unclear if there is some other motivation for your doing it this way.

also should my tcksift command above produce less than 10million streamlines?

Outputting less streamlines than what was provided is the defining feature of the SIFT method. Please see the relevant manuscript for details.