Generating Spectrum Information file

This file stores the dictionary and the spectral sampling grid-related information. It is needed by the spectEstimation tool to estimate spectra.

How to create it

  1. Decide the spectral dimensions you want based on its acquisition parameters. Example: for multidimensional diffusion relaxation MR data where the acquision has been done in a set of (b,TE) values, the spectral dimension can be the diffusion coefficient D and T2 relaxation.

    • For each spectral dimension \(p\), create a vector of sampling points and store it in axes(p).sample. Example: For D-values, we may choose 80 logarithmically spaced points between 0.01-5 \(\mu m^2/ms\).

    • Assign a name for the \(p\)-th spectral dimension and store it in axes(p).name. Example: "D", "T2"

    • Assign the unit for the \(p\)-th spectral dimension and store it in axes(p).unit. Example: "um^2/ms", "ms"

    • Assign the spacing of the sampling grid points for the \(p\)-th spectral dimension and store it in axes(p).spacing. Can take values only among: (log, linear, arbitrary). Example: As in the previous example we have chosen logarithmically spaced point, we will put the name of this variable log.

  2. Construct spectral_dim as the length of each sample vector.

    • Example: If first spectral dimension, D has 80 grid points and second spectral dimension, T2 has 70, then spectral_dim = [80, 70].

  3. As, in our spectrum solver, the unknown amplitudes of the signals parameterized by these spectral grid points and their corresponding acquisition samples are estimated, we first need to construct a mapping that connects the unknown signal amplitudes to the measured data. Specifically, for a \(P\)-dimensional acquisition, where the \(p\)-th spectral dimension is discretized into \(M_p\) grid points, and with a total of \(N_a\) acquisitions, we define a tensor \(K\) of size \(N_a \times M_1 \times M_2 \times \cdots \times M_P\). This tensor encodes the forward model: it maps the spectral amplitudes to the \(N_a\) measured data points. In other words, \(K\) provides the essential link between the discretized spectral representation and the observed MR acquisitions.

    • General form:

      \[K[i, j_1, j_2, \ldots, j_P] \;=\; \prod_{p=1}^{P} \phi\!\big(\mathrm{acq}^{(p)}_{i}, S^{(p)}_{j_p}\big),\]

    where

    • \(\phi\!\big(\,\mathrm{acq}^{(p)}_{i},\, S^{(p)}_{j_p}\big)\) is the kernel expression depending on \(\mathrm{acq}^{(p)}\) and \(S^{(p)}\), often exponential decay.

    • \(i = 1,\ldots,N_a\) indexes acquisition samples (e.g., b, TE, TI, etc.).

    • \(j_p = 1,\ldots,M_p\) indexes samples along the \(p\)-th spectral dimension (e.g., \(T_2\), \(D\), \(T_1\), …).

    • \(\mathrm{acq}^{(p)} \in \mathbb{R}^{N_a}\) denotes the acquisition parameter vector associated with the \(p\)-th contrast mechanism.

    • \(S^{(p)} \in \mathbb{R}^{M_p}\) denotes the spectral sampling points for the \(p\)-th dimension. This is same as axes(p).sample vector described above.

    Example for diffusion–relaxation spectroscopic imaging:

    \[K[i, j, k] = \exp(-b_i D_j)\;\exp\!\left(-\tfrac{TE_i}{T_{2k}}\right).\]
  4. Save the variables axes, spectral_dim, and K in a .mat HDF5 file.

    • Matlab example:

      save('spect_infofile.mat','axes','spectral_dim','K','-v7.3');