dMRI-Lab 1.0
micro2ng.m File Reference

Functions

function micro2ng (in shfile, in lambdaparfile, in lambdaperpfile, in dtifile, in ngfile, in varargin)
 Computes the so-called Non-Gaussianity (NG) of diffusion at each voxel according to a linear convolutional model:
 

Function Documentation

◆ micro2ng()

function micro2ng ( in shfile,
in lambdaparfile,
in lambdaperpfile,
in dtifile,
in ngfile,
in varargin )

Computes the so-called Non-Gaussianity (NG) of diffusion at each voxel according to a linear convolutional model:

             atti(u,b) = Integral_{S}Phi(v)exp(-b*((lpar-lperp)(u*v)^2+lperp))dv.

The NG is defined as the sine of the angle between the EAP, P(R), and its Gaussian counterpart defined as the diffusion tensor model that best fits the multi-shell measurements. The angle between two signals is defined in the common way in terms of their inner product.

Parameters
shfileA string specifying the file containing the SH coefficients of the ODF at each voxel up to order L. Should be computed with micro2shodf.
lambdaparfileA string specifying the file containing the parallel diffusivity at each voxel, estimated with atti2micro.
lambdaperpfileA string specifying the file containing the traverse diffusivity at each voxel, estimated with atti2micro.
dtifileA string specifying the file to save the tensor volume to compute the distance to. The proper way to compute this tensor is:
  • Use micro2atti to generate a synthetic attenuation signal from your model, something like:
    micro2atti('shfile.nii', 'lambdaparfile.nii', 'lambdaperpfile.nii', 'ffile.nii', 'hcp1007.bvec', 'hcp1007.bval','attifile.nii', '-mask', 'hcp1007_mask_crop.nii');
vararginvarargin: Optional arguments passed as -name value pairs (e.g. -flperp 0.001).
Returns
- ngfile: the NG at each voxel.

Mandatory Inputs:

  • shfile: A string specifying the file containing the SH coefficients of the ODF at each voxel up to order L. Should be computed with micro2shodf.
  • lambdaparfile: A string specifying the file containing the parallel diffusivity at each voxel, estimated with atti2micro.
  • lambdaperpfile: A string specifying the file containing the traverse diffusivity at each voxel, estimated with atti2micro.
  • dtifile: A string specifying the file to save the tensor volume to compute the distance to. The proper way to compute this tensor is:
    • Use atti2dti to generate a synthetic attenuation signal from your model, something like:
      - ./run_atti2micro_wrap.sh MATLAB Runtime directory dwifile.nii gifile.bvec bifile.bval tensorfile.nii s0file.nii -mask mask_file.nii
      and use 'tensorfile.nii' as 'dtifile'.
  • varargin: Optional arguments passed as -name value pairs (e.g. -flperp 0.001).

Optional Arguments - General Optional Parameters:

  • mask: a MxNxP array of logicals. Only those voxels where mask is true are processed, the others are filled with zeros (default: all trues).
  • to improve the contrast of the raw NG, a gamma correction can be performed with the form: ng = ng0^(3*epsilon)/(1-3*ng0^epsilon+3*ng0^(2*epsilon)); Use empty brackets, [], to avoid this correction and work with the raw NG (default: 0.4).

Sanity Checks On The Micro-Structure Model:

  • chkmod: Whether (true) or not (false) perform sanity checks over lpar and lperp as provided by atti2micro. If true, three corrections are performed:
    • lpar is ensured to be in the range (ADC0/20,ADC0);
    • lperp is ensured to be greater than lpar*flperp (see below);
    • lperp is ensured to be less than lpar*Flperp (see below). (default: true)
  • flperp: If chkmod == true, this parameter provides a lower threshold for lperp as a function of lpar (default: 0.001).
  • Flperp: If chkmod == true, this parameter provides an upper threshold for lperp as a function of lpar (default: 0.999).

Other Parameters

  • lambda: the algorithm is based on fitting SH to the (inverse of the squared root of) the determinant of the sum of two matrices. This is the Laplace-Beltrami penalty parameter for this fitting (default: 1.0e-6).
  • chunksz: This parameter is directly passed to the signal2sh function to fit the signal in the basis of SH chunk-by-chunk (see the help therein) (default: 100).

Examples:

micro2ng shfile.nii lambdaparfile.nii lambdaperpfile.nii dtifile.nii ngfile.nii -mask mask_file.nii
function micro2ng(in shfile, in lambdaparfile, in lambdaperpfile, in dtifile, in ngfile, in varargin)
Computes the so-called Non-Gaussianity (NG) of diffusion at each voxel according to a linear convolut...
Note
This is the simplest use case
See also
micro2ng