KSFoundation  [April-2021]
A platform for simpler EPIC programming on GE MR systems
KS_PHASEENCODING_PLAN Struct Reference

#include <KSFoundation.h>

Data Fields

int num_shots
 
int etl
 
KS_DESCRIPTION description
 
KS_PHASEENCODING_COORDentries
 
const KS_PHASERphaser
 
const KS_PHASERzphaser
 
int is_cleared_on_tgt
 

Detailed Description

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

Field Documentation

◆ num_shots

int num_shots

◆ etl

int etl

◆ description

KS_DESCRIPTION description

Descriptive string for the KS_PHASEENCODING_PLAN object with maximum KS_DESCRIPTION_LENGTH characters

◆ entries

◆ phaser

const KS_PHASER* phaser

◆ zphaser

const KS_PHASER* zphaser

◆ is_cleared_on_tgt

int is_cleared_on_tgt

The documentation for this struct was generated from the following file: