Skip to main content

The TRAKO Project: Compression of DTI Streamlines.

Project description

TRAKO

Trako compresses DTI streamlines from .vtp to smaller .tko files!

Installation as PyPI package (recommended, preferably in a virtualenv)

pip install trako

Usage

./trakofy -i DATA/example.vtp -o /tmp/test.tko
./untrakofy -i /tmp/test.tko -o /tmp/restored.vtp
./tkompare -a DATA/example.vtp -b /tmp/restored.vtp

Diffusion Tensor Imaging (DTI) allows to estimate the brain's white matter tracts. Fiber tracking methods then produce clusters of streamlines that are 3D fiber bundles. Each fiber in these bundles is a line with X,Y,Z coordinates (floats) but researchers may attach many different scalars to each coordinate (per-vertex). Each scalar can be of arbitrary dimension, size, and data type. Researchers may also attach many different property values to individual streamlines (per-fiber). Adding scalars and properties can result in large streamline files.

Trako is a new file format that stores streamlines and associated per-vertex and per-fiber data as glTF containers with compression. We use the Draco algorithm to compress X,Y,Z coordinates, scalars, and properties.

Custom parameters

Trako allows a detailed configuration of encoding parameters. Customizations can be configured in a JSON file to specify different parameters for different attributes.

We include an example configuration DATA/test.conf.

{
    
  'POSITION': {
    'position':True,
    'sequential':True,
    'quantization_bits':14,
    'compression_level':1,
    'quantization_range':-1,
    'quantization_origin':None
  },
  'INDICES': {
    'position':False,
    'sequential':True,
    'quantization_bits':14,
    'compression_level':1,
    'quantization_range':-1,
    'quantization_origin':None
  },
  'RTOP2': { # configure custom settings per attribute name
    'position':False,
    'sequential':True,
    'quantization_bits':20,
    'compression_level':1,
    'quantization_range':-1,
    'quantization_origin':None
  }

}

This configuration configures a scalar named RTOP2 with a higher bitrate than other attributes. It is also possible to use a generic configuration (for example to reduce the quantization bitrate for all attributes) as follows:

{
    
  '*': {
    'position':False,
    'sequential':True,
    'quantization_bits':11,
    'compression_level':1,
    'quantization_range':-1,
    'quantization_origin':None
  }

}

The configuration is only relevant during compression and can be used as follows:

./trakofy -i DATA/example.vtp -o /tmp/test.tko -c DATA/test.conf

Experiments

We compared Trako and common streamline file formats (VTK, TrackVis) on data of two subjects with 800 fiber clusters each. The data includes multiple per-fiber and per-vertex scalar values. Trako yields an average compression ratio of 3.2 and reduces the data size from 2974 Megabytes to 941 Megabytes.

We also used Trako to compress a single whole brain tractography dataset with 153,537 streamlines. Trako reduces the data size from 543 Megabytes to 267 Megabytes (compression factor 2.02).

With default parameters, Trako uses lossy compression for position data and per-vertex/per-fiber scalar values with a mean relative loss of less than 0.0001 (besides RGB values as EmbeddingColor). We show the relative information loss for two subjects with 800 fiber clusters each on the left, and the relative information loss for a single whole brain tractography dataset on the right.

Visualization using WebGL

We provide JavaScript parsers to visualize Trako (.TKO) files with Three.js, Vtk.js, and XTK.

And, SliceDrop supports Trako too! Just drag'n'drop the .TKO files in the browser to view them.

Developer installation (comes with test data)

Please follow these steps with Miniconda or Anaconda installed:

# create environment
conda create --name TRAKO python=3.6
conda activate TRAKO

# get TRAKO
git clone git@github.com:haehn/TRAKO.git
cd TRAKO

python setup.py install

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

trako-0.3.3.dev9.tar.gz (14.4 kB view details)

Uploaded Source

File details

Details for the file trako-0.3.3.dev9.tar.gz.

File metadata

  • Download URL: trako-0.3.3.dev9.tar.gz
  • Upload date:
  • Size: 14.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/42.0.1.post20191125 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.6.9

File hashes

Hashes for trako-0.3.3.dev9.tar.gz
Algorithm Hash digest
SHA256 c4af643815ce6aa29495754640edcc94331bf7b867fcf029ce05426cac2c6f18
MD5 c461004954f4f272b69d52d109ab77de
BLAKE2b-256 411f67d4e6863d3df0f82727c1bcce4ed69b16a5d72abf204bdba0cd932ba3cd

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page