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

    cs = csa.cset(csa.random(0.1), 10000.0, 1.0)

    pop1 = nest.LayoutNetwork("iaf_neuron", [16])
    pop2 = nest.LayoutNetwork("iaf_neuron", [16])

    nest.PrintNetwork(10)

    nest.CGConnect(pop1, pop2, cs, {"weight": 0, "delay": 1})

    pg = nest.Create("poisson_generator", params={"rate": 80000.0})
    nest.DivergentConnect(pg, nest.GetLeaves(pop1)[0], 1.2, 1.0)

    vm_params = {
        "record_to": ["memory"],
        "withgid": True,
        "withtime": True,
        "interval": 0.1
    }
    vm = nest.Create("voltmeter", params=vm_params)
    nest.DivergentConnect(vm, nest.GetLeaves(pop2)[0])

    nest.Simulate(50.0)

    from nest import visualization
    allnodes = pg + nest.GetLeaves(pop1)[0] + nest.GetLeaves(pop2)[0] + vm
    visualization.plot_network(allnodes, "test_csa.png")

    if havePIL:
        im = Image.open("test_csa.png")
        im.show()

    from nest import voltage_trace
    voltage_trace.from_device(vm)
Пример #2
0
def simulate():
    global startsimulate, endsimulate, SAVE_PATH
    SAVE_PATH = "output-{0}/".format(NEURONS)
    print os.getcwd()
    if not os.path.exists("../results/"):
        os.mkdir("../results/")

    if not os.path.exists(SAVE_PATH):
        os.mkdir(SAVE_PATH)
    begin = 0

    logger.debug('* * * Simulating')
    nest.PrintNetwork()
    startsimulate = datetime.datetime.now()
    for t in np.arange(0, T, dt):
        print "SIMULATING [{0}, {1}]".format(t, t + dt)
        nest.Simulate(dt)
        #print nest.GetConnections( (Cortex[L5][Glu][10][0], )   ,  Cortex[L6][GABA][10], synapse_model="stdp_synapse" )
        for data in sorted(
                nest.GetStatus(nest.GetConnections(
                    (Cortex[L5][Glu][10][0], )))):
            print "from {0} to {1} weight {2} | delay {3} | tau_plus {4}".format(
                data['source'], data['target'], data['weight'], data['delay'],
                data['tau_plus'])


#
        end = clock()
        times.append("{0:10.1f} {1:8.1f} {2:10.1f} {3:4.1f} {4}\n".format(
            begin, end - begin, end, t,
            datetime.datetime.now().time()))
        begin = end
        print "COMPLETED {0}%\n".format(t / dt)
    endsimulate = datetime.datetime.now()
    logger.debug('* * * Simulation completed successfully')
Пример #3
0
def simulate():
    global startsimulate, endsimulate, SAVE_PATH

    nest.PrintNetwork()

    logger.debug('* * * Simulating')
    startsimulate = datetime.datetime.now()

    # For example set 10ms. It's mean that we will start read data from 10ms of simulation
    last_spike_time = 10

    for t in np.arange(0, T, dt):
        print "SIMULATING [{0}, {1}]".format(t, t + dt)
        # if interval ended (by the last spike time)
        if last_spike_time <= t:
            # try to find data file
            if os.path.isfile(filename):
                # open file an read all intervals
                with open(filename, 'r') as f:
                    # write with some coefficient
                    intervals = [
                        float(time) / 100 for time in f.readline().split(" ")
                    ]

                # transfer to spike times
                intervals[:1] = t, intervals[0] + t
                for i in xrange(2, len(intervals)):
                    intervals[i] += intervals[i - 1]
                # set new last spike time
                print intervals

                last_spike_time = intervals[-1]
                # create generator with new intervals
                generator = nest.Create('spike_generator', 1)
                nest.SetStatus(
                    generator, {
                        'spike_times': intervals,
                        'spike_weights': [100. for i in intervals]
                    })

                # connect to the neuron
                nest.Connect(generator, (Cortex[L4][L4_Glu0][column][0], ))

                # delete unwanted data
                del intervals
                # mark file as opened
                os.rename(filename, filename + "_done")

        nest.Simulate(dt)
        print "COMPLETED {0:.2f}%\n".format(t / T * 100)

    endsimulate = datetime.datetime.now()
    logger.debug('* * * Simulation completed successfully')
