Skip to content

Commit

Permalink
Change Power to a NpPairOperator (microsoft#1052)
Browse files Browse the repository at this point in the history
* Change Power to a NpPairOperator

* Change Power to pair operator and use black to format
  • Loading branch information
wuzhe1234 authored Apr 21, 2022
1 parent c02b227 commit e7a23da
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 26 deletions.
5 changes: 5 additions & 0 deletions qlib/data/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,11 @@ def __pow__(self, other):

return Power(self, other)

def __rpow__(self, other):
from .ops import Power # pylint: disable=C0415

return Power(other, self)

def __and__(self, other):
from .ops import And # pylint: disable=C0415

Expand Down
46 changes: 20 additions & 26 deletions qlib/data/ops.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,32 +150,6 @@ def __init__(self, feature):
super(Log, self).__init__(feature, "log")


class Power(NpElemOperator):
"""Feature Power
Parameters
----------
feature : Expression
feature instance
Returns
----------
Expression
a feature instance with power
"""

def __init__(self, feature, exponent):
super(Power, self).__init__(feature, "power")
self.exponent = exponent

def __str__(self):
return "{}({},{})".format(type(self).__name__, self.feature, self.exponent)

def _load_internal(self, instrument, start_index, end_index, *args):
series = self.feature.load(instrument, start_index, end_index, *args)
return getattr(np, self.func)(series, self.exponent)


class Mask(NpElemOperator):
"""Feature Mask
Expand Down Expand Up @@ -333,6 +307,26 @@ def _load_internal(self, instrument, start_index, end_index, *args):
return res


class Power(NpPairOperator):
"""Power Operator
Parameters
----------
feature_left : Expression
feature instance
feature_right : Expression
feature instance
Returns
----------
Feature:
The bases in feature_left raised to the exponents in feature_right
"""

def __init__(self, feature_left, feature_right):
super(Power, self).__init__(feature_left, feature_right, "power")


class Add(NpPairOperator):
"""Add Operator
Expand Down

0 comments on commit e7a23da

Please sign in to comment.