I would to know if this procedure is correct:
I have a NMDA point process or a Ca channel process and an AMPA pointprocess.
The operation I want to do is:
the NMDA channel or the CA channel update some internal field during the simulation time. For each simulation step I want to update the AMPA weight, so let's say the weight of the associated NetCon.
How can I do that?
Thanks
weight update pointprocess to netcon
-
- Site Admin
- Posts: 6393
- Joined: Wed May 18, 2005 4:50 pm
- Location: Yale University School of Medicine
- Contact:
Before launching into implementational details, a question: what are you trying to
achieve? That is, what kind of synaptic plasticity do you want to have?
Non-associative use-dependent, for example as described by
Tsodyks, M., Uziel, A., Markram, H.
Synchrony generation in recurrent networks with frequency-dependent synapses.
J. Neurosci. 2000 RC50.
or
Varela, J.A., Sen, K., Gibson, J., Fost, J., Abbott, L.R., and Nelson, S.B..
A quantitative description of short-term plasticity at excitatory synapses in layer 2/3 of rat
primary visual cortex.
Journal of Neuroscience 17:7926-7940, 1997.
?
Or do you need associative (Hebbian) plasticity?
If you need a Hebbian mechanism, do you want a "functional" implementation of STDP
(where it is literally the interval between synaptic activation and postsynaptic spiking
that governs the weight change), or is it essential to have a mechanistic implentation
of some hypothetical molecular scheme involving 2nd messengers, reactions etc.?
achieve? That is, what kind of synaptic plasticity do you want to have?
Non-associative use-dependent, for example as described by
Tsodyks, M., Uziel, A., Markram, H.
Synchrony generation in recurrent networks with frequency-dependent synapses.
J. Neurosci. 2000 RC50.
or
Varela, J.A., Sen, K., Gibson, J., Fost, J., Abbott, L.R., and Nelson, S.B..
A quantitative description of short-term plasticity at excitatory synapses in layer 2/3 of rat
primary visual cortex.
Journal of Neuroscience 17:7926-7940, 1997.
?
Or do you need associative (Hebbian) plasticity?
If you need a Hebbian mechanism, do you want a "functional" implementation of STDP
(where it is literally the interval between synaptic activation and postsynaptic spiking
that governs the weight change), or is it essential to have a mechanistic implentation
of some hypothetical molecular scheme involving 2nd messengers, reactions etc.?
Yes my group of research is about STPD, but we want to check if the LTP and LTD could be achieved from the biophysical point of view. So we don't do any hypotesis about the STPD shape (composed by the 2 exponetial curve or whatever you want) . We think that teh calcium dynamics and the magnesium could lead to the LTP or LTD. So on the syanpse site we have the NMDA is kind of sensor that communicate with the AMPA receptor through some second messanger (this process actually is not perfectly know).
So we want to try 2 learning rule:
The first I told you before is:
deltaW=[NMDA activity]* Iout (modulated by dopamine)
The second one is:
deltaW=[NMDA]*(CA2plus)'
The first term you already know.
The second term is the derivative of the Calcium concentration.
Believe me that if this is working it will be a cool stuff!
So basically on the binding site I'm using:
a low threshold calcium current
a pump calcium channel
an NMDA receptor.
The calcium current has the following interface:
The calcium pump is:
The NMDA block has the following:
So my purpose now is to trasmit the cai' * g (of the NMDA block)(for each simulation step), that is exactly the derivate of the calcium concentration to the weight of the netcon object linked to the AMPA synapse.
Is it possible to do something like that:
Sorry for always asking! But I'm in a hurry for the Toronto conference, and I was switched from a project to another and started to use NEURON 3 days ago.
So we want to try 2 learning rule:
The first I told you before is:
deltaW=[NMDA activity]* Iout (modulated by dopamine)
The second one is:
deltaW=[NMDA]*(CA2plus)'
The first term you already know.
The second term is the derivative of the Calcium concentration.
Believe me that if this is working it will be a cool stuff!
So basically on the binding site I'm using:
a low threshold calcium current
a pump calcium channel
an NMDA receptor.
The calcium current has the following interface:
Code: Select all
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
SUFFIX it2
USEION ca READ cai, cao WRITE ica
RANGE gcabar, m_inf, tau_m, h_inf, tau_h, shift
}
Code: Select all
TITLE decay of submembrane calcium concentration
:
: Internal calcium concentration due to calcium currents and pump.
: Differential equations.
:
: This file contains two mechanisms:
:
: 1. Simple model of ATPase pump with 3 kinetic constants (Destexhe 1992)
:
: Cai + P <CaP> Cao + P (k1,k2,k3)
:
: A Michaelis-Menten approximation is assumed, which reduces the complexity
: of the system to 2 parameters:
: kt = <tot> * k3 -> TIME CONSTANT OF THE PUMP
: kd = k2/k1 (dissociation constant) -> EQUILIBRIUM CALCIUM VALUE
: The values of these parameters are chosen assuming a high affinity of
: the pump to calcium and a low transport capacity (cfr. Blaustein,
: TINS, 11: 438, 1988, and references therein).
:
: For further information about this this mechanism, see Destexhe, A.
: Babloyantz, A. and Sejnowski, TJ. Ionic mechanisms for intrinsic slow
: oscillations in thalamic relay neurons. Biophys. J. 65: 1538-1552, 1993.
:
:
: 2. Simple first-order decay or buffering:
:
: Cai + B <-> ...
:
: which can be written as:
:
: dCai/dt = (cainf - Cai) / taur
:
: where cainf is the equilibrium intracellular calcium value (usually
: in the range of 200-300 nM) and taur is the time constant of calcium
: removal. The dynamics of submembranal calcium is usually thought to
: be relatively fast, in the 1-10 millisecond range (see Blaustein,
: TINS, 11: 438, 1988).
:
: All variables are range variables
:
: Written by Alain Destexhe, Salk Institute, Nov 12, 1992
:
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
SUFFIX cad
USEION ca READ ica, cai WRITE cai
RANGE depth,kt,kd,cainf,taur
}
UNITS {
(molar) = (1/liter) : moles do not appear in units
(mM) = (millimolar)
(um) = (micron)
(mA) = (milliamp)
(msM) = (ms mM)
}
CONSTANT {
FARADAY = 96489 (coul) : moles do not appear in units
}
PARAMETER {
depth = 1 (um) : depth of shell
taur = 1e10 (ms) : remove first-order decay
cainf = 2.4e-4 (mM)
kt = 1e-4 (mM/ms)
kd = 1e-4 (mM)
}
STATE {
cai (mM)
}
INITIAL {
cai = kd
}
ASSIGNED {
ica (mA/cm2)
drive_channel (mM/ms)
drive_pump (mM/ms)
}
BREAKPOINT {
SOLVE state METHOD euler
}
DERIVATIVE state {
drive_channel = - (10000) * ica / (2 * FARADAY * depth)
if (drive_channel <= 0.) { drive_channel = 0. } : cannot pump inward
drive_pump = -kt * cai / (cai + kd ) : Michaelis-Menten
cai' = drive_channel + drive_pump + (cainf-cai)/taur
}
Code: Select all
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
POINT_PROCESS NMDA
POINTER pre
RANGE C, R, R0, R1, g, gmax, B, lastrelease, TimeCount
NONSPECIFIC_CURRENT i
GLOBAL Cmax, Cdur, Alpha, Beta, Erev, mg
GLOBAL Prethresh, Deadtime, Rinf, Rtau
}
Is it possible to do something like that:
Code: Select all
TITLE decay of submembrane calcium concentration
:
: Internal calcium concentration due to calcium currents and pump.
: Differential equations.
:
: This file contains two mechanisms:
:
: 1. Simple model of ATPase pump with 3 kinetic constants (Destexhe 1992)
:
: Cai + P <CaP> Cao + P (k1,k2,k3)
:
: A Michaelis-Menten approximation is assumed, which reduces the complexity
: of the system to 2 parameters:
: kt = <tot> * k3 -> TIME CONSTANT OF THE PUMP
: kd = k2/k1 (dissociation constant) -> EQUILIBRIUM CALCIUM VALUE
: The values of these parameters are chosen assuming a high affinity of
: the pump to calcium and a low transport capacity (cfr. Blaustein,
: TINS, 11: 438, 1988, and references therein).
:
: For further information about this this mechanism, see Destexhe, A.
: Babloyantz, A. and Sejnowski, TJ. Ionic mechanisms for intrinsic slow
: oscillations in thalamic relay neurons. Biophys. J. 65: 1538-1552, 1993.
:
:
: 2. Simple first-order decay or buffering:
:
: Cai + B <-> ...
:
: which can be written as:
:
: dCai/dt = (cainf - Cai) / taur
:
: where cainf is the equilibrium intracellular calcium value (usually
: in the range of 200-300 nM) and taur is the time constant of calcium
: removal. The dynamics of submembranal calcium is usually thought to
: be relatively fast, in the 1-10 millisecond range (see Blaustein,
: TINS, 11: 438, 1988).
:
: All variables are range variables
:
: Written by Alain Destexhe, Salk Institute, Nov 12, 1992
:
INDEPENDENT {t FROM 0 TO 1 WITH 1 (ms)}
NEURON {
SUFFIX cad
USEION ca READ ica, cai WRITE cai
POINTER gnmda,wAMPA
RANGE depth,kt,kd,cainf,taur
}
UNITS {
(molar) = (1/liter) : moles do not appear in units
(mM) = (millimolar)
(um) = (micron)
(mA) = (milliamp)
(msM) = (ms mM)
}
CONSTANT {
FARADAY = 96489 (coul) : moles do not appear in units
}
PARAMETER {
depth = 1 (um) : depth of shell
taur = 1e10 (ms) : remove first-order decay
cainf = 2.4e-4 (mM)
kt = 1e-4 (mM/ms)
kd = 1e-4 (mM)
}
STATE {
cai (mM)
}
INITIAL {
cai = kd
}
ASSIGNED {
ica (mA/cm2)
drive_channel (mM/ms)
drive_pump (mM/ms)
}
BREAKPOINT {
SOLVE state METHOD euler
wAMPA.weight=wAMPA.weight+g*cai'
}
DERIVATIVE state {
drive_channel = - (10000) * ica / (2 * FARADAY * depth)
if (drive_channel <= 0.) { drive_channel = 0. } : cannot pump inward
drive_pump = -kt * cai / (cai + kd ) : Michaelis-Menten
cai' = drive_channel + drive_pump + (cainf-cai)/taur
}
-
- Site Admin
- Posts: 6393
- Joined: Wed May 18, 2005 4:50 pm
- Location: Yale University School of Medicine
- Contact:
Sorry about the delay in replying, but there were pressing tasks at this end.
implausible to me, but what do I know about the molecular machinery of learning.
when a new input event arrives at that connection, or did I misunderstand? You don't
really want the AMPA synapse's conductance to follow the moment-to-moment changes
of cai' * g, do you?
Assuming that your answer is "no", here's what to do.
1. In the original calcium pump mechanism, add
RANGE Dtcai
to the NEURON block, and
Dtcai (mM/ms)
to the ASSIGNED block.
At the end of the DERIVATIVE block, insert this statement
Dtcai = drive_channel + drive_pump + (cainf-cai)/taur
2. To the AMPA synapse's NEURON block, add this
POINTER Dtcai, gNMDA
RANGE k
and to its ASSIGNED block add
Dtcai (mM/ms)
gNMDA (uS)
Finally, to its PARAMETER block add
k = 1 (ms/mM-uS)
You will need to adjust k by trial and error to get the desired magnitude of synaptic weight
change.
3. I assume that the AMPA synapse's NET_RECEIVE block looks something like this:
Change it to
4. Finally you will need setpointer statements to link the AMPA synapse's POINTER
variables to the corresponding variables in the NMDA and calcium pump mechanisms.
See the documentation n the Programmer's reference
http://www.neuron.yale.edu/neuron/stati ... setpointer
and the examples at the beginning of chapter 10 of The NEURON Book.
I am not altogether sure that this will work, or that it will do what you want. Even if it does,
please note that it does not provide stream-specific plasticity. Therefore it should be
driven by only one NetCon, so if you need to represent more than one "real" AMPAergic
synapse, you will need to use one of these AMPA point processes, each with its own NetCon, to represent each "real" synapse.
Be sure to use modlunit to check for consistency of units in all your mechanisms.
modlunit's error messages can be difficult to interpret, so don't hesitate to ask questions.
After the whole thing is running, it will have to be tested thoroughly to make sure that its
results make sense. The tests should be done in the context of a very simple cell model--just
a single compartment, with as few biophysical mechanisms as necessary, because
complexity will make debugging and testing needlessly difficult.
The rule that invokes the derivative of calcium concentration seems biophysicallyepokh wrote:So we want to try 2 learning rule:
The first I told you before is:
deltaW=[NMDA activity]* Iout (modulated by dopamine)
The second one is:
deltaW=[NMDA]*(CA2plus)'
The first term you already know.
The second term is the derivative of the Calcium concentration.
implausible to me, but what do I know about the molecular machinery of learning.
Almost. The weight of the connection to the AMPA synapse only needs to be changedSo my purpose now is to trasmit the cai' * g (of the NMDA block)(for each simulation step), that is exactly the derivate of the calcium concentration to the weight of the netcon object linked to the AMPA synapse.
when a new input event arrives at that connection, or did I misunderstand? You don't
really want the AMPA synapse's conductance to follow the moment-to-moment changes
of cai' * g, do you?
Assuming that your answer is "no", here's what to do.
1. In the original calcium pump mechanism, add
RANGE Dtcai
to the NEURON block, and
Dtcai (mM/ms)
to the ASSIGNED block.
At the end of the DERIVATIVE block, insert this statement
Dtcai = drive_channel + drive_pump + (cainf-cai)/taur
2. To the AMPA synapse's NEURON block, add this
POINTER Dtcai, gNMDA
RANGE k
and to its ASSIGNED block add
Dtcai (mM/ms)
gNMDA (uS)
Finally, to its PARAMETER block add
k = 1 (ms/mM-uS)
You will need to adjust k by trial and error to get the desired magnitude of synaptic weight
change.
3. I assume that the AMPA synapse's NET_RECEIVE block looks something like this:
Code: Select all
NET_RECEIVE(weight (uS)) {
g = g + weight
}
Code: Select all
NET_RECEIVE(weight (uS)) {
g = g + weight*(1+k*Dtcai*gNMDA)
}
variables to the corresponding variables in the NMDA and calcium pump mechanisms.
See the documentation n the Programmer's reference
http://www.neuron.yale.edu/neuron/stati ... setpointer
and the examples at the beginning of chapter 10 of The NEURON Book.
I am not altogether sure that this will work, or that it will do what you want. Even if it does,
please note that it does not provide stream-specific plasticity. Therefore it should be
driven by only one NetCon, so if you need to represent more than one "real" AMPAergic
synapse, you will need to use one of these AMPA point processes, each with its own NetCon, to represent each "real" synapse.
Be sure to use modlunit to check for consistency of units in all your mechanisms.
modlunit's error messages can be difficult to interpret, so don't hesitate to ask questions.
After the whole thing is running, it will have to be tested thoroughly to make sure that its
results make sense. The tests should be done in the context of a very simple cell model--just
a single compartment, with as few biophysical mechanisms as necessary, because
complexity will make debugging and testing needlessly difficult.