Netcon Weight

NMODL and the Channel Builder.
Post Reply
OJAG

Netcon Weight

Post by OJAG »

According to the neuron book pag 274 the Netcon.weight is a quantity with [g] dimensions (uS). Nevertheless in some nmodl files I found it used in different ways. So that it is still not clear for me if to suppose that
g=g_bar*w,
instead of
g=g_bar+w
is a correct assumption or not at all.

Could anybody give me some clues to clarify my concept?
ted
Site Admin
Posts: 6398
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Post by ted »

On page 275 of The NEURON Book there is the following sentence:
Threshold, delay, and weight are optional; their defaults are shown here
. . .

Code: Select all

netcon.weight = 0  // uS
While this is true for NEURON's built-in ExpSyn and Exp2Syn mechanisms, in general the
meaning and units for a NetCon's weight attribute depend entirely on that NetCon's target.
If the target is a conductance change synaptic mechanism, the weight may be
dimensionless or it may have units of conductance or something else (e.g. transmitter
concentration), depending on the equations that describe what happens when the synaptic
mechanism is activated. If the target is an artificial spiking cell, the weight is generally
dimensionless.
OJAG

Post by OJAG »

Many thanks Ted
OJAG

particular model of channels

Post by OJAG »

After thoroughly studying my channels code, taken from the standard modeldb database, under my assumption that, g=g_bar*W with g the conductance, g_bar maximum conductance of the channel and W the synaptic weight, it is still unclear for me, what's the roll of W, since when I stimulate the cell and I use the Netcon class to transmit the event , by using

Code: Select all

(..).append(new NetCon(&v(0), $synapse_name.object(i), thresh, delay, W))}}
with W values such as W=0.1 and W=1 the cell goes from one state of insensitivity to other one of apparent Hyper excitability, but not linearly as it was my initial hypotheses. the code I am using is the next

and I test the program initially by observing that if g=g_bar*W
g_bar=1e-5 /uS W=0.1 /[?] should produce exactly the same than
g_bar=0.5e-5/uS W=0.2

But the output of both aren't the same...

The question now is:

for this particular case
what is W?
what does W do?
How does it work?


Code: Select all

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

UNITS {
  (nA)   = (nanoamp)
  (mV)   = (millivolt)
  (uS) 	= (microsiemens)
}

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
  g     = 1e-5	(uS)		: conductance
}

ASSIGNED {
  v     (mV)   : postsynaptic voltage
  i     (nA)   : current = g*(v - Erev)
  g_eff (uS)   : 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_eff = g*(Ron + Roff)
  i = g_eff*(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
  }
}
ted
Site Admin
Posts: 6398
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: particular model of channels

Post by ted »

OJAG wrote:my channels code, taken from the standard modeldb database
ModelDB is "standard" only in the sense that the code in it is supposed to be either
(1) the code that the authors of a modeling paper used for the results they presented in
that paper, or
(2) the code that the authors (or a "reliable somebody else") say is their best
approximation to the code they used to generate those results.
the code I am using
is almost identical to listing 10.5 on pages 285-287 of
The NEURON Book. The only substantive difference is that the code you cite contains
a new parameter g that is just a scale factor that is applied to the syanptic conductance.

This is an implementation of saturating synaptic transmission, based on earlier work by
Destexhe, A., Mainen, Z.F., and Sejnowski, T.J.
An efficient method for computing synaptic conductances based on a kinetic model
of receptor binding. Neural Computation 6:14-18, 1994
and
Lytton, W.W.
Optimizing synaptic conductance calculation for network simulations.
Neural Computation 8:501-509, 1996

Those papers, which I believe are now freely available on the WWW, describe the
strategies that are implemented in this code, but here is a brief discussion.

The conceptual model that underlies this computational implementation is:
1. transmitter effect on postsynaptic channels can be represented by
C + T <--> O
where the forward rate is alpha and backward rate is beta
2. C and O are the fractions of channels that are in the closed and open states, respectively,
i.e. C = # closed channels / total # channels, O = 1 - C
3. T is the transmitter concentration, which is 0 until the synapse is activated, at which
time it becomes 1 for a fixed time duration (ordinarily 1 ms). Furthermore, transmitter is
present in excess so binding to closed channels does not affect the concentration of
transmitter in the synaptic cleft.

Arrival of a synaptic event at a resting synapse makes O rise with a monoexponential
time course (rising phase time constant = 1/(alpha + beta)) toward a steady state value
alpha/(alpha + beta)--but it never gets there, because T drops back to 0 after just 1 ms,
so O falls back toward 0 with a monoexponential time course (falling phase time consant
= 1/beta).

Synaptic weight scales the conductance produced by this synaptic mechanism. With the
NMODL code you are using, a single synaptic event with weight = 1 produces a peak
conductance of ~6.18 picosiemens. If you increase Cdur to 1e9 ("forever"), a single
synaptic event with weight = 1 produces a sustained conductance increase that
plateaus at about 8.53 picosiemens. Changing weight to 0.5 reduces these conductance
values by a factor of 2.

If multiple synapses with identical kinetics and reversal potential are electrically close to
each other, they can be treated as a "population" that is represented by a small number
of state variables governed by a single set of equations. Ron and Roff are the "population"
state variables that are used for this purpose in this model implementation. A little
"administrative" code is used to keep track of which synapses have transmitter in their
clefts, and which ones don't.
Raj
Posts: 220
Joined: Thu Jun 09, 2005 1:09 pm
Location: Groningen, The Netherlands
Contact:

Post by Raj »

OJAG wrote:with W values such as W=0.1 and W=1 the cell goes from one state of insensitivity to other one of apparent Hyper excitability, but not linearly as it was my initial hypotheses
To see the linear behavior you will have to keep the cell in voltage clamp, away from the reversal potential of the synapse. If you then look at the current through the synapse (or the clamp current) it should show the linear behavior you are looking for.
Post Reply