Izhikevich type Implementation

Anything that doesn't fit elsewhere.
Post Reply
pranit
Posts: 7
Joined: Mon Nov 22, 2010 4:23 pm

Izhikevich type Implementation

Post by pranit » Wed Aug 29, 2012 11:11 am

Hi,
I have a Biologically realistic cell which i want to convert in Izhekevich type one. I looked at the code posted in one of the models (http://senselab.med.yale.edu/modeldb/s ... h\izh.mod). It says that we have to create a dummy variable vv for voltage instead of using NEURONS default v. I wanted to use NEURONS default v along with the compartment properties used in the biological model ( Length, diam, Cm etc). I have come up with the following code which gives the correct result for the Izhikevich model from the book "Dynamical Systems in Neuroscience" pg 282-283.

Code: Select all

NEURON {
	POINT_PROCESS Izhi
	NONSPECIFIC_CURRENT Iizhi
	RANGE Iizhi
	RANGE k, vr, vt, a, b, vpeak, c, d, uinit
	RANGE Ifast
}

UNITS {
	(mV) = (millivolt)
        (nA) = (nanoamp)
	(pA) = (picoamp)
	(uS) = (microsiemens)
	(nS) = (nanosiemens)
}

PARAMETER {
	k = 0.7	(pA/mV2)
	vr = -60 (mV)
	vt = -40 (mV)
	a = 0.03 (1/ms)
	b = -2 (nS)
	vpeak = 35 (mV)
	c = -50 (mV)
	d = 100 (pA)
	uinit = 0 (pA)
}

ASSIGNED {
	v (mV)
	Iizhi (nA)
	Ifast (nA)
}

STATE {
	u (nA)
}

INITIAL {

	net_send(0,1)
}

BREAKPOINT {

	SOLVE recvars METHOD cnexp
	Ifast = k*(v-vr)*(v-vt)
	Iizhi = (-(Ifast - u))/1000
}

DERIVATIVE recvars {
	u' = a*(b*(v-vr)-u)
}

NET_RECEIVE (void) {
  if (flag == 1) {
    WATCH (v > vpeak) 2
  } else if (flag == 2) {
    net_event(t)
    v = c
    u = u+d
  }
}


My question is that will resetting NEURONS default v in NET_RECEIVE block cause problems for this model. It seems to work correctly but just wanted to know as we will be using this implementation to convert Biologically realistic multi-compartment models to this type.

hines
Site Admin
Posts: 1575
Joined: Wed May 18, 2005 3:32 pm

Re: Izhikevich type Implementation

Post by hines » Thu Aug 30, 2012 7:05 am

It is supposed to work with fixed and variable time step methods and also if you choose
cvode.condition_order(2).
However it is ALWAYS a good idea to test with cases you know the answer to.

Post Reply