make_spokes_pulse

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_angle over 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 / resolution at a pitch of 1 / 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_time and 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.