Connecting cells in Parallel NEURON

General issues of interest both for network and
individual cell parallelization.

Moderator: hines

Post Reply
shyam_u2
Posts: 77
Joined: Sun Feb 20, 2011 7:15 pm

Connecting cells in Parallel NEURON

Post by shyam_u2 »

I have a small doubt regarding parallel implementation of network model. I was going through this paper

http://www.neuron.yale.edu/neuron/stati ... nm2008.pdf

For example pls consider this scenario.
Suppose we have 'n' incoming connections to a cell and we need to connect these n incoming connections to the post synaptic cell. Do we need to have 'n' Exp2Syn(or similar) objects for the 'n' incoming connections or is it enough to create a single Exp2syn(or similar) object and connect all the 'n' incoming connections to it ?

Thanks,

Shyam
ted
Site Admin
Posts: 6300
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Connecting cells in Parallel NEURON

Post by ted »

Depends entirely on what you are trying to represent. Consider the following examples:

1. GABAergic synapses attached to the soma. Each synapse has identical intrinsic properties (reversal potential, time course). However, some are "strong" (a presynaptic spike elicits a large conductance change) and others "weak" (a presynaptic spike elicits a small conductance change). This can be implemented with a single point process (Exp2Syn would work nicely) attached to the soma of the postsynaptic cell. The difference between strong and weak inputs can be represented by adjusting the weights of the NetCons that deliver events to the point process.

2. AMPAergic synapses attached to different dendritic branches. This requires more than one point process (ExpSyn would work nicely) because the synaptic mechanisms are attached to different sections.

3. AMPAergic synapses attached to different locations along a single dendritic branch. Now the answer depends on the spatial discretization of the section that represents the dendritic branch. If nseg == 1, and the synapses have identical intrinsic properties, a single ExpSyn would suffice.
shyam_u2
Posts: 77
Joined: Sun Feb 20, 2011 7:15 pm

Re: Connecting cells in Parallel NEURON

Post by shyam_u2 »

Thank you very much for your reply.

In my model the post synaptic cell has jus one compartment(soma). All the incoming connections are excitatory and they have similar properties. The synapse is a separate point process written as mod file. Here are my observations.

1. When i connect the incoming connections to just a single a single point process inserted in soma, the number of spikes emitted by the cell is reduced.

2. When i connect the incoming connections each with a separate point process inserted in soma, the number of spikes emitted by the cell increases drastically.

Is there any reason for this ?
ted
Site Admin
Posts: 6300
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Connecting cells in Parallel NEURON

Post by ted »

Where did you get the mod file for the synaptic mechanism?
shyam_u2
Posts: 77
Joined: Sun Feb 20, 2011 7:15 pm

Re: Connecting cells in Parallel NEURON

Post by shyam_u2 »

Thanks for your reply. I inherited this model from my predecessor. The synaptic mechanism which I am talking about though is a published one.

The title is Synapse C=O gating scheme.

