Instantaneous firing rate

Anything that doesn't fit elsewhere.
Post Reply
Ginetto
Posts: 14
Joined: Tue Mar 09, 2010 4:50 am

Instantaneous firing rate

Post by Ginetto »

Dear all,

I am working on a single cell model which receives synaptic inputs from netstim. I need to add a presynaptic mechanism which depends on the instantaneous firing rate. With a regular input (nestim.noise = 0), the inst. firing rate is simply neststim.interval, but with an irregular input (noise =1) how can I evaluate the int.firing rate?
Note that, since each of n synapses can be stimulated independently and asynchronously, I need n presynaptic mechanisms which depend on inst.firing rate.


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

Re: Instantaneous firing rate

Post by ted »

Ginetto wrote:I need to add a presynaptic mechanism which depends on the instantaneous firing rate.
First a question: which of the following do you want?
1. A mechanism that is inserted into a presynaptic compartment, and is affected by the firing rate in that compartment, but is not really part of the synaptic machinery.
2. A synaptic transmission mechanism that is affected by presynaptic firing rate.

Examples of 2 include short-term synaptic depression or facilitation
http://senselab.med.yale.edu/modeldb/Sh ... model=3264
http://senselab.med.yale.edu/modeldb/Sh ... model=3815
but of course other possibilities exist that could be implemented with NMODL.

At this moment, I can't think of an example of 1.

If this is enough to get you going, fine. If not, ask another question. If the question is in any way "proprietary" you may email it to me: ted dot carnevale at yale dot edu
Ginetto
Posts: 14
Joined: Tue Mar 09, 2010 4:50 am

Instantaneous firing rate

Post by Ginetto »

Thanks for your reply.
ted wrote:First a question: which of the following do you want?
1. A mechanism that is inserted into a presynaptic compartment, and is affected by the firing rate in that compartment, but is not really part of the synaptic machinery.
2. A synaptic transmission mechanism that is affected by presynaptic firing rate.
The answer is 1, but I wiil give you more details.
The presynaptic mechanism I am using depends on firing rate, but it doesn't contain expressly a variable "firing rate", so I haven't got any problems about that. What I need is to make a parameter dependent directly on inst. firing rate.
As you see, the problem is that with netstim.noise = 1, I don't know a priori when the stimulus arrives.

I thought to use NetCon class's record() method to record spike times to a Vector, then calculate the inst.firing rate and use it for calculating my parameter.
But 1) I need 1 vector for each synapse (is it efficient?) 2) I need that my mod file, where I implemented the presynaptic mechanisms, can read into the vector... and I don't know how to do it.

I don't know if this strategy is possible and it is good, but right now it is the only one I have in mind

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

Re: Instantaneous firing rate

Post by ted »

Ginetto wrote:
ted wrote:First a question: which of the following do you want?
1. A mechanism that is inserted into a presynaptic compartment, and is affected by the firing rate in that compartment, but is not really part of the synaptic machinery.
2. A synaptic transmission mechanism that is affected by presynaptic firing rate.
The answer is 1 . . .
What I need is to make a parameter dependent directly on inst. firing rate.
What is your operational definition of "instantaneous firing rate"? Can you be more specific about the identity of the "parameter" and describe the relationship between it and instantaneous firing rate?
Ginetto
Posts: 14
Joined: Tue Mar 09, 2010 4:50 am

Instantaneous firing rate

Post by Ginetto »

ted wrote:What is your operational definition of "instantaneous firing rate"?
I need an inst.firing rate defined as following:

freq = 1 / ISI

where the inter-spike interval (ISI) is defined by the spike time (NetStim event) minus the spike time of the previous event

ISI = t2 - t1
ted wrote:Can you be more specific about the identity of the "parameter" and describe the relationship between it and instantaneous firing rate?
I need that the time constant of recovery from depression (tauRec) is linearly dependent from inst.firing rate (freq) according to:

tauRec = a * freq + b

Where a and b are two constants.
I hope it is a bit more clear.

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

Re: Instantaneous firing rate

Post by ted »

Ginetto wrote:I need that the time constant of recovery from depression (tauRec) is linearly dependent from inst.firing rate (freq) according to:

tauRec = a * freq + b

Where a and b are two constants.
So you need a spike-triggered synaptic transmission mechanism that has use-dependent depression, and recovery from depression has a monoexponential time course whose time constant depends on the interval between the two most recent presynaptic spikes. Do you already have a spike-triggered synaptic transmission mechanism with use-dependent depression? Or are you starting from scratch?
Ginetto
Posts: 14
Joined: Tue Mar 09, 2010 4:50 am

Re: Instantaneous firing rate

Post by Ginetto »

ted wrote: So you need a spike-triggered synaptic transmission mechanism that has use-dependent depression, and recovery from depression has a monoexponential time course whose time constant depends on the interval between the two most recent presynaptic spikes. Do you already have a spike-triggered synaptic transmission mechanism with use-dependent depression? Or are you starting from scratch?
I have already implemented a short-term plasticity mechanism which includes facilitation and recovery from depression, both with a mono-exponential time course. This model is itself use- and frequency-depenent, so I don't need to include directly a variable which describe firing rate. Unfortunately, I observed that this model is not able to reproduce our voltage-clamp experiments and I thought to make tauRec dependent from inst.firing rate. I checked this new model using a stimulation train with a fixed ISI, and this model finally fitted my data. The problem is that now I want to use this model for any kind of stimulation patters, including random imputs (netstim.noise = 1).
This is the whole story! I hope it will help.

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

Re: Instantaneous firing rate

Post by ted »

Assuming an event-driven synaptic mechanism--which would be the easiest way to implement short term use-dependent plasticity--here is what I'd do.

Add a "time of most recent input event" element to the weight vector--I'd call it tp ("time of previous input")--by changing

Code: Select all

NET_RECEIVE (w (uS), whatever else) {
to

Code: Select all

NET_RECEIVE (w (uS), tp (ms), whatever else) {
  LOCAL finst
  INITIAL {
    tp = 1e-9 : so the first event in each input stream won't have any effect
  }
The "whatever else" includes the parameter that keeps track of the degree of depression. I would test to make sure that this initialization sets tp to 1e-9 after finitialize() for all NetCons that project to an individual instance of this mechanism.
At the point in the NET_RECEIVE block where it is necessary to calculate the instantaneous frequency, insert these statements

Code: Select all

  if (t==tp) {
    finst = 1e9
  } else {
    finst = 1e3/(t-tp) : finst will be in Hz
    tp = t : prepare for next input
  }
  . . . code that uses finst to adjust recovery time constant . . .
One more thing to do. Since the time constant for recovery from depression (for the sake of this example, call it taur) will be different for each input stream, depending on that stream's history of activation, taur should also be included as one of the elements in the weight vector. That means the NET_RECEIVE line should be changed to

Code: Select all

NET_RECEIVE (w (uS), tp (ms), taur, whatever else) {
The result would be a mechanism that can accept multiple input streams, i.e. many NetCons can converge onto a single instance, and finst would be calculated correctly for each input stream. Each afferent stream would produce synaptic responses that have their own stream-specific use-dependent plasticity.
Ginetto
Posts: 14
Joined: Tue Mar 09, 2010 4:50 am

Instantaneous firing rate

Post by Ginetto »

Perfect, simple and efficient!

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

Re: Instantaneous firing rate

Post by ted »

Glad you like it. The effort of implementing and testing it is all yours for the enjoyment.
Post Reply