COBA Neuron

Anything that doesn't fit elsewhere.
shyam_u2
Posts: 77
Joined: Sun Feb 20, 2011 7:15 pm

COBA Neuron

Post by shyam_u2 »

I was goin through the COBA benchmark model found in the NEURON Model DB.
http://senselab.med.yale.edu/modeldb/Sh ... 5Cinit.hoc

In the appendix file, it says that
" Synaptic interactions were implemented as follows: when a spike occurred in neuron j, the synaptic conductance g ji was instantaneously incremented by a quantum value (6 nS and 67 nS for excitatory and inhibitory synapses, respectively) and decayed exponentially with a time constant of 5 ms and 10 ms for excitation and inhibition, respectively".

But I am not able to figure out how it is implemented in the model. Where is the conductance updated and the equations ? I am not able to see those equations in spikeout.mod. May be a trivial question. Thanks in advance for the help.

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

Re: COBA Neuron

Post by ted »

Not a trivial question.

spikeout.mod doesn't generate the conductances. It is a "functional model of an action potential mechanism" which forces membrane potential to follow a prescribed, spike-like time course. It is also a source of spike events.

To discover what generates the synaptic conductances, you have to examine the class definition of the biophysical model cells that are used in the network. This is in cobacell.hoc, where you will find the CobaCell template. In that template note that proc synapses() defines two synaptic mechanisms, one excitatory and the other inhibitory. Both are implemented as ExpSyn point processes.

