2D echo-planar imaging

2D echo-planar imaging#

Family:

Echo-planar imaging

Dimensionality:

2D, multi-slice

Sampling:

Cartesian

Readout:

One blipped echo train per excitation

Multi-slice 2D gradient-echo EPI: single-shot or segmented, optionally multiband.

Prescription#

pypulseqpp.sequences.epi2D_sequence()#

Multi-slice 2D gradient-echo EPI: single-shot or segmented, optionally multiband.

Every shot reads NAVIGATOR_LINES centre lines without blips (NAV) before its train, and every line carries REV for its read polarity. The trains are ramp-sampled with the blips on the read ramps. Segmented shots interleave on the phase-encode lattice, each delayed by a fraction of the echo spacing so the echo time grows smoothly across k-space; te is the echo time of the centre line.

Slices (under multiband, slice groups) are excited once per shot in packets, even ones first. With one frame, slices one TR cannot hold are dealt round-robin into packets; a time series must fit every slice in one. A multiband shot excites multiband slices at once and a blipped-CAIPI train encodes the band in PAR.

Two prescans are linked ahead of the imaging (prescans()): the calibration, a single-band gradient echo per slice over the central n_acs_y lines (REF), when undersampled or multiband; and the reference, one volume with the phase encode reversed (SET = 1), for distortion correction.

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 and the phase encode (m).

  • fov_y (float, default=0.22) – Field of view along the readout and the phase encode (m).

  • n_x (int, default=128) – Readout matrix size.

  • n_y (int, default=128) – Phase-encode matrix size.

  • n_slices (int, default=1) – Number of slices.

  • slice_thickness (float, default=0.005) – Slice thickness (m).

  • slice_spacing (float, default=0.0) – Gap between adjacent slices (m); zero is contiguous.

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

  • te (float | None, default=None) – Echo time of the centre line (s). None is as short as the navigator and the train admit.

  • tr (float | None, default=None) – Volume repetition time (s): every shot of every slice. None is as short as possible, and puts every slice in one packet.

  • n_frames (int, default=1) – Volumes in the time series, each carrying its REP counter.

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

  • ry (int, default=1) – Phase-encode undersampling: one line in every ry is read, the centre line among them.

  • partial_fourier_y (float, default=1.0) – Fraction of the phase-encode extent read, in [0.5, 1]. Truncates the lines before the centre, which shortens the minimum TE.

  • n_shots (int, default=1) – Interleaved shots each volume’s phase encode is split into.

  • multiband (int, default=1) – Slices excited at once. It must divide n_slices.

  • fat_saturation (bool, default=False) – Saturate fat before every shot.

  • n_dummy (int, default=2) – Non-acquiring volumes before a time series; with one frame, non-acquiring shots per slice before each packet.

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

  • n_acs_y (int, default=24) – Phase-encode lines of the gradient-echo calibration.

  • volume_output (bool, default=False) – Play a digital output on OUTPUT_CHANNEL at the first excitation of every volume, dummy volumes included.

Returns:

The designed sequence.

Return type:

pypulseqpp.Sequence

Raises:

ValueError – If partial_fourier_y is outside [0.5, 1], a count is below one, multiband does not divide n_slices, the shots cannot share the lines, the TE is shorter than the train admits, or the TR cannot hold one slice, or every slice when n_frames is above one.

Examples

>>> from pypulseqpp import sequences
>>> seq = sequences.epi2D_sequence(n_x=32, n_y=16, n_dummy=0)
>>> seq.check_timing()[0]
True
>>> seq.definitions["EPIFactor"], seq.definitions["Name"]
([16.0], 'epi_2d')

Designed and drawn#

Sequence constraint checks

Sequence constraint checks

2D echo-planar imaging

2D echo-planar imaging

See also#

Other echo-planar imaging sequences: epi3D_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, bssfp2D_sequence, bssfp3D_sequence.

Every shipped sequence is listed in the catalogue.