SpiralReadout2D#

class pypulseqpp.sequences.SpiralReadout2D[source]#

Bases: NonCartesianReadout

One spiral arm in a plane.

direction runs the arm centre-to-edge ('outward'), edge-to-centre ('inward') or edge-to-centre-to-edge ('in_out'); density chooses a constant, variable or dual pitch. design_interleaves sets that pitch and is not how many arms the loop plays.

readout_bandwidth_hz is the requested sample spacing along the arm; the solver stretches the waveform to hold it when the time-optimal traversal would sample faster. Read bandwidth_hz for what was achieved.

Parameters:
  • system (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. Accepted only on an axis that the loop’s rotation leaves unchanged.

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

  • matrix (int) – In-plane matrix size.

  • design_interleaves (int, default=16) – Nominal pitch, not the number of arms acquired.

  • direction ({'outward', 'inward', 'in_out'}, default='outward') – Centre-to-edge, edge-to-centre, or edge-to-centre-to-edge traversal.

  • density ({'constant', 'variable', 'dual'}, default='constant') – Constant pitch, a radial power-law transition, or a logistic transition.

  • inner_design_interleaves (float, default=None) – Local pitch at the centre and edge. Inner defaults to design_interleaves; outer defaults to twice inner for variable density and is required for dual.

  • outer_design_interleaves (float, default=None) – Local pitch at the centre and edge. Inner defaults to design_interleaves; outer defaults to twice inner for variable density and is required for dual.

  • variable_density_power (float, default=2.0) – Positive exponent of the normalised radius for variable density.

  • transition_radius (float, default=0.5) – Normalised transition radius (between 0 and 1) and positive logistic steepness for dual density.

  • transition_speed (float, default=12.0) – Normalised transition radius (between 0 and 1) and positive logistic steepness for dual density.

  • oversampling (float, default=1.0) – ADC oversampling factor, at least one.

  • readout_bandwidth_hz (float, default=250000.0) – Requested ADC sampling rate (Hz), not bandwidth per pixel.

  • n_points (int, default=1024) – Geometric path samples supplied to the solver, not ADC samples.

  • derate (bool, default=True) – Apply the package’s system derates before solving.

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

  • matrix_z (int, default=None) – Partition count. Stacks only.

  • te (float, default=None) – Echo time (s) from the RF isodelay to the path’s nearest k = 0 crossing. None is as short as possible.

  • tr (float, default=None) – Repetition time (s). None is as short as possible.

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

  • voxel_size_m (float, default=None) – Length the spoiling is counted over (m); the trajectory’s 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 with its own ECO label and joined by rewinders and prewinders.

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

  • angles (ArrayLike, default=None) – In-plane rotations (rad). Required when explicit and rejected otherwise.

  • labels (Sequence[str], default=None) – Counters emitted on the acquisition block.

  • trigger (TriggerEvent, 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 interleaf. Lists of one entry per angle when explicit.

  • gx_pre, gy_pre (GradEvent) – Prewinding gradients reaching the start of the path, when it is not k = 0.

  • gx_rew, gy_rew (GradEvent) – Rewinding gradients returning to k = 0, when the path does not end there.

  • 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.

  • adc_labels (LabelEvent | list[LabelEvent]) – 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.

  • wait_pre, wait_rew (DelayEvent) – Pads setting the span of the prewinder and rewinder blocks, which can outlast their gradients. Absent when that block is not played.

  • trajectory (NonCartesianGradient) – The designed interleaf, for its trajectory array and timings.

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

Examples

>>> import pypulseqpp.sequences as design
>>> import pypulseqpp as pp
>>> system = pp.Opts()
>>> excitation = design.SpatialSelectiveExcitation(system, 15.0, 5e-3)
>>> readout = design.SpiralReadout2D(
...     system, excitation.rf, excitation.gz,
...     fov=0.22, matrix=128, design_interleaves=16, direction="in_out",
... )
>>> readout.trajectory.direction
'in_out'
../_images/pypulseqpp-sequences-SpiralReadout2D-1_00.svg

(svg)#

../_images/pypulseqpp-sequences-SpiralReadout2D-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.

Examples using SpiralReadout2D#

Spiral readout

Spiral readout