SpatialSelectiveRefocusing

SpatialSelectiveRefocusing#

class pypulseqpp.sequences.SpatialSelectiveRefocusing[source]#

Bases: RfModule

SLR refocusing with matched crushers joined to the selection plateau.

Uses the spin-echo SLR profile. The default RF phase is pi/2 radians for a zero-phase excitation (CPMG). The selection plateau is centred on the centre the pulse records, its magnitude peak, and extends past the pulse until that centre lies on the block raster.

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

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

  • flip_angle_deg (float, default=180.0) – Nominal flip angle (degrees).

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

  • spoiling_cycles (float, default=4.0) – Cycles of dephasing each crusher winds across voxel_size_m. Zero leaves the bare selection lobe.

  • voxel_size_m (float, default=0.001) – Length the dephasing is counted over (m).

  • time_bw_product (float, default=4.0) – Time-bandwidth product.

  • axis ({'z', 'x', 'y'}, default='z') – Selection axis; the crushers share it.

  • phase_offset_rad (float, default=np.pi / 2) – RF phase. The CPMG quarter turn by default.

  • use (str, default='refocusing') – What the pulse is for; the trajectory core negates accumulated k at a refocusing pulse.

  • 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_ref (RfEvent) – The refocusing pulse, delayed onto the plateau between the crushers so that its recorded centre is the plateau’s midpoint.

  • gz (GradEvent) – Crusher, selection plateau and crusher, as one gradient.

  • selection_amplitude (float) – Plateau amplitude of the selection lobe (Hz/m), which a slice offset is converted against; gz.amplitude is the crushers’ peak.

Raises:

ValueError – If a thickness, duration or voxel size is not positive, axis is not a gradient channel, or spoiling_cycles is negative.

Examples

>>> import pypulseqpp.sequences as design
>>> import pypulseqpp as pp
>>> refocusing = design.SpatialSelectiveRefocusing(pp.Opts(), 5e-3)
>>> len(refocusing.blocks), refocusing.gz.type
(1, 'grad')

The envelope and the refocusing efficiency across the slice, which is the response an "se" design is solved against:

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

(svg)#

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