SpatialSaturation#
- class pypulseqpp.sequences.SpatialSaturation[source]#
Bases:
RfModuleSlab-selective saturation pulse in the physical frame, followed by a three-axis spoiler.
The selection gradient points along
normaland is split over the gradient channels in proportion to its components. The slab is centredpositionfrom the isocentre alongnormal.NOPOSandNOROTare set on the pulse block and cleared on the spoiler block, so neither aTransformFOVoffset nor the prescription rotation moves the band, which stays where it is placed in the physical frame.- Parameters:
system (pypulseqpp.Opts) – System limits.
normal (array_like of float) – Slab normal
(x, y, z)along the physical gradient axes; nonzero, normalised by the module.position (float) – Centre of the slab along
normalfrom the isocentre (m).thickness (float) – Slab thickness along
normal(m).flip_angle_deg (float, default=90.0) – Flip angle (degrees).
duration_s (float, default=0.003) – Pulse duration (s).
time_bw_product (float, default=4.0) – Time-bandwidth product; with the duration and thickness it sets the selection amplitude
time_bw_product / (duration_s * thickness)(Hz/m).spoiling_cycles (float, default=4.0) – Cycles of dephasing of each spoiler across
voxel_size_m.voxel_size_m (float, default=0.001) – Length the dephasing is counted over (m).
labels (sequence of str, default=None) – Labels set to 0 on the pulse block, to be changed per shot by the caller.
- Attributes:
rf_prep (RfEvent) – The saturation pulse. Its frequency offset is the selection amplitude times
position(Hz), and its phase offset makes the phase zero at the pulse centre.gx_sel, gy_sel, gz_sel (GradEvent) – Selection gradient on each channel,
gz.amplitude * normalas stored (Hz/m); absent for a channel whose component is zero.gx_spoil, gy_spoil, gz_spoil (GradEvent) – Spoiler gradient of each axis.
prep_labels (list of LabelSetEvent) –
NOPOSandNOROTset, then one per name inlabels, on the pulse block.reset_labels (list of LabelSetEvent) –
NOPOSandNOROTcleared, on the spoiler block.
- Raises:
ValueError – If
normalis the zero vector or not three components, or a thickness, duration, time-bandwidth product, spoiling count or voxel size is not positive.
Examples
>>> import pypulseqpp.sequences as design >>> import pypulseqpp as pp >>> band = design.SpatialSaturation(pp.Opts(), (0, 1, 0), 0.05, 0.02) >>> len(band.blocks) 2 >>> [(event.label, int(event.value)) for event in band.prep_labels] [('NOPOS', 1), ('NOROT', 1)]
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, whether or not they were added to a block. |
|
Simulate this module's pulse across off-resonance. |
Attributes