SpatialSelectiveExcitation#
- class pypulseqpp.sequences.SpatialSelectiveExcitation[source]#
Bases:
RfModuleSLR excitation with a selection gradient and optional rephasing.
A slice publishes separate gz and gz_reph events in two blocks. With is_slab=True, rephasing is merged into gz in one block. Set rephase=False to omit it; a readout may instead include the rephaser’s moment.
- Parameters:
system (pypulseqpp.Opts) – System limits.
flip_angle_deg (float) – Nominal flip angle (degrees).
thickness_m (float) – Slice or slab thickness (m).
duration_s (float, default=0.003) – Pulse duration (s).
is_slab (bool, default=False) – Merge the rephaser into the selection gradient, as above.
rephase (bool, default=True) – Include a slice rephaser.
time_bw_product (float, default=4.0) – Time-bandwidth product. Higher is a squarer profile and a longer pulse at the same bandwidth.
axis ({'z', 'x', 'y'}, default='z') – Selection axis.
pulse_type ({'st', 'ex', 'se', 'inv', 'sat'}, default='st') – SLR design family.
"ex"for a large-tip excitation,"se"for a refocusing pulse.use (str, default='excitation') – Pulseq RF-use tag, used by trajectory integration.
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 (RfEvent) – The pulse. Its
delayalready places it on the gradient’s flat top.gz (TrapEvent or GradEvent) – The selection gradient; under
is_slabthe rephaser is part of it.gz_reph (TrapEvent) – The rephaser. Only when not
is_slabandrephase.selection_amplitude (float) – Plateau amplitude of the selection lobe (Hz/m), which a slice offset is converted against:
freq_offset = selection_amplitude * position.
- Raises:
ValueError – If
thickness_morduration_sis not positive, oraxisis not a gradient channel.
Examples
>>> import pypulseqpp.sequences as design >>> import pypulseqpp as pp >>> slice_ = design.SpatialSelectiveExcitation(pp.Opts(), 15.0, 5e-3) >>> len(slice_.blocks), slice_.gz_reph.channel (2, 'z')
>>> slab = design.SpatialSelectiveExcitation(pp.Opts(), 8.0, 0.12, is_slab=True) >>> len(slab.blocks), slab.gz.type (1, 'grad')
The module diagram and simulated slice profile are generated from the same RF event and selection gradient:
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
Return block tuples in play order, retaining the original event objects. |
|
Duration of the module in seconds. |
|
Sequence holding the module's construction-time block layout. |