KSFoundation  [April-2021]
A platform for simpler EPIC programming on GE MR systems
ksfse_implementation.e File Reference

Data Structures

struct  KSFSE_SEQUENCE
 

Macros

#define KSFSE_MINHNOVER   6
 
#define KSFSE_MIN_SSI_TIME   200
 
#define KSFSE_MAXTHICKFACT   3.0
 
#define KSFSE_INIT_SEQUENCE   {KS_INIT_SEQ_CONTROL, KS_INIT_READTRAP, KS_INIT_TRAP, KS_INIT_PHASER, KS_INIT_PHASER, KS_INIT_TRAP, KS_INIT_SELRF, KS_INIT_SELRF, KS_INIT_SELRF, KS_INIT_SELRF, KS_INIT_SELRF, KS_INIT_SELRF, KS_INIT_PHASEENCODING_PLAN};
 

Enumerations

enum  { KSFSE_RECOVERY_OFF, KSFSE_RECOVERY_T1WOPT, KSFSE_RECOVERY_FAST }
 

Functions

 abstract ("FSE [KSFoundation]")
 
 psdname ("ksfse")
 
void ksfse_eval_TEmenu (int esp, int maxte, int etl, double optechono)
 
STATUS ksfse_calc_echo (double *bestecho, double *optecho, KS_PHASER *pe, int TE, int etl, int esp)
 
STATUS ksfse_pg (int start_time)
 
int ksfse_scan_coreslice (const SCAN_INFO *slice_pos, int dabslice, int shot, int exc)
 
int ksfse_scan_coreslice_nargs (const SCAN_INFO *slice_pos, int dabslice, int nargs, void **args)
 
int ksfse_scan_sliceloop (int slperpass, int passindx, int shot, int exc)
 
int ksfse_scan_sliceloop_nargs (int slperpass, int nargs, void **args)
 
float ksfse_scan_acqloop (int passindx)
 
float ksfse_scan_scanloop ()
 
STATUS ksfse_scan_seqstate (SCAN_INFO slice_info, int shot)
 
void ksfse_init_imagingoptions (void)
 
STATUS ksfse_init_UI (void)
 
STATUS ksfse_eval_UI ()
 
int ksfse_eval_esp (int *min90_180, int *min180_echo, int slicecheck, KSFSE_SEQUENCE *seq)
 
int ksfse_eval_optimalkxnover (KSFSE_SEQUENCE *seq)
 
float ksfse_eval_rfstretchfactor (float patientweight, float flipangle, int tailoredrf_flag)
 
STATUS ksfse_eval_setuprfpulses_2D (KSFSE_SEQUENCE *seq)
 
STATUS ksfse_eval_setuprfpulses_3D (KSFSE_SEQUENCE *seq)
 
STATUS ksfse_eval_setuprfpulses_recovery (KSFSE_SEQUENCE *seq)
 
int ksfse_eval_ssitime ()
 
STATUS ksfse_eval_setupobjects ()
 
STATUS ksfse_eval_TErange ()
 
STATUS ksfse_eval_inversion (KS_SEQ_COLLECTION *seqcollection)
 
STATUS ksfse_eval_tr (KS_SEQ_COLLECTION *seqcollection)
 
STATUS ksfse_eval_scantime ()
 
STATUS ksfse_check ()
 
STATUS ksfse_predownload_plot (KS_SEQ_COLLECTION *seqcollection)
 
STATUS ksfse_predownload_setrecon ()
 
STATUS ksfse_etlphaseamps (KS_PHASEENCODING_PLAN *phaseenc_plan_ptr, KS_PHASER *phaser, KS_PHASER *zphaser, int shot)
 
void ksfse_spoilamp (KS_PHASEENCODING_PLAN *phaseenc_plan_ptr, KS_TRAP *spoiler, int res, int shot)
 
void ksfse_scan_rf_off ()
 
void ksfse_scan_rf_on ()
 
STATUS ksfse_scan_init (void)
 
STATUS ksfse_scan_prescanloop (int nloops, int dda)
 

Variables

float ksfse_excthickness = 0
 
float ksfse_gscalerfexc = 0.9
 
float ksfse_flipexc = 90.0 with {0.0, 180.0, 90.0, VIS, "Excitation flip angle [deg]",}
 
float ksfse_spoilerarea = 2000.0 with {0.0, 20000.0, 5000.0, VIS, "ksfse spoiler gradient area",}
 
