def CreateColumn(self, numOfCells, localInhibitionRadius=0): column = sim.create(numOfCells, NEURON_MODEL, self.column_neuron_params, label="blabla") # connect column with inhibitory connections inhColumnConnector = sim.FixedProbabilityConnector(0.9, weigths=-10.0) for neuron in column: sim.projection(neuron, column, syn_spec=self.syn_local_inh) return column
'gbar_Na': 20.0, 'gbar_K': 6.0, 'g_leak': 0.1, 'cm': 0.2, 'v_offset': ELeak, 'e_rev_Na': EIs[1], 'e_rev_K': EIs[2], 'e_rev_leak': ELeak, 'e_rev_E': EIs[1], 'e_rev_I': EIs[2], 'tau_syn_E': 0.2, 'tau_syn_I': 2.0, 'i_offset': 0.0, } neuron1 = sim.create(sim.HH_cond_exp(**cellparams)) neuron1.record(["v"]) neuron1.initialize(v=cellparams["e_rev_leak"]) neuron2 = sim.create(sim.HH_cond_exp(**cellparams)) neuron2.record(["v"]) neuron2.initialize(v=cellparams["e_rev_leak"]) spike_times = [2.0] spike_source = sim.Population(1, sim.SpikeSourceArray(spike_times=spike_times)) sim.Projection(spike_source, neuron1, sim.OneToOneConnector(), sim.StaticSynapse(weight=0.076, delay=0.1), receptor_type='excitatory'),
'g_leak' : 0.1, 'cm' : 0.2, 'v_offset' : ELeak, 'e_rev_Na' : EIs[1], 'e_rev_K' : EIs[2], 'e_rev_leak': ELeak, 'e_rev_E' : EIs[1], 'e_rev_I' : EIs[2], 'tau_syn_E' : 0.2, 'tau_syn_I' : 2.0, 'i_offset' : 0.0, } #vs = np.linspace(-75.0, EIs[0] + 5, 3) vs = [-80.0, -61.0, -60.0] neurons = [sim.create(sim.HH_cond_exp(**cellparams)) for _ in vs] for i in xrange(len(vs)): neurons[i].record(["v"]) neurons[i].initialize(v=vs[i]) sim.run(tEnd) fig = plt.figure(figsize=(cm2inch(12.4), cm2inch(7))) ax = fig.add_subplot(111) #cmap = plt.cm.rainbow #cmap = colors.LinearSegmentedColormap.from_list('blues', ['#729fcf', '#3465a4', # '#193a6b']) lss = ['--', ':', '-'] #colors = iter(cmap(np.linspace(0, 1, len(vs)))) colors = iter(['#204a87'] * 3)
import pyNN.nest as pynn import numpy as np import matplotlib.pyplot as plt pynn.setup(timestep=0.1, min_delay=2.0) sim_duration = 1000.0 if_cell = pynn.create(pynn.IF_cond_exp, {'i_offset':0.11, 'tau_refrac':3.0, 'v_thresh':-51.0}) source = pynn.create(pynn.SpikeSourcePoisson, {'rate':10}) pynn.connect(source, if_cell, weight=0.006, receptor_type='excitatory', delay=2.0) if_cell.record('v') source.record('spikes') pynn.run(sim_duration) pynn.end() if_cell_v = if_cell.get_data('v').segments[0].analogsignals[0] source_spiketrain = source.get_data('spikes').segments[0].spiketrains[0] fig,ax = plt.subplots(nrows=1,ncols=1, figsize=(5,4)) ax.plot(if_cell_v.times, if_cell_v, label='IF-cell membrane voltage') y_lims = ax.get_ylim() ax.vlines(source_spiketrain.times, ymin=y_lims[0], ymax=y_lims[1], color='black', alpha=0.3, label='Pre-synaptic spike', linestyle='--') ax.set_ylim(y_lims) ax.set_xlim(0,sim_duration) ax.set_xlabel('Time (ms)', fontsize='x-large') ax.set_ylabel('Membrane Voltage (mV)', fontsize='x-large') ax.tick_params(axis='both', labelsize='large') [ax.spines[l].set_visible(False) for l in ['top','right']]
'g_leak': 0.1, 'cm': 0.2, 'v_offset': ELeak, 'e_rev_Na': EIs[1], 'e_rev_K': EIs[2], 'e_rev_leak': ELeak, 'e_rev_E': EIs[1], 'e_rev_I': EIs[2], 'tau_syn_E': 0.2, 'tau_syn_I': 2.0, 'i_offset': 0.0, } #vs = np.linspace(-75.0, EIs[0] + 5, 3) vs = [-80.0, -61.0, -60.0] neurons = [sim.create(sim.HH_cond_exp(**cellparams)) for _ in vs] for i in xrange(len(vs)): neurons[i].record(["v"]) neurons[i].initialize(v=vs[i]) sim.run(tEnd) fig = plt.figure(figsize=(cm2inch(12.4), cm2inch(7))) ax = fig.add_subplot(111) #cmap = plt.cm.rainbow #cmap = colors.LinearSegmentedColormap.from_list('blues', ['#729fcf', '#3465a4', # '#193a6b']) lss = ['--', ':', '-'] #colors = iter(cmap(np.linspace(0, 1, len(vs)))) colors = iter(['#204a87'] * 3)
parser.add_argument('-i', '--num_inhib', help='number of inhibitory cells.', default=1, type=int) parser.add_argument('-r', '--inhib_rates_lower', help='lower boundary of inhibitory rates (Hz).', default=8.0, type=float) parser.add_argument('-e', '--num_excit', help='number of excitatory cells.', default=1, type=int) parser.add_argument('-p', '--excit_rates_lower', help='lower boundary of inhibitory rates (Hz).', default=5.0, type=float) parser.add_argument('-t', '--duration', help='duration of simulation.', default=500.0, type=float) parser.add_argument('-s', '--stdp', help='use STDP', default=False, action='store_true') parser.add_argument('-a', '--record_target_spikes', help='Record the target spikes.', default=False, action='store_true') parser.add_argument('-m', '--make_plots', help='make the plots, or not.', default=False, action='store_true') parser.add_argument('-d', '--debug', help='enter debug mode', default=False, action='store_true') args = parser.parse_args() pynn.setup(timestep=0.1, min_delay=2.0) if not args.debug: # define target cell target_cell = pynn.create(pynn.IF_cond_exp, {'i_offset':0.11, 'tau_refrac':3.0, 'v_thresh':-51.0}) # define inhibitory and excitatory populations inhib_rates, excit_rates = getRatesForInhibExcit(args.inhib_rates_lower, args.excit_rates_lower, args.num_inhib, args.num_excit) inhib_source = pynn.Population(args.num_inhib, pynn.SpikeSourcePoisson(rate=inhib_rates), label="inhib_input") excit_source = pynn.Population(args.num_excit, pynn.SpikeSourcePoisson(rate=excit_rates), label="excit_input") # define stdp rules, parameters could be messed around with here. stdp = pynn.STDPMechanism(weight=0.02, # this is the initial value of the weight timing_dependence=pynn.SpikePairRule(tau_plus=20.0, tau_minus=20.0, A_plus=0.01, A_minus=0.012), weight_dependence=pynn.AdditiveWeightDependence(w_min=0, w_max=0.04)) synapse_to_use = stdp if args.stdp else pynn.StaticSynapse(weight=0.02) # connect inhibitory and excitatory sources to target. Could connect inhib to excit? inhib_conn = pynn.Projection(inhib_source, target_cell, connector=pynn.AllToAllConnector(), synapse_type=synapse_to_use, receptor_type='inhibitory') excit_conn = pynn.Projection(excit_source, target_cell, connector=pynn.AllToAllConnector(), synapse_type=synapse_to_use, receptor_type='excitatory')
'gbar_Na' : 20.0, 'gbar_K' : 6.0, 'g_leak' : 0.1, 'cm' : 0.2, 'v_offset' : ELeak, 'e_rev_Na' : EIs[1], 'e_rev_K' : EIs[2], 'e_rev_leak': ELeak, 'e_rev_E' : EIs[1], 'e_rev_I' : EIs[2], 'tau_syn_E' : 0.2, 'tau_syn_I' : 2.0, 'i_offset' : 0.0, } neuron1 = sim.create(sim.HH_cond_exp(**cellparams)) neuron1.record(["v"]) neuron1.initialize(v=cellparams["e_rev_leak"]) neuron2 = sim.create(sim.HH_cond_exp(**cellparams)) neuron2.record(["v"]) neuron2.initialize(v=cellparams["e_rev_leak"]) spike_times = [2.0] spike_source = sim.Population(1, sim.SpikeSourceArray(spike_times=spike_times)) sim.Projection(spike_source, neuron1, sim.OneToOneConnector(), sim.StaticSynapse(weight=0.076, delay=0.1), receptor_type='excitatory'), sim.Projection(spike_source, neuron2, sim.OneToOneConnector(),
taumcond = 9.9 # ms tausyne = 2.9 # ms tausyni = 5.2 # ms tsim = 500. dt = .1 sim.setup(timestep=dt, min_delay=dt, max_delay=dt) ifcellscond = [ sim.create( sim.IF_cond_exp, { 'cm': cm, 'tau_m': taumcond, 'tau_syn_E': tausyne, 'tau_syn_I': tausyni, 'e_rev_E': ereve, 'e_rev_I': erevi, 'v_rest': vrest, 'v_thresh': 0, 'tau_refrac': 2.0 }) for i in range(1) ] for ifcell in ifcellscond: ifcell.initialize(v=vrest) ####### simulate ####### spkte = array( [50., 100., 103., 106., 109., 112., 115., 118., 121., 124., 127.]) + 150. spkti = spkte + 150.