3D Cartesian MPRAGE#

Family:

MPRAGE

Dimensionality:

3D, slab-selective

Sampling:

Cartesian

Readout:

One inversion per shot, followed by the phase-encode lines of one partition as a spoiled gradient-echo train

3D MPRAGE: one inversion per partition, then a train of spoiled low-flip lines.

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.mprage3D_sequence()#

3D MPRAGE: one inversion per partition, then a train of spoiled low-flip lines.

Each shot is the inversion, a wait that puts the first line’s excitation centre at TI, one LineReadout3D repetition per line of one partition, and a recovery that makes every inversion-to-inversion interval the TR. Partitions are played in order. Only views inside the inscribed ky-kz ellipse are sampled, so partitions hold different numbers of lines; every shot plays as many repetitions as the fullest partition, and the ones it has no line for play without acquiring. ordering plays a partition’s lines centre-out, so the centre line’s excitation occurs at TI and its ADC echo at TI + TE, or shuffled for a time-resolved reconstruction. Each acquisition carries its line, its partition and its place in the train as LIN, PAR and ECO; calibration views are marked IMA, and under wave-CAIPI the calibration region is first acquired wave-free in shots of its own, marked REF.

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_x (float, default=0.256) – Field of view along the readout, the phase encode and the partition encode (m). The slab excited is fov_z thick.

  • fov_y (float, default=0.256) – Field of view along the readout, the phase encode and the partition encode (m). The slab excited is fov_z thick.

  • fov_z (float, default=0.176) – Field of view along the readout, the phase encode and the partition encode (m). The slab excited is fov_z thick.

  • n_x (int, default=256) – Matrix size along the readout, the phase encode and the partition encode.

  • n_y (int, default=256) – Matrix size along the readout, the phase encode and the partition encode.

  • n_z (int, default=176) – Matrix size along the readout, the phase encode and the partition encode.

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

  • te (float | None, default=None) – Echo time of every line (s). None is as short as the readout admits.

  • esp (float | None, default=None) – Spacing of successive line 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 line’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) – Undersampling along the phase and the partition encode.

  • rz (int, default=1) – Undersampling along the phase and the partition encode.

  • caipi_shift (int, default=0) – CAIPIRINHA shift: partitions by which the lattice is displaced per acquired line, in [0, rz). Unused by shuffling.

  • partial_fourier_x (float, default=1.0) – Fraction of the echo acquired, in [0.75, 1].

  • partial_fourier_y (float, default=1.0) – Fraction of the phase- and partition-encode extent acquired, in [0.75, 1].

  • partial_fourier_z (float, default=1.0) – Fraction of the phase- and partition-encode 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.

  • readout_oversampling (float, default=2.0) – Readout oversampling factor, at least one.

  • n_acs_y (int, default=24) – Extent of the fully sampled calibration region along the phase and the partition encode, when undersampled.

  • n_acs_z (int, default=16) – Extent of the fully sampled calibration region along the phase and the partition encode, when undersampled.

  • elliptical_acs (bool, default=False) – Make the calibration region the ellipse inscribed in the n_acs_y x n_acs_z rectangle rather than the rectangle.

  • ordering ({'radial', 'shuffling'}, default='radial') – Line order within a partition, and the support it is drawn from. 'radial': CAIPIRINHA lattice support, lines of each partition acquired centre-out. 'shuffling': variable-density Poisson-disc support (sampling='poisson' of make_cartesian_plane_sampling()), lines of each partition acquired in random order.

  • wave ({'phase', 'partition', 'both'}, default='both') – Wave-CAIPI channels: a sine on y, a cosine on z, or both. With wave-encoding gradients the calibration region is acquired again first without them, marked REF, and no wave-encoded view is marked IMA.

  • wave_cycles (int, default=8) – Wave periods across the sampling window; zero plays no wave.

  • wave_amplitude (float, default=0.0) – Requested peak wave-encoding gradient amplitude (T/m); zero, the default, plays no wave. The slew rate may lower it.

  • 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 or ordering is unknown, a partial Fourier fraction is outside [0.75, 1], an undersampling factor is below one, caipi_shift is outside [0, rz), wave names no wave mode, or the TE, the spacing, the TI or the TR is shorter than the shot takes.

Examples

>>> from pypulseqpp import sequences
>>> seq = sequences.mprage3D_sequence(
...     n_x=32, n_y=16, n_z=8, ti=100e-3, tr=300e-3
... )
>>> seq.check_timing()[0]
True

Designed and drawn#

3D Cartesian MPRAGE

3D Cartesian MPRAGE

See also#

Other mprage sequences: mprage_stack_of_stars3D_sequence, mprage_stack_of_spirals3D_sequence.

The same sampling in another family: gre2D_sequence, gre3D_sequence, gre_multiecho2D_sequence, gre_multiecho3D_sequence, se2D_sequence, se3D_sequence, fse3D_sequence, bssfp2D_sequence, bssfp3D_sequence, epi2D_sequence.

Every shipped sequence is listed in the catalogue.