Phase encoding plan for the sequence (2D and 3D)
This struct is used in KS_PHASEENCODING_PLAN
num_shots
Number of times the sequence is played out (shots over ky and kz). Without parallel imaging, this should typically be Nky x Nkz / etl for 3D and Nky / etl for 2D
etl
Number of acquisition windows per sequence playout (echo train length)
entries
Array of KS_PHASEENCODING_COORD
coordinates with num_shots
* etl
entries. See ks_phaseencoding_resize()
phaser
Pointer to the sequence's KS_PHASER for the first phase encoding direction (YGRAD). This allows gradient amplitude changes via the KS_PHASEENCODING_PLAN
alone during scan, as well as aiding in generating interative HTML plotting
zphaser
Pointer to the sequence's KS_PHASER for the second phase encoding direction (ZGRAD)
is_cleared_on_tgt
(Internal use) Semafor to incicate that memory pointers needs to be reset on TGT (IPG) for entries, phaser, zphaser
Creating a phase encoding plans may be done with ks_phaseencoding_generate_simple(), ks_phaseencoding_generate_simple_ellipse(), ks_phaseencoding_generate_2Dfse(), ks_phaseencoding_generate_epi() or a sequence specific function, depending on the situation.
It is critically important that generation of the plan is performed in ks***_pg() (in section @pg) and called both on HOST and TGT (IPG). For ksfse.e, ksepi.e and ksgre.e, the phase encoding plan is generated in ksfse_pg(), ksepi_pg(), and ksgre_pg() respectively. On HOST ks***_pg() is called in cveval() (or my_cveval()) everytime the UI or a CV is changed, and with a correctly set up KS_PHASEENCODING_PLAN on HOST, the host plotting routines and dry-running of the scan for TR timing and scan clock will be correct. On TGT, the .entries field will be re-populated as ks***_pg() is called again.
For pulse sequences with only one echo, or where the same [ky,kz] coordinate is used for all ETL, ks_phaseencoding_generate_simple() and ks_phaseencoding_generate_simple_ellipse() should suffice. For 2D FSE (and trivial 3D FSE), ks_phaseencoding_generate_2Dfse() can be used (such as in ksfse.e). For more advanced trajectories, similar to GE's CUBE sequence or Compressed Sensing, functions generating these plans are currently not ready (Sept 2018).