Skip to content

Model

This module is used for executing callbacks on the user's BaseModel subclass for use with the EPICS server defined in lume_epics.epics_server. The BaseModel must be defined using the guidelines outlined in the lume_model.models module to be surfaced using the BaseModel class.

OnlineModel

Class for executing surrogate model.

Attributes:

Name Type Description
model BaseModel

Model for execution.

input_variables Dict[str, InputVariable]

List of lume-model variables to use as inputs.

ouput_variables Dict[str, OutputVariable]

List of lume-model variables to use as outputs.

Source code in lume_epics/model.py
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
class OnlineModel:
    """
    Class for executing surrogate model.

    Attributes:
        model (BaseModel): Model for execution.

        input_variables (Dict[str, InputVariable]): List of lume-model variables to use as inputs.

        ouput_variables (Dict[str, OutputVariable]): List of lume-model variables to use as outputs.

    """

    def __init__(
        self,
        model: BaseModel,
    ) -> None:
        """
        Initialize OnlineModel with the base model class.

        Args:
            model (BaseModel): Instantiated model.

        """
        self.model = model

        self.input_variables = self.model.input_variables
        self.output_variables = self.model.output_variables

    def run(
        self, input_variables: Dict[str, InputVariable]
    ) -> Dict[str, OutputVariable]:
        """
        Executes both scalar and image model given process variable value inputs.

        Args:
            input_variables (Dict[str, InputVariable]): Dict of lume-model variables to use as inputs.

        """
        # update input variables and get state representation
        self.input_variables = input_variables

        # update output variable state
        logger.info("Running model")
        t1 = time.time()
        self.output_variables = self.model.evaluate(self.input_variables)
        t2 = time.time()

        logger.info("Ellapsed time: %s", str(t2 - t1))

        return self.output_variables

__init__(model)

Initialize OnlineModel with the base model class.

Parameters:

Name Type Description Default
model BaseModel

Instantiated model.

required
Source code in lume_epics/model.py
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
def __init__(
    self,
    model: BaseModel,
) -> None:
    """
    Initialize OnlineModel with the base model class.

    Args:
        model (BaseModel): Instantiated model.

    """
    self.model = model

    self.input_variables = self.model.input_variables
    self.output_variables = self.model.output_variables

run(input_variables)

Executes both scalar and image model given process variable value inputs.

Parameters:

Name Type Description Default
input_variables Dict[str, InputVariable]

Dict of lume-model variables to use as inputs.

required
Source code in lume_epics/model.py
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
def run(
    self, input_variables: Dict[str, InputVariable]
) -> Dict[str, OutputVariable]:
    """
    Executes both scalar and image model given process variable value inputs.

    Args:
        input_variables (Dict[str, InputVariable]): Dict of lume-model variables to use as inputs.

    """
    # update input variables and get state representation
    self.input_variables = input_variables

    # update output variable state
    logger.info("Running model")
    t1 = time.time()
    self.output_variables = self.model.evaluate(self.input_variables)
    t2 = time.time()

    logger.info("Ellapsed time: %s", str(t2 - t1))

    return self.output_variables