3D fast spin echo

3D fast spin echo#

Family:

Fast spin echo

Dimensionality:

3D, slab-selective

Sampling:

Cartesian

Readout:

One CPMG train per excitation, one (line, partition) view per echo

3D Cartesian fast spin echo: one CPMG train per excitation over a (ky, kz) grid.

Prescription#

pypulseqpp.sequences.fse3D_sequence()#

3D Cartesian fast spin echo: one CPMG train per excitation over a (ky, kz) grid.

Only views inside the inscribed ky-kz ellipse are sampled. radial deals them by adaptive radial reordering (deal_trains()), so the centre of k-space is acquired at the TE echo; shuffling selects a variable-density Poisson-disc support and assigns it to random echo positions with make_shuffling_order() (T2 Shuffling, Tamir et al., Magn Reson Med 2017;77:180-195), for an echo-resolved reconstruction. Every acquisition carries its line, partition and echo as LIN, PAR and ECO, and calibration views are marked IMA; under wave-CAIPI the calibration region is first acquired wave-free in trains of its own, marked REF.

The refocusing angle is constant, or, under optimized, the angle at the TE echo of a train design_trains() shapes around it. Giving the periphery of k-space its own TR or train length individually parameterizes the trains (Buonincontri et al., ISMRM 2025, abstract 566-05-007): every shot moves from the centre values to the periphery ones along shot_parameters(), and the view order is radial. Every shot plays the longest train; past its own length a shot’s refocusing pulses have zero amplitude and nothing is acquired, and its closing delay makes its TR, so the scan stays one repeating train.

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.16) – 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.16) – 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.16) – 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=320) – Matrix size along the readout, the phase encode and the partition encode.

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

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

  • te (float | None, default=0.028) – Effective echo time (s): the echo the centre of k-space is read at, rounded onto the echo grid. None is the first echo. Meaningless under shuffling.

  • tr (float, default=1.8) – Repetition time (s), one per train; at the centre of k-space when the trains are individually parameterized.

  • etl (int, default=45) – Echo train length; at the centre of k-space when the trains are individually parameterized.

  • refocusing_angle_deg (float, default=180.0) – Refocusing flip angle (degrees): of every pulse under constant, at the TE echo under optimized.

  • 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=0) – Trains played without acquiring before the first.

  • excitation ({'slab', 'nonselective'}, default='slab') – Slab-selective excitation and refocusing, or hard pulses with readout-axis crushers, which shorten the echo spacing.

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

  • esp (float | None, default=None) – Echo spacing (s). None is as short as the train admits.

  • 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') – 'radial': adaptive radial reordering of CAIPIRINHA lattice support. 'shuffling': variable-density Poisson-disc support in randomly shuffled echo order (T2 Shuffling).

  • flip_modulation ({'constant', 'optimized'}, default='constant') – Constant refocusing angles, or trains designed with torchsim, which the design extra installs.

  • tr_periphery (float | None, default=None) – Repetition time (s) at the periphery of k-space. None is tr.

  • etl_periphery (int | None, default=None) – Echo train length at the periphery of k-space. None is etl.

  • 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 after each train, as many as the shortest TR holds up to NAVIGATOR_COUNT.

Returns:

The designed sequence.

Return type:

pypulseqpp.Sequence

Raises:
  • ValueError – If excitation, ordering or flip_modulation is unknown, a partial Fourier fraction is outside [0.75, 1], a count is below one, caipi_shift is outside [0, rz), wave names no wave mode, individually parameterized trains are shuffled, a train ends before the TE echo, or a TR is shorter than the longest train.

  • ImportError – If optimized is asked for without torchsim.

Examples

>>> from pypulseqpp import sequences
>>> seq = sequences.fse3D_sequence(
...     n_x=32, n_y=16, n_z=8, etl=8, te=20e-3, tr=300e-3
... )
>>> seq.check_timing()[0]
True

See also#

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

Every shipped sequence is listed in the catalogue.