Magnetic resonance imaging and tractography with R
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
bin Not using colour in output if stdout/stderr is not a TTY, or if TRACT… Sep 7, 2018
lib Updating reportr and using assert() Sep 12, 2018
share Additional use of ask(..., valid=...) Sep 21, 2018
src Not using colour in output if stdout/stderr is not a TTY, or if TRACT… Sep 7, 2018
tests Updating test output Sep 12, 2018
tmp Adding gitignore file in tmp directory Mar 19, 2014
tractor.base Adding support for divest in base DICOM functions (WIP) Sep 21, 2018
tractor.graph Releasing version 3.2.5 Aug 7, 2018
tractor.nt Tweaks Aug 26, 2018
tractor.reg Coerce arguments to MriImage everywhere, rather than requiring them t… Sep 7, 2018
tractor.session Using new valid argument to ask() Sep 12, 2018
tractor.track Displaying multiple streamline properties properly; updating related … Aug 7, 2018
tractor.utils Accepting more logical-valued strings in script config variables, inc… Sep 7, 2018
.dockerignore Adding .dockerignore file Feb 17, 2017
.gitignore Adding to gitignore Feb 5, 2016
.gitmodules Adding shades submodule Aug 8, 2017
.travis.yml Adding deeptest Makefile target, and making this the default on Travis Jan 4, 2018 Releasing version 3.2.0 Feb 14, 2018
Dockerfile Updating references to files that have moved Mar 24, 2017 Updating references to files that have moved Mar 24, 2017
LICENSE Create LICENSE Mar 29, 2017
Makefile Last round of tests for now Jun 21, 2018 Adding build status badge Feb 17, 2017
VERSION Releasing version 3.2.5 Aug 7, 2018
md5.txt Releasing version 3.2.5 Aug 7, 2018

Build Status DOI

TractoR is an R-based platform for medical image processing, tractography and graph analysis. It is focussed on handling magnetic resonance images, but many of its core functions are applicable to any kind of image. The package is full-stack free and open-source, as R is itself free software, and it is easy to extend and build upon. Downloads are available from the project web site.


There are several sources of documentation available. For installation instructions, please see the file. For general information on the package, its capabilities and conventions, please see the TractoR paper and/or the project home page. The latter is mirrored in the TractoR distribution, and can be found at share/doc/home.html. Standard R documentation is available, function by function, for the core tractor.base package and all first- and third-party dependency packages (which are included in the main download).

Please see below for information on

depending on your preference.

Usage from R

Users who are already familiar with R can easily incorporate the functionality of TractoR's R packages into their work. For example, an MRI image can be read from a compressed NIfTI-1 file, and its key metadata displayed with

t1 <- readImageFile("refT1.nii.gz")
#      Image source : /usr/local/tractor/tests/data/session/tractor/structural/refT1
#  Image dimensions : 176 x 232 x 256 voxels
#  Voxel dimensions : 1 x 1 x 1 mm
# Coordinate origin : (91.89,94.98,106.1)
#   Additional tags : (none)
#        Sparseness : 10.03% (dense storage)

The t1 object can in many ways be treated as a standard R array, but it can also be manipulated and visualised with a set of specialised functions.

A parcellation in the same space can be loaded and overlaid in an interactive viewer using

parc <- readImageFile("parcellation.nii.gz")
showImagesInViewer(t1, parc)

Parcellation overlaid on brain

(with the tractor.session package loaded). Notice that both the numerical index and the name of the region currently under the crosshair is given in the info panel at the bottom right.

We can also apply image processing operations to the image and then visualise the result. In the example below we create a diamond-shaped 3D kernel, and then calculate and visualise the morphological gradient of the original image.

k <- shapeKernel(c(3,3,3), type="diamond")
grad <- t1$copy()$map(function(x) dilate(x,k) - erode(x,k))

Morphological gradient of brain image

Notice the use of the map() method, which can be used to replace the data in an image with the result of applying a function, in this case an anonymous function constructed within the call.

Usage outside R

Users who are not familiar with R, or wish to perform common tasks quickly, can instead use TractoR's direct command-line interface, which is simpler to use and requires less typing, but is still very flexible. A list of available commands can be obtained with

tractor list
# Starting TractoR environment...
# Experiment scripts found in /usr/local/tractor/share/experiments:
#  [1] age             apply           bedpost         binarise       
#  [5] chfiletype      clone           components      compress       
#  [9] console         dicomread       dicomsort       dicomtags      
# [13] dirviz          dpreproc        extract         freesurf       
# [17] gradcheck       gradread        gradrotate      graph-build    
# [21] graph-decompose graph-extract   graph-props     graph-reweight 
# [25] graph-viz       graph2csv       hnt-eval        hnt-interpret  
# [29] hnt-ref         hnt-viz         imageinfo       imagestats     
# [33] import          list            mean            mkroi          
# [37] morph           parcellate      path            peek           
# [41] platform        plotcorrections pnt-data        pnt-em         
# [45] pnt-eval        pnt-interpret   pnt-prune       pnt-ref        
# [49] pnt-train       pnt-viz         reg-apply       reg-check      
# [53] reg-info        reg-linear      reg-nonlinear   reg-viz        
# [57] reshape         slice           smooth          split          
# [61] status          tensorfit       track           transform      
# [65] trim            update          values          view  
# Experiment completed with 0 warning(s) and 0 error(s)

Information on usage of a particular script, and the options that it supports, is available by using the '-o' command-line flag.

tractor -o imagestats
# OPTIONS for script /usr/local/tractor/share/experiments/imagestats.R (* 
# required)
#    Scope: nonzero [zero,positive,negative,all]
#    MaskFile: NULL
#    ThresholdLevel: 0
# ARGUMENTS: image file
# Print various statistics of the specified image, optionally limiting the 
# calculations by voxel value or by mask. The 5% trimmed range is obtained by 
# discarding the 5% largest and smallest values and taking the range of the 
# remainder, thereby giving an indication of the influence of extreme values. 
# This script may currently only be applied to 3D images.

Running a particular script is a matter of typing tractor, followed by the script's name and any arguments or named options required. For example,

tractor graph-viz data/graph/diffusion ShowBrain:true

Morphological gradient of brain image

The examples in the previous section can be replicated in this way by using the imageinfo and view scripts. Try it! Further information on the tractor command is available from its man page, by typing man tractor.