Note
Go to the end to download the full example code.
3D stack-of-stars MPRAGE#
An inversion preparation is followed by a train of low-flip-angle spoiled radial gradient echoes with Cartesian partition encoding. Each spoke crosses in-plane k-space centre; spoke and partition order determine the recovery time of the acquired data within and between inversion cycles. Stack-of-stars MPRAGE provides T1-weighted 3D structural imaging with radial sampling.
Timing structure#
Each cycle comprises inversion, inversion delay, a spoke train at one
partition and a recovery interval. ti=None and tr=None use the
shortest timing supported by the modules. Angular undersampling leaves four
spokes per partition and produces a compact timing diagram.
import pypulseqpp as pp
from pypulseqpp.sequences import mprage_stack_of_stars3D_sequence
compact = mprage_stack_of_stars3D_sequence(
n=64, n_z=4, ry=32, 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.14 s, TI 7 ms, TR 35 ms

Sampling order#
Each inversion cycle acquires the spokes of one partition, so the cycle is
constant along each row. Readout index specifies spoke order within the train.
partition_angle_shift, 'golden' by default, rotates the spoke set
between partitions so that neighbouring partitions do not share spoke
angles. TI ends at the first
excitation-pulse centre; the centre of
k-space on its spoke is sampled at TI + TE.
protocol = mprage_stack_of_stars3D_sequence(
n=192, n_z=16, ry=4, ti=0.9, tr=2.3, n_dummy=0
)

Trajectory#
The spokes of every partition, over the three k-space axes, coloured by shot.
pp.plot.plot_kspace(protocol, color_by="shot")

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