Alpha Synapse with CaDP plasticity

NMODL and the Channel Builder.
Post Reply
publio
Posts: 3
Joined: Wed Aug 27, 2008 10:19 pm

Alpha Synapse with CaDP plasticity

Post by publio »

Hi,

I'm trying to implement in NEURON some calcium dependent plasticity using the alpha function synapse. I know that I need to declare all the equations that control the weight change inside the NET_RECEIVE block but in these case the equations are cai dependent not explicit dependent of time. There are no error messages but the synapse is working like an regular alpha synapse e doesn't show any kind of plasticity. There is anything wrong at the NET_RECEIVE block?

Code: Select all

BREAKPOINT {
	SOLVE state METHOD cnexp
	g = (B - A)
	i = g*(v - e)
}

DERIVATIVE state {
	A' = -A/tau1
	B' = -B/tau2
}

NET_RECEIVE(weight (umho),dw, eta, omega, cai0 (mM)) {
	INITIAL { dw = 0  cai0 = cai }
	eta = ((p1*(((cai-cai0)+p4))^p3)/((((cai-cai0)+p4)^p3)+(p2)^p3))
	omega = (((exp(b2*((cai-cai0)-a2)))/(1+exp(b2*((cai-cai0)-a2))))-0.5*((exp(b2*((cai-cai0)-a2)))/(1+exp(b2*((cai-cai0)-a2)))))
	cai0 = cai
	dw = (eta*omega)
	state_discontinuity(A, A + weight*dw)
	state_discontinuity(B, B + weight*dw)
    
    :printf("\t%g\t%g\n", omega, eta)

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

Re: Alpha Synapse with CaDP plasticity

Post by ted »

Does the mechanism's NEURON block contain a
USE ca READ cai
statement?

Does your model have a calcium accumulation mechanism? Have you verified that cai and cai0 in your synaptic mechanism are changing in the course of the simulation?

A minor comment: state_discontinuity has been deprecated for some time. It is sufficient to write
A = A + weight*dw
etc.
publio
Posts: 3
Joined: Wed Aug 27, 2008 10:19 pm

Re: Alpha Synapse with CaDP plasticity

Post by publio »

Hi Ted,

The model has The USE ca statement and a calcium mechanism. If there is nothing wrong with the NET_RECEIVE block so the problem could be on the palsticity mechanism itself. The only thing strange that I observed is that in some moments eta becomes negative (probably because cai0 is under cai value). If I change the difference (cai-cai0) for just cai the eta negative value stops. There is any reason to use (cai-cai0) instead of just cai if I just want to get the intracelular calcium concentration value when the postsynaptic neuron receive an event?
ted
Site Admin
Posts: 6395
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Alpha Synapse with CaDP plasticity

Post by ted »

Two further suggestions:

1. If you have not already done so, check the mod file with modlunit and fix whatever problems it discovers.

2. It is often useful to insert print statements that report the variables of interest during a simulation, and compare the simulation's results with what one gets by doing the calculations by hand.
publio
Posts: 3
Joined: Wed Aug 27, 2008 10:19 pm

Re: Alpha Synapse with CaDP plasticity

Post by publio »

Hi ted, thanks for your support (and Michael Hines support by email).

By the secound step that you recomended I can see that when the postsynaptic cell receives an event at time t, the calcium spike will have its peak at t + t1 , where t1 is around 15 ms. That's the problem because all equations inside NET_RECEIVE block are using the cai value at the event time, not the cai value at the calcium spike peak. There is any way to "tell" inside the NET_RECEIVE block to use the cai value with some t1 delay after the event?
I've tried something using the net_send but it does not work .

edit: I've found one solution. I don't know if is the smartest solution, but it works :)

Now when flag ==0 , I'm using the net_send to create an internal event with t1 delay. Then, when flag==1 I have the cai value after this delay (at peak) and it's possible to calculate the equantions with the peak value.
Last edited by publio on Mon Sep 08, 2008 7:22 pm, edited 1 time in total.
ted
Site Admin
Posts: 6395
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Alpha Synapse with CaDP plasticity

Post by ted »

publio wrote:when flag ==0 , I'm using the net_send to create an internal event with t1 delay.
It's called a "self event".
Then, when flag==1 I have the cai value after this delay (at peak) and it's possible to calculate the equantions with the peak value.
You're on the right track, but there is no guarantee that this captures the actual peak cai.

Here's an alternative strategy:

Code: Select all

PARAMETER {
  wait_for_peak = 15 (ms) : or longer if the peak is really broad
  . . .
ASSIGNED {
  maxc (mM) : peak cai
 . . .
INITIAL {
  maxc = 0 (mM)
 . . .
BREAKPOINT {
  if (maxc < cai) {
    maxc = cai : this ensures that maxc captures max cai
  }
 . . .
NET_RECEIVE ( . . . ) {
 . . .
  if (flag == 0) {
    maxc = 0 : "forget" any previous max cai value 
    net_send(wait_for_peak, 1)
  }
  if (flag == 1) {
    use maxc, not cai, to govern what happens to synaptic weight
 . . .
A caveat: such approaches set an upper limit to the frequency with which the synapse can be activated.
Post Reply