Programming Long-Term Potentiation

Moderator: wwlytton

Post Reply
ehb
Posts: 6
Joined: Tue Jun 10, 2014 9:02 pm

Programming Long-Term Potentiation

Post by ehb » Wed Aug 12, 2015 3:55 pm

Using hoc, I created a network of neurons to represent a reward circuit. Each soma has a dendrite and an axon. I included biologically realistic diameters and lengths from http://www.neuromorph.org. I also used mammalian equilibirum potential values from http://www.anc.ed.ac.uk/school/neuron/t ... /tutD.html. I put those values in all of the somas, axons and dendrites.

I am trying to create a synapse between 2 neurons that strengthen each time there is an impulse. I understand the biological mechanisms of AMPAR and NMDAR. I am unfamiliar with nmodl, so I temporarily borrowed a mod file just to see if I can integrate it into my program and get it work. The mechanisms in this mod file include Na+ and K+ currents for generating action potentials (INa, IKd), the L-type calcium current (ICaL), intracellular calcium, and mechanisms to simulate AMPA and NMDA receptors.

The Neuron Block for AMPA is:

Code: Select all

NEURON {
	POINT_PROCESS AMPA
	POINTER pre
	RANGE C, R, R0, R1, g, gmax, lastrelease, TimeCount
	NONSPECIFIC_CURRENT i
	GLOBAL Cmax, Cdur, Alpha, Beta, Erev, Prethresh, Deadtime, Rinf, Rtau
}
The Neuron Block for NMDA is:

Code: Select all

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
}
For the post-synaptic dendrite (ACC_Neg_dend), I put the following hoc code to set pointers to the mod mechanisms:

Code: Select all

objref syn10
ACC_Neg_dend syn10 = new NMDA(0.8)
setpointer syn10.pre, Predictor_axon.cai(1)

objref syn11
ACC_Neg_dend syn11 = new AMPA(0.8)
setpointer syn11.pre, Predictor_axon.cai(1)
Assuming that the equations in the mod file accurately reflect long-term potentiation, shouldn't setting the pointers in the post-synaptic dendrite link the AMPA and NMDA mechanisms to that dendrite so that the equations would be calculated whenever there is an impulse, followed by the mechanism altering the post-synaptic dendritic parameters to be more conductive?

Please let me know if you need more information.

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

Re: Programming Long-Term Potentiation

Post by ted » Thu Aug 13, 2015 12:31 am

Sounds like you've already done a lot of work, which is good, and that you've been learning by example, which is an excellent way to pick up practical skills of all kinds, including the art of programming. The following suggestions are offered to help you progress even more rapidly than you have already.
mammalian equilibirum potential values from http://www.anc.ed.ac.uk/school/neuron/t ... /tutD.html
The tutorial by Gillies and Sterratt has been around for a while, but it contains many tips that are still useful. One of the particularly good things they did was to use event-driven synaptic transmission.

In NEURON's implementation of event-driven synaptic transmission, coupling between a presynaptic cell and its target synapse is handled by an instance of the NetCon class that detects presynaptic spikes, and then after a delay that represents the sum of conduction and release latencies, delivers events to the target synapse. An event-driven synaptic mechanism is a type of point process specified by NMODL code that includes a NET_RECEIVE block that tells the mechanism what to do when it receives an event. This strategy for representing synaptic transmission is much more flexible than the old approach that involved pointers. For one thing, it is much easier to implement synaptic plasticity with event-driven synapses.

So unless you are inextricably bound to using a giant code base implemented by somebody else long, long ago, that is just studded with pointer-coupled synaptic communication between cells, it is best to avoid pointer-coupled synaptic transmission.

Here are some good starting points:
1. If you want to learn more about event-driven synaptic mechanisms, see chapter 10 of The NEURON Book.
2. If you want an event-driven mechanism that has stream-specific saturation, see the AMPA_S mechanism in that same chapter.
3. If you are looking for an event-driven mechanism with stream-specific, paired-pulse potentiation that follows a user-specifiable biexponential time course, see the GSyn mechanism described in chapter 10 of The NEURON Book.
4. If you are interested in event-driven synaptic mechanisms that have use-dependent (non-associative) plasticity, these two very different entries in ModelDB will be a good place to start:
https://senselab.med.yale.edu/ModelDB/S ... model=3264
https://senselab.med.yale.edu/ModelDB/S ... model=3815
5. If you are interested in hebbian plasticity represented with STDP, see
https://www.neuron.yale.edu/ftp/ted/neu ... ynstdp.zip
which is an implementation of a fast activating, nonsaturating excitatory synapse (think AMPAergic synapse) that has STDP with multiplicative potentiation and depression.

