make_line_readout

make_line_readout#

pulserver.blocks.make_line_readout(system, fov, npix, osf=1.0, has_adc=True, flyback=False, ndim=1)[source]#

Prepare line readout for Cartesian, EPI or Radial imaging.

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

  • fov (float) – Field of view in the readout direction in [mm].

  • npix (int) – Matrix size in the readout direction.

  • osf (float, optional) – Readout oversampling factor. The default is 1.0.

  • has_adc (bool, optional) – If True, read_block contains and ADC event. Otherwise, it does not (e.g., dummy shots for steady-state preparation). The default is True.

  • flyback (bool, optional) – If True, design a flyback gradient. The default is False.

  • ndim (int, optional) – Number of k-space dimensions spanned by the readout. The default is 1.

Returns:

  • read_block (dict) – Readout block dictionary with the following keys:

    • gxSimpleNamespace

      Readout gradient event.

    • gySimpleNamespace

      Readout gradient event (only if ndim >= 2).

    • gzSimpleNamespace

      Readout gradient event (only if ndim == 3).

    • adcSimpleNamespace

      ADC event (only if has_adc is True).

  • phase_block (dict) – Readout prewinder / rewinder block with the following keys:

    • gxSimpleNamespace

      Pre-/rewinder gradient event.

    • gySimpleNamespace

      Pre-/rewinder gradient event (only if ndim >= 2).

    • gzSimpleNamespace

      Pre-/rewinder gradient event (only if ndim == 3).

  • flyback_block (dict, optional) – Readout flyback block with the following keys:

    • gxSimpleNamespace

      Flyback gradient event.

    • gySimpleNamespace

      Flyback gradient event (only if ndim >= 2).

    • gzSimpleNamespace

      Flyback gradient event (only if ndim == 3).

    It is returned only if flyback is True.

Return type:

tuple[dict, dict] | tuple[dict, dict, dict]

Notes

For Cartesian or EPI imaging, the ndim is equal to 1. For 2D and 3D Radial imaging, ndim should be set to 2 and 3, respectively. The design routine will then put the maximum amplitude trapezoid event in gx, gy and gx, gy, gz, respectively, to handle the rotation as amplitude scaling given by the elements of the rotation matrix. This trick would not work e.g., for spiral trajectories, where the base waveform for different axis are different.