Пример #1
0
def test_missing_inputs():

    graph = Graph(parallel=True)

    def f_my_function(a, b):
        return a + b

    with pytest.raises(PyungoError) as err:
        graph.add_node(f_my_function, outputs=['c'])
    assert "Missing inputs parameter" in str(err.value)

    with pytest.raises(PyungoError) as err:
        graph.add_node(f_my_function, inputs=['a', 'b'])
    assert "Missing outputs parameter" in str(err.value)
Пример #2
0
def test_simple_parralel():
    """ TODO: We could mock and make sure things are called correctly """

    graph = Graph(parallel=True)

    def f_my_function(a, b):
        return a + b

    def f_my_function3(d, a):
        return d - a

    def f_my_function2(c):
        return c / 10.

    graph.add_node(f_my_function, inputs=['a', 'b'], outputs=['c'])
    graph.add_node(f_my_function3, inputs=['d', 'a'], outputs=['e'])
    graph.add_node(f_my_function2, inputs=['c'], outputs=['d'])
    graph.add_node(f_my_function2, inputs=['c'], outputs=['f'])
    graph.add_node(f_my_function2, inputs=['c'], outputs=['g'])

    res = graph.calculate(data={'a': 2, 'b': 3})

    assert res == -1.5
Пример #3
0
def test_simple_parallel():
    """ TODO: We could mock and make sure things are called correctly """

    graph = Graph(parallel=True)

    def f_my_function(a, b):
        return a + b

    def f_my_function3(d, a):
        return d - a

    def f_my_function2(c):
        return c / 10.0

    graph.add_node(f_my_function, inputs=["a", "b"], outputs=["c"])
    graph.add_node(f_my_function3, inputs=["d", "a"], outputs=["e"])
    graph.add_node(f_my_function2, inputs=["c"], outputs=["d"])
    graph.add_node(f_my_function2, inputs=["c"], outputs=["f"])
    graph.add_node(f_my_function2, inputs=["c"], outputs=["g"])

    res = graph.calculate(data={"a": 2, "b": 3})

    assert res == -1.5
Пример #4
0
def test_simple_without_decorator():
    graph = Graph()

    def f_my_function(a, b):
        return a + b

    def f_my_function3(d, a):
        return d - a

    def f_my_function2(c):
        return c / 10.

    graph.add_node(f_my_function, inputs=['a', 'b'], outputs=['c'])
    graph.add_node(f_my_function3, inputs=['d', 'a'], outputs=['e'])
    graph.add_node(f_my_function2, inputs=['c'], outputs=['d'])

    res = graph.calculate(data={'a': 2, 'b': 3})

    assert res == -1.5
    assert graph.data['e'] == -1.5
Пример #5
0
def test_simple_without_decorator():
    graph = Graph()

    def f_my_function(a, b):
        return a + b

    def f_my_function3(d, a):
        return d - a

    def f_my_function2(c):
        return c / 10.0

    graph.add_node(f_my_function, inputs=["a", "b"], outputs=["c"])
    graph.add_node(f_my_function3, inputs=["d", "a"], outputs=["e"])
    graph.add_node(f_my_function2, inputs=["c"], outputs=["d"])

    res = graph.calculate(data={"a": 2, "b": 3})

    assert res == -1.5
    assert graph.data["e"] == -1.5
Пример #6
0
    def wrap(*args, **kwargs):
        res = f(*args, **kwargs)
        return [res[k] for k in res]

    return wrap


# parallelism not needed for this example
graph = Graph(parallel=False)

graph.add_node(
    unpack_df(pvlib.solarposition.get_solarposition),
    inputs=["index", "latitude", "longitude"],
    outputs=[
        "apparent_elevation",
        "apparent_zenith",
        "azimuth",
        "elevation",
        "equation_of_time",
        "zenith",
    ],
)
graph.add_node(pvlib.irradiance.extraradiation,
               inputs=["index"],
               outputs=["dni_extra"])
graph.add_node(pvlib.atmosphere.relativeairmass,
               inputs=["apparent_zenith"],
               outputs=["airmass"])
graph.add_node(
    pvlib.irradiance.haydavies,
    inputs=[
        "surface_tilt",
Пример #7
0

def unpack_dict(f):  # (ordered)
    def wrap(*args, **kwargs):
        res = f(*args, **kwargs)
        return [res[k] for k in res]

    return wrap


# parallelism not needed for this example
graph = Graph(parallel=False)

graph.add_node(unpack_df(pvlib.solarposition.get_solarposition),
               inputs=['index', 'latitude', 'longitude'],
               outputs=[
                   'apparent_elevation', 'apparent_zenith', 'azimuth',
                   'elevation', 'equation_of_time', 'zenith'
               ])
graph.add_node(pvlib.irradiance.extraradiation,
               inputs=['index'],
               outputs=['dni_extra'])
graph.add_node(pvlib.atmosphere.relativeairmass,
               inputs=['apparent_zenith'],
               outputs=['airmass'])
graph.add_node(pvlib.irradiance.haydavies,
               inputs=[
                   'surface_tilt', 'surface_azimuth', 'DHI', 'DNI',
                   'dni_extra', 'apparent_zenith', 'azimuth'
               ],
               outputs=['poa_sky_diffuse'])
graph.add_node(pvlib.irradiance.grounddiffuse,