ukftractography:MainPage
From NITRC Wiki
Contents
Downloading
Check out from github:
git clone git://github.com/pnlbwh/ukftractography.git
Building
Third party libraries
Teem
Teem is a coordinated group of libraries for representing, processing, and visualising scientific raster data. We use it to read, and process The input data of type NRRD.
Boost
The Boost C++ Libraries are a collection of free libraries that extend the functionality of C++. In this project boost is used for multithreading, and the progress bar.
ITK
Insight Segmentation and Registration Toolkit (ITK). ITK is an open-source, cross-platform system that provides developers with an extensive suite of software tools for image analysis. In this application we only use the underlying vnl libraries for most of the linear algebra processing. It replaces functionality that was done with LAPACK before.
Slicer Execution Model
The Execution Model provides a simple mechanism for incorporating command line programs as Slicer modules. These command line modules are self-describing, emitting an XML description of its command line arguments. Slicer uses this XML description to construct a GUI for the module. We use it to make our application into a Command Line Module that can be run from Slicer, or from a Consolse without being dependand on Slicer.
Building instructions
There are 3 ways to build this project from source, as a stand alone superbuild, against a Slicer 4 build, and as a Slicer 4 extension build (which is more of a test than anything).
a) Standalone Superbuild
cd <build-dir> cmake <path-to-source>/superbuild make
b) Build with Slicer4
cd <build-dir> cmake -DSlicer_DIR=<path-to-Slicer4-Superbuild>/Slicer-build <path-to-source> make
c) Build as Slicer4 extension
- Manual build (for the developer to test that the extension can be installed
successfully)
mkdir s4ext_build cd s4ext_build ccmake -DSlicer_DIR=$soft/slicer/Slicer4-Superbuild2/Slicer-build -DSlicer_EXTENSION_DESCRIPTION_DIR:PATH=$soft/ukftractography/ukf_tractography $soft/slicer/Slicer4/Extensions/CMake make
Extension build, test, package and upload using ExperimentalUpload target (https://github.com/Slicer/ExtensionsIndex#extension-build-test-package-and-upload-using-experimentalupload-target):
cd s4ext_build cd ukf_tractography-build cmake -DMIDAS_PACKAGE_URL:STRING=http://slicer.kitware.com/midas3 -DMIDAS_PACKAGE_EMAIL:STRING=<EMAIL> -DMIDAS_PACKAGE_API_KEY:STRING=<API KEY> . make ExperimentalUpload
Usage
This application complies with the Slicer Execution Model, and is thus able to be run both as a module in Slicer and as an independent console application.
- Supported input data format(s): NRRD(.nhdr, .nrrd)
- Supported output data format(s): VTK(.vtk)
Run from Slicer
This module may also be downloaded from Slicer 4's Extension manager. Once installed it can be found under category Diffusion->Tractography. (See the slicer wiki: http://www.slicer.org/slicerWiki/index.php/Documentation/4.2/Modules/UKFTractography)
Run from console
When run from the console, a list of available parameters and their meanings can be displayed with the command
ukf --help
Of all the parameters, three are necessary to run the tractography: a NRRD file containing the DWI data, a NRRD label file defining the mask/volume of the brain, and a VTK file used to output the tractography results. All the other parameters are optional.
Sample command line run
The source code includes a file called 'sample_run.sh', which gives an example of how to use UKFTractography from command line.
Options
The code of UKFTractography comes with a vast amount of options, and parameters. The help text gives a good overview over all available options. Additionally, all option are documented here.
Documentation
The trunk contains a folder 'documentation', which contains the documentation of the main project in HTML format. Open index.html with an internet browser to view.
Design
The application is multi-threaded to take advantage of the computation power of multi-core architectures.
Coding Style
As is proposed by Stefan Lienhard, the coding style followed in this project is Google C++ Style Guide