NonCartesianReadout#
- class pypulseqpp.sequences.NonCartesianReadout[source]#
Bases:
SequenceModuleA solved interleaf with its prewinder, rewinder and repetition-time budget.
Nonzero k-space endpoints require prewinder or rewinder blocks.
trajectoryis any two-channelNonCartesianGradient; the spiral and rosette readouts design theirs. The acquisition loop controls per-shot orientation.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 (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.trajectory (NonCartesianGradient) – Solved gradient interleaf with its ADC, prewinder and rewinder.
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.
Noneis as short as possible.tr (float, default=None) – Repetition time (s).
Noneis 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 ownECOlabel and joined by rewinders and prewinders.explicit (bool, default=False) – Write out one interleaf per entry of
anglesinstead of one base interleaf.angles (ArrayLike, default=None) – In-plane rotations (rad). Required when
explicitand 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_cyclesis 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
trajectoryarray and timings.echo_spacing (float) – Time between consecutive echoes (s), zero for a single-echo readout.
Examples
>>> import numpy as np >>> import pypulseqpp.sequences as design >>> import pypulseqpp as pp >>> system = pp.Opts() >>> excitation = design.SpatialSelectiveExcitation(system, 15.0, 5e-3) >>> kmax = 64 / (2 * 0.22) >>> spoke = np.column_stack([np.linspace(-kmax, kmax, 64), np.zeros(64)]) >>> readout = design.NonCartesianReadout( ... system, excitation.rf, excitation.gz, excitation.gz_reph, ... trajectory=design.Arbitrary(system, spoke, matrix=64), ... ) >>> int(readout.adc.num_samples) 64
A single spoke supplied as an
Arbitrarytrajectory, played in the block layout the readout lays out around it:
Methods
Block layout of one arm, as the module built it. |
|
Build the module's block layout; implemented by the subclass. |
|
Publish events from the caller's locals and register keyword aliases. |
|
Publish named events without requiring prior block registration. |
Attributes