vfa_t1: Compute a T1 map using Variable Flip Angle



% This m-file has been automatically generated using qMRgenBatch(vfa_t1)
    % Command Line Interface (CLI) is well-suited for automatization
    % purposes and Octave.
    % Please execute this m-file section by section to get familiar with batch
    % processing for vfa_t1 on CLI.
    % Demo files are downloaded into vfa_t1_data folder.
    % Written by: Agah Karakuzu, 2017
    % =========================================================================


qMRinfo('vfa_t1'); % Describe the model
Contents of vfa_t1:

    vfa_blochsim                   - IR_BLOCHSIM Bloch simulations of the GRE-IR pulse sequence.
    vfa_equation                   - S Analytical equations for the longitudinal magnetization of

    vfa_t1 is both a directory and a function.

    vfa_t1: Compute a T1 map using Variable Flip Angle


    VFAData         spoiled Gradient echo data, 4D volume with different flip angles in time dimension
    (B1map)         excitation (B1+) fieldmap. Used to correct flip angles. (optional)
    (Mask)          Binary mask to accelerate the fitting (optional)

    T1              Longitudinal relaxation time [s]
    M0              Equilibrium magnetization

    VFAData Array [nbFA x 2]:
    [FA1 TR1; FA2 TR2;...]      flip angle [degrees] TR [s]


    Example of command line usage:
    Model = vfa_t1;  % Create class from model
    Model.Prot.VFAData.Mat=[3 0.015; 20 0.015]; %Protocol: 2 different FAs
    data = struct;  % Create data structure
    data.VFAData = load_nii_data('VFAData.nii.gz');
    data.B1map = load_nii_data('B1map.nii.gz');
    FitResults = FitData(data,Model); %fit data

    For more examples: a href="matlab: qMRusage(vfa_t1);"qMRusage(vfa_t1)/a

    Author: Ian Gagnon, 2017

    Please cite the following if you use this module:
    Fram, E.K., Herfkens, R.J., Johnson, G.A., Glover, G.H., Karis, J.P.,
    Shimakawa, A., Perkins, T.G., Pelc, N.J., 1987. Rapid calculation of
    T1 using variable flip angle gradient refocused imaging. Magn. Reson.
    Imaging 5, 201?208
    In addition to citing the package:
Karakuzu A., Boudreau M., Duval T.,Boshkovski T., Leppert I.R., Cabana J.F.,
Gagnon I., Beliveau P., Pike G.B., Cohen-Adad J., Stikov N. (2020), qMRLab:
Quantitative MRI analysis, under one umbrella doi: 10.21105/joss.02343

    Reference page in Doc Center
    doc vfa_t1



a- create object

Model = vfa_t1;

b- modify options

         |- This section will pop-up the options GUI. Close window to continue.
    |- Octave is not GUI compatible. Modify Model.options directly.
Model = Custom_OptionsGUI(Model); % You need to close GUI to move on.


a- load experimental data

         |- vfa_t1 object needs 3 data input(s) to be assigned:
    |-   VFAData
    |-   B1map
    |-   Mask
data = struct();
    % VFAData.nii.gz contains [128  128    1    2] data.
    % B1map.nii.gz contains [128  128] data.
    % Mask.nii.gz contains [128  128] data.

b- fit dataset

           |- This section will fit data.
FitResults = FitData(data,Model,0);
=============== qMRLab::Fit ======================
    Operation has been started: vfa_t1
    Elapsed time is 0.007989 seconds.
    Operation has been completed: vfa_t1

c- show fitting results

         |- Output map will be displayed.
    |- If available, a graph will be displayed to show fitting in a voxel.
    |- To make documentation generation and our CI tests faster for this model,
    we used a subportion of the data (40X40X40) in our testing environment.
    |- Therefore, this example will use FitResults that comes with OSF data for display purposes.
    |- Users will get the whole dataset (384X336X224) and the script that uses it for demo
    via qMRgenBatch(qsm_sb) command.
FitResults_old = load('FitResults/FitResults.mat');
          M0: 2.5567e+03
    Model: [11 struct]
    Protocol: [11 struct]
    T1: 1.3447
    Time: 0.0087
    Version: [2 0 8]
    computed: [128128 double]
    fields: {'T1'  'M0'}


d- Save results

         |-  qMR maps are saved in NIFTI and in a structure FitResults.mat
    that can be loaded in qMRLab graphical user interface
    |-  Model object stores all the options and protocol.
    It can be easily shared with collaborators to fit their
    own data or can be used for simulation.
FitResultsSave_nii(FitResults, 'vfa_t1_data/VFAData.nii.gz');
Warning: Directory already exists.


   |- This section can be executed to run simulations for vfa_t1.

a- Single Voxel Curve

         |- Simulates Single Voxel curves:
    (1) use equation to generate synthetic MRI data
    (2) add rician noise
    (3) fit and plot curve
% Not available for the current model.

b- Sensitivity Analysis

         |-    Simulates sensitivity to fitted parameters:
    (1) vary fitting parameters from lower (lb) to upper (ub) bound.
    (2) run Sim_Single_Voxel_Curve Nofruns times
    (3) Compute mean and std across runs
% Not available for the current model.