calc_rosette_trajectory

calc_rosette_trajectory#

pypulseqpp.calc_rosette_trajectory()[source]#

Return one rosette interleaf, petals through the centre of k-space.

The path is rho(u) = kmax sin(pi petals u) at angle theta(u) = pi petals angular_frequency_ratio u for u in [0, 1], so it crosses the centre petals + 1 times.

Parameters:
  • fov (float) – Field of view, in m. Isotropic.

  • matrix (int) – Matrix size, which with fov sets the reach matrix / (2 fov).

  • petals (int, default=5) – Centre-to-centre lobes within this one interleaf. More petals cross the centre more often and lengthen the readout.

  • angular_frequency_ratio (float, default=3.0 / 5.0) – Angular over radial frequency. Below one the petals are open; one is the circular limit; above one they wind more tightly.

  • num_points (int, default=2049) – Samples along the polyline. Sets how finely the curve is described, not how many ADC samples the readout takes.

Returns:

(num_points, 2), in 1/m, starting and ending at the origin.

Return type:

numpy.ndarray

Raises:

ValueError – If petals or angular_frequency_ratio is not positive, or num_points is below five.

Examples

>>> import numpy as np
>>> import pypulseqpp as pp
>>> path = pp.calc_rosette_trajectory(0.256, 128, petals=4)
>>> bool(np.allclose(path[[0, -1]], 0.0, atol=1e-9))
True