mirror of
https://github.com/wassname/catalyst.git
synced 2026-08-11 05:42:18 +08:00
ENH: Make aliases filters, factors, and classifiers to give them their methods
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
import numpy as np
|
||||
|
||||
from zipline.testing.predicates import assert_equal
|
||||
from zipline.pipeline import Classifier, Factor, Filter
|
||||
from zipline.utils.numpy_utils import float64_dtype, int64_dtype
|
||||
|
||||
from .base import BasePipelineTestCase
|
||||
|
||||
|
||||
class WithAlias(object):
|
||||
|
||||
def test_alias(self):
|
||||
f = self.Term()
|
||||
alias = f.alias('ayy lmao')
|
||||
|
||||
f_values = np.random.RandomState(5).randn(5, 5)
|
||||
|
||||
self.check_terms(
|
||||
terms={
|
||||
'f_alias': alias,
|
||||
},
|
||||
expected={
|
||||
'f_alias': f_values,
|
||||
},
|
||||
initial_workspace={f: f_values},
|
||||
mask=self.build_mask(np.ones((5, 5))),
|
||||
)
|
||||
|
||||
def test_repr(self):
|
||||
assert_equal(
|
||||
repr(self.Term().alias('ayy lmao')),
|
||||
"Aliased%s(..., name='ayy lmao')" % self.Term.__base__.__name__,
|
||||
)
|
||||
|
||||
|
||||
class TestFactorAlias(WithAlias, BasePipelineTestCase):
|
||||
class Term(Factor):
|
||||
dtype = float64_dtype
|
||||
inputs = ()
|
||||
window_length = 0
|
||||
|
||||
|
||||
class TestFilterAlias(WithAlias, BasePipelineTestCase):
|
||||
class Term(Filter):
|
||||
inputs = ()
|
||||
window_length = 0
|
||||
|
||||
|
||||
class TestClassifierAlias(WithAlias, BasePipelineTestCase):
|
||||
class Term(Classifier):
|
||||
dtype = int64_dtype
|
||||
inputs = ()
|
||||
window_length = 0
|
||||
missing_value = -1
|
||||
@@ -20,14 +20,13 @@ from numpy import (
|
||||
rot90,
|
||||
where,
|
||||
)
|
||||
from numpy.random import randn, RandomState, seed
|
||||
from numpy.random import randn, seed
|
||||
|
||||
from zipline.errors import UnknownRankMethod
|
||||
from zipline.lib.labelarray import LabelArray
|
||||
from zipline.lib.rank import masked_rankdata_2d
|
||||
from zipline.lib.normalize import naive_grouped_rowwise_apply as grouped_apply
|
||||
from zipline.pipeline import Classifier, Factor, Filter
|
||||
from zipline.pipeline.term import Alias
|
||||
from zipline.pipeline.factors import (
|
||||
Returns,
|
||||
RSI,
|
||||
@@ -1059,23 +1058,3 @@ class TestWindowSafety(TestCase):
|
||||
self.assertFalse(F().demean().window_safe)
|
||||
self.assertFalse(F(window_safe=False).demean().window_safe)
|
||||
self.assertTrue(F(window_safe=True).demean().window_safe)
|
||||
|
||||
|
||||
class TestAlias(BasePipelineTestCase):
|
||||
|
||||
def test_alias_factor(self):
|
||||
f = F()
|
||||
a = Alias(f)
|
||||
|
||||
f_values = RandomState(5).randn(5, 5)
|
||||
|
||||
self.check_terms(
|
||||
terms={
|
||||
'f_alias': a,
|
||||
},
|
||||
expected={
|
||||
'f_alias': f_values,
|
||||
},
|
||||
initial_workspace={f: f_values},
|
||||
mask=self.build_mask(ones((5, 5))),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user