make_excitation

make_excitation#

pypulseqpp.sequences.make_excitation()[source]#

Build the excitation module named by kind for a slab prescription.

The three kinds share one prescription, so a volumetric sequence selects among them by kind alone.

Parameters:
  • system (pypulseqpp.Opts) – System limits.

  • kind ({'nonselective', 'slab', 'spsp'}) – A hard pulse, a slab-selective SLR pulse, or a slab- and water-selective spectral-spatial pulse, as EXCITATIONS names them.

  • flip_angle_deg (float) – Flip angle (degrees).

  • thickness_m (float) – Slab thickness (m). A hard pulse excites everything and ignores it.

  • duration_s (float, default=0.003) – Duration of the 'slab' pulse (s).

  • time_bw_product (float, default=4.0) – Time-bandwidth product of the 'slab' SLR pulse.

  • hard_duration_s (float, default=0.0005) – Duration of the hard pulse (s), rounded up to an even number of block rasters so that its centre lands on the raster, which a spin echo needs in order to place its refocusing pulse midway.

  • fat_shift_ppm (float, default=-3.4) – Methylene shift from water (ppm), converted with system.gamma and system.B0 to the frequency band the 'spsp' pulse rejects.

Returns:

The excitation module, which publishes its pulse as rf and, when it selects, a gz and a gz_reph beside it.

Return type:

RfModule

Raises:

ValueError – If kind is not one of EXCITATIONS.

Examples

>>> import pypulseqpp as pp
>>> system = pp.Opts(max_grad=40.0, grad_unit="mT/m")
>>> slab = pp.sequences.make_excitation(system, "slab", 12.0, 0.128)
>>> slab.gz is not None
True
>>> pp.sequences.make_excitation(system, "nonselective", 12.0, 0.128).rf.use
'excitation'