def test_create_from_dict(): for dictionary in dicts(): series = TimeSeries.from_dict(dictionary) assert len(series) == len(dictionary) for el in dictionary: assert series[decimal.Decimal(el)] == dictionary[el] assert series[el] == dictionary[el] assert series.first == dictionary[min(dictionary)] assert series.last == dictionary[max(dictionary)] assert series._first == min(dictionary) assert series._last == max(dictionary)
from firecrest.misc.time_storage import PiecewiseLinearBasis, TimeSeries import matplotlib.pyplot as plt import numpy as np from decimal import Decimal timer = {"dt": Decimal("0.01"), "T": Decimal("1.2")} func = TimeSeries.from_dict({ Decimal(k) * Decimal(timer["dt"]): 10 + 40.0 * (k * float(timer["dt"])) * (k * float(timer["dt"]) - 0.5) * (k * float(timer["dt"]) - 1) for k in range(int(timer["T"] / Decimal(timer["dt"])) + 1) }) x = np.array([float(key) for key in func.keys()]) y = np.array([val for val in func.values()]) basis = PiecewiseLinearBasis(x, 0.4) plt.plot(x, y, "k") plt.plot(x, basis.project(y), "--", color="k") for b in basis.basis: plt.plot(x, b, "-.", color="gray") plt.grid(True) plt.show()
def test_multiply(): series, mid_point = numeric_series() multiplied = series * series assert len(multiplied) == len(series) assert multiplied == TimeSeries.from_dict({i: i ** 2 for i in series}) assert mid_point * series == mid_point * mid_point
def numeric_series(): return [ TimeSeries.from_dict({i: i for i in range(10)}), TimeSeries.from_dict({i + 0.5: i + 0.5 for i in range(9)}), ]