KSFoundation  [October2024]
A platform for structured EPIC programming on GE MR systems
KS_READWAVE Struct Reference

#include <KSFoundation.h>

Data Fields

KS_WAVE grad
 
KS_WAVE omega
 
KS_READ acq
 
int delay
 
int acqdelay
 
float freqoffHz
 
float fov
 
int res
 
int nover
 
float area2center
 
int time2center
 
int omega_iwave_phase_at_echo
 
KS_WAVEFORM grad_states [KS_READCONTROL_MAXSTATE]
 
KS_WAVEFORM omega_states [KS_READCONTROL_MAXSTATE]
 

Detailed Description

Composite sequence object for data readout during a wave (1-D resampling)

KS_READWAVE is a composite sequence object used to read out data while a wave is played out. The KS_READWAVE object is set up by calling ks_eval_readwave(), but before calling this function, the following fields in KS_READWAVE must be set up:

  1. .fov: Desired image Field-of-View (FOV) in [mm] along the sequence board one intends to place the KS_READWAVE on (typically XGRAD)
  2. .res: Number of pixels within the FOV
  3. .acq.rbw: Receiver bandwidth (rBW) in [kHz/FOV]. Maximum is 250
  4. .nover: Number of overscans. If 0, a full echo will be generated (filling k-space). If > 0, fractional echo (i.e. shorter TE) will be set up with .nover number of extra sample points beyond .res/2. The total number of samples will be .res/2 + .nover. Values of .nover between 1 and about 16 should be avoided since half Fourier reconstruction methods will likely have difficulties
  5. .freqoffHz: Static offset frequency in Hz. Can be used to e.g. center fat instead of water

If the KS_READWAVE object is initialized with KS_INIT_READWAVE, all input fields are set to 0

Based on the information in the KS_READWAVE object, ks_eval_readwave() will set up its .grad trapezoid (KS_WAVE) and its acquisition window .acq (KS_READ). The ks_eval_readwave() function takes in a KS_WAVE object called acq_waves and appends crushers on either side. It therefore automatically populates the acqdelay field as this value is only known once the "crushers" have been evaluated.

A function ks_eval_readwave_multistated is also available if you want to switch out the readout waveforms during the scan. This function makes use of wavestates to evaluate the readout gradient for an array of acquisition windows (acq_waves). Wavestates are more efficient than wave2hw.

An omega wave is always generated for KS_READWAVE objects to enable field of view offsets (ks_scan_offsetfov_iso_readwave) even when the bandwidth changes throughout the readout. The KS_READWAVE only supports 1-D resampling at the moment, for a 2-D (spiral) or 3-D extension you can use this as starting point.

Be aware that this readout type is not compatible with GE's online recon. In order to perform the resampling you need to interpret the acq_waves.bin file that is generated with ks_print_acqwaves and perform resampling in your custom recon.

It is a requirement that there is a (sequence generating) function in the @pg section (containing the ks_pg_readwave() call(s)) that can be run on both HOST and TGT. This function should be called once in cveval() (after ks_eval_readwave() and other ks_eval_***() functions). ks_pg_readwave() will throw an error on TGT if this has not been done.

Field Documentation

◆ grad

KS_WAVE grad

◆ omega

KS_WAVE omega

◆ acq

KS_READ acq

◆ delay

int delay

◆ acqdelay

int acqdelay

◆ freqoffHz

float freqoffHz

0 [default]: Static frequency offset in [Hz] that is to be added to the FOV dependent frequency offset (c.f. ks_scan_offsetfov_readwave())

◆ fov

float fov

◆ res

int res

◆ nover

int nover

0 [default]: Full Fourier imaging (full k-space), >0: Partial Fourier (in freq.dir.).

◆ area2center

float area2center

Gradient area until center of k-space (for the first echo if there are multiple echos)

◆ time2center

int time2center

◆ omega_iwave_phase_at_echo

int omega_iwave_phase_at_echo

used for offset field of view

◆ grad_states

◆ omega_states


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