3D zero echo time#

Open in Colab

A short non-selective excitation is applied while the radial readout gradient is already at amplitude. Acquisition begins after the transmit/receive dead time, without gradient-echo formation; spoiling suppresses residual transverse magnetisation between repetitions. Contrast depends on TR, flip angle, RF bandwidth, and very short-T2 decay. ZTE is used for anatomical imaging of short-T2 tissues and other minimal-TE applications.

Nyquist angular sampling#

ceil(pi * n**2) half-spoke directions over the sphere, which sample its surface at the Nyquist spacing.

import pypulseqpp as pp
from pypulseqpp.sequences import zte3D_sequence

baseline = zte3D_sequence(n=64, n_dummy=0)
print(f"{baseline.num_blocks} blocks, {baseline.duration()[0]:.2f} s")
print(
    f"{int(baseline.get_definition('NumShots')[0])} shots, "
    f"TR {baseline.get_definition('TR')[0] * 1e6:.0f} us"
)
25938 blocks, 8.25 s
198 shots, TR 640 us

Sequence diagram#

The automatically detected repetition is one shell of half-spoke directions. The readout gradient reaches amplitude before the hard RF event, and the ADC window starts after the transmit/receive dead time. The solid trace is a representative repetition; shaded traces show other gradient encodes.

zte3D sequence

Sampling order#

The half-spokes over the three k-space axes. Each starts at the centre of k-space and runs outward to the surface of the sampled sphere.

pp.plot.plot_kspace(baseline, color_by="shot")
zte3D sequence

Angular undersampling#

The Nyquist set of directions is divided into shells, each a copy of the first rotated about z. r acquires one shell in every r: at r = 2 the number of acquisitions is halved and the azimuthal spacing between acquired shells is doubled. Angular undersampling produces streak artefacts from the k-space periphery rather than the fold-over of an undersampled Cartesian acquisition.

alternative = zte3D_sequence(n=64, r=2, n_dummy=0)
                   blocks  duration (s)  acquisitions
every shell         25938          8.25         12870
every second        12969          4.12          6435
pp.plot.plot_kspace(alternative, color_by="shot")
zte3D sequence

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

Gallery generated by Sphinx-Gallery