make_bloch_siegert_pulse

make_bloch_siegert_pulse#

pypulseqpp.make_bloch_siegert_pulse()[source]#

Design an adiabatic Bloch-Siegert encoding pulse.

Constant amplitude, its frequency swept from far off resonance towards it and back, symmetric about the centre. Longitudinal magnetisation stays along z; transverse magnetisation gains a phase proportional to the square of its B1 (Khalighi, Rutt and Kerr, Magn Reson Med 70:829, 2013). Playing the sweep on either side of resonance and differencing the phases maps B1. duration is rounded to an even number of RF samples.

Parameters:
  • amplitude (float) – RF amplitude where B1 is nominal, in T.

  • duration (float) – In s.

  • k (float, default=42.0) – Sweep shape: gamma B1 t / k, with gamma B1 in rad/s, must stay below one over half the pulse; a larger k keeps the sweep further from resonance.

  • frequency_sign ({1, -1}, default=1) – Which side of resonance the sweep runs on; the phase changes sign with it.

Returns:

The pulse.

Return type:

RfEvent

Raises:

ValueError – If the sweep would reach resonance within the pulse.