Introduction to spant

Reading raw data and plotting

Load the spant package:

library(spant)

Get the path to a data file included with spant:

fname <- system.file("extdata", "philips_spar_sdat_WS.SDAT", package = "spant")

Read the file and save to the workspace as mrs_data:

mrs_data <- read_mrs(fname, format = "spar_sdat")

Output some basic information about the data:

print(mrs_data)
#> MRS Data Parameters
#> ----------------------------------
#> Trans. freq (MHz)       : 127.7861
#> FID data points         : 1024
#> X,Y,Z dimensions        : 1x1x1
#> Dynamics                : 1
#> Coils                   : 1
#> Voxel resolution (mm)   : 20x20x20
#> Sampling frequency (Hz) : 2000
#> Reference freq. (ppm)   : 4.65
#> Nucleus                 : 1H
#> Spectral domain         : FALSE

Plot the spectral region between 5 and 0.5 ppm:

plot(mrs_data, xlim = c(5, 0.5))

Basic preprocessing

Apply a HSVD filter to the residual water region and align the spectrum to the tNAA resonance at 2.01 ppm:

mrs_proc <- hsvd_filt(mrs_data)
mrs_proc <- align(mrs_proc, 2.01)
plot(mrs_proc, xlim = c(5, 0.5))

Basis simulation

Simulate a typical basis set for short TE brain analysis, print some basic information and plot:

basis <- sim_basis_1h_brain_press(mrs_proc)
print(basis)
#> Basis set parameters
#> -------------------------------
#> Trans. freq (MHz)       : 127.786142
#> Data points             : 1024
#> Sampling frequency (Hz) : 2000
#> Elements                : 27
#> 
#> Names
#> -------------------------------
#> -CrCH2,Ala,Asp,Cr,GABA,Glc,Gln,
#> GSH,Glu,GPC,Ins,Lac,Lip09,
#> Lip13a,Lip13b,Lip20,MM09,MM12,
#> MM14,MM17,MM20,NAA,NAAG,PCh,
#> PCr,sIns,Tau
stackplot(basis, xlim = c(4, 0.5), labels = basis$names, y_offset = 5)

Perform ABfit analysis of the processed data (mrs_proc):

fit_res <- fit_mrs(mrs_proc, basis)

Plot the fit result:

plot(fit_res)

Extract the estimated amplitudes from fit_res and print as a ratio to total-creatine in column format:

amps <- fit_amps(fit_res)
print(t(amps / amps$tCr))
#>               [,1]
#> X.CrCH2 0.00000000
#> Ala     0.15388485
#> Asp     0.54901288
#> Cr      0.66227268
#> GABA    0.27768899
#> Glc     0.06608146
#> Gln     0.07780064
#> GSH     0.35696174
#> Glu     1.10909375
#> GPC     0.26539767
#> Ins     0.99223133
#> Lac     0.09773851
#> Lip09   0.38611391
#> Lip13a  0.04661285
#> Lip13b  0.00000000
#> Lip20   0.00000000
#> MM09    0.16559576
#> MM12    0.11274440
#> MM14    0.44654626
#> MM17    0.42514375
#> MM20    1.55949280
#> NAA     0.98019441
#> NAAG    0.26060755
#> PCh     0.00000000
#> PCr     0.33772732
#> sIns    0.10907859
#> Tau     0.00000000
#> tNAA    1.24080196
#> tCr     1.00000000
#> tCho    0.26539767
#> Glx     1.18689439
#> tLM09   0.55170967
#> tLM13   0.60590351
#> tLM20   1.55949280

Unscaled amplitudes, CRLB error estimates and other fitting diagnostics, such as SNR, are given in the results table:

