Source code for pypesto.ensemble.constants

"""
This is for (string) constants used in the ensemble module.
"""


from enum import Enum
from typing import Union

from ..predict.constants import (  # noqa: F401
    OUTPUT,
    OUTPUT_IDS,
    OUTPUT_SENSI,
    PARAMETER_IDS,
    TIMEPOINTS,
)


MODE_FUN = 'mode_fun'  # mode for function values

PREDICTOR = 'predictor'
PREDICTION_ID = 'prediction_id'
PREDICTION_RESULTS = 'prediction_results'
PREDICTION_ARRAYS = 'prediction_arrays'
PREDICTION_SUMMARY = 'prediction_summary'

MEAN = 'mean'
MEDIAN = 'median'
STANDARD_DEVIATION = 'std'
PERCENTILE = 'percentile'
SUMMARY = 'summary'

X_NAMES = 'x_names'
NX = 'n_x'
X_VECTOR = 'x_vectors'
NVECTORS = 'n_vectors'
VECTOR_TAGS = 'vector_tags'
ENSEMBLE_TYPE = 'ensemble_type'
PREDICTIONS = 'predictions'

LOWER_BOUND = 'lower_bound'
UPPER_BOUND = 'upper_bound'
PREEQUILIBRATION_CONDITION_ID = 'preequilibrationConditionId'
SIMULATION_CONDITION_ID = 'simulationConditionId'

CSV = 'csv'  # return file format
H5 = 'h5'  # return file format
TIME = 'time'  # column name in returned csv

COLOR_HIT_BOTH_BOUNDS = [0.6, 0., 0., 0.9]
COLOR_HIT_ONE_BOUND = [0.95, 0.6, 0., 0.9]
COLOR_HIT_NO_BOUNDS = [0., 0.8, 0., 0.9]


[docs]class EnsembleType(Enum): ensemble = 1 sample = 2 unprocessed_chain = 3
[docs]def get_percentile_label(percentile: Union[float, int, str]) -> str: """Convert a percentile to a label. Labels for percentiles are used at different locations (e.g. ensemble prediction code, and visualization code). This method ensures that the same percentile is labeled identically everywhere. The percentile is rounded to two decimal places in the label representation if it is specified to more decimal places. This is for readability in plotting routines, and to avoid float to string conversion issues related to float precision. Parameters ---------- percentile: The percentile value that will be used to generate a label. Returns ------- The label of the (possibly rounded) percentile. """ if isinstance(percentile, str): percentile = float(percentile) if percentile == round(percentile): percentile = round(percentile) if isinstance(percentile, float): percentile_str = f'{percentile:.2f}' # Add `...` to the label if the percentile value changed after rounding if float(percentile_str) != percentile: percentile_str += '...' percentile = percentile_str return f'{PERCENTILE} {percentile}'