Пример #4
0
def simulate():
    global startsimulate, endsimulate
    begin = 0
    nest.PrintNetwork()
    logger.debug('* * * Simulating')
    startsimulate = datetime.datetime.now()
    for t in np.arange(0, T, dt):
        print "SIMULATING [{0}, {1}]".format(t, t + dt)
        nest.Simulate(dt)
        end = clock()
        times.append("{0:10.1f} {1:8.1f} {2:10.1f} {3:4.1f} {4}\n".format(begin, end - begin, end,
                                                                          t, datetime.datetime.now().time()))
        begin = end
        print "COMPLETED {0}%\n".format(t/dt)
    endsimulate = datetime.datetime.now()
    logger.debug('* * * Simulation completed successfully')
Пример #5
0
def csa_example():

    cs = csa.cset(csa.random(0.1), 10000.0, 1.0)

    # This does not work yet, as the implementation does not yet
    # support nested subnets.
    #
    #pop1 = nest.LayoutNetwork("iaf_neuron", [4,4])
    #pop2 = nest.LayoutNetwork("iaf_neuron", [4,4])

    pop1 = nest.LayoutNetwork("iaf_neuron", [16])
    pop2 = nest.LayoutNetwork("iaf_neuron", [16])

    nest.PrintNetwork(10)

    nest.CGConnect(pop1, pop2, cs, {"weight": 0, "delay": 1})

    pg = nest.Create("poisson_generator", params={"rate": 80000.0})
    nest.DivergentConnect(pg, nest.GetLeaves(pop1)[0], 1.2, 1.0)

    vm = nest.Create("voltmeter",
                     params={
                         "record_to": ["memory"],
                         "withgid": True,
                         "withtime": True,
                         "interval": 0.1
                     })
    nest.DivergentConnect(vm, nest.GetLeaves(pop2)[0])

    nest.Simulate(50.0)

    # Not yet supported in NEST
    #from nest import visualization
    #allnodes = [pg, nest.GetLeaves(pop1)[0], nest.GetLeaves(pop2)[0], vm]
    #visualization.plot_network(allnodes, "test_csa.png", "png", plot_modelnames=True

    #if havePIL:
    #    im = Image.open("test_csa.png")
    #    im.show()

    from nest import voltage_trace
    voltage_trace.from_device(vm)
Пример #6
0
def simulate():
    global startsimulate, endsimulate, SAVE_PATH
    SAVE_PATH = "results/output-{0}/".format(NEURONS)
    if not os.path.exists(SAVE_PATH):
        os.mkdir(SAVE_PATH)
    begin = 0

    logger.debug('* * * Simulating')
    nest.PrintNetwork()
    startsimulate = datetime.datetime.now()
    for t in np.arange(0, T, dt):
        print "SIMULATING [{0}, {1}]".format(t, t + dt)
        nest.Simulate(dt)
        end = clock()
        times.append("{0:10.1f} {1:8.1f} {2:10.1f} {3:4.1f} {4}\n".format(begin, end - begin, end,
                                                                          t, datetime.datetime.now().time()))
        begin = end
        print "COMPLETED {0}%\n".format(t/dt)
    endsimulate = datetime.datetime.now()
    logger.debug('* * * Simulation completed successfully')
Пример #7
0
})
Vp_h = topo.CreateLayer(layerProps)
Vp_v = topo.CreateLayer(layerProps)

#! Collect all populations
#! -----------------------

#! For reference purposes, e.g., printing, we collect all populations
#! in a tuple:
populations = (retina, Tp, Rp, Vp_h, Vp_v)

#! Inspection
#! ----------

