This repository contains the model weights, source code, and containerized implementation of convolutional-recurrent neural network (CoRNN) tractography on T1w MRI with associated SLANT and WM learning (WML) TractSeg segmentations.
Please note that this methodology is still actively being characterized, validated, and extended. If you're interested in working with us to explore what it means to run tractography on T1w MRI, please contact us and let us know!
Leon Y. Cai, Ho Hin Lee, Nancy R. Newlin, Cailey I. Kerley, Praitayini Kanakaraj, Qi Yang, Graham W. Johnson, Daniel Moyer, Kurt G. Schilling, Francois Rheault, and Bennett A. Landman. Convolutional-recurrent neural networks approximate diffusion tractography from T1-weighted MRI and associated anatomical context. Proceedings of Machine Learning Reseach. 2023.
Leon Y. Cai, Ho Hin Lee, Graham W. Johnson, Nancy R. Newlin, Karthik Ramadass, Michael E. Kim, Derek B. Archer, Timothy J. Hohman, Angela L. Jefferson, J. Patrick Begnoche, Brian D. Boyd, Warren D. Taylor, Victoria L. Morgan, Dario J. Englot, Vishwesh Nath, Silky Chotai, Laura Barquero, Micah D’Archangel, Laurie E. Cutting, Benoit M. Dawant, François Rheault, Daniel C. Moyer, Kurt G. Schilling, John C. Gore, and Bennett A. Landman. Tractography from T1-weighted MRI: Empirically exploring the clinical viability of streamline propagation without diffusion MRI. Imaging Neuroscience. 2024.
Medical-image Analysis and Statistical Interpretation (MASI) Lab, Vanderbilt University, Nashville, TN, USA
git clone https://github.com/MASILab/cornn_tractography.git
cd /path/to/repo/cornn_tractography
git checkout v1.0.0
sudo singularity build /path/to/CoRNN_v1.0.0.sif Singularity
We use Singularity version 3.8 CE with root permissions.
Alternatively, a pre-built container can be downloaded here.
singularity run
-e
--contain
-B <t1_file>:/data/T1.nii.gz
-B <out_dir>:/data
-B <slant_dir>:/data/slant
-B <wml_dir>:/data/wml
-B /tmp:/tmp
--nv
/path/to/CoRNN_v1.0.0.sif
/data/T1.nii.gz
/data/<out_name>
--slant /data/slant
--wml /data/wml
[options]
- Binding
/tmpis required with--containwhen--work_diris not specified. --nvis optional. See--device.
-
<t1_file>Path on the host machine to the T1-weighted MRI with which tractography is to be performed in NIFTI format (either compressed or not). -
<out_dir>Path on the host machine to the directory in which the output tractogram will be saved. -
<out_name>Name (i.e., no directory) of the output tractogram with extension in trk, tck, vtk, fib, or dpy format. -
<slant_dir>Path on the host machine to the SLANT output directory. -
<wml_dir>Path on the host machine to the TractSeg WM Learning output directory.
-
--helpPrint help statement. -
--device cuda/cpuA string indicating the device on which to perform inference. If "cuda" is selected, container option--nvmust be included. Default = "cpu" -
--num_streamlines NA positive integer indicating the number of streamlines to identify. Default = 1000000 -
--num_seeds NA positive integer indicating the number of streamlines to seed per batch. One GB of GPU memory can handle approximately 10000 seeds. Default = 100000 -
--min_steps NA positive integer indicating the minimum number of 1mm steps per streamline. Default = 50 -
--max_steps NA positive integer indicating the maximum number of 1mm steps per streamline. Default = 250 -
--buffer_steps NA positive integer indicating the number of 1mm steps where the angle stopping criteria are ignored at the beginning of tracking. Default = 5 -
--unidirectionalA flag indicating that bidirectional tracking should not be performed. The buffer steps are NOT removed in this case. Default = Perform bidirectional tracking -
--work_dir /data/work_dirA string indicating the working directory to use. The location of the working directory on the host machine,<work_dir>, must also exist and be bound into the container with-B <work_dir>:/data/work_dirin the command. If the working directory contains previously generated intermediates, the corresponding steps will not be rerun. Default = create a new working directory in/tmp -
--keep_workA flag indicating that the intermediates in the working directory should NOT be cleared. Default = Clear working directory after completion -
--num_threads NA positive integer indicating the number of threads to use during multithreaded steps. Default = 1 -
--forceA flag indicating that the output file should be overwritten if it already exists. Default = Do NOT override existing output file