Data Structures | |
struct | KSDIXON_DESIGN |
struct | KSDIXON_READTRAP |
struct | KSDIXON_DUALREADTRAP |
struct | KSDIXON_STATE |
Macros | |
#define | KSDIXON_MAX_POINTS 2 /* Maximum number of chemical shift encodes */ |
#define | KSDIXON_UPDATE_UI(dixon_mode, kdesign, ks_op_dixon_mode, ks_op_dixon_tr_mode, ks_op_dixon_shift) ksdixon_update_UI(dixon_mode, kdesign, KS_EXPAND_OPUSER(ks_op_dixon_mode), KS_EXPAND_OPUSER(ks_op_dixon_tr_mode), KS_EXPAND_OPUSER(ks_op_dixon_shift)) |
#define | KSDIXON_INIT_UI(rbw, xres, fov, ks_op_dixon_mode, ks_op_dixon_tr_mode, ks_op_dixon_shift) ksdixon_init_UI(rbw, xres, fov, KS_EXPAND_OPUSER(ks_op_dixon_mode), KS_EXPAND_OPUSER(ks_op_dixon_tr_mode), KS_EXPAND_OPUSER(ks_op_dixon_shift)) |
#define | KSDIXON_SETUP(dixon_settings, ks_op_dixon_mode, ks_op_dixon_tr_mode, ks_op_dixon_shift) ksdixon_setup(dixon_settings, KS_EXPAND_OPUSER(ks_op_dixon_mode), KS_EXPAND_OPUSER(ks_op_dixon_tr_mode), KS_EXPAND_OPUSER(ks_op_dixon_shift)); |
#define | KSDIXON_MODE_DESCR "Dixon [1=shift, 2=dBW, 3=spl, 4=invrmp, 5=triptr, 6=dBWs}" |
#define | KSDIXON_MODE_NUM_MODES 7 |
#define | KSDIXON_TR_MODE_DESCR "TR [0:single 1:multi]" |
#define | KSDIXON_SHIFT_DEFAULT (30000.0/(float)cffield * 1000) |
#define | KSDIXON_SHIFT_DESC "Shift [us]" |
#define | KSDIXON_INIT_DESIGN {KSDIXON_OFF, 1, KS_INITVALUE(KSDIXON_MAX_POINTS,0), KS_NOTSET, 1.0, KS_NOTSET, KS_NOTSET, KS_NOTSET, KS_NOTSET, KS_NOTSET, KS_NOTSET, KSDIXON_SINGLE_TR} |
#define | KSDIXON_INIT_READTRAP {KS_INITVALUE(4,0.0), KS_INITVALUE(4,0.0)} |
#define | KSDIXON_INIT_DUALREADTRAP {KSDIXON_INIT_READTRAP, KSDIXON_INIT_READTRAP, 0.0, 0.0, 0} |
#define | KSDIXON_INIT_STATE {KS_INITVALUE(3, KS_NOTSET), KS_INITVALUE(KSDIXON_MAX_POINTS,0), 0} |
Enumerations | |
enum | KSDIXON_MODE { KSDIXON_OFF = 0, KSDIXON_SHIFTED = 1, KSDIXON_DBW = 2, KSDIXON_ASYM_SPLINE = 3, KSDIXON_ASYM_INVRAMP = 4, KSDIXON_TRIP_TRAP = 5, KSDIXON_DBW_STAGGERED = 6 } |
enum | KSDIXON_TR_MODE { KSDIXON_SINGLE_TR = 0, KSDIXON_MULTI_TR = 1 } |
Functions | |
float | ksdixon_calc_dephasing_period () |
float | ksdixon_calc_nsa (float t1, float t2, float var1, float var2, float dephasing_period) |
int | ksdixon_max_shift (KSDIXON_MODE mode, int duration, float xres, float fov) |
STATUS | ksdixon_dbw_time2echo_hbw (float *time2echo, const float *const t, const float *const G, const float area2echo) |
STATUS | ksdixon_dbw_time2echo_lbw (float *time2echo, const float *const t, const float *const G, const float area2echo) |
STATUS | ksdixon_time2echo_from_readtrap (float *time2echo, KSDIXON_READTRAP *readtrap, float area2echo) |
STATUS | ksdixon_dualreadtrap_eval_shifts (KSDIXON_DUALREADTRAP *dualreadtrap, float area2echo, float shift_at_acq_start, float deadtime) |
STATUS | ksdixon_eval_acq_trap (KSDIXON_READTRAP *readtrap, int acq_duration, float sample_area, float max_start_amp, float sampling_threshold_amp, float slew, float amp_limit) |
STATUS | ksdixon_eval_dualreadtrap (KSDIXON_DUALREADTRAP *dualreadtrap, int acq_duration1, int acq_duration2, float sample_area, float max_start_end_amp, float sampling_threshold_amp) |
STATUS | ksdixon_eval_gre_dBW_acq_waves (KS_WAVE *wave1, KS_WAVE *wave2, int *shift1, int *shift2, int *nover, int acq_start_time, float sampling_threshold_amp, int min_nover, int fov, int res, KS_DESCRIPTION desc) |
STATUS | ksdixon_eval_gre_dualBW_readwave (KS_READWAVE *readwave1, KS_READWAVE *readwave2, const KS_KSPACE_DESIGN *kdesign, KSDIXON_DESIGN *dixon, const int acq_start_time, KS_DESCRIPTION desc) |
STATUS | ksdixon_eval_asym_spline_acq_wave (KS_WAVE *wave, int shift, int duration, float area, KS_DESCRIPTION desc) |
STATUS | ksdixon_eval_trip_trap_acq_points (float *t, float *G, int shift, int duration, float area, float Mc, float g1, float s) |
float | ksdixon_dbw_ramptime (const float dur, const float sample_area, const float slewrate) |
STATUS | ksdixon_eval_dbw_acq_waves (KS_WAVE *lbw_wave, KS_WAVE *hbw_wave, int *lbw_cse, int *hbw_cse, float *pf, const float min_pf, const int duration, const float area_without_pf, KS_DESCRIPTION desc) |
STATUS | ksdixon_eval_flat_acq_wave (KS_WAVE *wave, int duration, float area, KS_DESCRIPTION desc) |
STATUS | ksdixon_eval_inverted_ramp_acq_wave (KS_WAVE *wave, int shift, int duration, float area, KS_DESCRIPTION desc) |
STATUS | ksdixon_eval_trip_trap_acq_wave (KS_WAVE *wave, int shift, int duration, float area, KS_DESCRIPTION desc) |
float | ksdixon_amp_limit (float board_amp_limit, float fov) |
STATUS | ksdixon_eval_inverted_ramps (KS_WAVE *acq_waves, int *shifts, int points, const KS_KSPACE_DESIGN *kdesign, KS_DESCRIPTION desc) |
STATUS | ksdixon_eval_inverted_ramp_acq_points (float *t, float *G, int shift, int duration, float area, float s, float amp_limit) |
void | ksdixon_init_settings (KSDIXON_DESIGN *const dixon) |
STATUS | ksdixon_setup (KSDIXON_DESIGN *pdixon, const int opnum_dixon_mode, _cvfloat *_opuser_dixon_mode, const int opnum_dixon_tr_mode, _cvfloat *_opuser_dixon_tr_mode, const int opnum_dixon_shift, _cvfloat *_opuser_dixon_shift) |
STATUS | ksdixon_eval_validate_settings (const KSDIXON_DESIGN *dixon) |
void | ksdixon_update_UI (const KSDIXON_MODE dixon_mode, const KS_KSPACE_DESIGN *const kdesign, const int opnum_dixon_mode, _cvfloat *_opuser_dixon_mode, const int opnum_dixon_tr_mode, _cvfloat *_opuser_dixon_tr_mode, const int opnum_dixon_shift, _cvfloat *_opuser_dixon_shift) |
void | ksdixon_init_UI (float rbw, int xres, float fov, const int opnum_dixon_mode, _cvfloat *_opuser_dixon_mode, const int opnum_dixon_tr_mode, _cvfloat *_opuser_dixon_tr_mode, const int opnum_dixon_shift, _cvfloat *_opuser_dixon_shift) |
STATUS | ksdixon_eval_setup_gre_readouts (KS_ECHOTRAIN *echotrain, KSDIXON_DESIGN *dixon, const KS_KSPACE_DESIGN *kdesign, const int acq_start_time, const int TR_index, KS_DESCRIPTION desc) |
STATUS | ksdixon_set_design (KSDIXON_DESIGN *const dixon_design, const KS_KSPACE_DESIGN *const kdesign) |
STATUS | ksdixon_setup_fse_echotrain (KS_ECHOTRAIN_DESIGN *const echotrain_design, KSDIXON_STATE *const dixon_state, const KSDIXON_DESIGN *const dixon_design, const int ETL, float xcrusher_area, const KS_DESCRIPTION description) |
STATUS | ksdixon_eval_trip_traps (KS_WAVE *acq_waves, int *shifts, int points, const KS_KSPACE_DESIGN *kdesign, KS_DESCRIPTION desc) |
Variables | |
int | piuset |
#define KSDIXON_MAX_POINTS 2 /* Maximum number of chemical shift encodes */ |
#define KSDIXON_UPDATE_UI | ( | dixon_mode, | |
kdesign, | |||
ks_op_dixon_mode, | |||
ks_op_dixon_tr_mode, | |||
ks_op_dixon_shift | |||
) | ksdixon_update_UI(dixon_mode, kdesign, KS_EXPAND_OPUSER(ks_op_dixon_mode), KS_EXPAND_OPUSER(ks_op_dixon_tr_mode), KS_EXPAND_OPUSER(ks_op_dixon_shift)) |
Macro that calls ksdixon_update_UI. Currently not used. The idea is to update dixon opusers according to kdesign and dixon_mode.
#define KSDIXON_INIT_UI | ( | rbw, | |
xres, | |||
fov, | |||
ks_op_dixon_mode, | |||
ks_op_dixon_tr_mode, | |||
ks_op_dixon_shift | |||
) | ksdixon_init_UI(rbw, xres, fov, KS_EXPAND_OPUSER(ks_op_dixon_mode), KS_EXPAND_OPUSER(ks_op_dixon_tr_mode), KS_EXPAND_OPUSER(ks_op_dixon_shift)) |
Macro that calls ksdixon_init_UI. The purpose of these macros is to directly pass the opuser number rather than the full cv (the macro does the expansion for you). For instance:
In implementation e file
[in] | rbw | Readout bandwidth (oprbw) |
[in] | xres | Number of readout samples prescribed (opxres) |
[in] | fov | Readout FOV (opfov) [mm] |
[in] | ks_op_dixon_mode | opuser number for selecting dixon mode (e.g. 17 for opuser17) |
[in] | ks_op_dixon_tr_mode | opuser number for selecting dixon TR mode (multi/single TR) |
[in] | ks_op_dixon_shift | opuser number for selecting dixon cse (shift in us) |
#define KSDIXON_SETUP | ( | dixon_settings, | |
ks_op_dixon_mode, | |||
ks_op_dixon_tr_mode, | |||
ks_op_dixon_shift | |||
) | ksdixon_setup(dixon_settings, KS_EXPAND_OPUSER(ks_op_dixon_mode), KS_EXPAND_OPUSER(ks_op_dixon_tr_mode), KS_EXPAND_OPUSER(ks_op_dixon_shift)); |
Macro that calls ksdixon_setup. The purpose of these macros is to directly pass the opuser number rather than the full cv (the macro does the expansion for you). For instance:
In implementation e file
[out] | dixon_settings | - An instance of KSDIXON_DESIGN that will be filled according to the values in the opusers |
[in] | ks_op_dixon_mode | - opuser number for selecting dixon mode (e.g. 17 for opuser17) |
[in] | ks_op_dixon_tr_mode | - opuser number for selecting dixon TR mode (multi/single TR) |
[in] | ks_op_dixon_shift | - opuser number for selecting dixon cse (shift in us) |
STATUS | SUCCESS or FAILURE |
#define KSDIXON_MODE_DESCR "Dixon [1=shift, 2=dBW, 3=spl, 4=invrmp, 5=triptr, 6=dBWs}" |
#define KSDIXON_MODE_NUM_MODES 7 |
#define KSDIXON_TR_MODE_DESCR "TR [0:single 1:multi]" |
#define KSDIXON_SHIFT_DEFAULT (30000.0/(float)cffield * 1000) |
#define KSDIXON_SHIFT_DESC "Shift [us]" |
#define KSDIXON_INIT_DESIGN {KSDIXON_OFF, 1, KS_INITVALUE(KSDIXON_MAX_POINTS,0), KS_NOTSET, 1.0, KS_NOTSET, KS_NOTSET, KS_NOTSET, KS_NOTSET, KS_NOTSET, KS_NOTSET, KSDIXON_SINGLE_TR} |
#define KSDIXON_INIT_READTRAP {KS_INITVALUE(4,0.0), KS_INITVALUE(4,0.0)} |
#define KSDIXON_INIT_DUALREADTRAP {KSDIXON_INIT_READTRAP, KSDIXON_INIT_READTRAP, 0.0, 0.0, 0} |
#define KSDIXON_INIT_STATE {KS_INITVALUE(3, KS_NOTSET), KS_INITVALUE(KSDIXON_MAX_POINTS,0), 0} |
enum KSDIXON_MODE |
Enums for selecting a Dixon mode. This typically changes the readout window but is not restricted to only that.
Enumerator | |
---|---|
KSDIXON_OFF | |
KSDIXON_SHIFTED | |
KSDIXON_DBW | |
KSDIXON_ASYM_SPLINE | |
KSDIXON_ASYM_INVRAMP | |
KSDIXON_TRIP_TRAP | |
KSDIXON_DBW_STAGGERED |
enum KSDIXON_TR_MODE |
float ksdixon_calc_dephasing_period | ( | ) |
cffield
to determine field strength.
float ksdixon_calc_nsa | ( | float | t1, |
float | t2, | ||
float | var1, | ||
float | var2, | ||
float | dephasing_period | ||
) |
Following Eq. 7 in Ryden et al. MRM 84(5):2456-68, 2020 (using noise variance var=1/w^2)
t1 | |
t2 | |
var1 | |
var2 | |
dephasing_period |
int ksdixon_max_shift | ( | KSDIXON_MODE | mode, |
int | duration, | ||
float | xres, | ||
float | fov | ||
) |
[in] | mode | The dixon mode |
[in] | duration | [us] Acq duration |
[in] | xres | Number of samples along x |
[in] | fov | [mm] FOV |
STATUS ksdixon_dbw_time2echo_hbw | ( | float * | time2echo, |
const float *const | t, | ||
const float *const | G, | ||
const float | area2echo | ||
) |
STATUS ksdixon_dbw_time2echo_lbw | ( | float * | time2echo, |
const float *const | t, | ||
const float *const | G, | ||
const float | area2echo | ||
) |
STATUS ksdixon_time2echo_from_readtrap | ( | float * | time2echo, |
KSDIXON_READTRAP * | readtrap, | ||
float | area2echo | ||
) |
[out] | time2echo | [us] |
[in] | readtrap | A readtrap support point struct |
[in] | area2echo | Area required to reach k-space center |
STATUS | SUCCESS or FAILURE |
STATUS ksdixon_dualreadtrap_eval_shifts | ( | KSDIXON_DUALREADTRAP * | dualreadtrap, |
float | area2echo, | ||
float | shift_at_acq_start, | ||
float | deadtime | ||
) |
[out] | dualreadtrap | Will set dualreadtrap->shift1 and dualreadtrap->shift2 |
[in] | area2echo | Area to k-space center |
[in] | shift_at_acq_start | [us] CSE when the acq starts |
[in] | deadtime | [us] Deadtime corresponds to inner ramps where amp is below sampling threshold |
STATUS | SUCCESS or FAILURE |
STATUS ksdixon_eval_acq_trap | ( | KSDIXON_READTRAP * | readtrap, |
int | acq_duration, | ||
float | sample_area, | ||
float | max_start_amp, | ||
float | sampling_threshold_amp, | ||
float | slew, | ||
float | amp_limit | ||
) |
[out] | readtrap | Struct with support points |
[in] | acq_duration | [us] Duration of acquisition window |
[in] | sample_area | Sample area |
[in] | max_start_amp | Maximum amp at the start of acquisition |
[in] | sampling_threshold_amp | Amplitude threshold where sampling is toggled |
[in] | slew | System slew rate |
[in] | amp_limit | System gradient amplitude limit |
STATUS | SUCCESS or FAILURE |
STATUS ksdixon_eval_dualreadtrap | ( | KSDIXON_DUALREADTRAP * | dualreadtrap, |
int | acq_duration1, | ||
int | acq_duration2, | ||
float | sample_area, | ||
float | max_start_end_amp, | ||
float | sampling_threshold_amp | ||
) |
[out] | dualreadtrap | |
[in] | acq_duration1 | [us] Duration of first acquisition |
[in] | acq_duration2 | [us] Duration of second acquisition |
[in] | sample_area | Sample area for one readout. This value must take partial Fourier into account |
[in] | max_start_end_amp | Maximum amp at the start and end of acquisition |
[in] | sampling_threshold_amp | Amplitude threshold where sampling is toggled on/off |
STATUS | SUCCESS or FAILURE |
STATUS ksdixon_eval_gre_dBW_acq_waves | ( | KS_WAVE * | wave1, |
KS_WAVE * | wave2, | ||
int * | shift1, | ||
int * | shift2, | ||
int * | nover, | ||
int | acq_start_time, | ||
float | sampling_threshold_amp, | ||
int | min_nover, | ||
int | fov, | ||
int | res, | ||
KS_DESCRIPTION | desc | ||
) |
[out] | wave1 | Output wave 1 |
[out] | wave2 | Output wave 2 |
[out] | shift1 | CSE for wave 1 |
[out] | shift2 | CSE for wave 2 |
[out] | nover | Partial Fourier |
[in] | acq_start_time | Time when first acquisition is turned on |
[in] | sampling_threshold_amp | Amplitude threshold where sampling is toggled on/off |
[in] | min_nover | Minimum number of samples after k-space center ( partial Fourier ) |
[in] | fov | [mm] |
[in] | res | Number of samples in readout direction (as if no partial Fourier) |
[in] | desc | Description |
STATUS | SUCCESS or FAILURE |
STATUS ksdixon_eval_gre_dualBW_readwave | ( | KS_READWAVE * | readwave1, |
KS_READWAVE * | readwave2, | ||
const KS_KSPACE_DESIGN * | kdesign, | ||
KSDIXON_DESIGN * | dixon, | ||
const int | acq_start_time, | ||
KS_DESCRIPTION | desc | ||
) |
ksdixon_eval_gre_dBW_acq_waves
and generates readwaves[out] | readwave1 | Output readwave 1 |
[out] | readwave2 | Output readwave 2 |
[in] | kdesign | A KS_KSPACE_DESIGN, required to calculate readout areas and nover |
[out] | dixon | A KSDIXON_DESIGN object that gets filled with shifts TODO |
acq_start_time | Time when first acquisition is turned on | |
[in] | desc | Description |
STATUS | SUCCESS or FAILURE |
STATUS ksdixon_eval_asym_spline_acq_wave | ( | KS_WAVE * | wave, |
int | shift, | ||
int | duration, | ||
float | area, | ||
KS_DESCRIPTION | desc | ||
) |
ks_syslimits_ampmax1(loggrd)
)
[out] | wave | Output wave |
[in] | shift | [us] Desired CSE |
[in] | duration | Duration of the acq wave (i.e. sampling duration) |
[in] | area | Sample area |
[in] | desc | Description |
STATUS | SUCCESS or FAILURE |
STATUS ksdixon_eval_trip_trap_acq_points | ( | float * | t, |
float * | G, | ||
int | shift, | ||
int | duration, | ||
float | area, | ||
float | Mc, | ||
float | g1, | ||
float | s | ||
) |
[out] | t | 6 times |
[out] | G | 6 amplitudes |
[in] | shift | Desired CSE |
[in] | duration | Duration (Will equal t[5] - t[0]) |
[in] | area | Required sample area |
[in] | Mc | Mid plateau area |
[in] | g1 | Mid plateau amp |
[in] | s | slewrate |
STATUS | SUCCESS or FAILURE |
float ksdixon_dbw_ramptime | ( | const float | dur, |
const float | sample_area, | ||
const float | slewrate | ||
) |
STATUS ksdixon_eval_dbw_acq_waves | ( | KS_WAVE * | lbw_wave, |
KS_WAVE * | hbw_wave, | ||
int * | lbw_cse, | ||
int * | hbw_cse, | ||
float * | pf, | ||
const float | min_pf, | ||
const int | duration, | ||
const float | area_without_pf, | ||
KS_DESCRIPTION | desc | ||
) |
STATUS ksdixon_eval_flat_acq_wave | ( | KS_WAVE * | wave, |
int | duration, | ||
float | area, | ||
KS_DESCRIPTION | desc | ||
) |
[out] | wave | Acquisition wave |
[in] | duration | Acq duration |
[in] | area | Required sample area |
[in] | desc | Description |
STATUS | SUCCESS or FAILURE |
STATUS ksdixon_eval_inverted_ramp_acq_wave | ( | KS_WAVE * | wave, |
int | shift, | ||
int | duration, | ||
float | area, | ||
KS_DESCRIPTION | desc | ||
) |
ADDDESCHERE
[out] | wave | ADDTEXTHERE |
[in] | shift | ADDTEXTHERE |
[in] | duration | ADDTEXTHERE |
[in] | area | ADDTEXTHERE |
[in] | desc | ADDTEXTHERE |
STATUS | SUCCESS or FAILURE |
STATUS ksdixon_eval_trip_trap_acq_wave | ( | KS_WAVE * | wave, |
int | shift, | ||
int | duration, | ||
float | area, | ||
KS_DESCRIPTION | desc | ||
) |
[out] | wave | Acquisition wave |
[in] | shift | Desired CSE |
[in] | duration | Acq duration |
[in] | area | Required sample area |
[in] | desc | Description |
STATUS | SUCCESS or FAILURE |
float ksdixon_amp_limit | ( | float | board_amp_limit, |
float | fov | ||
) |
[in] | board_amp_limit | [G/cm] Max board amplitude |
[in] | fov | [mm] FOV |
STATUS ksdixon_eval_inverted_ramps | ( | KS_WAVE * | acq_waves, |
int * | shifts, | ||
int | points, | ||
const KS_KSPACE_DESIGN * | kdesign, | ||
KS_DESCRIPTION | desc | ||
) |
STATUS ksdixon_eval_inverted_ramp_acq_points | ( | float * | t, |
float * | G, | ||
int | shift, | ||
int | duration, | ||
float | area, | ||
float | s, | ||
float | amp_limit | ||
) |
[out] | t | 4 times |
[out] | G | 4 amplitudes |
[in] | shift | Desired CSE |
[in] | duration | Duration (Will equal t[3] - t[0]) |
[in] | area | Required sample area |
[in] | s | slewrate |
[in] | amp_limit | Maximum amplitude |
void ksdixon_init_settings | ( | KSDIXON_DESIGN *const | dixon | ) |
STATUS ksdixon_setup | ( | KSDIXON_DESIGN * | pdixon, |
const int | opnum_dixon_mode, | ||
_cvfloat * | _opuser_dixon_mode, | ||
const int | opnum_dixon_tr_mode, | ||
_cvfloat * | _opuser_dixon_tr_mode, | ||
const int | opnum_dixon_shift, | ||
_cvfloat * | _opuser_dixon_shift | ||
) |
Implementation e file
STATUS ksdixon_eval_validate_settings | ( | const KSDIXON_DESIGN * | dixon | ) |
Validates KSDIXON_DESIGN to make sure settings are compatible. Right now it only checks if DBW is in single TR mode.
[in] | dixon | The settings |
STATUS | SUCCESS or FAILURE |
void ksdixon_update_UI | ( | const KSDIXON_MODE | dixon_mode, |
const KS_KSPACE_DESIGN *const | kdesign, | ||
const int | opnum_dixon_mode, | ||
_cvfloat * | _opuser_dixon_mode, | ||
const int | opnum_dixon_tr_mode, | ||
_cvfloat * | _opuser_dixon_tr_mode, | ||
const int | opnum_dixon_shift, | ||
_cvfloat * | _opuser_dixon_shift | ||
) |
Currently not used. The idea is to update dixon opusers according to kdesign and dixon_mode.
void ksdixon_init_UI | ( | float | rbw, |
int | xres, | ||
float | fov, | ||
const int | opnum_dixon_mode, | ||
_cvfloat * | _opuser_dixon_mode, | ||
const int | opnum_dixon_tr_mode, | ||
_cvfloat * | _opuser_dixon_tr_mode, | ||
const int | opnum_dixon_shift, | ||
_cvfloat * | _opuser_dixon_shift | ||
) |
See documentation for macro KSDIXON_INIT_UI.
STATUS ksdixon_eval_setup_gre_readouts | ( | KS_ECHOTRAIN * | echotrain, |
KSDIXON_DESIGN * | dixon, | ||
const KS_KSPACE_DESIGN * | kdesign, | ||
const int | acq_start_time, | ||
const int | TR_index, | ||
KS_DESCRIPTION | desc | ||
) |
[out] | echotrain | Pointer to a KS_ECHOTRAIN, which keeps track of states and what to pulsegen |
[in,out] | dixon | Dixon settings |
[in] | kdesign | K-space deisng |
[in] | acq_start_time | Time when first acquisition is turned on |
[in] | TR_index | TR index for multi-TR support (currently not used as only DBW is supported) |
[in] | desc | Description |
STATUS | SUCCESS or FAILURE |
STATUS ksdixon_set_design | ( | KSDIXON_DESIGN *const | dixon_design, |
const KS_KSPACE_DESIGN *const | kdesign | ||
) |
ADDDESCHERE
dixon_design | ADDTEXTHERE |
kdesign | ADDTEXTHERE |
STATUS | SUCCESS or FAILURE |
STATUS ksdixon_setup_fse_echotrain | ( | KS_ECHOTRAIN_DESIGN *const | echotrain_design, |
KSDIXON_STATE *const | dixon_state, | ||
const KSDIXON_DESIGN *const | dixon_design, | ||
const int | ETL, | ||
float | xcrusher_area, | ||
const KS_DESCRIPTION | description | ||
) |
ADDDESCHERE
echotrain_design | ADDTEXTHERE | |
dixon_state | ADDTEXTHERE | |
dixon_design | ADDTEXTHERE | |
[in] | ETL | ADDTEXTHERE |
[in] | xcrusher_area | ADDTEXTHERE |
[in] | description | ADDTEXTHERE |
STATUS | SUCCESS or FAILURE |
STATUS ksdixon_eval_trip_traps | ( | KS_WAVE * | acq_waves, |
int * | shifts, | ||
int | points, | ||
const KS_KSPACE_DESIGN * | kdesign, | ||
KS_DESCRIPTION | desc | ||
) |
points
readwaves, each has PWL3 acq waveform and trapezoidal crushers[out] | acq_waves | Output readwaves. Array with points elements must be allocated before |
[in] | shifts | [us] Array of CSE |
[in] | points | Number of readwaves to generate |
[in] | kdesign | A KS_KSPACE_DESIGN, required to calculate sample area and acq duration |
[in] | desc | Description |
STATUS | SUCCESS or FAILURE |
int piuset |