Subspace_MESE.MESE_EPGMethod
MESE_EPG(T2::Ty,T1::Ty,TE::Ty,TR::Ty,ETL::Int,delta::Ty,dummy::Int) where Ty <: AbstractFloat

Generate the signal evolution of a Multi-Echo Spin-Echo sequence with an Extended Phase Graph model.

Input :

- `T2` : Transverse relaxation
- `T1` : Longitudinal relaxation
- `TE` : Echo Time
- `TR` : Repetition time
- `ETL` : Echo Train Length

Output :

- Amplitude of each echoes
source
Subspace_MESE.MESE_basis_EPGFunction
MESE_basis_EPG(NUM_BASIS::Int,TE,ETL::Int,T2_vec::Union{AbstractVector,AbstractFloat},B1_vec::Union{AbstractVector,AbstractFloat} = 1.0,T1_vec::Union{AbstractVector,AbstractFloat}=1000.0;TR = 1000.0,dummy::Int = 3)

Generate a temporal basis for a Multi-Echo Spin-Echo sequence with an Extended Phase Graph model for various value of T2/B1/T1

stored as a vector in T2_vec/B1_vec/T1_vec.

Input :

- `NUM_BASIS::Int : Number of temporal basis to extract
- `TE::AbstractFloat` : Cartesian acquisition with a fully-sampled center.
- `ETL::Int` : Echo Train Length
- `T2_vec::Union{AbstractVector,AbstractFloat}` : Vector of T₂ values used to generate the signal dictionnary 
- `B1_vec::Union{AbstractVector,AbstractFloat}` : Vector of B₁ values used to generate the signal dictionnary 
- `T1_vec::Union{AbstractVector,AbstractFloat}` : Vector of T₁ values used to generate the signal dictionnary

Keyword :

- `TR` : Repetition time
- `dummy` : Number of dummy scan before extracting the signal value

Output :

- `basis` : Matrix of size (ETL,NUM_BASIS)
- `epg_dict` : Dictionnary of signal used to generate the basis

Example :

B1_vec = 0.8:0.01:1.0
T2_vec = 1.0:1.0:2000.0
T1_vec = 1000.0 #can also be a float
TE = 7.0
TR = 1000.0
dummy=3
ETL = 50
NUM_BASIS = 6

basis_epg, epg_dict =MESE_basis_EPG(NUM_BASIS,TE,ETL,T2_vec,B1_vec,T1_vec;TR=TR,dummy=dummy)
source
Subspace_MESE.MESE_basis_expMethod
    MESE_basis_exp(NUM_BASIS::Int,TE::AbstractFloat,ETL::Int, T2_vec::AbstractVector;removeFirstPoint::Bool=false)

Generate a temporal basis for a Multi-Echo Spin-Echo sequence with an exponential model.for various value of T2 stored as a vector in T2_vec. The first point of the echo train can be removed from the dictionnary with the keyword removeFirstPoint to minimize the effect of stimulated echoes.

Input :

- `NUM_BASIS::Int : Number of temporal basis to extract
- `TE::AbstractFloat` : Cartesian acquisition with a fully-sampled center.
- `ETL::Int` : Echo Train Length
- `T2_vec::AbstractVector` : Vector of T₂ values used to generate the signal dictionnary

Keyword :

- `removeFirstPoint::Bool=False` : Remove the first point of the dictionnary before the svd

Output :

- `basis` : Matrix of size (ETL,NUM_BASIS)
- `exp_dict` : Dictionnary of signal used to generate the basis

Example :

T2_vec = 1.0:1.0:2000.0
TE = 7.0
ETL = 50
NUM_BASIS = 6

basis_exp,exp_dict = MESE_basis_exp(NUM_BASIS,TE,ETL,T2_vec)
source
Subspace_MESE.RawAcquisitionData_MESEMethod
RawAcquisitionData_MESE(b::BrukerFile)

Convert a Bruker dataset acquired with the aMESECS sequence into a RawAcquisitionData object compatible with the MRIReco functions.

Input : - b::BrukerFile

Output : - raw::RawAcquisitionData

source
Subspace_MESE.RawAcquisitionData_MESE_PV360Method
RawAcquisitionData_MESE_PV360(b::BrukerFile)

Convert a Bruker dataset acquired with the aMESECS_360 sequence into a RawAcquisitionData object compatible with the MRIReco functions.

