SmsExcitation#
- class pypulseqpp.sequences.SmsExcitation[source]#
Bases:
RfModuleSLR slice excitation modulated into simultaneous spectral bands.
Slice centre spacing is converted to frequency using the selection gradient. Band phases control the combined peak B1.
- Parameters:
system (pypulseqpp.Opts) – System limits.
flip_angle_deg (float) – Nominal flip angle (degrees), per band.
thickness_m (float) – Slice thickness (m).
slice_gap_m (float) – Centre-to-centre spacing between excited slices (m).
n_bands (int, default=2) – Slices excited at once.
duration_s (float, default=0.003) – Pulse duration (s).
phases ({'quadratic'} or sequence of float, default='quadratic') – Per-band phase (rad).
'quadratic'spreads the peak;Noneleaves every band in phase, which is the worst case for peak B1.rephase (bool, default=True) – Include a slice rephaser.
time_bw_product (float, default=4.0) – Time-bandwidth product of the underlying slice profile.
axis ({'z', 'x', 'y'}, default='z') – Selection axis.
use (str, default='excitation') – Pulseq RF-use tag, used by trajectory integration.
- Attributes:
rf (RfEvent) – The modulated pulse.
gz (TrapEvent) – The selection gradient.
gz_reph (TrapEvent) – Its rephaser, only when
rephase=True.band_offsets_hz (numpy.ndarray) – Band frequency offsets (Hz), symmetric about zero.
band_positions_m (numpy.ndarray) – Slice centre positions (m).
peak_ratio (float) – Peak B1 relative to the single-band pulse the bands were made from.
- Raises:
ValueError – If a size is not positive,
n_bandsis below one, oraxisis not a gradient channel.
Examples
>>> import pypulseqpp.sequences as design >>> import pypulseqpp as pp >>> system = pp.Opts(max_grad=40, grad_unit="mT/m", max_slew=180, slew_unit="T/m/s") >>> sms = design.SmsExcitation( ... system, 60.0, thickness_m=3e-3, slice_gap_m=24e-3, n_bands=3 ... ) >>> sms.band_positions_m.round(6).tolist() [-0.024, 0.0, 0.024]
>>> stacked = design.SmsExcitation( ... system, 60.0, thickness_m=3e-3, slice_gap_m=24e-3, n_bands=3, phases=None ... ) >>> round(stacked.peak_ratio, 1), bool(sms.peak_ratio < stacked.peak_ratio) (3.0, True)
Three slices from one pulse, at the gap they were designed for:
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