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

str quit_form = "Do you really want to quit ?"
str help_form = "Using the Neuron simulation kit"
str file_form = "file_form"
str select_form = "Select Level of analysis"
str chosencell = "Selected cell name"
str iocell = "Cell for IO"
str author = "Your Name"

function check_iocell

str io = {getfield /{file_form}/{iocell} value}

	if (({findchar {io} /}) != 0)
		echo Invalid cell for I/O. Cell must be of form  \
		    '/cellname'.
		setfield /{file_form}/{iocell} value /cell
		return
	end
	if (({findchar {substring {io} 1} /}) != -1)
		echo Invalid cell for I/O. Cell must be of form  \
		    '/cellname'.
		setfield /{file_form}/{iocell} value /cell
	end
end

function do_title_bar

	create x1form /title_bar [0,0,{user_screenwidth},50] -nolabel
	ce ^
	disable .
    create x1button quit [1%,2,13%,] -script popup_quit
    create x1button help [15%,2,14%,] -script popup_help
    create x1button "file" [30%,2,14%,] -script popup_file
    create x1button "run cell" [45%,2,14%,] -script  \
        "set_level run_neuron"
    create x1button "edit cell" [60%,2,14%,] -script "set_level neuron"
    create x1button "edit compt" [75%,2,12%,] -script "set_level compt"
    create x1button "edit channel" [88%,2,11%,] -script  \
        "set_level channel"

	create x1form /{quit_form} [0,40,300,100] -title {quit_form}
	ce ^
	disable .
	create x1button yes -script quit
	create x1button no -script popdown_quit

	create x1form /{help_form} [160,40,600,850] -notitle
	ce ^
	disable .
	create x1label /{help_form}/header [1%,2,98%,25] -title  \
	    {help_form}
	create x1label /{help_form}/instr [1%,28,98%,25] -title  \
	       "Use the scroll bar at the left to move through the text"

	create x1text /{help_form}/text [1%,55,98%,87%] -filename {user_help}
	create x1button "CANCEL" -script popdown_help

	create x1form /{select_form} [480,40,300,100]
	ce ^
	disable .
	create x1button "Single Neuron level" -script "set_level neuron"
	create x1button "Compartment level" -script "set_level compt"
	create x1button "Channel level" -script "set_level channel"
	create x1button "CANCEL" -script popdown_select

	create x1form /{file_form} [320,40,300,325] -title "File Menu"
	ce ^
	disable .
	create x1label "Cell Selection"
	create x1dialog {chosencell} -value /mit -script  \
	    "choose_cell "<widget>
	create x1label "Cell Parameter IO"
	create x1dialog {iocell} -value /camit -script check_iocell
	create x1dialog source_file_name -value camit.p
	create x1button "Load from file" -script do_cell_load
	create x1dialog "Save to file" -script "do_cell_save "<widget>  \
	    -value newcamit.p
	create x1dialog {author} -value " "
	create x1button "New Cell" -script "do_new_cell "<widget>
	// above "create x1button" had the following option, but
	// x1buttons don't support it and set code will complain
	// about the unknown field.  ---dhb
	//	-value "/newcell"
	create x1label " "
	create x1button "CANCEL" -script popdown_file
	create neutral /dummy

    setfield /file_form/"Selected cell name" value {user_cell}
	check_iocell
    setfield /file_form/"Cell for IO" value {user_cell}
    setfield /file_form/"source_file_name" value {user_pfile}
    setfield /file_form/"Save to file" value new{user_pfile}
    setfield /file_form/{author} value {user_name}
end

function popup_quit
	xshowontop /{quit_form}
end

function popup_help
	xshowontop /{help_form}
end

function popup_file
	xshowontop /{file_form}
end

function popup_select
	xshowontop /{select_form}
end


function popdown_quit
	xhide /{quit_form}
end

function popdown_help
	xhide /{help_form}
end

function popdown_file
	xhide /{file_form}
end

function popdown_select
	xhide /{select_form}
end

