COBA Neuron
COBA Neuron
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
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
-
- Site Admin
- Posts: 6303
- Joined: Wed May 18, 2005 4:50 pm
- Location: Yale University School of Medicine
- Contact:
Re: COBA Neuron
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
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
Re: COBA Neuron
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.
Thank you.
-
- Site Admin
- Posts: 6303
- Joined: Wed May 18, 2005 4:50 pm
- Location: Yale University School of Medicine
- Contact:
Re: COBA 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.*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.
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).
Re: COBA Neuron
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.
-
- Site Admin
- Posts: 6303
- Joined: Wed May 18, 2005 4:50 pm
- Location: Yale University School of Medicine
- Contact:
Re: COBA Neuron
Why is what value clamped at 100?shyam_u2 wrote:But why it is clamped at 100 ?
What value are you modifying?when i modify its value to some other number
What did you expect would change?it doesn't produce any change.
Re: COBA Neuron
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.
When i change the value of g from 100 to 10 it doesnt have any effect on firing rate.
Does that mean current is not computed at each time step ?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
-
- Site Admin
- Posts: 6303
- Joined: Wed May 18, 2005 4:50 pm
- Location: Yale University School of Medicine
- Contact:
Re: COBA Neuron
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.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.
The assignement statement in the BREAKPOINT block insures that SpikeOut's i is calculated at each time step.Does that mean current is not computed at each time step ?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
What in my earlier reply led you to infer otherwise?
Re: COBA Neuron
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.What in my earlier reply led you to infer otherwise?
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.
-
- Site Admin
- Posts: 6303
- Joined: Wed May 18, 2005 4:50 pm
- Location: Yale University School of Medicine
- Contact:
Re: COBA Neuron
Here's some more info about BREAKPOINTshyam_u2 wrote:Before u said that the BREAKPOINT block computes current at each time step, i thought that i was done so by default.
http://www.neuron.yale.edu/neuron/stati ... Breakpoint
That page also has some other interesting stuff about NMODL.
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 insidehow is the NET_RECEIVE block getting activated here ?
if (flag == ) { . . . }.
Seems a bit like a Rube Goldberg scheme, but it works.
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.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
Re: COBA Neuron
Thank you Ted for all your explanative replies..
-
- Site Admin
- Posts: 6303
- Joined: Wed May 18, 2005 4:50 pm
- Location: Yale University School of Medicine
- Contact:
Re: COBA Neuron
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
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
Re: COBA Neuron
This answers my question. I saw an assignment statement like this. But i never knew it was for thresh and vrefrac. Thanks Ted.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
Re: COBA Neuron
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
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
-
- Site Admin
- Posts: 6303
- Joined: Wed May 18, 2005 4:50 pm
- Location: Yale University School of Medicine
- Contact:
Re: COBA Neuron
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"?shyam_u2 wrote:What will happen if another spike arrives as input when the neuron is in refractory state ?
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.the membrane potential of my neuron increases and reaches saturation thereby stoping it to spike
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.But what happens when the next spike arrives ?