MultibandExcitation

MultibandExcitation#

class pypulseqpp.sequences.MultibandExcitation[source]#

Bases: RfModule

Non-spatially-selective RF excitation with off-resonance sidebands.

Sideband weights are specified as power relative to the central band, not amplitude. A target B1 RMS and TR can instead determine the weights.

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

  • flip_angle_deg (float) – On-resonance flip angle (degrees).

  • duration_s (float) – Pulse duration (s).

  • band_offset_hz (float) – Sideband offset from the on-resonance band (Hz).

  • n_bands (int, default=3) – Bands counting the on-resonance one: two for a single sideband, three for a symmetric pair.

  • sideband_power (float, default=1.0) – Power of each sideband relative to the on-resonance band. Ignored when b1rms_ut is given.

  • b1rms_ut (float, default=None) – Target root-mean-square B1 over the repetition (uT), from which the sideband power is solved. Needs tr.

  • tr (float, default=None) – The repetition the RMS is taken over (s).

  • time_bw_product (float, default=4.0) – Time-bandwidth product of the underlying envelope.

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

Attributes:
  • rf (RfEvent) – The modulated pulse.

  • band_offsets_hz (numpy.ndarray) – Band frequency offsets (Hz), including the on-resonance band.

  • band_power_fraction (numpy.ndarray) – Share of the total |B1|^2 each band carries.

  • sideband_power (float, default=1.0) – Power of each sideband relative to the on-resonance band, whether it was given or solved.

  • b1rms_ut (float, default=None) – Root-mean-square B1 achieved over tr, when one was given.

  • peak_ut (float) – Peak B1 (uT), the quantity limited by the transmit chain.

Raises:

ValueError – If a size is out of range, b1rms_ut is given without tr, or the on-resonance band alone already exceeds the requested b1rms_ut.

Examples

>>> import pypulseqpp.sequences as design
>>> import pypulseqpp as pp
>>> system = pp.Opts()
>>> dual = design.MultibandExcitation(
...     system, 7.0, duration_s=2e-3, band_offset_hz=7000.0, n_bands=3,
...     b1rms_ut=2.0, tr=30e-3,
... )
>>> dual.band_offsets_hz.tolist()
[-7000.0, 0.0, 7000.0]
>>> round(dual.b1rms_ut, 6)
2.0
>>> single = design.MultibandExcitation(
...     system, 7.0, duration_s=2e-3, band_offset_hz=7000.0, n_bands=2,
...     b1rms_ut=2.0, tr=30e-3,
... )
>>> round(single.b1rms_ut, 6)
2.0
>>> single.sideband_power == 2 * dual.sideband_power
True

Three bands in frequency and no spatial selectivity:

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

(svg)#

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