KEY_NAME = 'name'
KEY_PARAMS = 'parameters'
KEY_REPS = 'repetitions'
KEY_SEQ = 'sequentialRunOrder'
KEY_MEASURE = 'measurements'
KEY_ALL_STEPS = 'runMetricsEveryStep'
KEY_OUTP_COND = 'runMetricsCondition'
KEY_PRE_EXP = 'preExperiment'
KEY_SETUP = 'setup'
KEY_GO = 'go'
KEY_STOP_COND = 'exitCondition'
KEY_POST_RUN = 'postRun'
KEY_POST_EXP = 'postExperiment'
KEY_LIMIT = 'timeLimit'


def empty_exp_descriptor():
    result = {}
    result[KEY_NAME] = ''
    result[KEY_PARAMS] = []
    result[KEY_REPS] = ''
    result[KEY_SEQ] = ''
    result[KEY_MEASURE] = []
    result[KEY_ALL_STEPS] = ''
    result[KEY_OUTP_COND] = []
    result[KEY_PRE_EXP] = []
    result[KEY_SETUP] = []
    result[KEY_GO] = []
    result[KEY_STOP_COND] = []
    result[KEY_POST_RUN] = []
    result[KEY_POST_EXP] = []
    result[KEY_LIMIT] = ''
    return result


def representation_table():
    result = {}
    result[KEY_NAME] = 'Experiment name'
    result[KEY_PARAMS] = 'Vary variables as follows'
    result[KEY_REPS] = 'Repetitions'
    result[KEY_SEQ] = 'Execute combinations in sequential order'
    result[KEY_MEASURE] = 'Measure runs using these reporters as metrics'
    result[KEY_ALL_STEPS] = 'Run metrics every step'
    result[KEY_OUTP_COND] = 'Run metrics when'
    result[KEY_PRE_EXP] = 'Pre experiment commands'
    result[KEY_SETUP] = 'Setup commands'
    result[KEY_GO] = 'Go commands'
    result[KEY_STOP_COND] = 'Stop condition'
    result[KEY_POST_RUN] = 'Post run commands'
    result[KEY_POST_EXP] = 'Post experiment commands'
    result[KEY_LIMIT] = 'Time limit'
    return result
