Sampling and scan-loop schedules#
Routines that select the Cartesian views an acquisition encodes, order an
already selected set into loop, shot and echo positions, and supply the
per-shot orientations and per-repetition RF values of a scan loop. None of
them creates events or labels: the sequence application scales the gradients
and creates the LIN, PAR, ECO and other labels from their results, as
Sampling support and ordering describes.
Cartesian sampling support#
Support is returned as zero-based encoded view indices, y or (y, z) on an
(n_y, n_z) grid with the k-space centre at (n_y // 2, n_z // 2), in two
disjoint lists: calibration views and the other acquired views.
Object |
Input |
Returns |
Purpose |
|---|---|---|---|
Prescription of one axis: matrix size, acceleration, ACS, partial Fourier |
|
Lines of a 2D acquisition, or partitions of a stack-of-* acquisition. |
|
Prescription of a ky-kz plane, with |
|
Views of a 3D Cartesian acquisition. |
Boolean sampling masks#
mask[y, z] is True where the view (y, z) is acquired;
np.argwhere(mask) lists those views as encoded indices.
Object |
Input |
Returns |
Purpose |
|---|---|---|---|
Grid shape, |
Boolean mask, |
CAIPIRINHA lattice anchored at |
|
Grid shape, acceleration, calibration block, seed |
Boolean mask, |
Variable-density Poisson-disc support. |
|
Grid shape, acceleration, calibration block, seed |
Boolean mask, |
Uniform-random support. |
Traversal ordering#
Object |
Input |
Returns |
Purpose |
|---|---|---|---|
Number of positions, scheme |
Permutation of |
Loop order over slices, partitions or selected lines. |
Echo-train ordering#
Each routine takes centred coordinates of already selected Cartesian views:
an (N, 2) or (N,) array with the k-space centre at the origin, obtained
from encoded indices as views - (n_y // 2, n_z // 2). It returns trains,
where trains[s][e] is the row index into that array of the view acquired at
echo e of shot s. The values are indices, not coordinates. The orderings
do not change the support: T2 Shuffling reorders views already selected, for
example by the Poisson-disc support of
make_cartesian_plane_sampling(..., sampling='poisson').
Object |
Input |
Returns |
Purpose |
|---|---|---|---|
Centred coordinates, train length |
Indices as |
Raster-order bands, one per echo. |
|
Centred coordinates, train length |
Indices as |
Distance-ranked bands; centre at echo 0 or |
|
Centred coordinates, train length |
Indices as |
One angular wedge per shot, centre-out within it. |
|
Centred coordinates, train length |
Indices as |
Distance bands folded about |
|
Centred coordinates, train length, seed |
Indices as |
Random echo positions within raster-contiguous trains (T2 Shuffling). |
EPI shot offsets#
The offsets are relative to echo 0 of one shot. The scan loop chooses each
shot’s origin (y0, z0); echo e then acquires (y0, z0) + offsets[e].
Object |
Input |
Returns |
Purpose |
|---|---|---|---|
EPI prescription: echo-train length, scheme, acceleration, segments, CAIPI |
|
Linear, segmented blipped-CAIPI and zigzag traversals of one shot. |
Non-Cartesian orientations#
Object |
Input |
Returns |
Purpose |
|---|---|---|---|
Count, angular span |
Angles (rad) |
Equal spacing over the span. |
|
Count, half or full circle |
Angles (rad), modulo 2π |
Golden-angle increment. |
|
Count, tiny-golden index |
Angles (rad), modulo 2π |
Smaller golden increment. |
|
Count, approximation order |
Angles (rad) from a finite equidistant set |
Rational approximation of the golden angle. |
|
Views per shell, shots, scheme |
Unit directions |
3D radial shell and its per-shot rotations. |
RF phase and flip schedules#
Object |
Input |
Returns |
Purpose |
|---|---|---|---|
Number of repetitions, increment |
Phases (rad), one per repetition |
Quadratic RF spoiling. |
|
Number of repetitions, cycle |
Phases (rad), one per repetition |
Repeated phase cycle. |
|
Echo-train length, target angle |
Refocusing angles (rad), one per echo |
Stabilising variable refocusing angles. |