3D stack-of-spirals MPRAGE#

Family:

MPRAGE

Dimensionality:

3D, slab-selective

Sampling:

Spiral in-plane, Cartesian partitions

Readout:

One inversion per shot, followed by the spiral interleaves of one partition as a spoiled gradient-echo train

3D MPRAGE on a stack of spirals: one inversion per partition, then its interleaves.

Each shot applies one inversion and then acquires every sampled in- plane view of a single partition, so the partition encode is constant within a shot and the number of shots equals the number of sampled partitions. The inversion time is measured from the centre of the inversion pulse to the centre of the first excitation of the train, and the repetition time is the interval between successive inversions.

Prescription#

pypulseqpp.sequences.mprage_stack_of_spirals3D_sequence()#

3D MPRAGE on a stack of spirals: one inversion per partition, then its interleaves.

Each shot is the inversion, a wait that puts the first interleaf’s excitation centre at TI, one SpiralStackReadout repetition per interleaf of one partition, and a recovery that makes every inversion-to-inversion interval the TR. Partitions are played in order. n_shots interleaves, spread evenly over a full turn, sample the centre of each plane at Nyquist, and every ry-th of them is played in a golden order (golden_order()), so a train binned in time still covers the full turn; one solved interleaf serves every repetition, turned by a rotation extension. Acquisitions carry the interleaf as LIN, the partition as PAR and the place in the train as ECO; under partition undersampling the central n_acs_z partitions are acquired too, marked IMA.

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.256) – Isotropic in-plane field of view (m).

  • n (int, default=256) – In-plane matrix size.

  • fov_z (float, default=0.176) – Field of view along the partitions (m). The slab excited is fov_z thick.

  • n_z (int, default=176) – Number of partitions.

  • flip_angle_deg (float, default=9.0) – Readout excitation flip angle (degrees).

  • te (float | None, default=None) – Echo time to the start of the outward path (s). None is as short as possible.

  • esp (float | None, default=None) – Spacing of successive interleaf excitations (s). None is as short as the readout admits.

  • ti (float | None, default=0.9) – Inversion time (s), from the inversion pulse’s centre to the first interleaf’s excitation. None is as short as the inversion module admits.

  • tr (float | None, default=2.3) – Inversion-to-inversion interval (s). None leaves one raster of recovery after the train.

  • readout_bandwidth_hz (float, default=250000.0) – Requested receiver bandwidth (Hz).

  • ry (int, default=1) – Angular undersampling: one interleaf in every ry of the n_shots is played.

  • rz (int, default=1) – Partition undersampling: one partition in every rz is acquired, the centre one among them.

  • partial_fourier_z (float, default=1.0) – Fraction of the partition extent acquired, in [0.75, 1].

  • n_dummy (int, default=1) – Whole shots played without acquiring before the first.

  • excitation ({'slab', 'nonselective', 'spsp'}, default='slab') – A slab-selective SLR pulse, a hard pulse, or a slab- and water-selective spectral-spatial pulse.

  • partition_angle_shift ({'none', 'golden', 'tiny_golden'}, default='golden') – How far each partition turns the interleaves past the previous one, as PARTITION_SHIFTS names the fractions of a full turn.

  • n_acs_z (int, default=16) – Fully sampled calibration partitions at the centre, acquired when rz > 1.

  • n_shots (int, default=16) – Interleaves that sample the centre of each plane at Nyquist.

  • density ({'constant', 'variable', 'dual'}, default='constant') – Constant pitch, a radial power-law transition to the periphery, or a logistic one.

  • periphery_undersampling (float, default=2.0) – How much sparser the periphery is sampled than the centre, at least one. Unused at constant density.

  • transition_speed (float, default=12.0) – Steepness of the dual-density transition.

  • navigator (bool, default=False) – Play three-plane spiral navigators in the recovery after each shot, as many as it holds up to NAVIGATOR_COUNT.

Returns:

The designed sequence.

Return type:

pypulseqpp.Sequence

Raises:

ValueError – If excitation, partition_angle_shift or density is unknown, an undersampling factor or periphery_undersampling is below one, partial_fourier_z is outside [0.75, 1], or the TE, the spacing, the TI or the TR is shorter than the shot takes.

Examples

>>> from pypulseqpp import sequences
>>> seq = sequences.mprage_stack_of_spirals3D_sequence(
...     n=32, n_z=4, n_shots=4, ti=100e-3, tr=300e-3
... )
>>> seq.check_timing()[0]
True

Designed and drawn#

3D stack-of-spirals MPRAGE

3D stack-of-spirals MPRAGE

See also#

Other mprage sequences: mprage3D_sequence, mprage_stack_of_stars3D_sequence.

The same sampling in another family: gre_stack_of_spirals3D_sequence, se_stack_of_spirals3D_sequence.

Every shipped sequence is listed in the catalogue.