Skip to content

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.

License

Notifications You must be signed in to change notification settings

jondeuce/DECAES.jl

Repository files navigation

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}
}

About

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.

Resources

License

Stars

Watchers

Forks

Packages

No packages published