def build_network(sim, order=1000, epsilon=0.1, delay=1.5, J=0.1, theta=20.0, tau=20.0, tau_syn=0.1, tau_refrac=2.0, v_reset=10.0, R=1.5, g=5, eta=2, seed=None): NE = 4 * order NI = 1 * order CE = int(epsilon * NE) # number of excitatory synapses per neuron CI = int(epsilon * NI) # number of inhibitory synapses per neuron CMem = tau/R J_unit = psp_height(tau, R, tau_syn) J_ex = J / J_unit J_in = -g * J_ex nu_th = theta / (J_ex * CE * R * tau_syn) nu_ex = eta * nu_th p_rate = 1000.0 * nu_ex * CE assert seed is not None rng = NumpyRNG(seed) neuron_params = { "nrn_tau": tau, "nrn_v_threshold": theta, "nrn_refractory_period": tau_refrac, "nrn_v_reset": v_reset, "nrn_R": R, "syn_tau": tau_syn } celltype = Dynamics(name='iaf', subnodes={'nrn': read("sources/BrunelIaF.xml")['BrunelIaF'], 'syn': read("sources/AlphaPSR.xml")['AlphaPSR']}) celltype.connect_ports('syn.i_synaptic', 'nrn.i_synaptic') exc = sim.Population(NE, nineml_cell_type('BrunelIaF', celltype, {'syn': 'syn_weight'})(**neuron_params)) inh = sim.Population(NI, nineml_cell_type('BrunelIaF', celltype, {'syn': 'syn_weight'})(**neuron_params)) all = exc + inh all.initialize(v=RandomDistribution('uniform', (0.0, theta), rng=rng)) stim = sim.Population(NE + NI, nineml_cell_type('Poisson', read("sources/Poisson.xml")['Poisson'], {})(rate=p_rate)) print("Connecting network") exc_synapse = sim.StaticSynapse(weight=J_ex, delay=delay) inh_synapse = sim.StaticSynapse(weight=J_in, delay=delay) input_connections = sim.Projection(stim, all, sim.OneToOneConnector(), exc_synapse, receptor_type="syn") exc_connections = sim.Projection(exc, all, sim.FixedNumberPreConnector(n=CE), exc_synapse, receptor_type="syn") # check is Pre not Post inh_connections = sim.Projection(inh, all, sim.FixedNumberPreConnector(n=CI), inh_synapse, receptor_type="syn") return stim, exc, inh
w_eff * cell_parameters['nrn_tau'] * cell_parameters['syn_tau']) print("\ntau = {}, R = {}, tau_syn = {}".format(cell_parameters['nrn_tau'], cell_parameters["nrn_R"], cell_parameters["syn_tau"])) print("\nEffective weight = {} nA".format(w_eff)) print("Threshold rate = {} Hz\n".format(nu_thresh)) # PyNN/NineML simulation sim.setup(timestep=dt) celltype = Dynamics(name='iaf', subnodes={'nrn': read("../sources/BrunelIaF.xml")['BrunelIaF'], 'syn': read("../sources/AlphaPSR.xml")['AlphaPSR']}) celltype.connect_ports('syn.i_synaptic', 'nrn.i_synaptic') p1 = sim.Population(4, nineml_cell_type('BrunelIaF', celltype, {'syn': 'syn_weight'})(**cell_parameters)) cell_parameters_no_spikes = copy(cell_parameters) cell_parameters_no_spikes["nrn_v_threshold"] = 1000.0 p2 = sim.Population(4, nineml_cell_type('BrunelIaF', celltype, {'syn': 'syn_weight'})(**cell_parameters_no_spikes)) stim = sim.Population(4, nineml_cell_type('Poisson', read("../sources/Poisson.xml")['Poisson'], {})( rate=[0.5*nu_thresh, nu_thresh, 2*nu_thresh, 0.0])) prj1 = sim.Projection(stim, p1, sim.OneToOneConnector(), sim.StaticSynapse(weight=w_eff, delay=delay), receptor_type='syn') prj2 = sim.Projection(stim, p2, sim.OneToOneConnector(),
AnalogReceivePort("V", un.voltage), AnalogSendPort("I", un.current) ], parameters=[ Parameter('tau', un.time), Parameter('q', un.conductance), Parameter('vrev', un.voltage) ]) iaf_2coba = Dynamics(name="iaf_2coba", subnodes={ "iaf": iaf, "excitatory": coba, "inhibitory": deepcopy(coba) }) iaf_2coba.connect_ports("iaf.V", "excitatory.V") iaf_2coba.connect_ports("iaf.V", "inhibitory.V") iaf_2coba.connect_ports("excitatory.I", "iaf.ISyn") iaf_2coba.connect_ports("inhibitory.I", "iaf.ISyn") celltype_cls = sim.nineml.nineml_celltype_from_model( name="iaf_2coba", nineml_model=iaf_2coba, synapse_components=[ sim.nineml.CoBaSyn(namespace='excitatory', weight_connector='q'), sim.nineml.CoBaSyn(namespace='inhibitory', weight_connector='q') ]) parameters = { 'iaf_cm': 1.0, 'iaf_gl': 50.0,
cell_parameters["nrn_R"], cell_parameters["syn_tau"]) w_eff = weight/scale_factor delay = 0.5 print("\nEffective weight = {} nA\n".format(w_eff)) # PyNN/NineML simulation sim.setup(timestep=dt) celltype = Dynamics(name='iaf', subnodes={'nrn': read("../sources/BrunelIaF.xml")['BrunelIaF'], 'syn': read("../sources/AlphaPSR.xml")['AlphaPSR']}) celltype.connect_ports('syn.i_synaptic', 'nrn.i_synaptic') p = sim.Population(2, nineml_cell_type('BrunelIaF', celltype, {'syn': 'syn_weight'})(**cell_parameters)) stim = sim.Population(1, sim.SpikeSourceArray(spike_times=spike_times)) prj = sim.Projection(stim, p, sim.AllToAllConnector(), sim.StaticSynapse(weight=w_eff, delay=delay), receptor_type='syn') p.record(['nrn_v', 'syn_a', 'syn_b']) sim.run(t_stop) nrn_data = p.get_data().segments[0]
transitions=On('spikeinput', do=["g=g+q"]), ) ], state_variables=[StateVariable('g', un.conductance)], analog_ports=[AnalogReceivePort("V", un.voltage), AnalogSendPort("I", un.current)], parameters=[Parameter('tau', un.time), Parameter('q', un.conductance), Parameter('vrev', un.voltage)]) iaf_2coba = Dynamics( name="iaf_2coba", subnodes={"iaf": iaf, "excitatory": coba, "inhibitory": deepcopy(coba)}) iaf_2coba.connect_ports("iaf.V", "excitatory.V") iaf_2coba.connect_ports("iaf.V", "inhibitory.V") iaf_2coba.connect_ports("excitatory.I", "iaf.ISyn") iaf_2coba.connect_ports("inhibitory.I", "iaf.ISyn") celltype_cls = sim.nineml.nineml_celltype_from_model( name="iaf_2coba", nineml_model=iaf_2coba, synapse_components=[ sim.nineml.CoBaSyn(namespace='excitatory', weight_connector='q'), sim.nineml.CoBaSyn(namespace='inhibitory', weight_connector='q')]) parameters = { 'iaf_cm': 1.0, 'iaf_gl': 50.0, 'iaf_taurefrac': 2.0,