DECAES.jl

DEcomposition and Component Analysis of Exponential Signals (DECAES) - a Julia implementation of the UBC Myelin Water Imaging (MWI) toolbox for computing voxelwise T2-distributions of multi spin-echo MRI images.
Author jondeuce
Popularity
32 Stars
Updated Last
16 Days Ago
Started In
January 2020

DEcomposition and Component Analysis of Exponential Signals (DECAES)

Dev Source

Build Status codecov.io

DECAES is a fast Julia implementation of the MATLAB toolbox from the UBC MRI Research Centre for computing voxelwise T2-distributions from multi spin-echo MRI images using the extended phase graph algorithm with stimulated echo corrections. Post-processing of these T2-distributions allows for the computation of measures such as the myelin water fraction (MWF) or the luminal water fraction (LWF).

DECAES is written in the open-source Julia programming language. Julia and command line interfaces are available through this package. The examples repository additionally provides a MATLAB interface via the MATLAB function decaes.m.

If you use DECAES in your research, please cite our work:

  • Doucette J, Kames C, Rauscher A. DECAES - DEcomposition and Component Analysis of Exponential Signals. Zeitschrift für Medizinische Physik 2020; 30: 271–278.

Installation

Using Julia v1.9 or later you can install DECAES as follows:

$ julia --project=@decaes -e 'import Pkg; Pkg.add("DECAES"); Pkg.build("DECAES")'

This will do two things:

  1. Add DECAES.jl to a named Julia project environment separate from your global environment
  2. Build the decaes launcher script at ~/.julia/bin for running DECAES from the command line

DECAES can then be run from the command line via decaes <COMMAND LINE ARGS>, provided ~/.julia/bin is added to your PATH. Run decaes --help for available arguments.

Quickstart

If you are new to DECAES, the best place to start is the examples repository. There, we provide:

  • A walk-through tutorial for using the MATLAB and command-line DECAES interfaces
  • Example multi spin-echo (MSE) data for demonstrating MWI processing

Documentation

Dev

Find package documentation at the above link, which includes:

  • The command line interface API, available command line arguments, and examples
  • API reference detailing how to use DECAES.jl from within Julia
  • Other internals and algorithmic details

Benchmarks

Due to performance optimizations enabled by Julia, DECAES is fast. As an illustration, here is a comparison between DECAES and UBC MWF MATLAB toolbox T2-distribution computation times for two multi spin-echo (MSE) datasets:

Dataset Matrix Size CPU Cores Threads MATLAB DECAES
56-echo MSE 240 x 240 x 113 Intel Xeon E5-2640 12 24 1h:25m:01s 1m:07s
48-echo MSE 240 x 240 x 48 Intel Xeon E5-2640 12 24 59m:40s 40s
56-echo MSE 240 x 240 x 113 AMD Ryzen 9 3950X 16 32 22m:33s 15.6s
48-echo MSE 240 x 240 x 48 AMD Ryzen 9 3950X 16 32 17m:56s 9.3s
56-echo MSE 240 x 240 x 113 AMD Ryzen Threadripper 3970X 32 64 -- 7.7s
48-echo MSE 240 x 240 x 48 AMD Ryzen Threadripper 3970X 32 64 -- 4.3s

DECAES Tutorial 2022

DECAES.jl Software Tutorial: Myelin and Luminal Water Imaging in under 1 Minute

JuliaCon 2021

JuliaCon 2021 - Matlab to Julia: Hours to Minutes for MRI Image Analysis

Citing this work

If you use DECAES in your research, please cite our work:

@article{DECAES.jl-2020,
  title = {{{DECAES}} - {{DEcomposition}} and {{Component Analysis}} of {{Exponential Signals}}},
  author = {Doucette, Jonathan and Kames, Christian and Rauscher, Alexander},
  year = {2020},
  month = may,
  issn = {1876-4436},
  doi = {10.1016/j.zemedi.2020.04.001},
  journal = {Zeitschrift Fur Medizinische Physik},
  keywords = {Brain,Luminal Water Imaging,MRI,Myelin Water Imaging,Prostate},
  language = {eng},
  pmid = {32451148}
}