Esempio n. 1
0
def test_max_delay():
    '''Test that changing delays after compression works. '''
    
    reinit_default_clock()
    inp = SpikeGeneratorGroup(1, [(0, 1*ms)])
    G = NeuronGroup(1, model='v:1')
    mon = StateMonitor(G, 'v', record=True)
    
    # one synapse
    syn = Synapses(inp, G, model='w:1', pre='v+=w', max_delay=5*ms)
    
    syn[:, :] = 1
    syn.w[:, :] = 1
    syn.delay[:, :] = 0 * ms
    
    net = Network(inp, G, syn, mon)    
    net.run(defaultclock.dt)
    syn.delay[:, :] = 5 * ms    
    net.run(6.5*ms)
    
    # spike should arrive at 5 + 1 ms    
    assert (mon[0][mon.times >= 6 * ms] == 1).all() 
    assert (mon[0][mon.times < 6 * ms] == 0).all()
    
    # same as above but with two synapses
    reinit_default_clock()
    mon.reinit()
    G.reinit()
    
    syn = Synapses(inp, G, model='w:1', pre='v+=w', max_delay=5*ms)
    
    syn[:, :] = 2
    syn.w[:, :] = 1
    syn.delay[:, :] = [0 * ms, 0 * ms]
    
    net = Network(inp, G, syn, mon)    
    net.run(defaultclock.dt)
    syn.delay[:, :] = [5 * ms, 5 * ms]
    net.run(6.5*ms)
    
    # spike should arrive at 5 + 1 ms
    assert (mon[0][mon.times >= 6 * ms] == 2).all()
    assert (mon[0][mon.times < 6 * ms] == 0).all()    
Esempio n. 2
0
def test_max_delay():
    '''Test that changing delays after compression works. '''

    reinit_default_clock()
    inp = SpikeGeneratorGroup(1, [(0, 1 * ms)])
    G = NeuronGroup(1, model='v:1')
    mon = StateMonitor(G, 'v', record=True)

    # one synapse
    syn = Synapses(inp, G, model='w:1', pre='v+=w', max_delay=5 * ms)

    syn[:, :] = 1
    syn.w[:, :] = 1
    syn.delay[:, :] = 0 * ms

    net = Network(inp, G, syn, mon)
    net.run(defaultclock.dt)
    syn.delay[:, :] = 5 * ms
    net.run(6.5 * ms)

    # spike should arrive at 5 + 1 ms
    assert (mon[0][mon.times >= 6 * ms] == 1).all()
    assert (mon[0][mon.times < 6 * ms] == 0).all()

    # same as above but with two synapses
    reinit_default_clock()
    mon.reinit()
    G.reinit()

    syn = Synapses(inp, G, model='w:1', pre='v+=w', max_delay=5 * ms)

    syn[:, :] = 2
    syn.w[:, :] = 1
    syn.delay[:, :] = [0 * ms, 0 * ms]

    net = Network(inp, G, syn, mon)
    net.run(defaultclock.dt)
    syn.delay[:, :] = [5 * ms, 5 * ms]
    net.run(6.5 * ms)

    # spike should arrive at 5 + 1 ms
    assert (mon[0][mon.times >= 6 * ms] == 2).all()
    assert (mon[0][mon.times < 6 * ms] == 0).all()