function choose_cell(widget)
	str widget

	int n
	str num, cellw

    pushe /{file_form}
	xhide .
	str newcell = {getfield {chosencell} value}

	if (!({exists {newcell}}))
		echo {newcell} does not exist
		return
	end
	if ({strcmp {cellpath} {newcell}} == 0)
		return
	end

	if ({exists {cellpath}})
   		disable {cellpath}
		for (n = 1; n <= 2; n = n + 1)
			num = n
			if (({exists {cellpath}xout{num}}))
				disable {cellpath}graph{num}
				disable {cellpath}xout{num}
				xhide {cellpath}graph{num}
				xhide {cellpath}xout{num}
			end
		end
	end

    cellpath = newcell
	for (n = 1; n <= 2; n = n + 1)
		num = n
		if (!({exists {cellpath}xout{num}}))
			do_xout {num}
			do_xgraph {num}
		end
		if ({strcmp {analysis_level} "run_neuron"} == 0)
			if (num <= user_numxouts)
				xshowontop {newcell}graph{num}
				xshowontop {newcell}xout{num}
			end
		end
	end
   	enable {cellpath}
	for (n = 1; n <= (user_numxouts); n = n + 1)
		num = n
		enable {cellpath}graph{num}
		enable {cellpath}xout{num}
	end
    reset

	for (n = 1; n <= 2; n = n + 1)
	  num = n
	  cellw = (cellpath) @ "xout" @ (num) @ "/draw/cell"
	  setfield {cellw} autofat TRUE
	  setfield {cellw} fatfix FALSE
	  if ((user_symcomps))
   		setfield {cellw}  \
   		    path {cellpath}"/##[TYPE=symcompartment]"
   		setfield /compt_select/draw/cell  \
   		    path {cellpath}"/##[TYPE=symcompartment]"
	  else
   		setfield {cellw} path {cellpath}"/##[TYPE=compartment]"
   		setfield /compt_select/draw/cell  \
   		    path {cellpath}"/##[TYPE=compartment]"
	  end
	  setfield {cellw} fatfix TRUE
	  setfield {cellw} autofat FALSE
	end
	setfield /file_IO/field_path  \
	    value {cellpath}/{user_filefieldpath}
	pope
end

function do_cell_load
	str wid = "/" @ (file_form) @ "/source_file_name"
	str name

	pushe /{file_form}
	readcell {getfield {wid} value} {getfield {iocell} value}
	reset
	pushe /{file_form}
    setfield {chosencell} value {getfield {iocell} value}
    choose_cell {chosencell}
	/* \
	     find type of first compartment, assume they are all same type  \
	    */
	foreach name ({el {cellpath}/#[]})
		if ( \
		    {strcmp {getfield {name} object->name} compartment} == 0 \
		    )
			user_symcomps = 0
		else
			user_symcomps = 1
		end
		break		/* exit after first iteration of the loop */

	end
    pope
	xhide /{file_form}
	/* set correct integration method */
	intmethod "/cell_run_control/method"
end

function do_cell_save(widget)
	str widget

	pushe /{file_form}
	writecell {getfield {widget} value} {getfield {iocell} value}  \
	    -author {getfield {author} value}
    pope
	xhide /{file_form}
end

function do_new_cell(widget)
	str widget

	echo not yet implemented
end

function set_level(level)
	str level

	if (!({exists {cellpath}}))
		echo {cellpath} is not defined yet : a cell must be  \
		    loaded in.
		return
	end

	if (({strcmp {analysis_level} {level}}) == 0)
		return
	end

	if (({strcmp {level} "run_neuron"}) == 0)
		xshowontop /cell_run_control
		xshowontop {cellpath}xout1
		xshowontop {cellpath}graph1
		if ((user_numxouts) > 1)
			xshowontop {cellpath}xout2
			xshowontop {cellpath}graph2
		end
		/*
		if ({user_symcomps})
			set {cellpath}/##[TYPE=symcompartment] inject 0.0
		else
			set {cellpath}/##[TYPE=compartment] inject 0.0
		end
		*/
		do_run_clickmode /cell_run_control/Record

		xhide /compt_display
		xhide /compt_select
		xhide /compt_lib_form
	else
		if (({strcmp {analysis_level} "new"}) == 0)
		xshowontop /compt_display
		setfield /compt_select/draw/cell  \
		    path {cellpath}/##[TYPE=compartment]
		xshowontop /compt_select
		xshowontop /compt_lib_form
		end
	end
	if (({strcmp {level} "neuron"}) == 0)
		xshowontop /cell_params
	end
	if (({strcmp {level} "compt"}) == 0)
		xshowontop /compt_params
	end
	if (({strcmp {level} "channel"}) == 0)
		xshowontop /channel_params
	end

	if (({strcmp {analysis_level} "run_neuron"}) == 0)
		xshowontop /compt_display
		if ((user_symcomps))
			setfield /compt_select/draw/cell  \
			    path {cellpath}/##[TYPE=symcompartment]
		else
			setfield /compt_select/draw/cell  \
			    path {cellpath}/##[TYPE=compartment]
		end
		xshowontop /compt_select
		xshowontop /compt_lib_form

		xhide /cell_run_control
		xhide /file_IO
		xhide {cellpath}xout1
		xhide {cellpath}graph1
		xhide {cellpath}xout2
		xhide {cellpath}graph2
	end
	if (({strcmp {analysis_level} "neuron"}) == 0)
		xhide /cell_params
	end
	if (({strcmp {analysis_level} "compt"}) == 0)
		xhide /compt_params
	end
	if (({strcmp {analysis_level} "channel"}) == 0)
		xhide /channel_params
	end

	analysis_level = level
end