ukftractography:MainPage - NITRC Wiki

ukftractography:MainPage

From NITRC Wiki

Jump to: navigation, search

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