Merge branch 'master' into fix/221-until-slicing
This commit is contained in:
commit
bbb187f26c
5 changed files with 146 additions and 129 deletions
|
|
@ -6,7 +6,7 @@ from collections import defaultdict
|
|||
from functools import reduce, singledispatch
|
||||
|
||||
import funcy as fn
|
||||
from discrete_signals import signal
|
||||
from discrete_signals import signal, DiscreteSignal
|
||||
|
||||
from mtl import ast
|
||||
|
||||
|
|
@ -15,9 +15,11 @@ CONST_FALSE = signal([(0, -1)], start=-OO, end=OO, tag=ast.BOT)
|
|||
CONST_TRUE = signal([(0, 1)], start=-OO, end=OO, tag=ast.TOP)
|
||||
|
||||
|
||||
def to_signal(ts_mapping):
|
||||
def to_signal(ts_mapping) -> DiscreteSignal:
|
||||
if isinstance(ts_mapping, DiscreteSignal):
|
||||
return ts_mapping
|
||||
|
||||
start = min(fn.pluck(0, fn.cat(ts_mapping.values())))
|
||||
assert start >= 0
|
||||
signals = (signal(v, start, OO, tag=k) for k, v in ts_mapping.items())
|
||||
return reduce(op.or_, signals)
|
||||
|
||||
|
|
@ -25,11 +27,8 @@ def to_signal(ts_mapping):
|
|||
def interp(sig, t, tag=None):
|
||||
# TODO: return function that interpolates the whole signal.
|
||||
sig = sig.project({tag})
|
||||
idx = sig.data.bisect_right(t) - 1
|
||||
if idx < 0:
|
||||
return None
|
||||
else:
|
||||
key = sig.data.keys()[idx]
|
||||
idx = max(sig.data.bisect_right(t) - 1, 0)
|
||||
key = sig.data.keys()[idx]
|
||||
return sig[key][tag]
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
from discrete_signals import signal
|
||||
|
||||
import mtl
|
||||
|
||||
|
||||
|
|
@ -22,6 +24,16 @@ def test_eval_regression_next_neg():
|
|||
assert min(t for t, _ in v) >= 0
|
||||
|
||||
|
||||
def test_eval_with_signal():
|
||||
spec = mtl.parse('F(above_three)')
|
||||
|
||||
raw_data = signal([(0, 1), (1, 2), (2, 3)], start=0, end=10, tag='a')
|
||||
processed = raw_data.map(lambda val: val['a'] > 3, tag="above_three")
|
||||
|
||||
assert not spec(processed, quantitative=False)
|
||||
assert spec(processed, quantitative=True) == 0
|
||||
|
||||
|
||||
def test_eval_regression_until_start():
|
||||
"""From issue #221"""
|
||||
x = {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue