Skip to content

from cluster_experiments.inference.dimension import *

DefaultDimension dataclass

Bases: Dimension

A class used to represent a Dimension with a default value representing total, i.e. no slicing.

Source code in cluster_experiments/inference/dimension.py
76
77
78
79
80
81
82
83
@dataclass
class DefaultDimension(Dimension):
    """
    A class used to represent a Dimension with a default value representing total, i.e. no slicing.
    """

    def __init__(self):
        super().__init__(name="__total_dimension", values=["total"])

Dimension dataclass

A class used to represent a Dimension with a name and values.

Attributes

name : str The name of the dimension values : List[str] A list of strings representing the possible values of the dimension

Source code in cluster_experiments/inference/dimension.py
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
@dataclass
class Dimension:
    """
    A class used to represent a Dimension with a name and values.

    Attributes
    ----------
    name : str
        The name of the dimension
    values : List[str]
        A list of strings representing the possible values of the dimension
    """

    name: str
    values: List[str]

    def __post_init__(self):
        """
        Validates the inputs after initialization.
        """
        self._validate_inputs()

    def _validate_inputs(self):
        """
        Validates the inputs for the Dimension class.

        Raises
        ------
        TypeError
            If the name is not a string or if values is not a list of strings.
        """
        if not isinstance(self.name, str):
            raise TypeError("Dimension name must be a string")
        if not isinstance(self.values, list) or not all(
            isinstance(val, str) for val in self.values
        ):
            raise TypeError("Dimension values must be a list of strings")

    def iterate_dimension_values(self):
        """
        A generator method to yield name and values from the dimension.

        Yields
        ------
        Any
            A unique value from the dimension.
        """
        seen = set()
        for value in self.values:
            if value not in seen:
                seen.add(value)
                yield value

    @classmethod
    def from_metrics_config(cls, config: dict) -> "Dimension":
        """
        Creates a Dimension object from a configuration dictionary.

        Parameters
        ----------
        config : dict
            A dictionary containing the configuration for the Dimension

        Returns
        -------
        Dimension
            A Dimension object
        """
        return cls(name=config["name"], values=config["values"])

__post_init__()

Validates the inputs after initialization.

Source code in cluster_experiments/inference/dimension.py
21
22
23
24
25
def __post_init__(self):
    """
    Validates the inputs after initialization.
    """
    self._validate_inputs()

from_metrics_config(config) classmethod

Creates a Dimension object from a configuration dictionary.

Parameters

config : dict A dictionary containing the configuration for the Dimension

Returns

Dimension A Dimension object

Source code in cluster_experiments/inference/dimension.py
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
@classmethod
def from_metrics_config(cls, config: dict) -> "Dimension":
    """
    Creates a Dimension object from a configuration dictionary.

    Parameters
    ----------
    config : dict
        A dictionary containing the configuration for the Dimension

    Returns
    -------
    Dimension
        A Dimension object
    """
    return cls(name=config["name"], values=config["values"])

iterate_dimension_values()

A generator method to yield name and values from the dimension.

Yields

Any A unique value from the dimension.

Source code in cluster_experiments/inference/dimension.py
43
44
45
46
47
48
49
50
51
52
53
54
55
56
def iterate_dimension_values(self):
    """
    A generator method to yield name and values from the dimension.

    Yields
    ------
    Any
        A unique value from the dimension.
    """
    seen = set()
    for value in self.values:
        if value not in seen:
            seen.add(value)
            yield value