Tubegen: Difference between revisions
No edit summary |
|||
| Line 2: | Line 2: | ||
We use this program extensively in the [[diffusion MRI]] project and it is generally run at the end of the [[diffusion processing pipeline]]. | We use this program extensively in the [[diffusion MRI]] project and it is generally run at the end of the [[diffusion processing pipeline]]. | ||
== Code Overview == | |||
The <code>tubegen</code> command may be found in <code>$G/bin/tubegen</code>. The source code for the program lives in <code>$G/src/tubegen</code>, but it is just a simple command-line interface to the [[#streamtube Library|<tt>streamtube</tt> library]], the source of which is located at <code>$G/src/streamtube</code>. The program generates a <tt>*.sm</tt> file, which [[brainapp]] reads in order to visualize and interact with the streamtubes, as well as several other [[#Output Files|output files]]. | |||
== Technical Details == | == Technical Details == | ||
| Line 9: | Line 13: | ||
Once you've generated a bunch of streamtubes, it makes sense to remove some so that you get a visually or statistically representative set. The full streamtube process, including termination conditions, culling, and terminology, is described in {{pub|Zhang-2003-VDT|Song's 2003 TVCG article}}. | Once you've generated a bunch of streamtubes, it makes sense to remove some so that you get a visually or statistically representative set. The full streamtube process, including termination conditions, culling, and terminology, is described in {{pub|Zhang-2003-VDT|Song's 2003 TVCG article}}. | ||
== Command-Line Arguments == | == Command-Line Arguments == | ||
| Line 101: | Line 103: | ||
== Output Files == | == Output Files == | ||
In addition to the <tt>.sm</tt> file that you specify with the "<tt>out</tt>" argument, <tt>tubegen</tt> also generates corresponding <tt>.data</tt>, <tt>.info</tt>, <tt>.nocr</tt>, <tt>.size</tt>, and <tt>.wrl</tt> files in the same directory as the specified output. | In addition to the <tt>.sm</tt> file that you specify with the "<tt>out</tt>" argument, <tt>tubegen</tt> also generates corresponding <tt>.data</tt>, <tt>.info</tt>, <tt>.nocr</tt>, <tt>.size</tt>, and <tt>.wrl</tt> files in the same directory as the specified output. | ||
| Line 123: | Line 126: | ||
== Publications == | == Publications == | ||
* Streamtube generation and culling: | * Streamtube generation and culling: | ||
** {{pub|Zhang-2003-VDT|pdf=yes}} --- TVCG '03 | ** {{pub|Zhang-2003-VDT|pdf=yes}} --- TVCG '03 | ||
| Line 131: | Line 135: | ||
== See Also == | == See Also == | ||
* [[Diffusion Processing Pipeline]] | * [[Diffusion Processing Pipeline]] | ||
* [[Brainapp]] | * [[Brainapp]] | ||
Revision as of 14:59, 17 March 2009
tubegen is a program that generates "streamtubes" from a tensor field. We define streamtubes as integral paths in the interpolated field of principle eigenvectors of the diffusion tensors. Many of our studies with clinical neuroscience collaborators use streamtubes as a proxy for axon tracts in the brain's white matter and involve computing measures over the streamtubes. We also do HCI and visualization research motivated by the fundamental difficulties of interacting with a complex jumble of tubes.
We use this program extensively in the diffusion MRI project and it is generally run at the end of the diffusion processing pipeline.
Code Overview
The tubegen command may be found in $G/bin/tubegen. The source code for the program lives in $G/src/tubegen, but it is just a simple command-line interface to the streamtube library, the source of which is located at $G/src/streamtube. The program generates a *.sm file, which brainapp reads in order to visualize and interact with the streamtubes, as well as several other output files.
Technical Details
We use 2nd-order Runge-Kutta numerical integration with tricubic b-spline interpolation of the principle eigenvectors; the citation we've used for this process is:
Once you've generated a bunch of streamtubes, it makes sense to remove some so that you get a visually or statistically representative set. The full streamtube process, including termination conditions, culling, and terminology, is described in Song's 2003 TVCG article .
Command-Line Arguments
Current Values
To get some degree of consistency across our results, we use the following arguments:
$(G)/bin/tubegen -dt voxel_models/tensors -t2 voxel_models/I0 -out aggregate_models/tube_12.sm -ODE 0 -cs 10 -seed 1 1 1 -stepsize 1.0 -radius 0.3 -al 0.1 -dth .5 -t2thresh -40 -Longshort 1 -cl .1 -cd 1.7
Common Arguments
| arg | params | description | defaults |
|---|---|---|---|
| Input Files | |||
| dt | str | Diffusion tensor image path | /u/sz/diffusion/data/susumu/mri/Diff |
| t2 | str | T2-weighted image path | /u/sz/diffusion/data/susumu/mri/T2 |
| FA | str | Fractional Anisotropy image | ./d2mem/FA |
| Output Files | |||
| out | str | Output sm file | /map/gfx0/common0/diffusion/Interface/bin/tubegen/1.sm |
| Integration Parameters | |||
| ODE | n | ODE method. n=0 ⇒ rk2; n=1 ⇒ rk4 | 0 |
| cs | n | Max tube length in mm | 20 |
| seed | f f f | Number of seed points to place in each voxel along each dimension (i.e. 1 1 1 generates one streamtube per voxel; 10 10 5 generates 500 streamtubes per voxel) | 10.0 10.0 5.0 |
| stepsize | f | Stepsize in mm | 1.0 |
| radius | f | Streamtube radius in mm | 1.0 |
| al | f | Low threshold for linear anisotropy for terminating integration | 0.1 |
| dth | f | Low threshold on inter-tube distances, in mm, for terminating integration | 0.5 |
| t2thresh | f | T2 low threshold for terminating integration | -1.0 |
| Longshort | n | For integration, start from long one? (1) or short one(0), or longest of the two (2), or mean of the two (3) | 0 |
| Streamtube Culling | |||
| cl | f | Min average Linear Anisotropy | 0.3 |
| cd | f | Min distance between tubes in mm | 2.0 |
Obscure Arguments
To keep this page from getting cluttered, the table of obscure arguments is on a sub-page. Please see /Obscure Arguments for this table.
Output Files
In addition to the .sm file that you specify with the "out" argument, tubegen also generates corresponding .data, .info, .nocr, .size, and .wrl files in the same directory as the specified output.
It sure would be nice to know what all of them are and how they're structured...
streamtube Library
$G/src/streamtube/streamtube is where the source code for the top-level streamtube library lives. This depends on a bunch of helper libraries located in the directories above there with random names like "magnetite" and "fibrolite".
Publications
- Streamtube generation and culling:
- Zhang-2003-VDT (PDF) --- TVCG '03
- Tract-of-interest metrics:
- Lee-2006-QTM (PDF) --- ISMRM '06 poster
- Laidlaw-2007-QTI (PDF) --- Views Radiology '07 short article
- Correia-2008-QTM (PDF) -- Neuroimage '08 full clinical article