Merge branch 'master' into fix/221-until-slicing

This commit is contained in:
Gaudeval 2021-01-06 11:16:07 +00:00
commit bbb187f26c
5 changed files with 146 additions and 129 deletions

View file

@ -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]