Published in:
Sergio M. Solinas, Lia Forti, Elisabetta Cesana,
Jonathan Mapelli, Erik De Schutter and Egidio D`Angelo (2008)
Computational reconstruction of pacemaking and intrinsic
electroresponsiveness in cerebellar golgi cells
Frontiers in Cellular Neuroscience 2:2

Thanks

Shyam
ted
Site Admin
Posts: 6300
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Connecting cells in Parallel NEURON

Post by ted »

What is the name of the mod file?
shyam_u2
Posts: 77
Joined: Sun Feb 20, 2011 7:15 pm

Re: Connecting cells in Parallel NEURON

Post by shyam_u2 »

Its Synapse.mod. I am pasting the link below.

https://senselab.med.yale.edu/modeldb/S ... ynapse.mod


Shyam
ted
Site Admin
Posts: 6300
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Connecting cells in Parallel NEURON

Post by ted »

The problem is that the NMODL code for this synaptic mechanism is written in such a way that it cannot properly handle events delivered by multiple NetCons.

This is a simple implementation of a saturating synapse. At initialization, the synapse is "off" and the forward rate constant r1 is 0 in the kinetic scheme that governs the fraction of open channels
~ C <-> O (r1,1/tau2)
so that C == 1 and O (the open fraction) is 0.

Arrival of an input event (an event with flag==0) switches the synapse to "on" and makes r1 nonzero (think "transmitter in synaptic cleft"). It also launches a self-event that arrives Cdur ms later. If no additional input events arrive while the synapse is "on", arrival of the self-event will turn r1 back to 1 and the open fraction O will decay back to 0. Each input event that arrives while the synapse is "on" merely prolongs the duration over which r1 is nonzero, i.e. prolongs the "presence of transmitter in the synaptic cleft".

So a single instance of this mechanism cannot summate multiple input streams. If you have multiple input streams but want to continue using this mechanism, you're stuck with having to give each input stream (each NetCon) its own synaptic mechanism instance.

Further comments:

The units for tau1, tau2, Tmax, and T are rubbish. They should clearly be ms, ms, 1, and 1.

Example 10.6: Saturating synapses in the NEURON Book (pages 284 et seq.) presents the NMODL code for a synaptic mechanism that not only implements receptor saturation, but also properly and efficiently handles summation of multiple input streams. Here it is:

Code: Select all

: ampa.mod
: saturating synapse model using discrete events

NEURON {
  POINT_PROCESS AMPA_S
  RANGE g
  NONSPECIFIC_CURRENT i
  GLOBAL Cdur, Alpha, Beta, Erev, Rinf, Rtau
}

UNITS {
  (nA)   = (nanoamp)
  (mV)   = (millivolt)
  (umho) = (micromho)
}

PARAMETER {
  Cdur  = 1.0   (ms)  : transmitter duration (rising phase)
  Alpha = 1.1   (/ms) : forward (binding) rate
  Beta  = 0.19  (/ms) : backward (dissociation) rate
  Erev  = 0     (mV)  : equilibrium potential
}

ASSIGNED {
  v     (mV)   : postsynaptic voltage
  i     (nA)   : current = g*(v - Erev)
  g     (umho) : conductance
  Rtau  (ms)   : time constant of channel binding
  Rinf  : fraction of open channels if xmtr was present "forever"
  synon : sum of weights of all synapses that are in the "onset" state
}

STATE { Ron Roff }  : initialized to 0 by default
: Ron and Roff are the total conductances of all synapses 
:   that are in the "onset" (transmitter pulse ON)
:   and "offset" (transmitter pulse OFF) states, respectively

INITIAL {
  Rinf = Alpha / (Alpha + Beta)
  Rtau = 1 / (Alpha + Beta)
  synon = 0
}

BREAKPOINT {
  SOLVE release METHOD cnexp
  g = (Ron + Roff)*1(umho)
  i = g*(v - Erev)
}

DERIVATIVE release {
  Ron' = (synon*Rinf - Ron)/Rtau
  Roff' = -Beta*Roff
}

NET_RECEIVE(weight, on, r0, t0 (ms)) {
  : on == 1 if transmitter is present ("onset" state), otherwise 0
  : flag is an implicit argument of NET_RECEIVE, normally 0
  if (flag == 0) {
    : a spike happened, so start onset state if not already in onset state
    if (!on) {
      : this synapse joins the set of synapses in the onset state
      synon = synon + weight
      r0 = r0*exp(-Beta*(t - t0)) : r0 at start of onset state
      : r0 joins the "onset" conductance pool,
      :   which grows according to Ron' = ...
      :   and leaves the "offset" conductance pool,
      :   which decays according to Roff' = ...
      Ron = Ron + r0
      Roff = Roff - r0
      t0 = t
      on = 1
      net_send(Cdur, 1)
    } else {
      : already in onset state, so move offset time
      net_move(t+Cdur)
    }
  }
  if (flag == 1) {
    : "turn off transmitter"
    : i.e. this synapse joins the set of synapses in the offset state
    synon = synon - weight
    : r0 at start of offset state
    r0 = weight*Rinf + (r0 - weight*Rinf)*exp(-(t - t0)/Rtau)
    : r0 leaves the "onset" conductance pool,
    :   and joins the "offset" conductance pool
    Ron = Ron - r0
    Roff = Roff + r0
    t0 = t
    on = 0
  }
}
shyam_u2
Posts: 77
Joined: Sun Feb 20, 2011 7:15 pm

Re: Connecting cells in Parallel NEURON

Post by shyam_u2 »

I understand that the example which i mentioned doesn't summate inputs from more than one stream. But when another input event arrives while the synapse is on, it doesn't extend the period of transmitter in the cleft. Comparing with your saturating synapse model in NEURON book, there is nothing like "net_move(t + Cdur)". Does that mean, even with one input stream(one netcon) it doesn't summate effectively ie it doesn't promote sustained elevation of the transmitter when there is a burst of events from a single netcon ?

Thanks in advance.
Thank you very much for help regarding implementing different membrane potentials for different cells in a network. It works perfectly.
shyam_u2
Posts: 77
Joined: Sun Feb 20, 2011 7:15 pm

Re: Connecting cells in Parallel NEURON

Post by shyam_u2 »

Also, How does NET_RECEIVE differentiates event from different streams. I am asking this because in the documentation I read "We resolve this ambiguity by choosing concatenation, so that repetitive impulses on one stream produce a saturating conductance change (Fig. 10.10). However, conductance changes elicited by separate streams will summate".
ted
Site Admin
Posts: 6300
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Connecting cells in Parallel NEURON

Post by ted »

Thank you very much for help regarding implementing different membrane potentials for different cells in a network. It works perfectly.
Glad to be of help. It's too bad the Forum was down when you asked; our exchange contained many things that would be potentially of use to others. It probably deserves a writeup as a tutorial for NEURON's Documentation page.
shyam_u2 wrote:I understand that the example which i mentioned doesn't summate inputs from more than one stream. But when another input event arrives while the synapse is on, it doesn't extend the period of transmitter in the cleft. . . . Does that mean, even with one input stream(one netcon) it doesn't summate effectively ie it doesn't promote sustained elevation of the transmitter when there is a burst of events from a single netcon ?
It will summate reasonably well as long as the interspike interval is longer than Cdur, the "duration of transmitter presence in the synaptic cleft"--maximal summation will occur for ISI just slightly longer than Cdur. But as soon as the ISI becomes shorter than Cdur, it will begin to ignore inputs that arrive too early. As the ISI is progressively reduced, it will first ignore every other input event, then two out of three, etc.. This may or may not be biologically plausible for any particular pair of pre- and postsynaptic neurons.
ted
Site Admin
Posts: 6300
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Connecting cells in Parallel NEURON

Post by ted »

shyam_u2 wrote:Also, How does NET_RECEIVE differentiates event from different streams.
The AMPA_S mechanism in example 10.6 is able to represent multiple ampaergic synapses, each driven by its own input stream, because each NetCon that projects to an instance of AMPA_S has an associated weight vector that stores the state of the "synapse" that it drives.
The statement
NET_RECEIVE (weight, on, r0, t0 (ms))
means that the weight vector's elements are
weight -- the strength of this particular synapse
on -- whether or not transmitter is present in this particular synaptic cleft
r0 -- the conductance of this particular synapse at the present time
t0 -- the present time

If you have a copy of The NEURON Book, this would be a good time to review chapter 10. If not, you might want to have a go at this pre-publication draft of chapter 10
http://www.neuron.yale.edu/ftp/ted/book ... xedref.pdf
Post Reply