Rosette#
- class pypulseqpp.sequences.Rosette[source]#
Bases:
NonCartesianGradientMulti-petal rosette base interleaf, starting and ending at k = 0.
The readout needs neither a prewinder nor a rewinder.
trajectoryis the k-space at the ADC samples anddesign_trajectorythe polyline the gradient was solved from;echo_spacing_sis the realised mean petal duration andrequested_echo_spacing_sthe request. The ADC takes the same number of samples in every petal, the total rounded down tosystem.adc_samples_divisor.- Parameters:
system (pypulseqpp.Opts) – System limits. Tighter limits lengthen the petals but not their reach.
fov (float or array-like) – Isotropic field of view (m). With
matrixit setskmax = matrix / (2 * fov), and it bounds the k-space step between adjacent ADC samples to1 / (oversamp * fov).matrix (int or array-like) – Isotropic matrix size.
petals (int, default=5) – Centre-to-centre lobes within this one interleaf, not rotated shots.
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.
echo_spacing_s (float, default=None) – Mean centre-to-centre petal duration (s);
Noneis the minimum the limits allow, and a longer value stretches the waveform uniformly. The ramps at each end can make the first and last crossing intervals differ slightly from the mean.bandwidth_hz_px (float, default=250000.0) – Requested
1 / dwell(Hz). The dwell is also bounded by the step limit and floored to the ADC raster, so the realised bandwidth can be higher.oversamp (float, default=1.0) – ADC oversampling; tightens the step limit without changing the gradient.
axes (tuple[str, str], default=('x', 'y')) – Channels for the path’s two components.
solver_oversampling (int, default=8) – Path-resampling factor of the time-optimal solver.
derate (bool, default=True) – Apply
pypulseqpp.apply_system_derates()first.
- Raises:
ValueError – If
echo_spacing_sis below the minimum the limits allow, or a parameter is out of range.
Examples
>>> import pypulseqpp.sequences as design >>> import pypulseqpp as pp >>> rosette = design.Rosette(pp.Opts(), 0.22, 64) >>> rosette.has_prewinder or rosette.has_rewinder False
One interleaf and the waveform that traverses it. The path passes through the centre of k-space once per petal:
(
svg)
Methods
Return this interleaf rotated in its own plane, with unchanged timing. |
Attributes
The gradient channels this interleaf drives, in waveform order. |
|
Gradient on channel x, or None when this interleaf does not drive it. |
|
Gradient on channel y, or None when this interleaf does not drive it. |
|
Gradient on channel z, or None when this interleaf does not drive it. |
|
Whether a prewinder leads from k = 0 to the start of the path. |
|
Whether a rewinder leads from the end of the path back to k = 0. |