SpatialSelective2DExcitation

SpatialSelective2DExcitation#

class pypulseqpp.sequences.SpatialSelective2DExcitation[source]#

Bases: RfModule

Small-tip spiral excitation selective in two dimensions.

The selected disc extends along the unencoded axis. Its periodic replicas are set by the excitation FOV, which should cover the object. Each arm is retraced with RF off; the closed trajectory needs no separate rephaser.

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

  • flip_angle_deg (float) – Nominal flip angle (degrees), reached at the centre of the disc.

  • fov (float) – Excitation field of view (m), square. The distance to the first repeated disc.

  • matrix (int) – Excitation grid size, square. How finely the profile is specified, and so how far out the trajectory reaches.

  • selective_size (float or sequence of float, default=None) – Diameter (m) of the excited disc. Half the field of view by default.

  • target (numpy.ndarray, default=None) – Complex desired profile on the (matrix, matrix) grid, instead of a disc.

  • n_interleaves (int, default=None) – Spiral arms to play. The default covers excitation k-space at Nyquist; fewer is a proportionally shorter pulse and a repeated disc that moves proportionally closer.

  • axes (sequence of str, default=('x', 'y')) – The two gradient channels the trajectory runs on.

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

Attributes:
  • rf (RfEvent) – The pulse.

  • gradients (tuple of GradEvent) – One per axis, played in the pulse’s own block.

  • rephasers (tuple of TrapEvent) – Empty for the spiral trajectory; the attribute is present because a trajectory that does not end at the origin requires rephasers.

  • self_refocused (bool) – Whether the excitation k-space trajectory ends at the origin without a rephaser.

  • duration_s (float) – Pulse length (s), which the trajectory fixed.

Raises:

ValueError – If a size is out of range, target does not match matrix, or the requested profile has no response on the trajectory.

Examples

>>> import pypulseqpp.sequences as design
>>> import pypulseqpp as pp
>>> system = pp.Opts(max_grad=40, grad_unit="mT/m", max_slew=150, slew_unit="T/m/s")
>>> pencil = design.SpatialSelective2DExcitation(
...     system, 30.0, fov=0.256, matrix=32, selective_size=0.04
... )
>>> len(pencil.blocks), [gradient.channel for gradient in pencil.gradients]
(1, ['x', 'y'])
>>> pencil.self_refocused, pencil.rephasers
(True, ())

The subpulse train under the spiral gradients, and the transverse magnetization over the selected plane:

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

(svg)#

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