Esempio n. 1
0
def test_groll_single():
    ctx = Prosto("My Prosto")

    tbl = ctx.populate(
        table_name="My table",
        attributes=["G", "A"],
        func=
        "lambda **m: pd.DataFrame({'G': [1, 2, 1, 2], 'A': [1.0, 2.0, 3.0, 4.0]})",
        tables=[])

    clm = ctx.roll(name="Roll",
                   table=tbl.id,
                   window="2",
                   link="G",
                   func="lambda x: x.sum()",
                   columns=["A"],
                   model={})

    ctx.run()

    clm_data = tbl.get_series('Roll')

    assert pd.isna(clm_data[0])
    assert pd.isna(clm_data[1])
    assert np.isclose(clm_data[2], 4.0)
    assert np.isclose(clm_data[3], 6.0)
Esempio n. 2
0
def test_roll_multiple():
    ctx = Prosto("My Prosto")

    tbl = ctx.populate(
        table_name="My table",
        attributes=["A", "B"],
        func="lambda **m: pd.DataFrame({'A': [1, 2, 3], 'B': [3, 2, 1]})",
        tables=[])

    clm = ctx.roll(name="Roll",
                   table=tbl.id,
                   window="2",
                   link=None,
                   func="lambda x: x['A'].sum() + x['B'].sum()",
                   columns=["A", "B"],
                   model={})

    tbl.evaluate()
    clm.evaluate()

    clm_data = tbl.get_series('Roll')

    assert pd.isna(clm_data[0])
    assert np.isclose(clm_data[1], 8.0)
    assert np.isclose(clm_data[2], 8.0)

    #
    # Test topology
    #
    topology = Topology(ctx)
    topology.translate()  # All data will be reset
    layers = topology.elem_layers

    assert len(layers) == 2

    assert set([x.id for x in layers[0]]) == {"My table"}
    assert set([x.id for x in layers[1]]) == {"Roll"}

    ctx.run()

    clm_data = tbl.get_series('Roll')
    assert pd.isna(clm_data[0])
    assert np.isclose(clm_data[1], 8.0)
    assert np.isclose(clm_data[2], 8.0)