Electrically-coupled Retzius neurons (Vazquez et al. 2009)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:120910
"Dendritic electrical coupling increases the number of effective synaptic inputs onto neurons by allowing the direct spread of synaptic potentials from one neuron to another. Here we studied the summation of excitatory postsynaptic potentials (EPSPs) produced locally and arriving from the coupled neuron (transjunctional) in pairs of electrically-coupled Retzius neurons of the leech. We combined paired recordings of EPSPs, the production of artificial EPSPs (APSPs) in neuron pairs with different coupling coefficients and simulations of EPSPs produced in the coupled dendrites. ..."
Reference:
1 . Vazquez Y, Mendez B, Trueta C, De-Miguel FF (2009) Summation of excitatory postsynaptic potentials in electrically-coupled neurones. Neuroscience 163:202-12 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network; Neuron or other electrically excitable cell;
Brain Region(s)/Organism: Leech;
Cell Type(s): Leech Retzius neuron;
Channel(s): I Na,t; I A; I K; I K,Ca; I Calcium;
Gap Junctions: Gap junctions;
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Synaptic Integration;
Implementer(s):
Search NeuronDB for information about:  I Na,t; I A; I K; I K,Ca; I Calcium;
begintemplate Gap
public src, target, g, valid, pr, set_gm, gm, cm
objref srcsec, targetsec, cm, gm, y, b, xvec, sl, lm, this, fih
strdef tstr

proc init(){
	g_ = 10
	valid_ = 0
	cm = new Matrix(2,2,2)
	gm = new Matrix(2,2)
	y = new Vector(2)
	b = new Vector(2)
	xvec = new Vector(2)
}

func src() {
	srcsec = new SectionRef()
	xvec.x[0] = $1
	valid_ = 0
	return valid()
}

func target() {
	targetsec = new SectionRef()
	xvec.x[1] = $1
	valid_ = 0
	return valid()
}

func g() {
	if (numarg() > 0) {
		g_ = $1
		if (valid_) {
			set_gm()
		}
	}
	return g_
}

proc set_gm() { local us, a// conductance in nanosiemens
	if (valid_ == 0) { return }
	us = .05*g_
	srcsec.sec { a = 100/area(xvec.x[0]) }
	gm.x[0][0] = us*a
	gm.x[0][1] = -us*a
	targetsec.sec { a = 100/area(xvec.x[1]) }
	gm.x[1][1] = us*a
	gm.x[1][0] = -us*a
}

func valid() {
	if (valid_ == 0) {
		if (object_id(srcsec) && object_id(targetsec)) {
			mkgap()		
		}
	}
	return valid_
}

proc mkgap() {
	sl = new SectionList()
	srcsec.sec sl.append()
	targetsec.sec sl.append()
	valid_ = 1
	set_gm()
	lm = new LinearMechanism(cm, gm, y, b, sl, xvec)
	sprint(tstr, "%s.set_gm()", this)
	fih = new FInitializeHandler(0, tstr)
}

proc pr() {
	if (valid_) {
srcsec.sec printf("%s %s(%g)", this, secname(), xvec.x[0])
targetsec.sec printf("---%s(%g) \tg = %g (ns)\n", secname(), xvec.x[1], g())
	}else{
		printf("%s not used\n", this)
	}
}
endtemplate Gap