TOOL_DYNAMINE = 'dynamine'
TOOL_DISOMINE = 'disomine'
TOOL_EFOLDMINE = 'efoldmine'
TOOL_AGMATA = 'agmata'
TOOL_PSP = 'psper'
TOOL_SHIFTCRYPT = 'shiftcrypt'

DEPENDENCIES = {
    TOOL_DYNAMINE: [],
    TOOL_EFOLDMINE: [TOOL_DYNAMINE],
    TOOL_DISOMINE: [TOOL_DYNAMINE, TOOL_EFOLDMINE],
    TOOL_AGMATA: [TOOL_DYNAMINE, TOOL_EFOLDMINE],
    TOOL_PSP: []
}

PREDICTOR_NAMES = [TOOL_DYNAMINE, TOOL_DISOMINE, TOOL_EFOLDMINE, TOOL_AGMATA, TOOL_PSP]

DYNAMINE_PREDICTION_NAMES = ["backbone", "sidechain", "ppII", "coil", "sheet", "helix"]
EFOLDMINE_PREDICTION_NAMES = ["earlyFolding"]
AGMATA_PREDICTION_NAMES = ["agmata"]
DISOMINE_PREDICTION_NAMES = ["disoMine"]
PSP_PREDICTION_NAMES = ["complexity", "arg", "tyr", "RRM", "disorder", "viterbi"]

PREDICTION_NAMES = [
    *DYNAMINE_PREDICTION_NAMES,
    *EFOLDMINE_PREDICTION_NAMES,
    *AGMATA_PREDICTION_NAMES,
    *DISOMINE_PREDICTION_NAMES,
    *PSP_PREDICTION_NAMES
]

PREDICTION_NAMES_WITHOUT_PSP = [
    *DYNAMINE_PREDICTION_NAMES,
    *EFOLDMINE_PREDICTION_NAMES,
    *AGMATA_PREDICTION_NAMES,
    *DISOMINE_PREDICTION_NAMES,
]

DISTRIBUTION_KEYS = ['median', 'thirdQuartile', 'firstQuartile', 'topOutlier', 'bottomOutlier']

PREDICTOR_NAMES_EXECUTION_TIMES = [f"{predictor_name}_execution_time" for predictor_name in PREDICTOR_NAMES]