#! We can now look at the network using `PrintNetwork`:
nest.PrintNetwork()

#! We can also try to plot a single layer in a network. For
#! simplicity, we use Rp, which has only a single neuron per position.
topo.PlotLayer(Rp)
pylab.title('Layer Rp')
pylab.show()

#! Synapse models
#! ==============

#! Actual synapse dynamics, e.g., properties such as the synaptic time
#! course, time constants, reversal potentials, are properties of
#! neuron models in NEST and we set them in section `Neuron models`_
#! above. When we refer to *synapse models* in NEST, we actually mean
#! connectors which store information about connection weights and
Пример #8
0
# For bbox_extra_artists, see
# https://github.com/matplotlib/matplotlib/issues/351
plt.savefig('../user_manual_figures/layer1.png',
            bbox_inches='tight',
            bbox_extra_artists=tx)

print("#{ layer1s.log #}")
# { layer1s #}
print(nest.GetStatus(l)[0]['topology'])
# { end #}
print("#{ end.log #}")

print("#{ layer1p.log #}")
# { layer1p #}
nest.PrintNetwork(depth=2)
# { end #}
print("#{ end.log #}")

# --------------------------------------------------

nest.ResetKernel()

# { layer2 #}
l = tp.CreateLayer({
    'rows': 5,
    'columns': 5,
    'extent': [2.0, 0.5],
    'elements': 'iaf_neuron'
})
# { end #}
Пример #9
0
import nest
import pylab
import nest.topology as topo
pylab.ion()

nest.ResetKernel()

l1 = topo.CreateLayer({
    'columns': 4,
    'rows': 3,
    'extent': [2.0, 1.5],
    'elements': 'iaf_neuron'
})

nest.PrintNetwork()
nest.PrintNetwork(2)
nest.PrintNetwork(2, l1)

topo.PlotLayer(l1, nodesize=50)

# beautify
pylab.axis([-1.0, 1.0, -0.75, 0.75])
pylab.axes().set_aspect('equal', 'box')
pylab.axes().set_xticks((-0.75, -0.25, 0.25, 0.75))
pylab.axes().set_yticks((-0.5, 0, 0.5))
pylab.grid(True)
pylab.xlabel('4 Columns, Extent: 1.5')
pylab.ylabel('2 Rows, Extent: 1.0')

# pylab.savefig('grid_iaf.png')
Пример #10
0
    "positions": poss,
    "elements": "iaf_psc_alpha",
    "extent": [1.1, 1.1]
}

my_layer_dict_on_grid = {
    "rows": 11,
    "columns": 11,
    "extent": [11.0, 11.0],
    "elements": 'iaf_psc_alpha'
}

# connectivity specifications with a mask
conndict = {
    'connection_type': 'divergent',
    'mask': {
        'rectangular': {
            'lower_left': [-2.0, -1.0],
            'upper_right': [2.0, 1.0]
        }
    }
}

my_layer = topp.CreateLayer(my_layer_dict_on_grid)
topp.PlotLayer(my_layer)
topp.ConnectLayers(my_layer, my_layer, conndict)

nest.PrintNetwork(depth=1)
topp.PlotTargets([5], my_layer)
plt.show()
Пример #11
0
import random

pylab.ion()

nest.ResetKernel()

nest.CopyModel('iaf_psc_alpha', 'pyr')
nest.CopyModel('iaf_psc_alpha', 'in')
ctx = topo.CreateLayer({
    'columns': 4,
    'rows': 3,
    'extent': [2.0, 1.5],
    'elements': ['pyr', 'in']
})

nest.PrintNetwork()

nest.PrintNetwork(2)

nest.PrintNetwork(2, ctx)

# ctx_leaves is a work-around until NEST 3.0 is released
ctx_leaves = nest.GetLeaves(ctx)[0]

# extract position information
ppyr = pylab.array(
    tuple(
        zip(*[
            topo.GetPosition([n])[0] for n in ctx_leaves
            if nest.GetStatus([n], 'model')[0] == 'pyr'
        ])))