RadialReadout2D

Contents

RadialReadout2D#

class pypulseqpp.sequences.RadialReadout2D[source]#

Bases: SequenceModule

A full radial spoke through the centre of a plane.

The ADC samples the plateau. A slice rephaser may share an axis left invariant by the shot rotation. With explicit=True, angles selects materialised spokes; otherwise the loop supplies rotation extensions.

A compact layout reuses one base arm for any arm index; the acquisition loop supplies its rotation. An explicit layout stores each arm separately.

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

  • rf (RfEvent) – The pulse that opens the repetition.

  • gz (GradEvent, default=None) – A selection gradient played in the same block as rf.

  • gz_reph (GradEvent, default=None) – The rephaser that unwinds gz. Played left-aligned in the first block after the pulse – the TE wait when there is one, otherwise alongside the prephaser at the head of the spoke, where it adds no echo time. It is accepted only on an axis that the loop’s rotation leaves unchanged, so an in-plane acquisition takes a rephaser on z and a projection takes none.

  • fov (float) – Isotropic in-plane field of view (m).

  • matrix (int) – In-plane matrix size. Sets kmax = matrix / (2 * fov).

  • fov_z (float, int, default=None) – Partition field of view (m) and count. Stacks only.

  • matrix_z (float, int, default=None) – Partition field of view (m) and count. Stacks only.

  • te (float, default=None) – Echo time (s) from the RF isodelay to the centre crossing, and repetition time (s). None is as short as possible.

  • tr (float, default=None) – Echo time (s) from the RF isodelay to the centre crossing, and repetition time (s). None is as short as possible.

  • oversampling (float, default=1.0) – Readout oversampling: more samples along the same spoke.

  • readout_bandwidth_hz (float, default=250000.0) – Requested ADC sampling rate (Hz). bandwidth_hz reports the achieved raster-compatible rate.

  • spoiling_cycles (float, default=0.0) – Dephasing left at the end of the TR, in cycles across voxel_size_m. Zero leaves the spoke rewound.

  • voxel_size_m (float, default=None) – Length the spoiling is counted over (m); the resolution by default.

  • spoiling_axis ({'z', 'x', 'y'}, default='z') – Axis the spoiler is played on.

  • n_echoes (int, default=1) – Path traversals per repetition, separated by echo_spacing. Each retraces the same k-space coordinates and carries its own ECO label. Non-Cartesian arms use rewinders/prewinders between echoes.

  • explicit (bool, default=False) – Write out one spoke per entry of angles instead of one base spoke.

  • angles (array-like, default=None) – In-plane rotations (rad). Required when explicit and rejected otherwise; without explicit, the acquisition loop applies the per-shot rotation.

  • labels (sequence of str, default=None) – Counters emitted on the acquisition block.

  • trigger (event, default=None) – A trigger or digital output armed on the block that opens the readout.

Attributes:
  • rf (RfEvent) – The pulse the module was given.

  • gz (GradEvent) – Its selection gradient, if one was given.

  • gz_reph (GradEvent) – Its rephaser, if one was given, left-aligned in whichever block follows the pulse.

  • gx, gy (GradEvent) – The spoke, prephaser through rewinder. gy is the same waveform at zero amplitude, so a block always has a y slot for a rotation to fill. Lists of one entry per angle when explicit.

  • gz_pre, gz_rew (TrapEvent) – Partition encode and its rewinder. Stacks only.

  • gz_spoil (GradEvent) – End-of-TR spoiler, when spoiling_cycles is nonzero.

  • adc (AdcEvent) – The acquisition window, delayed onto the readout plateau.

  • adc_labels (LabelSetEvent or list of LabelSetEvent) – One per name in labels; a bare event when there is one.

  • wait_te, wait_tr (DelayEvent) – Present only when a TE or TR longer than the minimum was asked for.

  • echo_spacing (float) – Time between consecutive echoes (s), zero for a single-echo readout.

Raises:

ValueError – If a count is out of range, angles and explicit disagree, or the requested TE or TR is shorter than the module can achieve.

Examples

>>> import pypulseqpp.sequences as design
>>> import pypulseqpp as pp
>>> system = pp.Opts()
>>> excitation = design.SpatialSelectiveExcitation(system, 15.0, 5e-3)
>>> readout = design.RadialReadout2D(
...     system, excitation.rf, excitation.gz, excitation.gz_reph,
...     fov=0.22, matrix=128,
... )
>>> len(readout.blocks), readout.gx.channel
(2, 'x')
>>> any(event is readout.gz_reph for event in readout.blocks[1])
True
../_images/pypulseqpp-sequences-RadialReadout2D-1_00.svg

(svg)#

../_images/pypulseqpp-sequences-RadialReadout2D-1_01.svg

(svg)#

Methods

arm

Block layout of one arm, as the module built it.

init_module

Build the module's block layout; implemented by the subclass.

publish

Publish events from the caller's locals and register keyword aliases.

register

Publish named events without requiring prior block registration.

Attributes

blocks

Return block tuples in play order, retaining the original event objects.

duration

Duration of the module in seconds.

seq

Sequence holding the module's construction-time block layout.