A good data sampling scheme is important for diffusion MRI acquisition and reconstruction.
Diffusion Weighted Imaging (DWI) data is normally acquired on single or multiple shells in 3D q-space.
The samples in different shells are typically distributed uniformly,
because they should be invariant to the orientation of structures within tissue, or the laboratory coordinate frame.
These samples on single or multiple shells are better to be separated as far as possible.

single-shell scheme

multi-shell scheme

multi-shell scheme (combined for visualization)

In this tutorial, we are interested in two categories of spherical sampling problems in diffusion MRI,
the continuous category P-C and discrete category P-D.
These two problem categories include the following application problems.

Single-shell continuous problem (P-C-S).
Given a number , how to uniformly distribute points in the sphere?
The problem is for single shell sampling scheme design.

Multi-shell continuous problem (P-C-M).
Given numbers , how to uniformly distribute these points in shells, i.e. points in the -th shell,
and meanwhile make all samples from all shells separated as far as possible?
The problem is for multi-shell sampling scheme design.

Single subset from single set problem (P-D-SS).
Given known points in sphere, how to uniformly select sub-samples from these points?
The problem is for reducing the number of samples in an existing single shell scheme.
It is also related with P-C-S, because if discretizing the continuous sphere using many points,
then solving P-D-SS is an approximation to solve P-C-S.

Multiple subsets from multiple sets problem (P-D-MM).
Given points , for each shell, say the -th shell,
how to uniformly select samples from the samples,
and meanwhile make all selected samples from all shells separated as far as possible?
The problem is for reducing the number of samples in an existing multi-shell scheme.

Multiple subsets from single set problem (P-D-MS).
Given a single set of points in sphere,
how to uniformly select several subsets from these samples,
and meanwhile make all selected samples from all shells separated as far as possible?
It is related with P-C-M by discretizing the continuous sphere using many points.

Note

Considering the diffusion signal is antipodal symmetric, the antipodal symmetric samples have the same role.
Thus when we talk about points in a sphere, we actually have samples by adding the antipodal symmetric samples.

For P-C-S, Electrostatic Energy Minimization (EEM) by Jones et al [Jones1999] is widely used to design the single shell uniform schemes.
Some schemes by EEM have been collected in CAMINO, which have been stored in Data/ElectricRepulsion folder in dmritool.

Instead of using electrostatic energy, it is possible to directly maximize the distances between samples.
For a set of samples in sphere, the covering radius is defined as the minimal distance between samples, i.e.,

The spherical code formulation, or called spherical packing, is to
maximize the minimal distance between samples, i.e.,

This formulation to solve P-C-S is well studied in mathematics.
[Toth1949] gave an upper bound for the covering radius.
[Conway1996] proposed a way to solve the above optimization problem by iteratively approximating the above objective function.
Dr. Sloane, one of the authors of [Conway1996], collected some best known solutions for P-C-S.
These schemes have been stored in Data/Packing folder in dmritool.

where is the weighting factor to balance the uniformity of each single shell and the global combined shell containing all samples.
[Cheng2014] and [Cheng2015] also proposed several methods for single and multi-shell sampling scheme design:

The codes can be found in Matlab/Demos folder in dmritool.
To run these demos, you need to:

add ${DMRITOOL_SOURCE_DIR}/Matlab folder in your matlab path.

copy ${DMRITOOL_SOURCE_DIR}/Data to ${HOME}/.dmritool/Data if you did not build dmritool source codes.

install Gurobi. Gurobi is academic free if you have an edu email account.

To run the demo for subsampling of the HCP scheme, you can download the 3 shell scheme from this link.

In the first demo, MILP converges within 1 second.
However in the other demos, MILP can take a long time to finally stop in gurobi.
We noticed that after 10 minutes the solutions by MILP for the discrete problems only improve less than 0.01%.
Thus we stop the algorithm after 10 minutes.
You can play the demos with different time limit.

The tessOrder option is the order of sphere tessellation to discretize the continuous sphere.
[Cheng2015] showed that with a finer sphere tessellation IMOC obtains a larger covering radius.
However finer sphere tessellation takes longer time for IMOC.
For --tessOrder7, which uses 20481 samples in the hemisphere, IMOC normally finishes in seconds.

OrientationsViewer is to visualize the obtained schemes.
With --png option, it writes the visualization in a png image.

Note

The single shell schemes by IMOC have larger covering radii than the schemes by EEM in CAMINO.
With finer sphere tessellation, IMOC schemes approximately have the similar covering radii with the schemes in Sloane’s collection
Please see the experiments in [Cheng2015] and this repository.

To generate a 3 shell scheme with 28 samples per shell (P-C-M), you can run:

IMOC is used to quickly obtain an acceptable sampling scheme.
The results by IMOC can be refined by using 1-Opt and CNLO.

1-Opt is a greedy algorithm which at each iteration moves one best sample as far as possible to all other samples.
1-Opt can be used to refine any initialized sampling scheme.
However, schemes by IMOC are suggested as the initialization of 1-Opt due to good performance.

IMOC requires a discretization of the continuous sphere, which may result in a hole area in sphere due to the error accumulation when the number of samples is large.
For example, we can use IMOC to generate a 3 shell scheme with 90 samples per shell (P-C-M):