ehb
Posts: 6
Joined: Tue Jun 10, 2014 9:02 pm

Re: Programming Long-Term Potentiation

Post by ehb » Mon Aug 17, 2015 4:34 am

Thank you Ted. Chapter 10 was very helpful. I used the event-driven mechanism that has stream-specific saturation and got the AMPA point process to work, however, I am not seeing the LTP behavior that I was expecting. I set the transmitter duration to 50ms. I fired neuron 1 at neuron 3 at t = 1000ms. This gives me activity I will call Pattern 1. Then I fired neuron 2 at neuron 3 ten times in one second intervals starting at t = 2000ms and ending at 11000ms. Each event gives me activity I will call Pattern 2. Then I fired neuron 1 at neuron 3 at 12000ms. I was expecting that activity to resemble Pattern 2 but it still resembles Pattern 1 as if it did not learn from repeated stimuli from neuron 2. Am I using the correct mechanism to generate this type of learning?

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

Re: Programming Long-Term Potentiation

Post by ted » Mon Aug 17, 2015 11:38 am

ehb wrote:Chapter 10 was very helpful. I used the event-driven mechanism that has stream-specific saturation and got the AMPA point process to work, however, I am not seeing the LTP behavior that I was expecting.
You expected "LTP behavior" from a synaptic model that contains only a representation of receptor saturation? A program that works properly does what it was designed to do. If you want a synaptic model of LTP, you need to find a synaptic model that was implemented for that purpose. Have you tried my previous post's fifth suggestion?

ehb
Posts: 6
Joined: Tue Jun 10, 2014 9:02 pm

Re: Programming Long-Term Potentiation

Post by ehb » Tue Aug 25, 2015 7:38 pm

Hi Ted. I incorporated the hebbian plasticity mod file that is represented with STDP into my model. I also read Bi and Poo's 2001 paper on Synaptic Modification by Correlated Activity so that I could understand how the mechanism in this mod file should behave. I am still not observing LTP as I am expecting.

In my model, Neuron 1 synapses with Neuron 3 and fires 2ms before Neuron 3. Neuron 3 has a stronger spike than Neuron 1. According to Bi and Poo's paper, that should strengthen the synapse between Neuron 1 and 3 and induce LTP. Neuron 1 firing at Neuron 3 results in Neuron 3's spikes averaging at a 35mV peak. If I fire Neuron 2 at Neuron 3, since the synapse on Neuron 3's dendrite should be strengthened, I am expecting Neuron 3 to spike at 35mV or higher. Instead, after 5-20 trials of Neuron 1 firing at Neuron 3 (each trial separated by 1 second), when Neuron 2 fires at Neuron 3, Neuron 3's spike peak is -60mV. Why did it decrease?

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

Re: Programming Long-Term Potentiation

Post by ted » Tue Aug 25, 2015 9:01 pm

I am still not observing LTP as I am expecting.
How are you trying to induce it, and how are you trying to determine that it happened? Are you sure that the model's parameters are such that LTP can be induced in your model? Have you examined the peak amplitude of the synaptic conductance change that is elicited by a single presynaptic spike before, and after, induction of potentiation?
In my model . . . Neuron 3 has a stronger spike than Neuron 1.
Most unexpected. What does that mean?
According to Bi and Poo's paper, that should strengthen the synapse between Neuron 1 and 3 and induce LTP.
Tautology alert! Inducing LTP of a synapse means that the synapse has been strenghened.
Neuron 1 firing at Neuron 3 results in Neuron 3's spikes averaging at a 35mV peak.
A cell spikes, or even fires a spike, but it doesn't fire a spike at something. The operation of biological neural circuits is not like a weekend in Chicago.
when Neuron 2 fires at Neuron 3, Neuron 3's spike peak is -60mV. Why did it decrease?
It's not a spike. It might be an epsp. To find out, cut the synaptic weight by a factor of 2 and see if the peak amplitude reduces by a similar factor. Remember, spikes are "all or nothing".

It might be a good idea to take a 6 months or longer elective in a lab that does intracellular recordings, in order to become familiar with terminology, phenomenology, instrumentation, and the design, performance, and interpretation of experiments.

Post Reply