Page 1 of 1

Axonal delay for simplified synapse kinetic model

Posted: Tue Aug 08, 2006 4:28 pm
by tort
Hi, I have the following code for a point process describing an inhibitory synapse:

Code: Select all

NEURON {
  POINT_PROCESS Isyn
  RANGE gmax, g, i,e
  GLOBAL alpha,beta,thetasyn
  NONSPECIFIC_CURRENT i
  POINTER vpre
}

UNITS {
  (nA) = (nanoamp)
  (mV) = (millivolt)
  (uS) = (microsiemens)
}

PARAMETER {
  gmax=0.00001 (uS)
  alpha=15 (/ms)
  beta=0.11 (/ms)
  e=-80	   (mV)
  thetasyn=0 (mV) 
}

ASSIGNED { vpre (mV) v (mV) i (nA)  g (uS) }

STATE { s }

INITIAL {
  s =  alpha*F(vpre)/(alpha*F(vpre)+beta)
}

BREAKPOINT {
 g = gmax * s
  i = g*(v - e)
}

DERIVATIVE state {
  s' = alpha*F(vpre)*(1-s) - beta*s
}

FUNCTION F (w (mV)) {
UNITSOFF
  F = 1/(1+ exp(-(w-thetasyn)/2))
UNITSON
  } 
Now I want to implement an axonal delay, but I'm not figuring out how to do it. I've been reading about netcon, but its "delay" doesn't seem to be useful in my case...

What I want is simply to set say a new variable z = s(t-delay) and then make g=gmax*z or else keep "s" as it is and make a delay in the pointer vpre, ie make it represent the voltage of my presynaptic cell a delayed time ago.

Can you help me?

Thank you for your attention!

Posted: Tue Aug 08, 2006 11:23 pm
by ted
I suppose you could stick a VERBATIM block in your mod file that implements a big ring
buffer (size dependent on how many time steps are equivalent to the necessary delay).
Or maybe the buffer itself could be external to the mod file (e.g. a Vector), and the
Verbatim block could just operate the data storage and retrieval that march through it
with advancing time. An ugly thought, but it might work. For implementational details I'll
have to ask Michael Hines.

Posted: Wed Aug 09, 2006 9:37 am
by hines
You can use:

Code: Select all

NEURON {RANGE delay}
PARAMETER {delay = 1 (ms)}
DERIVATIVE state {
  LAG vpre BY delay
  s' = alpha*F(lag_vpre_delay)*(1-s) - beta*s
}
but you should test with printf statements since I have never used it with the variable step methods. Also, the implementation does not scale to large numbers of synapses since a list of pointers is searched and the memory requirements are large. If the delay is not large and synaptic transmission is graded, you can get an effective delay with a short cascade of diffeq or raise the result to a large power a la HH. If you are talking about an axonal delay where the presynaptic voltage is always a stereotypical action potential, then it is best to abandon the POINTER and use the NetCon idioms.

Posted: Wed Aug 09, 2006 12:16 pm
by tort
Ok, I tested this last option proposed by Hines and it seems to be working fine (except by a unit complain in lag_vpre_delay), though I still didn't implement it in a larger network.

Thank you again!

ps just for the record, in my code above the sentence "SOLVE state METHOD cnexp" was missing inside BREAKPOINT