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 cyclekofn_phase_cyclessteps the RF and receiver phase bypi + 2 pi k / n_phase_cyclesper 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 acatalystfile 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 asLIN,PARandSET, and calibration views are markedIMA.- 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>.seqwhen omitted.system (pypulseqpp.Opts, default=None) – System limits, held under the application’s
MAX_GRADandMAX_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_zthick.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_zthick.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_zthick.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.
Noneis 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_zrectangle 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:
- Raises:
ValueError – If
excitationis unknown, a partial Fourier fraction is outside[0.75, 1], a count is below one,caipi_shiftis 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#
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.