import matplotlib.pyplot as plt

import nengo
import nengo_spa as spa


def input_func(t):
    return "1"

subdim = 64

with spa.Network() as model:
    probes = []

    for dim in [1, 16, 64, 512]:
        spa_input = spa.Transcode(input_func, output_vocab=dim)
        spa_state = spa.State(dim, subdimensions=min(dim, subdim),
                              represent_cc_identity=False)
        nengo.Connection(spa_input.output, spa_state.input)
        probes.append(nengo.Probe(spa_state.output, synapse=0.05))

with nengo.Simulator(model) as sim:
    sim.run(1)

plt.figure()
plt.plot(sim.trange(), sim.data[probes[0]][:, 0], label="1D")
plt.plot(sim.trange(), sim.data[probes[1]][:, 0], label="16D")
plt.plot(sim.trange(), sim.data[probes[2]][:, 0], label="64D")
plt.plot(sim.trange(), sim.data[probes[3]][:, 0], label="512D")
plt.legend()
plt.title("Value of D[0] for subdim=%i" % subdim)
plt.show()
