Tractography algorithms
The library provides several algorithms to compute the streamlines. More precisely, assume that we are given a field of fibre orientation distribution (FOD)
\[\bm u\to ODF(\bm x,\bm u)\]
where $ODF(\bm x,\cdot)$ is the distribution of directions at position $\bm x$.
In practice, to prevent sharp direction changes, the full FOD is not considered at a given step. Typically, a new direction is obtained by sampling the FOD in a cone around the previous direction. This can represented as a modification of the incoming direction $\bm{u} \in \mathbb{S}^2$
\[g(\bm{x}, \bm{u}, \bm{u}') = \frac{1}{N(\bm{x}, \bm{u})}f(\bm{x}, \bm{u}')c(\bm{u}, \bm{u}')\]
where $c(\bm{u}, \bm{u}') \in \mathbb{R}^+$ is non–zero in a cone around $\bm{u}$ and $N(\bm{x}, \bm{u}) \in \mathbb{R}^+$ is a normalization factor that ensures
\[\int_{\mathbb{S}^2}g(\bm{x}, \bm{u}, \bm{u}')d\bm{u}' = 1.\]
The cone function is passed to a TMC via Tractography.TMC. The TMC also determine how the FOD are computed, see SH evaluation.
1. Deterministic
The algorithm alg = Deterministic() (see Tractography.Deterministic) implements the following situation. We compute a sequence $(\bm x_i, \bm u_i)_i$ such that
\[\bm x_{i+1} = \bm x_i + \Delta s \bm u_i\]
\[\bm u_{i+1} = \argmax g(\bm x_i, \cdot)\]
2. Probabilistic
The algorithm alg = Probabilistic() (see Tractography.Probabilistic) implements the following situation. We compute a sequence $(\bm x_i, \bm u_i)_i$ such that
\[\bm x_{i+1} = \bm x_i + \Delta s \bm u_i\]
\[\bm u_{i+1} \sim g(\bm x_i, \bm u_i, \cdot)\]
3. Diffusion
The algorithm alg = Diffusion() (see Tractography.Diffusion) implement the following situation. It computes solution to the stochastic differential equation (SDE):
\[d\bm x_tₜ = \bm u_t dt\]
\[d\bm u_tₜ = γ \cdot \nabla\log ODF(\bm{x}_t, \bm u_t) dt + \gamma_{noise} \cdot \sqrt\gamma \cdot dB_t\]
4. Transport
Same as Diffusion but with $\gamma_{noise} = 0$.