SpiralNavigator

Contents

SpiralNavigator#

class pypulseqpp.sequences.SpiralNavigator[source]#

Bases: SequenceModule

Three orthogonal thick-slab spiral navigators.

Reuses one excitation and readout under axial, sagittal and coronal rotations. ADC blocks carry NAV labels. Navigator excitations perturb the host sequence’s longitudinal magnetisation; choose flip angle and repetition count accordingly.

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

  • fov (float, default=0.32) – In-plane field of view (m). Wide enough to contain the head.

  • matrix (int, default=32) – Acquired in-plane matrix. Coarse on purpose.

  • thickness_m (float, default=0.01) – Slab thickness (m).

  • flip_angle_deg (float, default=8.0) – Nominal flip angle (degrees). See above.

  • duration_s (float, default=0.001) – Excitation pulse duration (s).

  • readout_bandwidth_hz (float, default=250000.0) – Requested sample spacing along the arm.

  • navigator_tr (float, default=None) – Repetition time of one three-plane navigator (s). None packs the planes back to back. A longer one leaves room for the reconstruction and the pose estimate to come back before the next navigator.

  • spoiling_cycles (float, default=4.0) – Spoiler moment at the end of each plane, in cycles across the slab.

Attributes:
  • excitation (SpatialSelectiveExcitation) – The pulse every plane is opened by.

  • readout (SpiralReadout2D) – The designed interleaf every plane plays.

  • rotations (dict) – The rotation carried by each plane’s blocks, keyed by plane name.

  • plane_duration (float) – Length of one plane (s).

Examples

The three planes are one designed arm under three rotations, so the module stores one waveform regardless of the number of planes played:

>>> 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")
>>> navigator = design.SpiralNavigator(system)
>>> sorted(navigator.rotations)
['axial', 'coronal', 'sagittal']
>>> navigator.readout.adc.num_samples > 0
True

The navigator repetition, and the spiral its ADC event samples:

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

(svg)#

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

(svg)#

Methods

fit

Return the navigator count that fits a time window.

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.

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.