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)
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')
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')
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')
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)
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')
}) 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
# 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 #}
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')
"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()
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' ])))