Skip to content

Sequence Examples

Basic Sequences

Gradient Echo (GRE)

Fast gradient echo sequence with excellent SNR. Great foundation for more complex sequences.

GRE pulse sequence diagram

Pulse sequence diagram from spectrometer simulation

GRE phantom results

Pulseq and Philips (parameter-matched) phantom scans

📝MATLAB 📝Python ⬇.seq file


Magnetization prepared rapid gradient-echo (MP-RAGE)

MP-RAGE is a 3D sequence that integrates an inversion pulse for T1-weighted imaging.

📝MATLAB 📝Python

⬇.seq file

MPRAGE comparison

Pulseq and Philips (parameter-matched) MP-RAGE head scans


Echo Planar Imaging (EPI)

EPI sequences allow for ultra-fast imaging. This readout is essential in functional imaging (fMRI) and diffusion (DWI & DTI) imaging studies.

EPI pulse sequence diagram

Pulse sequence diagram from spectrometer simulation

EPI reconstruction demonstration

Animation of EPI phantom scan

📝MATLAB 📝Python ⬇.seq file


Spiral Imaging

Spiral readouts do not sample k-space in a Cartesian grid. While reconstruction can be harder, spiral readouts enable rapid imaging. The gradient waveforms are measured by a Skope fieldcamera, and closely matching what is requested in the .seq file.

Spiral pulse sequence diagram

Pulse sequence diagram of spiral sequence

Spiral trajectory comparison

Requested and measured k-space and gradient trajectories.

📝MATLAB 📝Python ⬇.seq file


Advanced sequences

Parallel Transmission (pTx)

Parallel transmission (pTx) sequences can independently control multiple transmit (Tx) channels. This allows for advanced RF pulse design, such as B1 shimming, and improved SAR management.

More info on the Features page

Single transmit channel GRE

This simple example demonstrates how pTx-Pulseq sequences can be created. It acquires the same slice multiple times, each with only one Tx channel active.

📝MATLAB code ⬇Download .seq file

GRE slices each acquired with 1 Tx channel

GRE slices each acquired with 1 Tx channel

% Each slice is acquired with a single Tx channel
tx_pattern = eye_tx;

% Prepare the RF pulses
ptx = {}; id = {}; shapeids = {};
for i = 1:size(tx_pattern, 1)

    % Copy the non-pTx RF pulse
    ptx{i} = rf;

    % Apply the Tx pattern to the RF signal
    ptx{i}.signal = reshape(rf.signal' .* tx_pattern(i, :), 1, []);
    % And repeat the time vector with the number of Tx channels
    ptx{i}.t = repmat(rf.t, 1, num_tx);
end
# Each slice is acquired with a single Tx channel
tx_pattern = np.eye(num_tx)

# Prepare the RF pulses
ptx = []
for i in range(num_tx):
    # Copy the non-pTx RF pulse
    rf_ptx = rf.copy()

    # Apply the Tx pattern to the RF signal
    rf_ptx.signal = np.reshape(rf.signal * tx_pattern[i, :], (1, -1))
    # And repeat the time vector with the number of Tx channels
    rf_ptx.t = np.tile(rf.t, (1, num_tx))

    ptx.append(rf_ptx)

Hybrid Mode

PASTeUR Universal Pulse in a Philips MP-RAGE

This example demonstrates how a pTx-Pulseq sequence, containing an excitation pulse from the PASTeUR Universal Pulse library, can be merged with a native Philips MP-RAGE sequence.

Why reinvent the wheel, if you just need a small change? More info on the Features page

Hybrid sequence merging

Merging of Pulseq and native sequence into a hybrid sequence

Hybrid vs native comparison

Improved \(\mathcal{\tilde{B}}_1^{(+)}\) homogeneity with PASTeUR Universal Pulse
using a hybrid pTx-Pulseq sequence


Using these sequences

Ready to try these features? Check out our quickstart guide or explore the features for more information.