Note
Go to the end to download the full example code.
3D stack-of-spirals MPRAGE#
An inversion preparation is followed by a train of low-flip-angle spoiled spiral gradient echoes with Cartesian partition encoding. Interleaf and partition order determine the recovery time of the acquired data within and between inversion cycles. Stack-of-spirals MPRAGE provides rapid T1-weighted 3D structural imaging.
Timing structure#
Each cycle comprises inversion, inversion delay, an interleaf train at one
partition and a recovery interval. ti=None and tr=None use the
shortest timing supported by the modules. Four interleaves per partition
produce a compact timing diagram.
import pypulseqpp as pp
from pypulseqpp.sequences import mprage_stack_of_spirals3D_sequence
compact = mprage_stack_of_spirals3D_sequence(
n=96, n_z=4, n_shots=4, ti=None, tr=None, n_dummy=0
)
print(
f"{compact.num_blocks} blocks, {compact.duration()[0]:.2f} s, "
f"TI {compact.get_definition('TI')[0] * 1e3:.0f} ms, "
f"TR {compact.get_definition('TR')[0] * 1e3:.0f} ms"
)
80 blocks, 0.27 s, TI 8 ms, TR 67 ms

Sampling order#
Each inversion cycle acquires the interleaves of one partition, so the cycle
is constant along each row. The interleaf train contains substantially fewer
readouts than an equivalent Cartesian line train, reducing the range of
inversion-recovery weighting. TI ends at the first excitation-pulse
centre; the first interleaf reaches the centre of k-space at TI + TE.
protocol = mprage_stack_of_spirals3D_sequence(
n=192, n_z=16, n_shots=16, ti=0.9, tr=2.3, n_dummy=0
)

Trajectory#
The interleaves of every partition, over the three k-space axes, coloured by shot. Each interleaf is the same spiral gradient waveform rotated to its own angle; the rotated set covers the in-plane k-space disc.
pp.plot.plot_kspace(protocol, color_by="shot")

Total running time of the script: (0 minutes 11.291 seconds)