Note
Go to the end to download the full example code.
3D echo-planar imaging#
A slab-selective excitation is followed by alternating readout gradients with
phase-encode and partition blips. The sampled (line, partition) views form
a CAIPIRINHA lattice [BRE06], and segmented skipped-CAIPI traversal [STI21]
distributes the lattice among shots. Spoilers suppress residual
transverse coherence between repetitions; off-resonance accumulates during
each echo train. 3D EPI supports rapid structural and functional imaging.
Accelerated acquisition#
The first configuration uses in-plane and partition acceleration, three shots per shell, and a nonzero CAIPI shift. Each shot reads every third sampled lattice line; successive echoes therefore contain both the skipped-line displacement and the partition jump.
from pypulseqpp.sequences import epi3D_sequence
baseline = epi3D_sequence(
n_x=64,
n_y=64,
n_z=16,
ry=2,
rz=4,
n_shots=3,
n_dummy=0,
)
print(f"{baseline.num_blocks} blocks, {baseline.duration()[0]:.2f} s")
print(
f"CAIPI shift {int(baseline.get_definition('CaipiShift')[0])}, "
f"TE {baseline.get_definition('TE')[0] * 1e3:.2f} ms, "
f"TR {baseline.get_definition('TR')[0] * 1e3:.1f} ms"
)
228 blocks, 0.19 s
CAIPI shift 2, TE 8.83 ms, TR 189.4 ms
Sequence diagram#

Skipped-CAIPI traversal#
Each cell of the lattice is one (line, partition) view, shaded where it
is sampled. Lines and arrows connect consecutive echoes within each train. No
line joins separate shots. The panel title gives the pattern as
\(S \cdot (R_y \times R_z)_{z\Delta z}\), with accelerations
\(R_y\) and \(R_z\), segmentation factor \(S\) (shots per shell)
and CAIPI shift \(\Delta z\) as defined in [STI21]. The partition jumps between consecutive echoes
are the CAIPI blips: they alternate between amplitudes
\(b^{(1)} = (S \cdot \Delta z) \bmod R_z\) and
\(b^{(2)} = (R_z - b^{(1)}) \bmod R_z\) partitions, and the pattern
repeats every \(n\) echoes. Equivalent shells are folded onto one lattice cell; a small
vertical display offset separates coincident paths from different shots.

Single-shot comparison#
With n_shots=1, one longer echo train acquires the same lattice for
each shell. Three shots shorten each echo train and therefore the geometric
distortion along the phase-encode axis. The phase-encode step between
consecutive echoes of a segmented train spans three sampled lattice lines,
so its blips are larger than those of the single-shot train.
single_shot = epi3D_sequence(
n_x=64,
n_y=64,
n_z=16,
ry=2,
rz=4,
n_shots=1,
n_dummy=0,
)

echoes trains per train TE (ms)
3 shots 120 12 10.0 8.83
1 shot 128 4 32.0 17.10
In-plane acceleration#
ry subsamples phase-encode lines, reducing echo-train length and
increasing lattice spacing along \(k_y\). The sampled views remain on a
single CAIPIRINHA lattice, whose CAIPI shift determines the positions of the
aliases [BRE06].
accelerated = epi3D_sequence(
n_x=64,
n_y=64,
n_z=16,
ry=3,
rz=2,
n_shots=3,
n_dummy=0,
)
print(
f"ry=3, rz=2: CAIPI shift {int(accelerated.get_definition('CaipiShift')[0])}, "
f"{accelerated.num_blocks} blocks, {accelerated.duration()[0]:.2f} s"
)

ry=3, rz=2: CAIPI shift 1, 384 blocks, 0.32 s
References#
Breuer FA, Blaimer M, Mueller MF, Seiberlich N, Heidemann RM, Griswold MA, Jakob PM. Controlled aliasing in volumetric parallel imaging (2D CAIPIRINHA). Magnetic Resonance in Medicine. 2006;55(3):549-556. https://doi.org/10.1002/mrm.20787
Stirnberg R, Stöcker T. Segmented K-space blipped-controlled aliasing in parallel imaging for high spatiotemporal resolution EPI. Magnetic Resonance in Medicine. 2021;85(3):1540-1551. https://doi.org/10.1002/mrm.28486
Total running time of the script: (0 minutes 0.546 seconds)