Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
               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(),
Ejemplo n.º 3
0
                    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,
Ejemplo n.º 4
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]
Ejemplo n.º 5
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,