We present here a simple and efficient algorithm for designing of diffusion gradient profiles allowing one to implement prescribed theoretical properties. This algorithm generalizes the well-known sine and cosine decomposition and can handle various experimental constraints. Relying on recent diffusion MRI theoretical advances, we apply it to the challenging problem of estimating the surface-to-volume ratios in anisotropic media.
We consider a spin-echo experiment with an applied diffusion encoding gradient \boldsymbol{g}(t) from t=0 to the echo time t=T. The main idea of the algorithm is to choose a family of functions \left(f_1(t),\ldots, f_k(t)\right) (for example, (co)sines, polynomials, ...) and write the three-dimensional gradient \boldsymbol{g}(t) as a linear combination of these basis functions
\begin{pmatrix}g_x(t)\\g_y(t)\\g_z(t)\end{pmatrix}=\mathcal{X}\begin{pmatrix}f_1(t)\\\vdots\\f_k(t)\end{pmatrix}\;,
where \mathcal{X} is the 3\times k weights matrix that we seek to optimize. This is a generalization of the classical sine and cosine decompositions. Some constraints on the gradient profile may be satisfied by a suitable choice of the basis functions \left(f_1(t),\ldots, f_k(t)\right). For example, one can ensure the smoothness of the gradient profile by choosing a family of smooth
functions such as polynomials. In the same way, the refocusing
condition \int_0^T \boldsymbol{g}(t)\,\mathrm{d}t=\boldsymbol{0} can be achieved by choosing zero-mean functions, for example, (co)sines with an integer number of periods. It is also possible to add
some constraints as a part of the optimization process (see below some
examples).
It was recently derived in Ref4 that one can estimate the
surface-to-volume ratio of an anisotropic medium by using gradient sequences
that satisfy a particular ``isotropy’’ matrix condition, \mathcal{F}^{(3)}\propto I, where
\mathcal{F}^{(m)}=-\frac{\gamma^2}{2}\int_0^T\int_0^T\boldsymbol{g}(t_1)\boldsymbol{g}(t_2)\lvert t_2 - t_1 \rvert^{m/2} \,\mathrm{d}t_1 \,\mathrm{d}t_2
(with m=3), and I is the 3\times 3 unit matrix. We used the tensor product notation: if \boldsymbol{a} and \boldsymbol{b} are vectors, then \boldsymbol{a}\otimes\boldsymbol{b} is a matrix with components \left(\boldsymbol{a}\otimes\boldsymbol{b}\right)_{ij}=a_ib_j. Note that original isotropic diffusion weighting sequences3 satisfy a
different condition, namely \mathcal{F}^{(2)}\propto I (one can indeed show that \mathcal{F}^{(2)} is actually the b-matrix, with \mathrm{Tr}\left(\mathcal{F}^{(2)}\right)=b. We thus search for a 3D gradient profile \boldsymbol{g}(t) that makes the \mathcal{F}^{(3)} matrix ``isotropic''. Moreover, one can incorporate other constraints such as vanishing \mathcal{F}^{(4)} matrix for a more accurate estimation of the surface-to-volume ratio.
From a numerical point of view, the computation of the \mathcal{F}^{(m)} matrices involves a tradeoff between precision and speed. Improving the speed of
computations is especially important in the context of optimization algorithms,
which usually require numerous iterations. By pre-computing the k\times k matrices \mathcal{A}^{(m)}:
\mathcal{A}^{(m)}_{i,j}=-\frac{\gamma^2}{2}\int_0^T\int_0^T f_i(t_1)f_j(t_2)\lvert
t_2 - t_1 \rvert^{m/2} we \,\mathrm{d}t_1 \,\mathrm{d}t_2\;,
we can compute the \mathcal{F}^{(m)} matrices directly from \mathcal{X} by \mathcal{F}^{(m)}=\mathcal{X}\mathcal{A}^{(m)}\mathcal{X}{}^T. The initial computation of the \mathcal{A}^{(m)} matrices is the most time-consuming step but it has to be done only
once. The consequent computations of \mathcal{F}^{(m)} involve just matrix multiplications whose size is given by the size of
the family \left(f_1(t),\ldots,f_k(t)\right), independent of the numerical sampling of the time interval [0,T]
that controls the accuracy of the computations. A
similar matrix representation is applicable to any linear or bilinear form of
the gradient profile. Common examples include: imposing zeros of the gradient;
flow-compensation or motion artifact suppression conditions; controlling heat
generation of the sequence; computing the b-value.