Пример #1
0
def test_get_intermediate_results():
    r1 = add(1, 1)
    r2 = sub(3, r1)

    def foo(a, b, c):
        return mul(add(a, b), c)

    r3 = [foo(i, r2, r1) for i in range(6)]
    r4 = accumulate(noodles.gather_all(r3))

    run_single(r4)

    assert noodles.result(r1) == 2
    assert noodles.result(r2) == 1
    assert [noodles.result(r) for r in r3] == [2, 4, 6, 8, 10, 12]
    assert noodles.result(r4) == 42
Пример #2
0
def test_iterate():
    a = noodles.delay((1,2,3))
    b, c, d = a
    e = noodles.gather(d, c, b)

    result = noodles.run_single(e)
    assert result == (3, 2, 1)
Пример #3
0
def test_rastrigin_zero():
    rastrigin = Rastrigin(10)
    values = np.zeros(10)
    answer = run_single(rastrigin.evaluate(values))

    print("For values {:s} found answer: {:s}", values, answer)
    assert answer == 0
Пример #4
0
def test_rastrigin_zero():
    rastrigin = Rastrigin(10)
    values = np.zeros(10)
    answer = run_single(rastrigin.evaluate(values))

    print("For values {:s} found answer: {:s}", values,answer)
    assert answer == 0
Пример #5
0
def test_sort():
    a = [random_number() for i in range(10)]
    b = noodles.gather(*sorted(a))

    result = noodles.run_single(b)
    print(result)

    assert result == sorted(result)
Пример #6
0
def test_iterate():
    with raises(TypeError):
        a = noodles.delay((1, 2, 3))
        b, c, d = a
        e = noodles.gather(d, c, b)

        result = noodles.run_single(e)
        assert result == (3, 2, 1)
Пример #7
0
def test_lift_01():
    a = A()
    a.x = add(1, 2)
    a.y = sub(9, 11)
    b = f(lift(a))

    result = run_single(b)
    assert result == 1
Пример #8
0
def test_runner_01():
    A = value(1)
    B = value(1)
    C = add(A, B)

    assert run_single(C) == 2
    assert result(A) == 1
    assert result(B) == 1
Пример #9
0
def test_select_max_list(mocker):
    """
    Test select_max using mocked results
    """
    results = generate_mocked_results(mocker, 'qmflows.packages.SCM.ADF_Result', expected=1e3)
    wf = select_max(results, prop='prop')
    xs = run_single(wf)

    assert xs.prop == 1e3
Пример #10
0
def test_select_min(mocker):
    """
    Test select_min using mocked results
    """
    results = generate_mocked_results(mocker, 'qmflows.packages.SCM.DFTB_Result', expected=-1e3)
    wf = select_min(results, prop='prop')

    xs = run_single(wf)

    assert xs.prop == -1e3
Пример #11
0
def test_nonstorable():
    a = A()
    b = M()

    a.x = 1
    b.x = f(3, 4)

    zzc = g(a, b)
    result = run_single(c)
    assert result == 8
Пример #12
0
def test_runner_02():
    A = add(1, 1)
    B = sub(3, A)

    multiples = [mul(add(i, B), A) for i in range(6)]
    C = sum(gather(*multiples))

    assert run_single(C) == 42
    assert result(C) == 42
    assert result(A) == 2
Пример #13
0
def test_tuple_unpack():
    a = Scheduled()
    b = Scheduled()

    a.x, a.y = 2, 3
    b.x, b.y = sub(a.x, a.y), sub(a.y, a.x)

    result = run_single(b)
    assert result.x == -1
    assert result.y == 1
Пример #14
0
def test_tuple_unpack():
    a = Scheduled()
    b = Scheduled()

    a.x, a.y = 2, 3
    b.x, b.y = sub(a.x, a.y), sub(a.y, a.x)

    result = run_single(b)
    assert result.x == -1
    assert result.y == 1
