SpspExcitation

Contents

SpspExcitation#

class pypulseqpp.sequences.SpspExcitation[source]#

Bases: RfModule

Spectral-spatial excitation using SLR subpulses on an alternating gradient.

The spectral time-bandwidth product and bandwidth set total duration. Subpulse count controls spectral repetition spacing. The subpulses play under alternating gradient lobes, so a slice offset is a phase that follows the gradient’s area rather than a frequency: move the slice with shift().

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

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

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

  • spectral_bandwidth_hz (float) – Spectral passband (Hz). With spectral_time_bw_product it fixes the total duration.

  • freq_offset_hz (float, default=0.0) – Centre of the spectral band (Hz).

  • is_slab (bool, default=False) – Merge any rephaser into the selection gradient rather than a second block.

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

  • spatial_time_bw_product (float, default=4.0) – Time-bandwidth product of each spatial subpulse.

  • spectral_time_bw_product (float, default=3.0) – Time-bandwidth product of the spectral envelope.

  • n_subpulses (int, default=10) – Subpulses in the train.

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

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

Attributes:
  • rf (RfEvent) – The pulse.

  • gz (GradEvent) – The alternating selection gradient.

  • gz_reph (TrapEvent) – Its rephaser, only when needed, rephase=True and is_slab=False.

Raises:

ValueError – If a size is not positive, axis is not a gradient channel, or the requested selectivity exceeds a gradient limit.

Examples

>>> import pypulseqpp.sequences as design
>>> import pypulseqpp as pp
>>> system = pp.Opts(max_grad=40, grad_unit="mT/m", max_slew=180, slew_unit="T/m/s")
>>> water = design.SpspExcitation(
...     system, 30.0, thickness_m=10e-3, spectral_bandwidth_hz=300.0
... )
>>> len(water.blocks), water.gz.channel
(2, 'z')
>>> water.gz.type
'grad'

The subpulse train under its alternating gradient, and the transverse magnetization over position and frequency together. The spectral passband repeats at the subpulse rate, which n_subpulses sets:

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

(svg)#

../_images/pypulseqpp-sequences-SpspExcitation-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.

shift

Move the selected slice to position (m) and return the pulse.

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.