SpatialSelectiveExcitation#

class pypulseqpp.sequences.SpatialSelectiveExcitation[source]#

Bases: RfModule

SLR excitation with a selection gradient and optional rephasing.

A slice publishes separate gz and gz_reph events in two blocks. With is_slab=True, rephasing is merged into gz in one block. Set rephase=False to omit it; a readout may instead include the rephaser’s moment.

Parameters:
  • system (pypulseqpp.Opts) – System limits.

  • flip_angle_deg (float) – Nominal flip angle (degrees).

  • thickness_m (float) – Slice or slab thickness (m).

  • duration_s (float, default=0.003) – Pulse duration (s).

  • is_slab (bool, default=False) – Merge the rephaser into the selection gradient, as above.

  • rephase (bool, default=True) – Include a slice rephaser.

  • time_bw_product (float, default=4.0) – Time-bandwidth product. Higher is a squarer profile and a longer pulse at the same bandwidth.

  • axis ({'z', 'x', 'y'}, default='z') – Selection axis.

  • pulse_type ({'st', 'ex', 'se', 'inv', 'sat'}, default='st') – SLR design family. "ex" for a large-tip excitation, "se" for a refocusing pulse.

  • use (str, default='excitation') – Pulseq RF-use tag, used by trajectory integration.

  • passband_ripple (float, default=0.01) – Ripple allowed in each band of the slice profile.

  • stopband_ripple (float, default=0.01) – Ripple allowed in each band of the slice profile.

Attributes:
  • rf (RfEvent) – The pulse. Its delay already places it on the gradient’s flat top.

  • gz (TrapEvent or GradEvent) – The selection gradient; under is_slab the rephaser is part of it.

  • gz_reph (TrapEvent) – The rephaser. Only when not is_slab and rephase.

  • selection_amplitude (float) – Plateau amplitude of the selection lobe (Hz/m), which a slice offset is converted against: freq_offset = selection_amplitude * position.

Raises:

ValueError – If thickness_m or duration_s is not positive, or axis is not a gradient channel.

Examples

>>> import pypulseqpp.sequences as design
>>> import pypulseqpp as pp
>>> slice_ = design.SpatialSelectiveExcitation(pp.Opts(), 15.0, 5e-3)
>>> len(slice_.blocks), slice_.gz_reph.channel
(2, 'z')
>>> slab = design.SpatialSelectiveExcitation(pp.Opts(), 8.0, 0.12, is_slab=True)
>>> len(slab.blocks), slab.gz.type
(1, 'grad')

The module diagram and simulated slice profile are generated from the same RF event and selection gradient:

../_images/pypulseqpp-sequences-SpatialSelectiveExcitation-1_00.svg

(svg)#

../_images/pypulseqpp-sequences-SpatialSelectiveExcitation-1_01.svg

(svg)#

Methods

init_module

Build the module's block layout; implemented by the subclass.

publish

Publish events from the caller's locals and register keyword aliases.

register

Publish named events without requiring prior block registration.

sim_rf

Simulate this module's pulse across off-resonance.

Attributes

blocks

Return block tuples in play order, retaining the original event objects.

duration

Duration of the module in seconds.

seq

Sequence holding the module's construction-time block layout.

Examples using SpatialSelectiveExcitation#

Spiral readout

Spiral readout

Excitation modules

Excitation modules

Readout modules

Readout modules

A sequence application

A sequence application

A minimum-phase excitation module

A minimum-phase excitation module

A ramp-sampled readout module

A ramp-sampled readout module

A twisting radial readout module

A twisting radial readout module