Page 1 of 1

Izhikevich Model

Posted: Tue Aug 14, 2007 12:27 pm
by masso

I have a question about the Izhikevich model stored in the ModelDB. It works well by considering single cell, not synaptically connected. But how can I connect the neurons? I used the NetCon instruction but I did not obtain any results. Moreover, it is also difficult to stimulate. I tried by using the NetStim instruction, but the results were only small subthreshold depolarization. I attached part of the code.
Do you have some suggestions?
Thanks in advance

create Input
objref stim, neurStim
Input {
stim = new NetStim(0.5)
stim.start = 0
stim.interval = 100
stim.number = tstop /stim.interval
stim.noise = 0
neurStim = new NetCon(stim, N_E[0].RS, 30, 0, 1)

Posted: Wed Aug 15, 2007 4:58 am
by Raj
The implementation of Izhikevich's model in ModelDB is using the NetReceive block for resetting the model after a spike. Because no flag is used to indicate a self event every other mechanism that connects to it will also reset the model.

As a result the model as given on ModelDB ... odel=39948 cannot be used as an artificial cell but is only suitable as a demo of the model dynamics.

A way to change the demo code into an artificial cell or at least into a point process suitable for such use would be to detect the threshold crossing in the BREAKPOINT block before the SOLVE statement to reset the variables, and handle external input in the NETRECEIVE block. Then internal to the mechanism no NetCon is needed for detecting threshold crossing, as the method (as far as I know) is meant for fixed timestep this should not jeopardize your accuracy.

Be aware that not all the behaviors Izhikevich sketches are robust under changes of the timestep. It is easiest to try this with his Matlab implementation downloadable from his website and then specifically the parameter settings leading to oscillatory behavior.

model fix

Posted: Wed Aug 15, 2007 12:16 pm
by wwlytton
did one of you want to fix this model or would you like me to fix it?

sounds like the easiest thing would be to specify a specific flag in the implementation so as not to interfere with netcons

unfortunately I do not have matlab so cannot compare to Izhekevich current model; I believe that Mike and I ported it from some C code that he sent me

if either of you would like to make the fix I will ask Ted how to replace the current version


Posted: Thu Aug 16, 2007 3:56 am
by Raj
Well if that is helpfull I have an implementation, but it also includes clamp currents and Tsodyks plasticity model (adapted from Ted's implementation tmgsyn) and the only documentation is given in comments in the file, so it is not fully transparent and I am hesitant to put it on the website.

If you are interested send me an email message and I can send it to you.

Re: model fix

Posted: Thu Aug 16, 2007 10:10 am
by ted
wwlytton wrote:if either of you would like to make the fix I will ask Ted how to replace the current version
Once the fix has been implemented, just send an email to the ModelDB administrator
(tom dot morse at yale dot edu)


Posted: Thu Aug 16, 2007 2:51 pm
by wwlytton
I have not been using the Izh. model and just posted it as a service.

Paolo, please let us know what you want -- if you would like me to fix my implementation I would be happy to do so; if you would like to use Ron's implementation it sounds like he would be happy to provide it

either way, I would suggest that Ron post his implementation with bidirectional pointers to mine


Re: replacement

Posted: Thu Aug 16, 2007 4:38 pm
by ted
wwlytton wrote:I would suggest that Ron post his implementation with bidirectional pointers to mine
Raj's implementation might serve as a basis for a new or revised entry, but some consideration
should be given to whether it is truly representative of the originally published model,
especially since
Raj wrote:it also includes clamp currents and Tsodyks plasticity model
Criteria for accepting/making a model entry public, especially of "third party implementations"
of published models, have been the subject of recent internal discussion. The impetus
for this discussion was a case involving a different "third party implementation" that
included many important features of the original published model, but extended it by the
addition of other mechanisms etc.. This decision tree was a byproduct of the discussion:

Code: Select all

request to make the model public
model is associated with publication
           | yes                     \ no
           |                          reject
request is from publication author
           | no                  | yes
model implements paper's         |
model faithfully or              |
recreates a figure               |
           | no     \ yes        |
         reject      \           |
                      make public, possibly
                      with editorial changes
Because of nontrivial mechanistic divergence from the published model description,
the entry was judged to be a new, unpublished model, and was therefore rejected.

Posted: Thu Aug 16, 2007 6:39 pm
by Raj
The ModelDB decision tree looks like a good guide line, and fits my gutfeeling that the code I have available is suitable for personal communication only.

Anyway I believe the changes I indicated are sufficient to change Bill's implementation into an artificial cell.

Posted: Fri Aug 17, 2007 3:31 am
by masso
Hi Bill,

what I would like that the Izhikevich model do, is to receive synaptic events. I think that the problem is in the NET_RECEIVE block. If I compare this block with the same in the Integrate and Fire Neuron (built-in model) it lacks a flag that takes into account an event coming from other neurons. Is it true?



new Izhikevich model

Posted: Mon Aug 27, 2007 4:07 pm
by wwlytton
The Izhikevich model has been replaced with a new improved version for NEURON.

The new .mod file uses the WATCH statement so as to avoid the need to have an external NetCon looking for threshold passage

A gsyn parameter has been added to allow activation from NetCons
This makes it easy to include the model in a network model.

The izhstim() command in izh.hoc illustrates how to connect the mechanism.