float rf_stretch_rfexc = 1.0 with {0.01, 100.0, 1.0, VIS, "Stretch RF excitation pulse if > 1.0",}
 
int ksfse_inflowsuppression = 0 with {0, 1, 0, VIS, "In-flow Suppression [0:OFF, 1:ON]",}
 
float ksfse_inflowsuppression_mm = 0.0 with {0.0, 100.0, 0.0, VIS, "In-flow suppression [mm]",}
 
int ksfse_vfa = 1 with {0, 1, 1, VIS, "Variable flip angles [0:OFF, 1:ON]",}
 
float ksfse_crusherscale = 0.5 with {0.0, 20.0, 0.5, VIS, "scaling of crusher gradient area",}
 
float ksfse_gscalerfref = 0.9
 
int ksfse_slicecheck = 0 with {0, 1, 0, VIS, "move readout to z axis for slice thickness test",}
 
float rf_stretch_rfref = 1.0 with {0.01, 100.0, 1.0, VIS, "Stretch RF refocusing pulses if > 1.0",}
 
float rf_stretch_all = 1.0 with {0.01, 100.0, 1.0, VIS, "Stretch all RF pulses if > 1.0",}
 
int ksfse_recovery = KSFSE_RECOVERY_OFF with {KSFSE_RECOVERY_OFF, KSFSE_RECOVERY_FAST, KSFSE_RECOVERY_OFF, VIS, "Recovery. 0:off 1:T1wopt 2:T2fast", }
 
float rf_stretch_rfrecovery = 1.0 with {0.01, 100.0, 1.0, VIS, "Stretch RF recovery pulses if > 1.0",}
 
int ksfse_kxnover_min = KSFSE_MINHNOVER with {KSFSE_MINHNOVER, 512, KSFSE_MINHNOVER, VIS, "Min mum kx overscans for minTE",}
 
int ksfse_kxnover = 32 with {KSFSE_MINHNOVER, 512, 32, VIS, "Num kx overscans for minTE",}
 
int ksfse_rampsampling = 0 with {0, 1, 0, VIS, "Rampsampling [0:OFF 1:ON]",}
 
int ksfse_extragap = 0 with {0, 100ms, 0, VIS, "extra gap between readout [us]",}
 
int ksfse_etlte = 1 with {0, 1, 1, VIS, "ETL controls TE",}
 
float ksfse_xcrusherarea = 100.0 with {0.0, 1000.0, 100.0, VIS, "x crusher area for readout",}
 
int ksfse_esp = 0 with {0, 1000000, 0, VIS, "View-only: Echo spacing in [us]",}
 
int ksfse_noph = 0 with {0, 1, 0, VIS, "Turn OFF phase encoding [0:Disabled 1:Enabled]",}
 
int ksfse_minacslines = 12 with {0, 512, 12, VIS, "Minimum ACS lines for ARC",}
 
int ksfse_minzacslines = 12 with {0, 512, 12, VIS, "Minimum z ACS lines for ARC",}
 
int ksfse_pos_start = KS_RFSSP_PRETIME with {0, , KS_RFSSP_PRETIME, VIS, "us from start until the first waveform begins",}
 
int ksfse_ssi_time = KSFSE_MIN_SSI_TIME with {50, , KSFSE_MIN_SSI_TIME, VIS, "time from eos to ssi in intern trig",}
 
int ksfse_dda = 2 with {0, 200, 2, VIS, "Number of dummy scans for steady state",}
 
int ksfse_debug = 1 with {0, 100, 1, VIS, "Write out e.g. plot files (unless scan on HW)",}
 
int ksfse_imsize = KS_IMSIZE_NATIVE with {KS_IMSIZE_NATIVE, KS_IMSIZE_MIN256, KS_IMSIZE_MIN256, VIS, "img. upsamp. [0:native 1:pow2 2:min256]"}
 
int ksfse_abort_on_kserror = FALSE with {0, 1, 0, VIS, "Hard program abort on ks_error [0:OFF 1:ON]",}
 
int ksfse_mintr = 0 with {0, 20s, 0, VIS, "Min TR (ms) [0: Disabled]",}
 
int ksfse_maxtr = 0 with {0, 40s, 0, VIS, "Max TR (ms) [0: Disabled]",}
 
KSFSE_SEQUENCE ksfse = KSFSE_INIT_SEQUENCE
 
int sequence_iopts []
 
int volindx
 
int passindx
 

Detailed Description

This file contains the implementation details for the ksfse psd.