Input : - b::BrukerFile

Output : - raw::RawAcquisitionData

source
Subspace_MESE.RawAcquisitionData_MESE_PV6Method
RawAcquisitionData_MESE_PV6(b::BrukerFile)

Convert a Bruker dataset acquired with the aMESECS sequence into a RawAcquisitionData object compatible with the MRIReco functions.

Input : - b::BrukerFile

Output : - raw::RawAcquisitionData

source
Subspace_MESE.T2Fit_epg_noiseMethod
T2Fit_epg_noise(ima::Array{T,N}, t::AbstractVector{T},T1=1000.0,TE=7.0; EPGthresh = 1e-5,p0=nothing,mask = nothing) where {T<:Real,N}

WIP

source
Subspace_MESE.T2Fit_exp_noiseMethod
    T2Fit_exp_noise(ima::Array{T,N}, t::AbstractVector{T}; removePoint::Bool=true, L::Int=1, mask = nothing) where {T<:Real,N}

Fit the relaxation parameters T2 with the equation : $S(t) = \sqrt{(M_0 \exp(-\frac{t}{T2}))^2 + 2 L \sigma_g^2}$ where L est le nombre de canaux, et $\sigma_g$ le bruit gaussien sur les image

Arguments

  • ima::Array{T,N}: multi-dimensionnal images. Last dimension stores the temporal dimension
  • t::AbstractVector{<:Real}: times vector in ms
  • p0=nothing: starting values for fit, if empty p0=[maximum(ima),30,maximum(ima)*0.1]

Keywords

  • removePoint::Bool=true: remove the first point before fitting
  • L::Int=1: Number of coil elements
  • mask::

Returns

  • fit_params : parameter maps last dimension stores the following maps (M₀ , T₂ , σ)

Bibliography

  • Cárdenas-Blanco A, Tejos C, Irarrazaval P, Cameron I. Noise in magnitude magnetic

resonance images. Concepts Magn Reson Part A [Internet]. 2008 Nov;32A(6):409?16. Available from: http://doi.wiley.com/10.1002/cmr.a.20124

  • Feng Y, He T, Gatehouse PD, Li X, Harith Alam M, Pennell DJ, et al. Improved MRI R 2 *

relaxometry of iron-loaded liver with noise correction. Magn Reson Med [Internet]. 2013 Dec;70(6):1765?74. Available from: http://doi.wiley.com/10.1002/mrm.24607

source
Subspace_MESE.basis_calibrationMethod
basis_calibration(NUM_BASIS::Int,acq::AcquisitionData{T,D},crop_size::NTuple{D,Int}) where {T,D}

k_bart = kDataCart(acq);

Extract a temporal basis from a low-resolution images reconstructed using a fully sampled area at the center of the k-space with a size crop_size.

Input :

- `NUM_BASIS::Int : Number of temporal basis to extract
- `acq::AcquisitionData` : Cartesian acquisition with a fully-sampled center.
- `crop_size::NTuple{D,Int})` : size of the  central part of k-space used

Output :

- `basis` : Matrix of size (ETL,NUM_BASIS)
- `calib_dict` : Dictionnary of signal used to generate the basis

Example :

b = BrukerFile("path/to/dataset")

raw = RawAcquisitionData_MESE(b)
acq = AcquisitionData(raw,OffsetBruker = true);

basis, calib_dict = MESE_basis_calibration(acq,(15,15,15),6)
source
Subspace_MESE.subspace_bart_reconstructionMethod
subspace_bart_reconstruction(acq::AcquisitionData,params::Dict{Symbol,Any},bart_path::AbstractString)

Reconstruction of the accelerated MESE sequence with BART.

Input :

- `acq::AcquisitionData` : Cartesian acquisition with a fully-sampled center.
- `params::Dict{Symbol,Any}` : size of the  central part of k-space used
- `bart_path::AbstractString` : path to the BART executable library

Output :

- `basis` : Matrix of size (ETL,NUM_BASIS)
- `calib_dict` : Dictionnary of signal used to generate the basis

Example :

b = BrukerFile("path/to/dataset")

raw = RawAcquisitionData_MESE(b)
acq = AcquisitionData(raw,OffsetBruker = true);

basis, calib_dict = MESE_basis_calibration(acq,(15,15,15),6)
source