Automatically segment a tractogram into anatomically-based categories.
These categories comprise fiber groups such as
- All the streamlines connecting betwee the frontal and parietal cortices,
- All the streamlines connecting between the parietal and temporal corticex
- Etc.
THIS APPLICATION IS HIGHLY RECOMMENDED AS A MEANS OF RUNNING AN INITIAL QUALITY ASSURANCE CHECK ON YOUR GENERATED TRACTOGRAPHY OR AS A SANITY CHECK ON PROBLEMATIC SEGMENTATIONS.
- a freesurfer output - because this app makes use of the Destrieux 2009 parcellation a freesurfer output specific to this subject is necessary
- an input tractography - to which the segmentation will be applied
Visit this page to run this app on the brainlife.io platform.
Because this is compiled code which runs on singularity, you can download the repo and run it locally with minimal setup. Ensure that you have singularity and freesurfer set up locally (freesurfer setup not necessary if relevant parcellation files have already been converted to nii.gz).
Pull the WMA toolkit repo
Ensure that vistasoft and spm (Note: this has been tested with spm8) are installed.
Run this wrapper function, but take care to ensure that the addpath-genpath statements are relevant to your local setup.
Utilize a config.json setup that is analagous to the one contained within this repo, listed as a sample.
Visit brainlife.io and explore the following data sets to find viable freesurfer and tractography:
HCP freesurfer HCP tractography
The relevant output for this application is a White Matter Classification (WMC) structure. In this case the categories/tracts that are ouput correspond to collections of streamlines connecting major anatomical structures. NOTE: per this discussion of white matter classification schemas, this segmentation (and parcellaton ones like it) constitutes a complete categorization schema, in that all streamlines are assigned to some category.
Not relevant for this App as it does not generate processed data.
This App only requires singularity and (in some cases), Freesurfer, and mrtrix3 to run. If you don't have singularity, you will need to install the following dependencies.
singularity Freesurfer mrtrix3
Initial categorization occurs in virtue of each streamline's endpoints. That is, each streamline is assigned two category labels, one for each endpoint. Category label ordering ultimately does not matter, and thus neither does streamline orientation (i.e. first to last node vs last to first node). This label is applied based on the volume in which the endpoint terminates. The code checks which label from the Freesurfer 2009 Destrieux atlas), and category membership is ultimately determined from the tables depicted below.
Brain Region Designation | FS 2009 ASEG Region (11/12XXX) for 3 digit numbers |
---|---|
Subcortical | 10:13, 17:20, 26, 58, 27, 49:56, 59, |
Spinal | 16, 28, 60 |
Cerebellum | 8, 47, 7, 46, |
Ventricles | 31, 63, 4 43, 14, 24, 15, 44, 5, 62, 30, 80, 72 |
White matter | 42, 2 |
Corpus Callosum | 251:255 |
Unknown | 0, 2000, 1000, 77:82, 24, 42, 3 |
Optic Chiasm | 85 |
Frontal | 124, 148, 118, 165, 101, 154, 105, 115, 154, 155, 115, 170, 129, 146, 153, 164, 106, 116, 108, 131, 171, 112, 150, 104, 169, 114, 113, 116, 107, 163, 139, 132, 140 |
Temporal | 144, 134, 138, 137, 173, 174, 135, 175, 121, 151, 123, 162, 133, |
Occipital | 120, 119, 111, 158, 166, 143, 145, 159, 152, 122, 162, 161, 121, 160, 102 |
Parietal | 157, 127, 168, 136, 126, 125, 156, 128, 141, 172, 147, 109, 103, 130, 110 |
Insula | 117, 149 |
In some cases secondary terms are affixed to a category, indicating that the streamlines associated with this subcategory meet some additional criteria which merits further note. Listed below are these sub-categories and their membership requirements
Sub-category | Criteria |
---|---|
Interhemispheric | Endpoints occur in separate hemispheres of brain |
U fiber | Streamlines that are both superficial (i.e. not deep in the white matter) and less than 30 mm in length. |
Finally, it's worth noting that some category membership is more important than others. For example, a streamline which has a termination in a ventricle is not biologically plausible, and thus warrants a separate designation (and thus the label "ventricle" overrides). The same is true of streamlines ending in "unknown";, "corpus callosum";, and "white matter".
-
1. Tractography quality check: even the cursory counts provided by the plot found under the [White Matter Classification (WMC) : categories] object's [Details -> Task Results -> Number of fibers] can provide insights about source tractograms. For example, tractography run with Mrtrix 2.0 is not subject to anatomical constraints, and thus tends to have a much greater number of invalid streamlines ("ventricle", "unknown", "corpus callosum", "whitematter"). Mrtrix 3.0, on the other hand, does subject its tracking to anatomical constraints, and so there are fewer of these invalid streamlines. As a consequence of this, for tractograms of the same streamline count, segmentation on Mrtrix 3.0 generated tractograms tends to return larger (and/or more reliable) tracts than tractograms run by Mrtrix 2.0. As such, running a category segmentation can provide you with a quick assessment of this data quality feature.
-
2. Tract candidate assessment: Even in the event that your whole brain tractography has been subjected to anatomical constraints, one is not guaranteed to obtain a robust segmentation of tracts (full coverage of tracts, all tracts well represented). In some cases, the source tractography may simply not generate the necessary streamlines to model the relevant tract (this happens occasionally with the IFOF, for example). This may be due to a bad parameterization for tractography generation or due to issues with the input DWI itself. Regardless of the cause, the simple mantra of "Garbage in, garbage out"; holds true: you cannot segment a tract from a whole brain tractography model of the requisite streamlines aren't there. The outputs of this app can tell you whether those tracts might plausably be found.
As an example, say that for several of your subjects, your segmentation algorithm of choice fails to find a robust or anatomically plausible IFOF. In such a case, in order to diagnose the potential cause of this, one is advised to run this app and determine if your source tractography model has any streamlines that might possibly be attributed to the IFOF. Using the tractography visualizer, one would look at the fronto-occipital category and note whether or not there appears to be a vaguely "IFOF-ish" looking tract running along the ventral areas of the brain. If you fail to find such an entity, this suggests that your input tractography is to blame (for whatever reason). If you do find something that approximates the IFOF, this suggests that something has gone awry with the segmentation, the appropriate remedy for which depends on the segmentation algorithm used.
The table below provides an overview of several established tracts and their associated category. It is not intended to serve as an exhaustive account of such tracts. Interested parties are encouraged to message Daniel Bullock (dnbulloc@iu.edu) with recommended additions or inquiries about unlisted tracts.
Tract Name | Corresponding Category |
---|---|
Arcuate | Fronto-temporal |
VOF (vertical occipital fasciculus) | Occipital-occipital (& U-fiber) |
TP-SPL (temporo parietal connection) | Temporal-parietal |
MdLF (middle longitudinal fasciculus) | Temporo-parietal |
Aslant | Frontal-frontal |
CST (cortico spinal tract) | Spinal-frontal |
SLF (superior longitudinal fasciculus) | Frontal-parietal |
ILF (inferior longitudinal fasciculus) | Occipital-temporal |
IFOF (inferior fronto-occipital fasciculus) | Frontal-occipital |
pArc (posterior arcuate) | Temporal-parietal |
Uncinate | Frontal-temporal |