Пример #15
0
def test_class_property():
    a = make_object(A, 10)
    a.attr = 1.0

    b = make_object(B)
    b.first = a.attr
    b.second = a.mul_attr(3)

    result = run_single(b)
    assert result.first == 0.25
    assert result.second == 1.5
Пример #16
0
def test_nonstorable():
    with raises(TypeError):
        a = A()
        b = M()

        a.x = 1
        b.x = f(3, 4)

        c = g(a, b)
        result = run_single(c)
        assert result == 8
Пример #17
0
def test_select_max_list(mocker):
    """
    Test select_max using mocked results
    """
    results = generate_mocked_results(mocker,
                                      'qmflows.packages.SCM.ADF_Result',
                                      expected=1e3)
    wf = select_max(results, prop='prop')
    xs = run_single(wf)

    assert xs.prop == 1e3
Пример #18
0
def test_arg_by_ref():
    n = Normal()
    s = Scheduled()

    n.x = 4
    s.x = n
    n.x = 5
    s.y = n

    result = run_single(s)
    assert result.x.x == 4
    assert result.y.x == 5
Пример #19
0
def test_select_min(mocker):
    """
    Test select_min using mocked results
    """
    results = generate_mocked_results(mocker,
                                      'qmflows.packages.SCM.DFTB_Result',
                                      expected=-1e3)
    wf = select_min(results, prop='prop')

    xs = run_single(wf)

    assert xs.prop == -1e3
Пример #20
0
def test_arg_by_ref():
    n = Normal()
    s = Scheduled()

    n.x = 4
    s.x = n
    n.x = 5
    s.y = n

    result = run_single(s)
    assert result.x.x == 4
    assert result.y.x == 5
Пример #21
0
def test_find_first():
    global counter

    wfs = [counted_sqr(x) for x in range(10)]
    w = find_first(is_sixteen, wfs)
    result = run_single(w)
    assert result == 16
    assert counter == 5

    wfs = [counted_sqr(x) for x in range(10)]
    w = find_first(is_sixteen, wfs)
    result = run_process(w, n_processes=1, registry=base)
    assert result == 16

    wfs = [display_sqr(x) for x in range(10)]
    w = find_first(is_sixteen, wfs)
    with NCDisplay() as display:
        result = run_logging(w, n_threads=2, display=display)
    assert result == 16
Пример #22
0
def test_find_first():
    global counter

    wfs = [counted_sqr(x) for x in range(10)]
    w = find_first(is_sixteen, wfs)
    result = run_single(w)
    assert result == 16
    assert counter == 5

    wfs = [counted_sqr(x) for x in range(10)]
    w = find_first(is_sixteen, wfs)
    result = run_process(w, n_processes=1, registry=base)
    assert result == 16

    wfs = [display_sqr(x) for x in range(10)]
    w = find_first(is_sixteen, wfs)
    with NCDisplay() as display:
        result = run_logging(w, n_threads=2, display=display)
    assert result == 16
Пример #23
0
def run(
    wf: object,
    runner: str = 'parallel',
    n_processes: int = 1,
    cache: str = 'cache.db',
) -> Any:
    """Run a workflow `wf` using `runner` and `n_processes` number of threads/process."""
    runner = runner.lower()

    if isinstance(wf, Results):
        wf = gather_dict(**wf.state)

    if runner == 'display':
        with NCDisplay() as display:
            return run_logging(wf, n_processes, display)
    elif runner == 'serial':
        return run_single(wf)
    else:
        return run_provenance(wf,
                              n_threads=n_processes,
                              db_file=cache,
                              registry=registry,
                              echo_log=False,
                              always_cache=False)
Пример #24
0
def test_private():
    a = add(1, 1)
    a._private = 3
    assert a._private == 3
    assert not hasattr(run_single(a), '_private')
Пример #25
0
def test_class_decorator2():
    with raises(AttributeError):
        a = make_object(A, 6).multiply(7)
        b = a.divide(0)
        result = run_single(b)
        print(dir(result))
Пример #26
0
import numpy
import noodles
import time
from copy import copy


