mirror of
https://github.com/wassname/catalyst.git
synced 2026-07-29 11:18:20 +08:00
ENH: Add isnull and notnull methods to Factor.
This commit is contained in:
@@ -23,11 +23,11 @@ from zipline.lib.adjustment import (
|
||||
)
|
||||
from zipline.lib.adjusted_array import AdjustedArray, NOMASK
|
||||
from zipline.utils.numpy_utils import (
|
||||
coerce_to_dtype,
|
||||
datetime64ns_dtype,
|
||||
default_missing_value_for_dtype,
|
||||
float64_dtype,
|
||||
int64_dtype,
|
||||
make_datetime64ns,
|
||||
)
|
||||
from zipline.utils.test_utils import check_arrays, parameter_space
|
||||
|
||||
@@ -62,18 +62,6 @@ def valid_window_lengths(underlying_buffer_length):
|
||||
return iter(range(1, underlying_buffer_length + 1))
|
||||
|
||||
|
||||
def value_with_dtype(dtype, value):
|
||||
"""
|
||||
Make a value with the specified numpy dtype.
|
||||
"""
|
||||
name = dtype.name
|
||||
if name.startswith('datetime64'):
|
||||
if name != 'datetime64[ns]':
|
||||
raise TypeError("Expected datetime64[ns], but got %s." % name)
|
||||
return make_datetime64ns(value)
|
||||
return dtype.type(value)
|
||||
|
||||
|
||||
def _gen_unadjusted_cases(dtype):
|
||||
|
||||
nrows = 6
|
||||
@@ -124,7 +112,7 @@ def _gen_multiplicative_adjustment_cases(dtype):
|
||||
|
||||
# Note that row indices are inclusive!
|
||||
adjustments[1] = [
|
||||
adjustment_type(0, 0, 0, 0, value_with_dtype(dtype, 2)),
|
||||
adjustment_type(0, 0, 0, 0, coerce_to_dtype(dtype, 2)),
|
||||
]
|
||||
buffer_as_of[1] = array([[2, 1, 1],
|
||||
[1, 1, 1],
|
||||
@@ -137,8 +125,8 @@ def _gen_multiplicative_adjustment_cases(dtype):
|
||||
buffer_as_of[2] = buffer_as_of[1]
|
||||
|
||||
adjustments[3] = [
|
||||
adjustment_type(1, 2, 1, 1, value_with_dtype(dtype, 3)),
|
||||
adjustment_type(0, 1, 0, 0, value_with_dtype(dtype, 4)),
|
||||
adjustment_type(1, 2, 1, 1, coerce_to_dtype(dtype, 3)),
|
||||
adjustment_type(0, 1, 0, 0, coerce_to_dtype(dtype, 4)),
|
||||
]
|
||||
buffer_as_of[3] = array([[8, 1, 1],
|
||||
[4, 3, 1],
|
||||
@@ -148,7 +136,7 @@ def _gen_multiplicative_adjustment_cases(dtype):
|
||||
[1, 1, 1]], dtype=dtype)
|
||||
|
||||
adjustments[4] = [
|
||||
adjustment_type(0, 3, 2, 2, value_with_dtype(dtype, 5))
|
||||
adjustment_type(0, 3, 2, 2, coerce_to_dtype(dtype, 5))
|
||||
]
|
||||
buffer_as_of[4] = array([[8, 1, 5],
|
||||
[4, 3, 5],
|
||||
@@ -158,8 +146,8 @@ def _gen_multiplicative_adjustment_cases(dtype):
|
||||
[1, 1, 1]], dtype=dtype)
|
||||
|
||||
adjustments[5] = [
|
||||
adjustment_type(0, 4, 1, 1, value_with_dtype(dtype, 6)),
|
||||
adjustment_type(2, 2, 2, 2, value_with_dtype(dtype, 7)),
|
||||
adjustment_type(0, 4, 1, 1, coerce_to_dtype(dtype, 6)),
|
||||
adjustment_type(2, 2, 2, 2, coerce_to_dtype(dtype, 7)),
|
||||
]
|
||||
buffer_as_of[5] = array([[8, 6, 5],
|
||||
[4, 18, 5],
|
||||
@@ -191,7 +179,7 @@ def _gen_overwrite_adjustment_cases(dtype):
|
||||
|
||||
# Note that row indices are inclusive!
|
||||
adjustments[1] = [
|
||||
adjustment_type(0, 0, 0, 0, value_with_dtype(dtype, 1)),
|
||||
adjustment_type(0, 0, 0, 0, coerce_to_dtype(dtype, 1)),
|
||||
]
|
||||
buffer_as_of[1] = array([[1, 2, 2],
|
||||
[2, 2, 2],
|
||||
@@ -204,8 +192,8 @@ def _gen_overwrite_adjustment_cases(dtype):
|
||||
buffer_as_of[2] = buffer_as_of[1]
|
||||
|
||||
adjustments[3] = [
|
||||
adjustment_type(1, 2, 1, 1, value_with_dtype(dtype, 3)),
|
||||
adjustment_type(0, 1, 0, 0, value_with_dtype(dtype, 4)),
|
||||
adjustment_type(1, 2, 1, 1, coerce_to_dtype(dtype, 3)),
|
||||
adjustment_type(0, 1, 0, 0, coerce_to_dtype(dtype, 4)),
|
||||
]
|
||||
buffer_as_of[3] = array([[4, 2, 2],
|
||||
[4, 3, 2],
|
||||
@@ -215,7 +203,7 @@ def _gen_overwrite_adjustment_cases(dtype):
|
||||
[2, 2, 2]], dtype=dtype)
|
||||
|
||||
adjustments[4] = [
|
||||
adjustment_type(0, 3, 2, 2, value_with_dtype(dtype, 5))
|
||||
adjustment_type(0, 3, 2, 2, coerce_to_dtype(dtype, 5))
|
||||
]
|
||||
buffer_as_of[4] = array([[4, 2, 5],
|
||||
[4, 3, 5],
|
||||
@@ -225,8 +213,8 @@ def _gen_overwrite_adjustment_cases(dtype):
|
||||
[2, 2, 2]], dtype=dtype)
|
||||
|
||||
adjustments[5] = [
|
||||
adjustment_type(0, 4, 1, 1, value_with_dtype(dtype, 6)),
|
||||
adjustment_type(2, 2, 2, 2, value_with_dtype(dtype, 7)),
|
||||
adjustment_type(0, 4, 1, 1, coerce_to_dtype(dtype, 6)),
|
||||
adjustment_type(2, 2, 2, 2, coerce_to_dtype(dtype, 7)),
|
||||
]
|
||||
buffer_as_of[5] = array([[4, 6, 5],
|
||||
[4, 6, 5],
|
||||
@@ -335,7 +323,7 @@ class AdjustedArrayTestCase(TestCase):
|
||||
window_length=[2, 3],
|
||||
)
|
||||
def test_masking(self, dtype, missing_value, window_length):
|
||||
missing_value = value_with_dtype(dtype, missing_value)
|
||||
missing_value = coerce_to_dtype(dtype, missing_value)
|
||||
baseline_ints = arange(15).reshape(5, 3)
|
||||
baseline = baseline_ints.astype(dtype)
|
||||
mask = (baseline_ints % 2).astype(bool)
|
||||
|
||||
Reference in New Issue
Block a user