Workflow Questions on SWM Analysis with UKFtractography and whitematteranalysis

Dear Experts,

I am attempting to replicate the methodology described in the following paper and have a few questions that I hope you can help clarify:

Wang, S., Zhang, F., Zeng, Q., Hong, H., Zhang, Y., Xie, L., Lin, M., Jiaerken, Y., Yu, X., Zhang, R., Luo, X., Li, K., Xu, X., Hassanzadeh-Behbahani, S., Lin, B., Rushmore, J., Wang, C., Rathi, Y., Makris, N., Huang, P., … Alzheimer’s Disease Neuroimaging Initiative (2025). Association of Superficial White Matter Microstructure With Cortical Pathology Deposition Across Early Stages of the AD Continuum. Neurology , 105(2), e213666. https://doi.org/10.1212/WNL.0000000000213666

Q1: I first ran ukftractography on my preprocessed DWI data and then applied whitematteranalysis to cluster fiber tracts and obtain microstructure measures for each anatomical tract. Below is the code I used. Could you confirm whether this workflow is correct?

## Run 2-Tensor tractography with free water
ukf.py --bvals dwi.bval --bvecs dwi.bvec -i dwi.nii.gz -m dwi_brainmask.nii.gz -o dwi.vtk \
        --params '--seedingThreshold',0.1,'--stoppingFA',0.08,'--stoppingThreshold',0.06,--freeWater,--recordFA,--recordTrace,--recordFreeWater
## Run fiber clustering and measurement
wm_apply_ORG_atlas_to_subject.sh \
        -i ${input_dir}/dwi.vtk \
        -o ${output_dir} \
        -a ${atlas_dir}/ORG-Atlases-1.1.1 \
        -s ${soft_dir}/Slicer-5.8.1-linux-amd64/Slicer \
        -d 1 \
        -m ${soft_dir}/Slicer-5.8.1-linux-amd64/slicer.org/Extensions-33241/SlicerDMRI/lib/Slicer-5.8/cli-modules/FiberTractMeasurements

Q2: In Wang et al. (2025), three microstructure measures were evaluated: free water fraction (FW), free-water-corrected fractional anisotropy (FAt), and free-water-corrected mean diffusivity (MDt). After running wm_apply_ORG_atlas_to_subject.sh , I obtained FA and MD values for each tensor. How can I derive the FAt and MDt measures used in the paper?

Q3: The paper mentions that 396 superficial white matter (SWM) fiber clusters were considered. In my output, I only obtained 800 clusters grouped into 74 anatomical tracts. How could I obtain the mappings between the 800 clusters and the 74 anatomical tracts so that I can identify the 396 SWM clusters?

Thank you in advance for your assistance!

Regarding my third question, I have found the solution. The mapping between fiber clusters and anatomical tracts is provided in the FiberClusterAnnotation file within the ORG Atlas repository: https://github.com/SlicerDMRI/ORG-Atlases/blob/master/ORG-800FC-100HCP/FiberClusterAnnotation_k0800_v1.0.csv

Hello and thanks for your questions. The FAt and MDt are the values from tensor 1, which is the tract or fiber specific estimate.

1 Like

Also yes the pipeline looks generally correct. It is always important to visually inspect the results of each step to ensure it’s working well in your data, especially that coordinate systems are correct for gradient vectors etc. One thing to make sure is that any conversion from nii to the nerd format used by UKF is correctly working.

1 Like

Thank you for the reminder. I have followed the quality control (QC) procedure outlined in the step-by-step WMA tutorial: https://whitematteranalysis.readthedocs.io/en/latest/subject-specific-tractography-parcellation.html

Briefly, the steps I performed are as follows:

  • First, I used wm_quality_control_tractography.py to obtain an overall view of the whole-brain tractography data and confirm that it appears anatomically plausible. A normal-looking tractography result suggests that the DWI data and gradient vectors were correctly interpreted by the UKF algorithm.
  • Next, I applied wm_quality_control_tract_overlap.py to assess the alignment between the input tractography and the ORG Atlas tractography before registration . A rough misalignment at this stage helps verify that the input data is in the same coordinate system as the ORG Atlas.
  • I then used wm_quality_control_tract_overlap.py again to evaluate the alignment after registration , ensuring that the registration works as expected.
  • Finally, I ran wm_quality_control_tractography.py to visualize the identified anatomical tracts, confirming that characteristic deep white matter tracts were successfully reconstructed and resemble those in the ORG Atlas.

Could you please confirm whether this QC procedure is sufficient to ensure the validity of the results?

Yes this QC procedure looks good. If the anatomical tracts look correct, then your data and processing are working well. It’s important to view multiple tracts that run in different orientation such as CC, AF, IOFF/IFOF, CST, etc. to be confident. For your project it is also a good idea to view the superficial tract categories and some individual fiber clusters.

It looks like you used our QC scripts, so you should also have an HTML page with some views of all subjects tractography (whole brain tractograms) to do a visual inspection overview to make sure all brains look reasonable.

Also it’s important to preprocess your DWI prior to the tractography pipeline to handle eddy current/movement correction, and any other preprocessing you choose. I assume you did that previously.

How did you run the UKF.py with nii inputs? Is that a script you wrote or is it from our code?

1 Like

As for the quality control (QC) procedure, I utilized the scripts provided within the WMA package. Regarding the UKF tractography, it directly accepts NIFTI format, as the tool automatically performs an on-the-fly conversion to NRRD.

I have a follow-up question on the FA measurement. Since I have little knowledge of the underlying algorithms, could you provide an intuitive explanation for why the FA of a whole fiber is taken exclusively from tensor 1, as the tractography may follow tensor 2’s direction? This will help me ensure I’m interpreting the results correctly. Thank you!

Hi. The tractography exclusively follows tensor 1 while tensor 2 models crossing fibers in the voxel. The tensor fit is done during tracking so the Kalman filter uses tensor 1 to model the pathway it is tracing. The prior of having the model fit from the previous step helps stabilize tracking.

1 Like