@noodles.schedule(call_by_ref=['gobble'])
def factorial_tr(x, acc=1, gobble=None):
    time.sleep(0.1)
    if x == 0:
        return acc
    else:
        return factorial_tr(x - 1, acc * x, copy(gobble))


gobble_size = 10000000
gobble = numpy.zeros(gobble_size)
result = noodles.run_single(factorial_tr(10, gobble=gobble))
Пример #27
0
def test_class_decorator():
    a = make_object(A, 5).multiply(10)
    a.second = 7
    result = run_single(a)
    assert result.value == 50
    assert result.second == 7
Пример #28
0
def test_truthfulness():
    w = sub(4, add(3, 2))
    a = cond(True, w, should_not_run())
    b = cond(False, should_not_run(), w)
    result = run_single(mul(a, b))
    assert result == 1
Пример #29
0
from noodles import (schedule, maybe, run_single)


@schedule
@maybe
def inv(x):
    return 1 / x


@schedule
@maybe
def add(**args):
    return sum(args.values())


if __name__ == "__main__":
    wf = add(a=inv(0), b=inv(0))
    result = run_single(wf)
    print(result)
Пример #30
0
    @property
    def attr(self):
        return sqr(self.__attr)

    def mul_attr(self, factor=1):
        return mul(self.__attr, factor)

    @attr.setter
    def attr(self, x):
        self.__attr = divide(x, 2)


@schedule
class B:
    pass


a = A(5).multiply(10)
a.second = 7
a.attr = 1.0

b = B()
b.x = a.x
b.second = a.second
b.attr = a.attr

draw_workflow("oop-wf.svg", b._workflow)
result = run_single(b)

print(result.x, result.second, result.attr)
Пример #31
0
def test_class_methods_00():
    a = A(7)
    b = a(6)

    result = run_single(b)
    assert result == 42
Пример #32
0
def test_exception_00():
    with raises(MyException):
        wf = raises_my_exception()
        run_single(wf)
Пример #33
0
def test_private():
    a = add(1, 1)
    a._private = 3
    assert a._private == 3
    assert not hasattr(run_single(a), '_private')
Пример #34
0
def test_exception_01():
    with raises(TypeError):
        wf = not_really_annotated()
        run_single(wf)
Пример #35
0
def test_class_methods_00():
    a = A(7)
    b = a(6)

    result = run_single(b)
    assert result == 42
Пример #36
0
def test_exception_00():
    wf = raises_my_exception()
    run_single(wf)
Пример #37
0
from noodles import (schedule, run_single)
from noodles.tutorial import (add)
from noodles.draw_workflow import draw_workflow


@schedule
class A:
    def __init__(self, value):
        self.value = value

    @property
    def square(self):
        return self.value**2

    @square.setter
    def square(self, sqr):
        self.value = sqr**(1 / 2)


u = A(3)
v = A(4)
u.square = add(u.square, v.square)

draw_workflow("pythagoras.pdf", u.value._workflow)

print("⎷(3² + 4²) = ", run_single(u.value))
Пример #38
0
def test_exception_01():
    wf = not_really_annotated()
    run_single(wf)
Пример #39
0
def test_truthfulness():
    w = sub(4, add(3, 2))
    a = cond(True, w, should_not_run())
    b = cond(False, should_not_run(), w)
    result = run_single(mul(a, b))
    assert result == 1
Пример #40
0
def test_unpack_00():
    a, b, c = unpack(f(), 3)
    d = run_single(add(a, add(b, c)))
    assert d == 6
Пример #41
0
from noodles import (schedule, run_single)


@schedule
def double(x):
    return x['value'] * 2


@schedule
def add(x, y):
    return x + y


a = {'value': 4}
b = double(a)
a['value'] = 5
c = double(a)
d = add(b, c)

print(run_single(d))
Пример #42
0
from noodles import (schedule, run_single)

@schedule
def double(x):
    return x['value'] * 2

@schedule
def add(x, y):
    return x + y

a = {'value': 4}
b = double(a)
a['value'] = 5
c = double(a)
d = add(b, c)

print(run_single(d))