Demonstration code for the MRM manuscript, "T2 Shuffling: Sharp, Multi-Contrast, Volumetric Fast Spin-Echo Imaging"
Clone or download
Latest commit d833f58 Sep 29, 2016
Type Name Latest commit message Commit time
Failed to load latest commit information.
data add flip angle sequence Sep 29, 2016
doc add MPR videos May 16, 2016
src remove bad C++ comment May 25, 2016
.gitignore ignore .DS_Store files Jan 27, 2016
LICENSE update LICENSE copyright Jan 5, 2016 add missing util functions and mention contributions in README May 25, 2016
make.m spelling Mar 25, 2016
t2shuffling_demos.m add src/ to path Jan 29, 2016

T2 Shuffling Demonstration Code

Demonstration code for the MRM manuscript, T2 Shuffling: Sharp, Multi-Contrast, Volumetric Fast Spin-Echo Imaging [1].

Written by Jon Tamir. Please feel free to contact me or post an issue on the repository page if there is a problem.

This code may be freely used and modified for educational, research, and not-for-profit purposes (See LICENSE for more information).

T2 Shuffling is an MRI acquisition and reconstruction method based on 3D Fast Spin-Echo. The method accounts for temporal dynamics during the echo trains to reduce image blur and resolve multiple image contrasts along the T2 relaxation curve. Figure 1 provides a high level overview of the method. The echo train ordering is randomly shuffled during the acquisition according to variable density Poisson disc sampling masks. The shuffling leads to reduced image blur at the cost of noise-like artifacts. The artifacts are iteratively suppressed in a regularized reconstruction based on compressed sensing and full signal dynamics are recovered.

[1] J.I. Tamir, M. Uecker, W. Chen, P. Lai, M.T. Alley, S.S. Vasanawala, and M. Lustig, T2 Shuffling: Sharp, multicontrast, volumetric fast spin-echo imaging. Magn Reson Med 2016 (Early View). doi: 10.1002/mrm.26102

Multi-planar video of relaxation over time: [Youtube] [Direct Link]

Same reconstruction, with a fixed window level: [Youtube] [Direct Link]


  • src/: Matlab demos, outlined below
    • src/utils/: Matlab utility and mex functions
  • data/: Collection of mat and BART files used by the demos
  • doc/: Documentation and demos

Matlab Demos

To install the mex files and add the correct paths for the demos, navigate to the t2shuffling-support base directory, and run the command

>> make

Now you can run any of the demos in the src directory. To list the demos, run

>> t2shuffling_demos

T2 Shuffling reconstruction using ADMM [Demo Webpage]

The script src/demo_t2shuffling_recon.m demonstrates the T2 Shuffling reconstruction on an axial slice of an under-sampled knee.

Simulate signal evolutions and generate a subspace [Demo Webpage]

The script src/demo_gen_subspace.m demonstrates the T2 Shuffling reconstruction on an axial slice of an under-sampled knee.

Locally Low Rank degrees of freedom [Demo Webpage]

The script src/demo_llr_degrees_of_freedom.m demonstrates the LLR degrees of freedom and k-means clustering.

Randomly shuffled echo train ordering [Demo Webpage]

The script src/demo_t2shuffling_mask.m demonstrates the echo train view ordering/sampling pattern generation.

B_1 inhomogeneity [Demo Webpage]

The script src/demo_b1_and_model_error.m simulates the subspace model error as a function of percent B1 inhomogeneity and T2 value, as well as demonstrating the bias vs. noise tradeoff with subspace size.

1D Point Spread Function [Demo Webpage]

The script src/demo_psf_1d.m simulates the 1D point spread function (PSF) for exponential decay with both ceter-out and randomly shuffled view orderings.

Transform Point Spread Function [Demo Webpage]

The script src/demo_tpsf.m simulates the transform point spread function (TPSF) for a center-out ordering and a randomly shuffled ordering.


The extended phase graph (EPG) code was written by Brian Hargreaves and downloaded from on Dec. 7, 2015.

Some Matlab utility functions were written by Michael Lustig in the ESPIRiT Matlab reference implementation. They were downloaded from on Dec. 7, 2015.

All rights/distribution are the same as for the original code, and should cite the original author and webpage