PARSER_ARGS = "args"  # tag to save argument parser results

EXPERIMENT_TYPE = "experiment_type"
HYPER_PARAMETER_TUNING_EXPERIMENT = "hyper_parameter_tuning"

ALGORITHM = "algorithm"
ALGORITHM_NAME = "algorithm_name"  # a name that may also include concrete parameter settings
KERNEL = "kernel"
DATASET = "dataset"
ENVIRONMENT = "env"
ENV_CPUS = "cpus"
ENV_PROC = "processor"
SEED = "seed"
SN2 = "sn2"
NODE_NAME = "node_name"
CLIP = "clip"

STEP = "STEP"
SETUP_TIME = "SETUP_TIME"
SETUP_TIME_WC = "SETUP_TIME_WC"
STEP_TIME = "STEP_TIME"
STEP_TIME_WC = "STEP_TIME_WC"
LOSS_TIME = "LOSS_TIME"
LOSS_TIME_WC = "LOSS_TIME_WC"
LOSS_TIME_PS = "LOSS_TIME_PS"  # process time (cumulative time in all threads)
PREDICTION_TIME = "PREDICTION_TIME"
PREDICTION_TIME_WC = "PREDICTION_TIME_WC"
PREDICTION_TIME_PS = "PREDICTION_TIME_PS"
GRAD_TIME = "GRAD_TIME"
GRAD_TIME_WC = "GRAD_TIME_WC"
GRAD_TIME_PS = "GRAD_TIME_PS"
PARAMETERS = "parameters"  # prefix of the dictionary saved for parameters in step s
EXACT_LOG_DET = "EXACT_LOG_DET"
EXACT_QUAD = "EXACT_QUAD"
OPTIMIZATION_MSG = "OPTIMIZATION_MSG"
KL_CURR_FINAL = "KL_CURR_FINAL"
KL_FINAL_CURR = "KL_FINAL_CURR"
RMSE = "RMSE"
NLPD = "NLPD"
NLPDfixed = "NLPDfixed"  # there was an issure recording NLPD
APPROXIMATE_LOSS = "APPROXIMATE_LOSS"
EXACT_LOSS = "EXACT_LOSS"
LOG_DET_ESTIMATE = "LOG_DET_ESTIMATE"
EXACT_SOLUTIONS = "EXACT_SOLUTIONS"
TEMP_VALUES = "TEMP_VALUES"
BLOCK_SIZE = "BLOCK_SIZE"
INITIAL_BLOCK_SIZE = "INITIAL_BLOCK_SIZE"
TEMP = "TEMP"
DIAGONAL = "DIAGONAL"
OFFDIAGONAL = "OFFDIAGONAL"
EQSOL = "EQSOL"

U_DET = "U_DET"
L_DET = "L_DET"
U_QUAD = "U_QUAD"
L_QUAD = "L_QUAD"
EXTRA_TIME = "EXTRA_TIME"
