Distributed Alpha Synapse

NMODL and the Channel Builder.
Post Reply
jjnaylor

Distributed Alpha Synapse

Post by jjnaylor »

My current goal is to model an alpha synapse with conductance normally distributed over the dendrite.

I have used the parameterized domain options in cell builder for distributed mechanisms, and that seems to work well, but do I need to re-write the alpha synapse as a distributed mechanism in nmodl (and put time in the assigned block to determine when to start/initialize the synaptic current) or should I just make a small loop script that puts point processes in each one?

On another somewhat unrelated note, if I know the desired total conductance of a certain current then how do I convert that to a current density? Should I just divide by the total area (ie. set g = gbar/area perhaps with a dimensional adjustment)?
ted
Site Admin
Posts: 6300
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Distributed Alpha Synapse

Post by ted »

jjnaylor wrote:My current goal is to model an alpha synapse with conductance normally distributed over the dendrite.
I have a good idea for a very effective way to do this. Let me first ask: will you ever want this to have a biexponential time course, and will you ever want it to occur more than once during a simulation, or at random times, or in response to some other phenomenon e.g. a cell firing a spike?
if I know the desired total conductance of a certain current then how do I convert that to a current density?
Am I correct to guess that you meant "conductance density"? Also, I would guess that you are either starting with an experimental estimate of some total conductance, or trying to implement in NEURON a model that was previously implemented in C, Matlab, FORTRAN etc. using "absolute biophysical parameters."
Should I just divide by the total area (ie. set g = gbar/area perhaps with a dimensional adjustment)?
Yes and yes. Assuming that the original model implementation provided enough information for you to discover the surface area of the thing that has the total conductance in question. Typical conversions are between mm2 and cm2 (clearly 100 mm2 = 1 cm2), or um2 and cm2 (1e8 um2 = 1 cm2).
jjnaylor

Re: Distributed Alpha Synapse

Post by jjnaylor »

Yes, yes, and yes. I may want a biexponential time course and will definitely have this firing multiple times and/or in response to a cell firing a spike.

Also with regards to the conductance, you are correct. I am starting with an experimental value for a total conductance (and an approximate distribution of channels). As such I'll just divide it by an estimation of total surface area and then distribute it somehow. Thanks for your help! Curious as to what your idea is.
ted
Site Admin
Posts: 6300
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Distributed Alpha Synapse

Post by ted »

NEURON's ExpSyn and Exp2Syn are event-driven point processes that can be used to implement one or more synapses attached to a single segment (compartment). One way to represent simultaneously active synapses that are widely distributed (no longer restricted to a single compartment) would be to create a separate Exp2Syn for each compartment, but that would necessitate ensuring that each instance has the proper peak conductance--a compartment with more area should probably have more synapses attached to it than one with less area. Also, you'd have to create a separate NetStim for each Exp2Syn instance.

"Why not implement an event-driven density mechanism?"

Good idea, but it's not doable in NEURON quite yet--only point processes can have a NET_RECEIVE block, and without a NET_RECEIVE block a mechanism can't be driven directly by events.

However, it's quite feasible to split the event-driven waveform-generating stuff from the density mechanism itself, by which I mean break the problem into two tractable parts:
1. Fexp2, an event-driven waveform generator, implemented as a point process. This borrows much of its NMODL code from exp2syn.mod, especially the DERIVATIVE block that governs the time course of the two exponential functions, and the NET_RECEIVE block. A single instance of this can be driven by events generated by one or more NetStims or biophysical model cells. Its output is an NMODL POINTER variable called x whose time course will control the time course of the distributed synaptic conductance.
2. dsyn, a simple density mechanism that has a conductance g and delivers a current i specified by the equations
g = gbar*x
i = g*(v-e)
where
gbar is the "synaptic conductance density" in S/cm2
x is the fraction of synaptic channels that are open at any moment
g is the conductance density of the open synaptic channels
v is local membrane potential
e is the synaptic equilibrium potential

A hoc setpointer statement is used to couple the point process's x (waveform) variable to the density mechanism's x (open channel fraction) variable. dsyn.mod declares that x is GLOBAL, so only one setpointer statement is necessary to ensure that the waveform generated by Fsyn2 will control the open channel fraction in all instances of the dsyn mechanism.

The mod files for Fexp2 and dsyn are in http://www.neuron.yale.edu/ftp/ted/neuron/dsyn.zip, which also contains a couple of ses files and an init.hoc that illustrates how to use this in a model. init.hoc sets up a toy model cell with three sections, each of which has dsyn. A single NetStim drives a single Fexp2, and Fexp2.x is linked via a setpointer statement to x_dsyn in the middle of the soma. To see the synaptic conductances evolve smoothly in time, click on the Init & Run button in the Movie Run panel. The graphs of v(.5) and g_dsyn(0.5) show membrane potential and synaptic conductance density in the soma; the graph of g_dsyn is a space plot that plots this variable in all comparments of the model vs. distance from the soma.
jjnaylor

Re: Distributed Alpha Synapse

Post by jjnaylor »

Thank you so much! I haven't used pointers before, but this shows me just how useful they can be.

I've run into two issues.
One small issue is that if I use the variable step integrator, it misses the event of the netstim and so it seems as if nothing happened (since it "misses" the exact time of the event). I feel that this shouldn't be too hard a problem, though I've currently been getting around it using simulations that switch to a crank-nicolson method for the netstim events and then reverting to variable step (though this wouldn't work in a network when I don't know when events will happen).

The other issue is that a very large, delayed capacitive current seems to drive uniform depolarization across the entire cell (when I want the postsynaptic current to originate in the dendrite and then spread to the soma). It might just be how I coded my cell, but I only put the dsyn on the dendrites.
ted
Site Admin
Posts: 6300
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Distributed Alpha Synapse

Post by ted »

Sorry about the delay in getting back to you--we're in the middle of the NEURON course and I haven't had much time to do anything else.
jjnaylor wrote:One small issue is that if I use the variable step integrator, it misses the event of the netstim and so it seems as if nothing happened
Actually that's not the case. The problem is really that, when adaptive integration is used, statements in the BREAKPOINT block are not executed because this mechanism does not WRITE a current. So x starts out at 0 and
x = B - A
is never executed. I didn't realize this. The fix is to move this statement to the DERIVATIVE block.
The other issue is that a very large, delayed capacitive current seems to drive uniform depolarization across the entire cell (when I want the postsynaptic current to originate in the dendrite and then spread to the soma). It might just be how I coded my cell, but I only put the dsyn on the dendrites.
I'm not sure I understand this. Can you send me a toy model with just enough code to reproduce this, so I can see what you are describing?
jjnaylor

Re: Distributed Alpha Synapse

Post by jjnaylor »

I figured out my capacitive current issue. Thanks for all your help Ted!
Post Reply