ExpSyn is built into NEURON. To see its complete source code, download and expand any recent nrn...tar.gz (e.g. from http://www.neuron.yale.edu/neuron/download/getstd or http://www.neuron.yale.edu/ftp/neuron/versions/alpha/) and look in nrn-x.x/src/nrnoc for expsyn.mod. Or just go to http://www.neuron.yale.edu/neuron/ and use its "Search" to look for expsyn.mod

If you want to understand how mechanisms with NET_RECEIVE blocks work, either read chapter 10 of The NEURON Book, or read
Hines, M.L. and Carnevale, N.T.
Discrete event simulation in the NEURON environment.
Neurocomputing 58-60:1117-1122, 2004.
and
discrete_event_poster.pdf
Both of these are available from http://www.neuron.yale.edu/neuron/nrnpubs
shyam_u2
Posts: 77
Joined: Sun Feb 20, 2011 7:15 pm

Re: COBA Neuron

Post by shyam_u2 »

Thanks for the reply. It makes sense. Another small question. In the spikeout.mod file, what is the use of Break point block and the conductance variable g. I dont see a similar thing in Intfire1 class neuron.

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

Re: COBA Neuron

Post by ted »

shyam_u2 wrote:In the spikeout.mod file, what is the use of Break point block and the conductance variable g. I dont see a similar thing in Intfire1 class neuron.
Excellent question. Intfire1 is an artificial spiking cell with sufficiently simple dynamics that its future behavior is analytically predictable from its present state. Consequently there is no need for numerical integration, and no need to update its state variables at each time step. The only time computation must be done is when it receives a new event, and this is handled by the NET_RECEIVE block.*

The COBA cell, however, is a "conductance based" model, i.e. its synaptic inputs actually produce conductance changes, generating currents that are integrated by membrane capacitance. To complicate matters, when membrane potential reaches firing threshold, the membrane potential is supposed to undergo a large, transient conductance change that emulates a spike and returns membrane potential to a subthresold level. spikeout.mod is the mechanism that is responsible for emulating the spike, and its conductance g is instrumental in that process. The BREAKPOINT block exists to contain the assignment statement
i = g*(v - vrefrac)
which calculates the current generated by this functional representation of a spike mechanism. This statement is in the BREAKPOINT block so that it will be updated at every new time step.

If you haven't already done so, please read the references mentioned in my previous post.

*--NEURON has two other artificial spiking cells built in, both of which are similarly efficient and for the same reason (Intfire2, Intfire4), and others are possible (I have implemented an Intfire3 as well as variants of these that have use dependent synaptic plasticity (short term potentiation and depression), and Bill Lytton has implemented many others that have more complexities yet remain computationally efficient).
shyam_u2
Posts: 77
Joined: Sun Feb 20, 2011 7:15 pm

Re: COBA Neuron

Post by shyam_u2 »

Thanks Ted. Your answer was explanative. But why it is clamped at 100 ? Because when i modify its value to some other number it doesn't produce any change.
ted
Site Admin
Posts: 6300
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: COBA Neuron

Post by ted »

shyam_u2 wrote:But why it is clamped at 100 ?
Why is what value clamped at 100?
when i modify its value to some other number
What value are you modifying?
it doesn't produce any change.
What did you expect would change?
shyam_u2
Posts: 77
Joined: Sun Feb 20, 2011 7:15 pm

Re: COBA Neuron

Post by shyam_u2 »

I understand the role of g (in spikeout.mod). But What should be the ideal value of g ?
When i change the value of g from 100 to 10 it doesnt have any effect on firing rate.
The COBA cell, however, is a "conductance based" model, i.e. its synaptic inputs actually produce conductance changes, generating currents that are integrated by membrane capacitance
Does that mean current is not computed at each time step ?
ted
Site Admin
Posts: 6300
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: COBA Neuron

Post by ted »

shyam_u2 wrote:I understand the role of g (in spikeout.mod). But What should be the ideal value of g ?
When i change the value of g from 100 to 10 it doesnt have any effect on firing rate.
g can only affect firing rate when it is nonzero. Spike duration is fixed by the event delivery system, so g can't affect that. g equals grefrac during the relative refractory interval, but if g is much larger than all other conductances it will tend to shunt any currents they generate. Try reducing g to 1 or 0.1 and see what hapens.
The COBA cell, however, is a "conductance based" model, i.e. its synaptic inputs actually produce conductance changes, generating currents that are integrated by membrane capacitance
Does that mean current is not computed at each time step ?
The assignement statement in the BREAKPOINT block insures that SpikeOut's i is calculated at each time step.

What in my earlier reply led you to infer otherwise?
shyam_u2
Posts: 77
Joined: Sun Feb 20, 2011 7:15 pm

Re: COBA Neuron

Post by shyam_u2 »

What in my earlier reply led you to infer otherwise?
No. Before u said that the BREAKPOINT block computes current at each time step, i thought that i was done so by default. That is the reason why i asked that question.

One last question. In the reference (the one for NET_RECEIVE) which you had mentioned in the previous post , its mentioned that NET_RECEIVE would be active only when there is an event delivered by Net Con. But I have a single cell COBA model which has its synaptic input turned off (just for the purpose of tuning its firing rate according to a curve). I supply an injection current. My model works good. But my question is how is the NET_RECEIVE block getting activated here ?

In the appendix it is mentioned that threshold for the cell is -50 mV and vrefrac = -60 mv. But in the spikeout.mod file(in modelDB) i see a different threshold value and vrefrac. Yet the model(in modelDB) runs with the value as mentioned in the appendix. Why is that so or am i wrong ?

Thanks. I am sorry for asking lots of questions. I feel that i need to understand the model thoroughly before working on it.
ted
Site Admin
Posts: 6300
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: COBA Neuron

Post by ted »

shyam_u2 wrote:Before u said that the BREAKPOINT block computes current at each time step, i thought that i was done so by default.
Here's some more info about BREAKPOINT
http://www.neuron.yale.edu/neuron/stati ... Breakpoint
That page also has some other interesting stuff about NMODL.
how is the NET_RECEIVE block getting activated here ?
Good question. SpikeOut's INITIAL block launches a self event with flag == 3 that returns at t==0. This causes execution of a WATCH statement which causes the mechanism to monitor local v continuously throughout the simulation, so that when v crosses the specified threshold (thresh) a self event with flag 1 will be launched that returns immediately. This in turn results in execution of the code inside
if (flag == ) { . . . }.

Seems a bit like a Rube Goldberg scheme, but it works.
In the appendix it is mentioned that threshold for the cell is -50 mV and vrefrac = -60 mv. But in the spikeout.mod file(in modelDB) i see a different threshold value and vrefrac. Yet the model(in modelDB) runs with the value as mentioned in the appendix. Why is that so
Somewhere in the source code for that model entry in ModelDB there is doubtless a pair of assignment statements that specifies the threshold and vrefrac values.
shyam_u2
Posts: 77
Joined: Sun Feb 20, 2011 7:15 pm

Re: COBA Neuron

Post by shyam_u2 »

Thank you Ted for all your explanative replies..
ted
Site Admin
Posts: 6300
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: COBA Neuron

Post by ted »

A good way to look for such an assignment would be to search the model's hoc files for the name of the mechanism--SpikeOut in this case. Since thresh and refrac are GLOBALs, only one such assignment would be needed for each. I should also mention that the hoc name of a GLOBAL parameter has the general form
parametername_mechanismname
regardless of whether the mechanism is a density mechanism or a point process (I find this confusing, myself, since the names of non-GLOBAL variables that belong to a point process use dot notation i.e.
MechanismName.parametername, but that's the way it goes). So the hoc names of these particular parameters would be thresh_SpikeOut and refrac_SpikeOut.

Since this particular model is implemented in a very modular way, everything that pertains specifically to coba cell properties will be in the NEURON/coba directory of the directory tree created by expanding destexe_benchmarks.zip
shyam_u2
Posts: 77
Joined: Sun Feb 20, 2011 7:15 pm

Re: COBA Neuron

Post by shyam_u2 »

I should also mention that the hoc name of a GLOBAL parameter has the general form
parametername_mechanismname
regardless of whether the mechanism is a density mechanism or a point process
This answers my question. I saw an assignment statement like this. But i never knew it was for thresh and vrefrac. Thanks Ted.
shyam_u2
Posts: 77
Joined: Sun Feb 20, 2011 7:15 pm

Re: COBA Neuron

Post by shyam_u2 »

Hi Ted,
I would be happy if you could answer this another small question of mine. As in the past i am working with COBA cell model in a network. With reference to Spikeout.mod,

What will happen if another spike arrives as input when the neuron is in refractory state ? Will there be a response in membrane potential even when the neuron is in refractory state ? The reason i am asking is that the membrane potential of my neuron increases and reaches saturation thereby stoping it to spike.

You had mentioned that net_send in initial block sends a self event with flag = 3 at time 0 and the corresponding statement in NET_RECEIVE is activated. But what happens when the next spike arrives ? Which flag is set ? I am aware that the flag for an external event is 0. But I dont find an if loop with flag = 0.

Thanks,

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

Re: COBA Neuron

Post by ted »

shyam_u2 wrote:What will happen if another spike arrives as input when the neuron is in refractory state ?
What does it mean to say that "another spike arrives as input"? Do you mean "what if an event is deliverd to a synaptic mechanism attached to a cell that has the SpikeOut mechanism attached to it"?
the membrane potential of my neuron increases and reaches saturation thereby stoping it to spike
I don't know anything about your model cell--how big it is, what other mechanisms have been inserted into your model cell, or what values you have assigned to the parameters of the SpikeOut mechanism you are using in your model cell. SpikeOut is a very simple and robust mechanism--if membrane potential rises above its threshold, SpikeOut's conductance g increases to the value specified by the parameter grefrac. As long as grefrac is much larger than any other conductance in the model, v will quickly reset to vrefrac. If vrefrac < thresh, the cell's membrane potential will be subthreshold at the end of the refractory period, so the cell will be able to fire again. If your model cell has a very large surface area, or has one or more density mechanisms with depolarized reversal potentials and high channel densities, it may be necessary to increase SpikeOut's grefrac to ensure that the model cell's v is pulled below threshold.
But what happens when the next spike arrives ?
SpikeOut is not intended to be a target of a NetCon. Examine the original model's source code and you'll see that SpikeOut is used as a spike source, never as a target.
Post Reply