Beispiel #1
0
def test_assignment_of_dynamic_scalar(Simulator, rng):
    with spa.Network() as model:
        source = spa.Scalar()
        sink = spa.Scalar()
        nengo.Connection(nengo.Node(0.5), source.input)
        source >> sink
        p = nengo.Probe(sink.output, synapse=0.03)

    with Simulator(model) as sim:
        sim.run(0.5)

    assert_allclose(sim.data[p][sim.trange() > 0.3], 0.5, atol=0.2)
Beispiel #2
0
def test_product_of_scalars(Simulator):
    with spa.Network() as model:
        stimulus = nengo.Node(0.5)
        a = spa.Scalar()
        b = spa.Scalar()
        nengo.Connection(stimulus, a.input)
        nengo.Connection(stimulus, b.input)
        x = a * b
        p = nengo.Probe(x.construct(), synapse=0.03)

    with Simulator(model) as sim:
        sim.run(0.5)

    assert_allclose(sim.data[p][sim.trange() > 0.3], 0.25, atol=0.2)
Beispiel #3
0
def test_access_thal_and_bg_objects():
    with spa.Network() as m:
        m.a = spa.Scalar()
        m.b = spa.Scalar()

        m.c = spa.Scalar()
        m.d = spa.Scalar()

        with spa.ActionSelection() as actions:
            spa.ifmax(m.a, 0 >> m.c)
            spa.ifmax(m.b, 1 >> m.c)

    assert isinstance(actions.bg, spa.BasalGanglia)
    assert isinstance(actions.thalamus, spa.Thalamus)
Beispiel #4
0
 def model(self):
     with spa.Network() as model:
         model.state_a = spa.State(16)
         model.state_b = spa.State(32)
         model.state_c = spa.State(32)
         model.scalar = spa.Scalar()
     return model
Beispiel #5
0
def test_assignment_of_fixed_scalar(Simulator, rng):
    with spa.Network() as model:
        sink = spa.Scalar()
        0.5 >> sink
        p = nengo.Probe(sink.output, synapse=0.03)

    with Simulator(model) as sim:
        sim.run(0.5)

    assert_allclose(sim.data[p][sim.trange() > 0.3], 0.5, atol=0.2)
Beispiel #6
0
def test_scalar_addition(Simulator):
    with spa.Network() as model:
        a = spa.Scalar()
        b = spa.Scalar()

        0.3 >> a
        0.2 >> b
        n1 = (a + b).construct()
        n2 = nengo.Node(size_in=1)
        (a + b).connect_to(n2)

        p1 = nengo.Probe(n1, synapse=0.03)
        p2 = nengo.Probe(n2, synapse=0.03)

    with Simulator(model) as sim:
        sim.run(0.3)

    assert np.all(np.abs(sim.data[p1][sim.trange() > 0.2] - 0.5) < 0.1)
    assert np.all(np.abs(sim.data[p2][sim.trange() > 0.2] - 0.5) < 0.1)
Beispiel #7
0
def test_action_selection(Simulator, rng):
    vocab = spa.Vocabulary(64)
    vocab.populate("A; B; C; D; E; F")

    with spa.Network() as model:
        state = spa.Transcode(lambda t: "ABCDEF"[min(5, int(t / 0.5))],
                              output_vocab=vocab)
        scalar = spa.Scalar()
        pointer = spa.State(vocab)
        with ActionSelection():
            spa.ifmax(spa.dot(state, PointerSymbol("A")), 0.5 >> scalar)
            spa.ifmax(spa.dot(state, PointerSymbol("B")),
                      PointerSymbol("B") >> pointer)
            spa.ifmax(spa.dot(state, PointerSymbol("C")), state >> pointer)
            d_utility = spa.ifmax(0, PointerSymbol("D") >> pointer)
            spa.ifmax(
                spa.dot(state, PointerSymbol("E")),
                0.25 >> scalar,
                PointerSymbol("E") >> pointer,
            )
        nengo.Connection(nengo.Node(lambda t: 1.5 < t <= 2.0), d_utility)
        p_scalar = nengo.Probe(scalar.output, synapse=0.03)
        p_pointer = nengo.Probe(pointer.output, synapse=0.03)

    with Simulator(model) as sim:
        sim.run(3.0)

    t = sim.trange()
    assert_allclose(sim.data[p_scalar][(0.3 < t) & (t <= 0.5)], 0.5, atol=0.2)
    assert_sp_close(sim.trange(),
                    sim.data[p_pointer],
                    vocab["B"],
                    skip=0.8,
                    duration=0.2)
    assert_sp_close(sim.trange(),
                    sim.data[p_pointer],
                    vocab["C"],
                    skip=1.3,
                    duration=0.2)
    assert_sp_close(sim.trange(),
                    sim.data[p_pointer],
                    vocab["D"],
                    skip=1.8,
                    duration=0.2)
    assert_allclose(sim.data[p_scalar][(2.3 < t) & (t <= 2.5)], 0.25, atol=0.2)
    assert_sp_close(sim.trange(),
                    sim.data[p_pointer],
                    vocab["E"],
                    skip=2.3,
                    duration=0.2)
Beispiel #8
0
def test_assignment_of_nengo_scalar(source, use_ens, Simulator, rng):
    with spa.Network() as model:
        source = eval(source)
        if use_ens:
            ens = nengo.Ensemble(50, 1)
            nengo.Connection(source, ens)
            source = ens
        sink = spa.Scalar()
        source >> sink
        p = nengo.Probe(sink.output, synapse=0.03)

    with Simulator(model) as sim:
        sim.run(0.5)

    assert_allclose(sim.data[p][sim.trange() > 0.3], 0.5, atol=0.2)
Beispiel #9
0
def test_dot_product(Simulator, seed, plt):
    d = 16

    with spa.Network(seed=seed) as model:
        model.state_a = spa.State(d)
        model.state_b = spa.State(d)
        model.result = spa.Scalar()

        model.stimulus = spa.Transcode(lambda t: "A" if t <= 0.3 else "B",
                                       output_vocab=d)

        spa.sym.A >> model.state_a
        model.stimulus >> model.state_b
        spa.dot(model.state_a, model.state_b) >> model.result
        p = nengo.Probe(model.result.output, synapse=0.03)

    with Simulator(model) as sim:
        sim.run(0.6)

    plt.plot(sim.trange(), sim.data[p])

    t = sim.trange()
    assert np.mean(sim.data[p][(t > 0.1) & (t <= 0.3)]) > 0.8
    assert np.mean(sim.data[p][t > 0.4]) < 0.15
Beispiel #10
0
def test_pointer_symbol_with_dynamic_scalar(Simulator, rng):
    with spa.Network():
        scalar = spa.Scalar()
        with pytest.raises(SpaTypeError):
            PointerSymbol("A") * scalar
Beispiel #11
0
def test_scalar_product():
    with spa.Network() as model:
        model.scalar = spa.Scalar()
        with spa.ActionSelection():
            spa.ifmax(model.scalar * model.scalar, 1 >> model.scalar)