Leech Heart (HE) Motor Neuron conductances contributions to NN activity (Lamb & Calabrese 2013)

 Download zip file 
Help downloading and running models
Accession:153355
"... To explore the relationship between conductances, and in particular how they influence the activity of motor neurons in the well characterized leech heartbeat system, we developed a new multi-compartmental Hodgkin-Huxley style leech heart motor neuron model. To do so, we evolved a population of model instances, which differed in the density of specific conductances, capable of achieving specific output activity targets given an associated input pattern. ... We found that the strengths of many conductances, including those with differing dynamics, had strong partial correlations and that these relationships appeared to be linked by their influence on heart motor neuron activity. Conductances that had positive correlations opposed one another and had the opposite effects on activity metrics when perturbed whereas conductances that had negative correlations could compensate for one another and had similar effects on activity metrics. "
Reference:
1 . Lamb DG, Calabrese RL (2013) Correlated conductance parameters in leech heart motor neurons contribute to motor pattern formation. PLoS One 8:e79267 [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 heart motor neuron (HE);
Channel(s): I Na,p; I A; I K; I K,leak; I K,Ca; I Sodium; I Calcium; I Na, leak;
Gap Junctions: Gap junctions;
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: GENESIS;
Model Concept(s): Action Potential Initiation; Activity Patterns; Bursting; Temporal Pattern Generation; Detailed Neuronal Models; Parameter sensitivity; Conductance distributions;
Implementer(s): Lamb, Damon [Damon.Lamb at neurology.ufl.edu];
Search NeuronDB for information about:  I Na,p; I A; I K; I K,leak; I K,Ca; I Sodium; I Calcium; I Na, leak;
/
LambCalabrese2013
lgenesis-noX
neurokit
prototypes
README
camit.p
compt_chop.g *
compt_chop.g.bu *
defaults.g *
defaults.g.bu *
hot *
Neurokit.g *
Neurokit.g.bu *
NEURON.g *
NEURON.g.bu *
newcamit.p
synactivator.g *
synactivator.g.bu *
userprefs.g *
userprefs.g.bu *
xall.g *
xall.g.bu *
xcell_funcs.g *
xcell_funcs.g.bu *
xchannel_funcs.g *
xchannel_funcs.g.bu *
xgeom.g *
xgeom.g.bu *
xgraph_funcs.g *
xgraph_funcs.g.bu *
xicons.g *
xicons.g.bu *
xout_funcs.g *
xout_funcs.g.bu *
xrun.g *
xrun.g.bu *
xselect.g *
xselect.g.bu *
xstartup.g *
xstartup.g.bu *
xtitle.g *
xtitle.g.bu *
                            
//genesis

function do_rel_position(src, x, y, z)
	str src
	float x, y, z
	int nmsgs, i

	float tx, ty, tz
	str child

	nmsgs = {getmsg {src} -incoming -count}

	tx = x + {getfield {src} x}
	ty = y + {getfield {src} y}
	tz = z + {getfield {src} z}
	setfield {src} x {tx}
	setfield {src} y {ty}
	setfield {src} z {tz}

	for (i = 0; i < nmsgs; i = i + 1)
		if ( \
		    {strcmp {getmsg {src} -incoming -type {i}} RAXIAL} == 0 \
		    )
			child = {getmsg {src} -incoming -source {i}}
			do_rel_position {child} {x} {y} {z}
		end
	end
end

function do_rel_position(src, x, y, z)
	/* testing the C version of the routine. */
	relposition {src} {x} {y} {z}
end

function do_z_rotate(name, x, y, sin, cos)
	str name
	float x, y, sin, cos

	int nmsgs, i
	str child
	float dx, dy

	nmsgs = {getmsg {name} -incoming -count}

	for (i = 0; i < nmsgs; i = i + 1)
		if ( \
		    {strcmp {getmsg {name} -incoming -type {i}} RAXIAL} == 0 \
		    )
			child = {getmsg {name} -incoming -source {i}}
			do_z_rotate {child} {x} {y} {sin} {cos}
		end
	end

	dx = {getfield {name} x} - x
	dy = {getfield {name} y} - y
	setfield {name} x {x + cos*dx - sin*dy}
	setfield {name} y {y + sin*dx + cos*dy}
end

function do_x_rotate(name, y, z, sin, cos)
	str name
	float y, z, sin, cos

	int nmsgs, i
	str child
	float dy, dz

	nmsgs = {getmsg {name} -incoming -count}

	for (i = 0; i < nmsgs; i = i + 1)
		if ( \
		    {strcmp {getmsg {name} -incoming -type {i}} RAXIAL} == 0 \
		    )
			child = {getmsg {name} -incoming -source {i}}
			do_x_rotate {child} {y} {z} {sin} {cos}
		end
	end

	dy = {getfield {name} y} - y
	dz = {getfield {name} z} - z
	setfield {name} y {y + cos*dy - sin*dz}
	setfield {name} z {z + sin*dy + cos*dz}
end


function do_y_rotate(name, x, z, sin, cos)
	str name
	float x, z, sin, cos

	int nmsgs, i
	str child
	float dx, dz

	nmsgs = {getmsg {name} -incoming -count}

	for (i = 0; i < nmsgs; i = i + 1)
		if ( \
		    {strcmp {getmsg {name} -incoming -type {i}} RAXIAL} == 0 \
		    )
			child = {getmsg {name} -incoming -source {i}}
			do_y_rotate {child} {x} {z} {sin} {cos}
		end
	end

	dx = {getfield {name} x} - x
	dz = {getfield {name} z} - z
	setfield {name} x {x + cos*dx - sin*dz}
	setfield {name} z {z + sin*dx + cos*dz}
end

function scale_el_props(elm, ratio, scope)
	str elm
	float ratio
	int scope

	float temp
	float nmsgs, i
	str name

	temp = {getfield {elm} Ra}
	setfield {elm} Ra {temp*ratio}
	temp = {getfield {elm} Rm}
	setfield {elm} Rm {temp/ratio}
	temp = {getfield {elm} Cm}
	setfield {elm} Cm {temp*ratio}
	if (scope == 0)
		return
	end
	nmsgs = {getmsg {elm} -incoming -count}

	for (i = 0; i < nmsgs; i = i + 1)
		if ( \
		    {strcmp {getmsg {elm} -incoming -type {i}} RAXIAL} == 0 \
		    )
			name = {getmsg {elm} -incoming -source {i}}
			scale_el_props {name} {ratio} 1
		end
	end
end


function do_stretch(x,y,z)  // click coords added DEB 8/2/95
	float x, y, z
	str elm, parent
	float cos, sin
	float dotprd, crossprd
	float dx, dy, dz, ex, ey, ez, px, py, pz, elx, ely, elz
	float len
	float init_len, final_len, ratio
	int nmsgs, i

	if ({strncmp {getfield /compt_select/draw transform} o 1} == 0)
		echo Draw transform should be one of xy, yz, xz.
		return
	end

	elm = comptpath
	nmsgs = {getmsg {elm} -incoming -count}
	for (i = 0; i < nmsgs; i = i + 1)
		if ( \
		    {strcmp {getmsg {elm} -incoming -type {i}} AXIAL} == 0 \
		    )
			parent = {getmsg {elm} -incoming -source {i}}
		end
	end

	elx = {getfield {elm} x}
	ely = {getfield {elm} y}
	elz = {getfield {elm} z}
	px = {getfield {parent} x}
	py = {getfield {parent} y}
	pz = {getfield {parent} z}

	init_len = (elx - px)*(elx - px) + (ely - py)*(ely - py) + (elz - pz)*(elz - pz)

	if ({strncmp {getfield /compt_select/draw transform} z 1} == 0)
		dx =  x - px
		dy =  y - py
		ex = elx - px
		ey = ely - py
		dotprd = dx*ex + dy*ey
		crossprd = ex*dy - dx*ey
		len = ex*ex + ey*ey
		cos = dotprd/len
		sin = crossprd/len
		dx = cos*ex - sin*ey - ex
		dy = sin*ex + cos*ey - ey
		if (({getfield /compt_select/scope state}) == 0)
			do_rel_position {elm} {dx} {dy} 0
		else
			do_z_rotate {elm} {px} {py} {sin} {cos}
		end
	end
	if ({strncmp {getfield /compt_select/draw transform} x 1} == 0)
		dz =  z - pz
		dy =  y - py
		ez = elz - pz
		ey = ely - py
		dotprd = dz*ez + dy*ey
		crossprd = dz*ey - ez*dy
		len = ez*ez + ey*ey
		cos = dotprd/len
		sin = crossprd/len
		dy = cos*ey - sin*ez - ey
		dz = sin*ey + cos*ez - ez
		if (({getfield /compt_select/scope state}) == 0)
			do_rel_position {elm} 0 {dy} {dz}
		else
			do_x_rotate {elm} {py} {pz} {sin} {cos}
		end
	end
	if ({strncmp {getfield /compt_select/draw transform} y 1} == 0)
		dx =  x - px
		dz =  z - pz
		ex = elx - px
		ez = elz - pz
		dotprd = dx*ex + dz*ez
		crossprd = ex*dz - dx*ez
		len = ex*ex + ez*ez
		cos = dotprd/len
		sin = crossprd/len
		dx = cos*ex - sin*ez - ex
		dz = sin*ex + cos*ez - ez
		if (({getfield /compt_select/scope state}) == 0)
			do_rel_position {elm} {dx} 0 {dz}
		else
			do_y_rotate {elm} {px} {pz} {sin} {cos}
		end
	end

	elx = {getfield {elm} x}
	ely = {getfield {elm} y}
	elz = {getfield {elm} z}
	final_len = (elx - px)*(elx - px) + (ely - py)*(ely - py) + (elz - pz)*(elz - pz)
	ratio = {sqrt {final_len/init_len}}
	scale_el_props {elm} {ratio}  \
	    {getfield /compt_select/scope state}
	if ((user_symcomps))
		setfield /compt_select/draw/cell  \
		    path {cellpath}/##[TYPE=symcompartment]
	else
		setfield /compt_select/draw/cell  \
		    path {cellpath}/##[TYPE=compartment]
	end
end

function do_rotate(x,y,z)  // click coords added DEB 8/2/95
	float x, y, z
	str elm, parent
	float cos, sin
	float dotprd, crossprd
	float dx, dy, dz, ex, ey, ez, px, py, pz, elx, ely, elz
	float len
	int nmsgs, i

	elm = comptpath
	nmsgs = {getmsg {elm} -incoming -count}
	for (i = 0; i < nmsgs; i = i + 1)
		if ( \
		    {strcmp {getmsg {elm} -incoming -type {i}} AXIAL} == 0 \
		    )
			parent = {getmsg {elm} -incoming -source {i}}
		end
	end

	elx = {getfield {elm} x}
	ely = {getfield {elm} y}
	elz = {getfield {elm} z}
	px = {getfield {parent} x}
	py = {getfield {parent} y}
	pz = {getfield {parent} z}

	if ({strncmp {getfield /compt_select/draw transform} z 1} == 0)
		dx =  x - px
		dy =  y - py
		ex = elx - px
		ey = ely - py
		dotprd = dx*ex + dy*ey
		crossprd = ex*dy - dx*ey
		len = {sqrt {dx*dx + dy*dy}}
		len = len*{sqrt {ex*ex + ey*ey}}
		cos = dotprd/len
		sin = crossprd/len
		dx = cos*ex - sin*ey - ex
		dy = sin*ex + cos*ey - ey
		if (({getfield /compt_select/scope state}) == 0)
			do_rel_position {elm} {dx} {dy} 0
		else
			do_z_rotate {elm} {px} {py} {sin} {cos}
		end
	end
	if ({strncmp {getfield /compt_select/draw transform} x 1} == 0)
		dz =  z - pz
		dy =  y - py
		ez = elz - pz
		ey = ely - py
		dotprd = dz*ez + dy*ey
		crossprd = dz*ey - ez*dy
		len = {sqrt {dz*dz + dy*dy}}
		len = len*{sqrt {ez*ez + ey*ey}}
		cos = dotprd/len
		sin = crossprd/len
		dy = cos*ey - sin*ez - ey
		dz = sin*ey + cos*ez - ez
		if (({getfield /compt_select/scope state}) == 0)
			do_rel_position {elm} 0 {dy} {dz}
		else
			do_x_rotate {elm} {py} {pz} {sin} {cos}
		end
	end
	if ({strncmp {getfield /compt_select/draw transform} y 1} == 0)
		dx =  x - px
		dz =  z - pz
		ex = elx - px
		ez = elz - pz
		dotprd = dx*ex + dz*ez
		crossprd = ex*dz - dx*ez
		len = {sqrt {dx*dx + dz*dz}}
		len = len*{sqrt {ex*ex + ez*ez}}
		cos = dotprd/len
		sin = crossprd/len
		dx = cos*ex - sin*ez - ex
		dz = sin*ex + cos*ez - ez
		if (({getfield /compt_select/scope state}) == 0)
			do_rel_position {elm} {dx} 0 {dz}
		else
			do_y_rotate {elm} {px} {pz} {sin} {cos}
		end
	end
	if ( \
	    {strcmp {getfield /compt_select/draw transform} o} == 0 \
	    )
		echo Draw transform should be one of xy ,yz, xz.
	else
		if ((user_symcomps))
			setfield /compt_select/draw/cell  \
			    path {cellpath}/##[TYPE=symcompartment]
		else
			setfield /compt_select/draw/cell  \
			    path {cellpath}/##[TYPE=compartment]
		end
	end
end