simulate

Contents

simulate#

pulserver.virtual.simulate()[source]#

Return what each coil receives at every ADC sample the cache beside a sequence file plays on isochromats.

One (coils, samples) complex64 array per readout, in play order, demodulated. The blocks the cache plays (pulserver.ir.playout()) advance the magnetization of isochromats, whose positions are along the physical axes, from where it stands, across the files of a chain as one scan. Each block’s gradients, its own rotation in them, are turned by the prescription’s rotation from logical to physical axes, a reflection included, except in blocks labelled NOROT. Its RF pulse and ADC play as Isochromats.play() plays RF and ADC events, with the frequency and phase offsets the playout sets. With default_shim, the channel weights of a coil of several transmit channels, a single-channel pulse plays on every channel, weighted by its block’s RF shim or, without one, by default_shim.

Runs of repetitions of blocks that differ only in their phase offsets, phase encodings and turned readouts play from each isochromat’s map over one repetition, as Isochromats.repetitions() plays them to within tolerance; at zero, their samples are those of the blocks played one by one, to rounding. Isochromats that move or diffuse play every block one by one. The other blocks read their ADC windows as Isochromats.play() reads them to within tolerance.

The virtual scanner states the signal model.