Source code for mlprodict.grammar_sklearn.grammar.gactions_num

"""
Action definition.


:githublink:`%|py|5`
"""
from .gtypes import MLNumTypeFloat32, MLNumTypeFloat64, MLNumTypeBool
from .gactions import MLActionBinary, MLActionFunctionCall


[docs]class MLActionAdd(MLActionBinary): """ Addition :githublink:`%|py|12` """
[docs] def __init__(self, act1, act2): """ :param act1: first element :param act2: second element :githublink:`%|py|18` """ MLActionBinary.__init__(self, act1, act2, "+") if type(act1.output) != type(act2.output): raise TypeError( # pragma: no cover "Not the same input type {0} != {1}".format( type(act1.output), type(act2.output)))
[docs] def execute(self, **kwargs): MLActionBinary.execute(self, **kwargs) res = self.ChildrenResults return self.output.validate(res[0] + res[1])
[docs]class MLActionSign(MLActionFunctionCall): """ Sign of an expression: 1=positive, 0=negative. :githublink:`%|py|34` """
[docs] def __init__(self, act1): """ :param act1: first element :githublink:`%|py|39` """ MLActionFunctionCall.__init__(self, "sign", act1.output, act1) if not isinstance(act1.output, (MLNumTypeFloat32, MLNumTypeFloat64)): raise TypeError( # pragma: no cover "The input action must produce float32 or float64 not '{0}'".format(type(act1.output)))
[docs] def execute(self, **kwargs): MLActionFunctionCall.execute(self, **kwargs) res = self.ChildrenResults return self.output.validate(self.output.softcast(1 if res[0] >= 0 else 0))
[docs]class MLActionTestInf(MLActionBinary): """ Operator ``<``. :githublink:`%|py|54` """
[docs] def __init__(self, act1, act2): """ :param act1: first element :param act2: second element :githublink:`%|py|60` """ MLActionBinary.__init__(self, act1, act2, "<=") if type(act1.output) != type(act2.output): raise TypeError( # pragma: no cover "Not the same input type {0} != {1}".format( type(act1.output), type(act2.output))) self.output = MLNumTypeBool()
[docs] def execute(self, **kwargs): MLActionBinary.execute(self, **kwargs) res = self.ChildrenResults return self.output.validate(self.output.softcast(res[0] <= res[1]))
[docs]class MLActionTestEqual(MLActionBinary): """ Operator ``==``. :githublink:`%|py|77` """
[docs] def __init__(self, act1, act2): """ :param act1: first element :param act2: second element :githublink:`%|py|83` """ MLActionBinary.__init__(self, act1, act2, "==") if type(act1.output) != type(act2.output): raise TypeError( # pragma: no cover "Not the same input type {0} != {1}".format( type(act1.output), type(act2.output))) self.output = MLNumTypeBool()
[docs] def execute(self, **kwargs): MLActionBinary.execute(self, **kwargs) res = self.ChildrenResults return self.output.validate(self.output.softcast(res[0] == res[1]))