NonSelectiveRefocusing#
- class pypulseqpp.sequences.NonSelectiveRefocusing[source]#
Bases:
RfModuleRectangular refocusing pulse between two identical crushers.
The default phase is pi/2 radians for CPMG with a zero-phase excitation. Set spoiling_cycles=0 to omit the crushers.
- Parameters:
system (pypulseqpp.Opts) – System limits.
flip_angle_deg (float, default=180.0) – Nominal flip angle (degrees).
duration_s (float, default=0.001) – Pulse duration (s).
spoiling_cycles (float, default=4.0) – Cycles of dephasing each crusher winds across
voxel_size_m. Zero omits the crushers, for an echo train that crushes elsewhere.voxel_size_m (float, default=0.001) – Length the dephasing is counted over (m).
axis ({'z', 'x', 'y'}, default='z') – Crusher axis.
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, so this is not cosmetic.
- Attributes:
rf_ref (RfEvent) – The refocusing pulse.
gz_spoil (GradEvent) – The crusher, published once because both sides play the same event.
- Raises:
ValueError – If
spoiling_cyclesis negative,voxel_size_mis not positive, oraxisis not a gradient channel.
Examples
>>> import pypulseqpp.sequences as design >>> import pypulseqpp as pp >>> refocusing = design.NonSelectiveRefocusing(pp.Opts()) >>> len(refocusing.blocks), refocusing.blocks[0] == refocusing.blocks[2] (3, True)
>>> len(design.NonSelectiveRefocusing(pp.Opts(), spoiling_cycles=0.0).blocks) 1
The pulse and both crushers, integrated as one window:
Methods
Build the module's block layout; implemented by the subclass. |
|
Publish events from the caller's locals and register keyword aliases. |
|
Publish named events without requiring prior block registration. |
|
Simulate this module's pulse across off-resonance. |
Attributes