make_ptx_pulse

Contents

make_ptx_pulse#

pypulseqpp.make_ptx_pulse()[source]#

Make a dynamic pTx pulse from one waveform per transmit channel.

The channels are stored one after another in a single arbitrary RF event over a shared time base, so the time shape restarts once per channel (Roos et al., Magn Reson Med 2025, doi:10.1002/mrm.30601). shape_dur is one channel’s duration, so an interpreter unaware of the layout still reads the right pulse length.

Parameters not listed below are as in make_arbitrary_rf().

Parameters:
  • signal (array_like) – Complex waveforms, (num_channels, num_samples), in Hz. Played as given: nothing is scaled to a flip angle, since with several channels the flip depends on each channel’s B1 map.

  • dwell (float, default=0.0) – Sample spacing, in s; system.rf_raster_time when zero.

  • center (float, default=None) – Centre of the pulse from its start, in s. Defaults to the peak of the root-sum-square of the channels’ magnitudes, as calc_rf_center() finds a peak.

Returns:

The pulse; shape_dur is num_samples * dwell.

Return type:

RfEvent

Raises:

ValueError – If signal is not two-dimensional or holds no samples.

Examples

>>> import numpy as np
>>> import pypulseqpp as pp
>>> rf = pp.make_ptx_pulse(np.full((8, 100), 250.0 + 0j))
>>> pp.split_ptx_pulse(rf).shape
(8, 100)