3D balanced SSFP#

Family:

Balanced SSFP

Dimensionality:

3D, slab-selective or non-selective

Sampling:

Cartesian

Readout:

One (line, partition) view per repetition, every gradient axis balanced

Balanced SSFP, 3D Cartesian: one train per phase cycle, each opened by a half flip.

Prescription#

pypulseqpp.sequences.bssfp3D_sequence()#

Balanced SSFP, 3D Cartesian: one train per phase cycle, each opened by a half flip.

Every repetition returns all three gradient moments to zero, with TE at TR/2 (BssfpReadout3D). Only views inside the inscribed ky-kz ellipse are sampled, lines in order and each line’s partitions back and forth. Phase cycle k of n_phase_cycles steps the RF and receiver phase by pi + 2 pi k / n_phase_cycles per repetition, which shifts the off-resonance bands; two cycles is CISS. Each cycle is a file of its own, a repeating unit from its first excitation, and a catalyst file ahead of it plays the half flip half a repetition before that excitation, at the phase the repetition before the first would have had. The files are chained in that order (prescans()), so the scanner plays them as one table. Acquisitions carry their line, partition and cycle as LIN, PAR and SET, and calibration views are 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_x (float, default=0.22) – Field of view along the readout, the phase encode and the partition encode (m). A slab excited is fov_z thick.

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

  • fov_z (float, default=0.128) – Field of view along the readout, the phase encode and the partition encode (m). A 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=128) – Matrix size along the readout, the phase encode and the partition encode.

  • flip_angle_deg (float, default=45.0) – Excitation flip angle (degrees).

  • tr (float | None, default=None) – Repetition time (s); TE is TR/2. None is as short as possible.

  • readout_bandwidth_hz (float, default=125000.0) – Requested receiver bandwidth (Hz). The half flip needs an acquisition block at least as long as the excitation’s tail, which a lower bandwidth provides.

  • 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).

  • 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].

  • excitation ({'nonselective', 'slab'}, default='nonselective') – A hard pulse, or a slab-selective SLR pulse whose rephasers the balanced readout builds.

  • 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.

  • n_phase_cycles (int, default=1) – Trains acquired, each with its own RF phase increment.

Returns:

The designed sequence.

Return type:

pypulseqpp.Sequence

Raises:

ValueError – If excitation is unknown, a partial Fourier fraction is outside [0.75, 1], a count is below one, caipi_shift is outside [0, rz), or the TR is shorter than the repetition, or too short beside the pulse for the half flip.

Examples

>>> from pypulseqpp import sequences
>>> seq = sequences.bssfp3D_sequence(n_x=64, n_y=16, n_z=4)
>>> seq.check_timing()[0]
True

Designed and drawn#

3D balanced SSFP

3D balanced SSFP

See also#

Other balanced ssfp sequences: bssfp2D_sequence.

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

Every shipped sequence is listed in the catalogue.