make_spokes_pulse#
- pypulseqpp.make_spokes_pulse()[source]#
Design a spokes pTx pulse, exciting one slice at several in-plane k positions.
Each spoke is a small-tip SLR sub-pulse on one lobe of an alternating slice gradient; in-plane blips between lobes move it through excitation k-space. Spoke positions are chosen greedily from a grid, and each channel’s weight on each spoke by magnitude least squares against a uniform
flip_angleover the mask (Grissom et al., Magn Reson Med 68:1553, 2012).- Parameters:
flip_angle (float) – Flip wanted over the mask, in rad, in the small-tip model.
b1_maps (array_like) – Complex B1+ per channel in the slice,
(num_channels, nx, ny), relative: a map of ones reaches every point at nominal amplitude.fov (float or (float, float)) – In-plane extent the maps cover, in m, centred on the isocentre.
slice_thickness (float) – In m.
n_spokes (int, default=3) – Number of spokes, one of them at the k-space centre.
mask (array_like of bool, default=None) – Where the flip is fitted,
(nx, ny); everywhere by default.resolution (float, default=None) – Finest in-plane scale the spokes may encode, in m: candidate positions span
1 / resolutionat a pitch of1 / fov. An eighth of the smaller field of view by default.time_bw_product (float, default=4.0) – Of each spoke’s slice profile.
regularization (float, default=0.0) – Tikhonov weight on the spoke weights.
axes ((str, str, str), default=('x', 'y', 'z')) – The two in-plane gradient channels, then the slice-select one.
delay (float, default=0.0) – Delay before the pulse and its gradients, in s; raised to
system.rf_dead_timeand rounded up to the gradient raster.
- Returns:
rf (RfEvent) – A pTx pulse, one waveform per channel (see
make_ptx_pulse()).gradients (tuple of GradEvent) – The slice lobes, then the in-plane blips, for the pulse’s block.
rephasers (tuple of TrapEvent) – The in-plane return to the k-space centre, then the slice rephaser, for the block after.
- Raises:
ValueError – If the maps, mask or spoke count do not fit the grid.