make_spsp_pulse#
- pypulseqpp.make_spsp_pulse()[source]#
Design a spectral-spatial pulse on an alternating slice gradient.
Both envelopes are SLR designs; each spatial subpulse is VERSEd onto its whole trapezoid lobe, ramps included. The pulse is scaled to
flip_angleby area.- Parameters:
flip_angle (float) – Nominal flip angle (rad).
slice_thickness (float) – Slice thickness (m).
spectral_bandwidth (float) – Spectral passband (Hz).
freq_offset (float, default=0.0) – Centre of the spectral passband (Hz).
spatial_time_bandwidth_product (float, default=4.0) – Time-bandwidth product of each spatial subpulse.
spectral_time_bandwidth_product (float, default=3.0) – Time-bandwidth product of the spectral envelope; sets the total duration as
spectral_time_bandwidth_product / spectral_bandwidth.n_subpulses (int, default=10) – Number of subpulses (>= 4, rounded up to even).
system (pypulseqpp.Opts, default=None) – System limits.
use (str, default='excitation') – Pulseq
usetag.
- Returns:
rf (RfEvent) – The spectral-spatial pulse.
gz (GradEvent) – The alternating selection gradient, with the same delay as
rf.gz_reph (TrapEvent or None) – A trapezoid of one lobe’s area when an odd number of lobes follows the pulse’s centre, otherwise
None.
- Raises:
ValueError – If the requested selectivity exceeds the gradient or slew limit, or the spectral bandwidth is too wide for the subpulse count.
Examples
>>> import numpy as np >>> import pypulseqpp as pp >>> system = pp.Opts(max_grad=40, grad_unit="mT/m", max_slew=180, slew_unit="T/m/s") >>> rf, gz, gz_reph = pp.make_spsp_pulse( ... np.deg2rad(30), slice_thickness=10e-3, ... spectral_bandwidth=300.0, n_subpulses=12, system=system, ... ) >>> rf.type, gz.channel ('rf', 'z')
See also
make_slr_pulsethe design underneath both of its envelopes.
sim_rfcheck the spectral profile the design produces.