Fiber(column) tracking in the gray matter


Hi MRtrix3,

I’m writing to ask about tracking only 1mm-3mm fiber ‘columns’ in the gray matter. The following is my post-processing procedure, could you please take a look and see if it’s making sense to use MRtrix3 to approach this.

  1. anisotropic voxel (0.625 0.625 2.6), no interpolation, as suggested by Rob.
  2. -include, -mask, and -seed with the mask of the cortex.
  3. -fiber length: 1-3mm,
  4. -algorithm Tensor_Det
  5. -angle: 5 degrees.
  6. -cutoff stop at FA value of 0.05.

Best regards,



OOOkay, this is a massive can of worms to be opening…

Firstly, part of the way that ACT behaves by default is predicated on the notion that cortical columns can’t be reliably tracked, and therefore streamlines are just terminated at the interface because anything beyond that is not trustworthy. Now that’s not to say that ACT can’t track through the cortex, in fact it only requires a very simple tweak: Take the “cortical GM” volume from the 5TT image, add those partial volume fractions to the “Sub-cortical GM” volume, and then null the “Cortical GM” volume (they’re really more like “GM-you-can’t-track-through” and “GM-you-can-track-through” images…). That’s not to say this is a solution specifically for what you’ve asked here, I just wanted to explain that in case it’s relevant for yourself or anyone else interested in cortical columns.

If you have a specific interest in attempting to track cortical columns, I would definitely advocate pursuing an acquisition that is at least closer to isotropic. With the acquisition you have, your ability to track any curvature within the columns themselves will depend strongly on the orientation of those columns relative to the DWI voxel grid.

Furthermore, can you provide the resolution of any anatomical-contrast image you have? The reality is that in an experiment such as this, your results are going to depend exceptionally strongly on the quality of your tissue segmentation: fibre orientations from the diffusion model will only influence the angle that the streamlines take as they traverse that small 1-3mm gap between GM-pial and GM-WM interfaces. Use of binary masks to represent the tissues rather than partial volume fractions or native surface representations will be far more detrimental here than it would be in a typical tracking experiment, as the fraction of the streamlines lengths where the presence or absence of sub-voxel interpolation has an effect is greatly increased with such short streamlines.

I would suggest considering: should streamlines be permitted to terminate halfway across the depth of the cortical ribbon, or do you want to enforce that all streamlines must span from one interface to the other? This influences how you may wish to define your priors using image information.

Okay, final thought: ACT can be hacked. The algorithms provided in the 5ttgen script are not the only way to derive a 5TT image, and you can change the information contained within the 5TT image to alter what biological priors are applied where. So for instance: You could re-map the cortical segmentation to volume 2 (“WM”), and re-map both the CSF and WM segmentations to volume 0 (“Cortical GM”). Then, streamlines would only be permitted to exist within the cortical ribbon, and a streamline would need to reach either CSF or WM at both endpoints in order to be deemed satisfactory according to your imposed priors. Just food for thought…



Hi Rob,

Thanks for your reply. These are all super valuable thoughts.

The anatomical-contrast image that I have is 1x1x1 mm3 isotropic whole brain volume. This resolution value was chosen because FreeSurfer reconstruction works best with 1mm isotropic voxel size. I can use the image prior generated from Freesurfer to hack the 5TT image, as you described.

One question I have is that: I am not sure what is the partial volume fractions? Does the MRtrix3 accept the input of partial volume fractions or native surface representations in addition to the binary mask?

I only want to analyze the fiber column in the gray matter, but I’m not sure which of the following method will make more sense from the perspective of neuronal anatomy. 1) to track the fibers in the entire brain (allow the fiber to grow into the cortex, and then take a mask of only the cortex. 2) to track the fibers only in the cortex.

I think I will try both and let you know how that works.

Thanks in advance.



Hi @Yixin_Ma,

In this context, you might be particularly interested in the upcoming MACT (Mesh-based ACT) framework developed by @chunhungyeh from our group / the MRtrix3 team: it’ll allow for some of the discussed alterations to be performed more directly, in a less hacky or even properly hack-free way. See his post below for some details on the topic:

The original post (in its original context) can be found here: MRtrix tutorial available on OSF .



Hi Thijs,

Thank for this information, they are extremely helpful. I am looking forward to trying this function when it is available.

I do have some detailing questions regarding this, what if the anatomical image needs to be registered to the DTI volume (e.g., DTI is a slab of oblique coronal slices with the resolution of 0.625x0.625x2.6 mm3, and the anatomical image is whole-brain with the resolution of1x1x1 mm3). The mesh of the cortical surface will be generated based on the anatomical image (1x1x1mm3) using FreeSurfer. In that case, will the mesh file handle the mismatch of voxel size and a 6 dof rotation? If not, how should I pre-process the images before putting them into the MACT model?




Hi @Yixin_Ma,

I’ll throw in my two cents: If you are going to take the methods above, there are a few things to watch out: The groove of a sulcus can be very tiny and sometimes not really visible/detectable on T1 due to limited image resolution (i.e. the partial volume effect). So, there are good chances that streamlines may transverse across the gap of the sulcus. Similar effects may occur in other brain areas, a few examples here: cross-hemisphere streamlines could appear in regions where the cortices of both hemispheres attached to each other on the images; likewise, there are also good chances that streamlines would directly enter cerebellum from temporal or occipital lobe. So for tracking in cortical columns, unless having very high-resolution T1-weighted images or a decent tissue segmentation algorithm, I personally think that the methods suggested above probably require more fine adjustments either in 5ttgen or in ACT.

If I understand correctly, your concern is about the alignment of the surface meshes with the DWI data, is that right? I usually use SPM to register T1 to DWI for intra-subject registration (motion correction), which only modifies the transformation info stored in T1’s header, i.e. T1s are not resampled to voxel dimension of DWI data. Then, I run surface reconstruction on the registered T1s (of the original resolution), so there is no need to apply a rigid-body transform to the meshes.
For your reference, MACT already uses both outer and inner cortical grey matter surfaces (e.g. FreeSurfer’s pial and white surfaces) as anatomical references, and has the mechanism to avoid issues like cross-sulcus tracking and so forth. I think it would be simple to customise MACT codes for your need, if tracking in the cortical column is what you are aiming for.



Thank you for your reply. I sincerely appreciate all of your help.

I do have two more questions: 1) When will the MACT code be published so that I can try to track the cortical columns. I’m looking forward to trying this. 2) You mentioned that, before FreeSurfer reconstruction, T1s are rotated, but are not resampled into smaller voxel size of DWI. Does it mean that we will interpolate/resample the meshes (e.g. Pial surface and GW/WM surface) generated from FreeSurfer later? Is there any potential problems regarding this mesh interpolation?




Hi @Yixin_Ma,

No, there is no need to interpolate or resample the meshes. I’ll contact you via private message in the next few days to discuss how to adapt MACT codes for your need.



Thank you very much!!!