acquire#
- pulserver.virtual.acquire()[source]#
Return the samples the cache beside a sequence file acquires of a phantom.
One
(coils, samples)complex64 array per readout, in play order, of the phantom as it lies in the physical frame, sampled along thetrajectory()the cache plays under the prescription’srotationand multiplied byexp(i theta), where the receiver phasethetais the ADC phase offset at the ADC’s start, advancing at its frequency offset, as the playout demodulates. The cache carries no ADC phase modulation; the reconstruction proxy applies it.Each chemical shift of the phantom precesses at its frequency from the scanner’s centre frequency: the shift resolved at the field
field_t, in T, with pypulseqpp’s default gamma, plusoff_resonance_hz. It accrues its phase from each excitation and a refocusing pulse negates what it has accrued. Excitation and refocusing pulses act ideally and on every shift alike; a saturation pulse scales the longitudinal magnetization of each shift by the z component the pulse the cache plays leaves at that frequency, inpypulseqpp.sim_bloch, and the next excitation tips what remains. No other pulse acts, and a readout before the first excitation of its file acquires zeros. The signal model is that of The virtual scanner.- Raises:
ValueError – If the phantom has a chemical shift and
field_tis not given, or a saturation pulse plays under a gradient.