3D zero echo time#

Family:

Zero echo time

Dimensionality:

3D, non-selective

Sampling:

Radial half-spokes on a sphere

Readout:

A hard pulse transmitted with the readout gradient already at amplitude, one half-spoke per view

3D zero echo time: hard pulses on a readout gradient held on across each shell.

Prescription#

pypulseqpp.sequences.zte3D_sequence()#

3D zero echo time: hard pulses on a readout gradient held on across each shell.

One shell of views, written out as one continuous waveform that ramps up once at its first view and down once after its last, is replayed per shot turned about z by a rotation extension. The Nyquist set is ceil(pi * n ** 2) spokes over the sphere, dealt into n_shots shells; every r-th shell is played, in order, which is angular undersampling. The dead-time gap after each pulse leaves MissingSamples at the centre of k-space unacquired. Dummy shells precede the first shot, played as it is without the ADC. Acquisitions carry the view as LIN and the shot as SEG.

Parameters:
  • plot (bool, default=False) – Draw the finished sequence in SeqEyes.

  • test_report (bool, default=False) – Print a report on the finished sequence.

  • write_seq (bool, default=False) – Write the sequence to a .seq file.

  • seq_filename (str, default=None) – Where to write it; <NAME>.seq when omitted.

  • system (pypulseqpp.Opts, default=None) – System limits, held under the application’s MAX_GRAD and MAX_SLEW.

  • fov (float, default=0.22) – Isotropic field of view (m).

  • n (int, default=128) – Isotropic matrix size; a spoke reads it from the centre out.

  • flip_angle_deg (float, default=3.0) – Excitation flip angle (degrees); small, because the pulse plays on the readout gradient.

  • tr (float | None, default=None) – Pulse centre to pulse centre (s), one per view. None is as short as the widest turn between views allows; a longer one is spent slewing more gently rather than waiting.

  • readout_bandwidth_hz (float, default=250000.0) – Requested receiver bandwidth (Hz). It sets the gradient amplitude too, the spoke being traversed at one sample per delta_k.

  • r (int, default=1) – Angular undersampling: one shell in every r of the set is played.

  • n_shots (int | None, default=None) – Shells the sphere is dealt into, each the same one turned about z. None balances the spacing within a shell against the spacing between them.

  • scheme ({'spiral', 'meridian'}, default='spiral') – Shape of the shell, as SCHEMES names them.

  • n_dummy (int, default=2) – Whole shells played without acquiring before the first shot.

  • readout_oversampling (float, default=2.0) – Radial oversampling: a finer delta_k along the same spoke.

  • n_gain_calibration_readouts (int, default=1) – Written as the NumGainCalibrationReadouts definition, for the reconstruction to scale the gap at the centre against.

Returns:

The designed sequence.

Return type:

pypulseqpp.Sequence

Raises:

ValueError – If scheme is unknown, r is below one, or the hard pulse is longer than the dead-time gap can hold.

Examples

>>> from pypulseqpp import sequences
>>> seq = sequences.zte3D_sequence(n=32, n_shots=2, n_dummy=0)
>>> seq.check_timing()[0]
True

Designed and drawn#

3D zero echo time

3D zero echo time

See also#

Every shipped sequence is listed in the catalogue.