fit_res$res_tab
#>   X Y Z Dynamic Coil X.CrCH2         Ala          Asp           Cr         GABA
#> 1 1 1 1       1    1       0 9.34325e-06 3.333378e-05 4.021045e-05 1.686012e-05
#>            Glc          Gln          GSH          Glu          GPC          Ins
#> 1 4.012192e-06 4.723732e-06 2.167324e-05 6.733957e-05 1.611385e-05 6.024417e-05
#>            Lac        Lip09       Lip13a Lip13b Lip20         MM09         MM12
#> 1 5.934277e-06 2.344323e-05 2.830139e-06      0     0 1.005429e-05 6.845372e-06
#>           MM14         MM17         MM20          NAA         NAAG PCh
#> 1 2.711244e-05 2.581296e-05 9.468593e-05 5.951334e-05 1.582301e-05   0
#>           PCr         sIns Tau         tNAA          tCr         tCho
#> 1 2.05054e-05 6.622799e-06   0 7.533635e-05 6.071585e-05 1.611385e-05
#>           Glx        tLM09        tLM13        tLM20   X.CrCH2.sd       Ala.sd
#> 1 7.20633e-05 3.349752e-05 3.678795e-05 9.468593e-05 2.365865e-06 4.358581e-06
#>        Asp.sd        Cr.sd      GABA.sd       Glc.sd      Gln.sd      GSH.sd
#> 1 8.96596e-06 3.745156e-06 4.443312e-06 4.324161e-06 4.89224e-06 2.01775e-06
#>         Glu.sd      GPC.sd      Ins.sd       Lac.sd    Lip09.sd    Lip13a.sd
#> 1 4.904507e-06 2.48574e-06 2.02138e-06 5.353012e-06 4.06968e-06 1.340822e-05
#>      Lip13b.sd     Lip20.sd     MM09.sd      MM12.sd      MM14.sd      MM17.sd
#> 1 6.514833e-06 7.381737e-06 3.76942e-06 4.490833e-06 7.118534e-06 3.582286e-06
#>        MM20.sd       NAA.sd      NAAG.sd       PCh.sd       PCr.sd      sIns.sd
#> 1 8.255783e-06 1.018032e-06 1.239152e-06 2.126376e-06 3.164547e-06 7.094293e-07
#>         Tau.sd      tNAA.sd       tCr.sd      tCho.sd       Glx.sd     tLM09.sd
#> 1 3.714835e-06 7.075162e-07 5.852302e-07 2.122002e-07 2.894733e-06 9.740525e-07
#>       tLM13.sd     tLM20.sd    phase       lw        shift      asym
#> 1 1.527124e-06 2.881584e-06 10.68787 5.024705 -0.003553106 0.1745252
#>   res.deviance res.niter res.info
#> 1 7.468629e-05        27        2
#>                                                        res.message bl_ed_pppm
#> 1 Relative error between `par' and the solution is at most `ptol'.   1.969325
#>   max_bl_flex_used     full_res fit_pts ppm_range      SNR      SRR      FQN
#> 1            FALSE 8.218364e-05     497       3.8 63.11155 51.11145 1.524689
#>      tNAA_lw    tCr_lw    tCho_lw auto_bl_crit_7 auto_bl_crit_5.901
#> 1 0.04573571 0.0517408 0.05459447      -8.897184          -8.940906
#>   auto_bl_crit_4.942 auto_bl_crit_4.12 auto_bl_crit_3.425 auto_bl_crit_2.844
#> 1            -8.9744         -8.997882          -9.012253          -9.020869
#>   auto_bl_crit_2.364 auto_bl_crit_1.969 auto_bl_crit_1.647 auto_bl_crit_1.384
#> 1           -9.02583          -9.026292          -9.013371          -8.962017
#>   auto_bl_crit_1.17 auto_bl_crit_0.997 auto_bl_crit_0.856 auto_bl_crit_0.743
#> 1         -8.846432          -8.691285          -8.562192          -8.484754
#>   auto_bl_crit_0.654 auto_bl_crit_0.593 auto_bl_crit_0.558 auto_bl_crit_0.54
#> 1          -8.446475          -8.429615           -8.42256         -8.419626
#>   auto_bl_crit_0.532 auto_bl_crit_0.529
#> 1          -8.418395          -8.417874

Spectral SNR:

fit_res$res_tab$SNR
#> [1] 63.11155

Linewidth of the tNAA resonance in PPM:

fit_res$res_tab$tNAA_lw
#> [1] 0.04573571