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]
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
include
absff_func_ext.h
absff_header.h
axon_ext.h
axon_g@.h
axon_struct.h
basic_g@.h
buf_defs.h
buf_ext.h
buf_struct.h
buffer_g@.h
conc_defs.h
conc_ext.h
conc_struct.h
concen_g@.h
copyright.h
dev_ext.h
dev_struct.h
devices_g@.h
diskio_defs.h
diskio_ext.h
diskio_func_ext.h
diskio_g@.h
diskio_struct.h
fac_debug.h
fac_defs.h
fac_ext.h
fac_struct.h
FMT1.h
FMT1_ext.h
FMT1_func_ext.h
FMT1_struct.h
hash.h
header.h
hh_ext.h
hh_g@.h
hh_struct.h
hh_struct_defs.h
hines_defs.h
hines_ext.h
hines_g@.h
hines_struct.h
interface.h
iofunc.h
kin_ext.h
kin_g@.h
kin_struct.h
netcdf.h
netcdf_ext.h
netcdf_func_ext.h
netcdf_struct.h
newconn_defs.h
newconn_ext.h
newconn_g@.h
newconn_struct.h
nrutil.h
NULLArgv.h
olf_ext.h
olf_g@.h
olf_struct.h
out_defs.h
out_ext.h
out_struct.h
output_g@.h
par_ext.h
param_defs.h
param_ext.h
param_g@.h
param_struct.h
per_ext.h
per_struct.h
personal_g@.h
pore_ext.h
pore_g@.h
pore_struct.h
profile.h
seg.h
seg_defs.h
seg_ext.h
seg_struct.h
segment_g@.h
shell.h
shell_defs.h
shell_ext.h
shell_func_ext.h
shell_g@.h
shell_struct.h
sim.h
sim_defs.h
sim_ext.h
sim_func_ext.h
sim_struct.h
sim_version.h
simconn_ext.h
simconn_g@.h
simconn_struct.h *
spike_ext.h
spike_struct.h
sprng.h
sprng_f.h
struct_defs.h
syn_ext.h
syn_struct.h
synapse_g@.h
synaptic_event.h
SynGS_ext.h *
SynGS_struct.h
system_deps.h
tool_ext.h
tool_struct.h
toolconn_ext.h
toolconn_g@.h
toolconn_struct.h *
tools.h
user_ext.h
user_g@.h
user_struct.h
                            
/* Version EDS22g 99/02/11 Erik De Schutter, Caltech & BBF-UIA 4/92-2/99 */

/*
** $Id: hines_struct.h,v 1.1.1.1 2005/06/14 04:38:32 svitak Exp $
** $Log: hines_struct.h,v $
** Revision 1.1.1.1  2005/06/14 04:38:32  svitak
** Import from snapshot of CalTech CVS tree of June 8, 2005
**
** Revision 1.10  2001/01/01 01:19:19  mhucka
** Fix from Hugo Cornelis for a bug in hsolve in which Vm is loaded too late
** under sone circumstances.
**
** Revision 1.9  2000/09/07 02:22:55  mhucka
** Fixes from Hugo Cornelis for various initialization problems.
**
** EDS22k revision HC BBF-UIA 00/07/24
** no normalization for incoming ACTIVATION msg's on hsolve'd synchans
** Fix for case when Vm was loaded to late (for Ca channel only with nernst Ek)
**
** Revision 1.8  2000/05/26 22:26:32  mhucka
** Comment cleanup.
**
** Revision 1.7  2000/05/26 08:20:08  mhucka
** ** EDS22j revison: HC BBF-UIA 00/03/13
** ** Added computeIm field
**
** Revision 1.6  1999/10/17 21:39:37  mhucka
** New version of Hines code from Erik De Schutter, dated 30 March 1999
** and including an update to hines.c from Erik from June 1999.  This version
** does not include changes to support Red Hat 6.0 and the Cray T3E, which
** will need to be incorporated in a separate revision update.
**
** EDS22g revison: EDS BBF-UIA 99/02/11-99/02/11
** Added chanmode 5
**
** EDS22f revison: EDS BBF-UIA 98/11/23-98/11/23
** Improved comments
**
** EDS22d revison: EDS BBF-UIA 98/09/29-98/09/30
** Added tabinteg field
**
** EDS22c revison: EDS BBF-UIA 97/12/02-98/03/12
** Moved all typedefs to this file
** Removed values, cip, ri and diag arrays; renamed symcomparts to symflag
**
** Revision 1.4  1997/05/28 22:57:26  dhb
** Replaced with version from Antwerp GENESIS 21e
**
** Revision 1.3  1995/12/06 00:47:50  venkat
** Pointer to an array of non-hsolved element pointers added to the hines struct
**
** Revision 1.2  1995/08/01  19:29:03  dhb
** Changes from Erik DeSchutter described below.
**
** Revision 1.4  1994/03/22 eds
** added msgcompts field
**
** Revision 1.1  1992/12/11  19:03:14  dhb
** Initial revision
**
*/

/* 
** 95/06/02 eds
** removed Vm_reset flag 
** Revision 1.4  1995/03/22 eds
** added msgcompts field
*/

#include "struct_defs.h"
typedef struct symcompartment_type Ncomp;
typedef struct compartment_type Comp;
typedef struct hsolve_type Hsolve;
typedef struct nernst_type Nernst;
typedef struct channelC3_type Schan;
typedef struct Synchan_type S2chan;
typedef struct Spikegen_type Spike;
typedef struct Ca_concen_type Concen;
typedef struct ghk_type Ghk;
typedef struct Mg_block_type Mblock;

typedef struct tchaninfo_type {
	Element	*chan;		/* pointer to channel object */
	Nernst *nernst;		/* pointer to nernst msg if exists */
	MsgIn  *conc;		/* pointer to concentration value if exists */
	struct tchaninfo_type *next;
} Tcinfo;

typedef struct chaninfo_type {
	Element	*chan;		/* pointer to channel object */
	struct chaninfo_type *next;
} Cinfo;

/* this is used only by read_hines and replaces the compartment elements */
typedef struct comp_type {
	char	*name;
	float	Cm;
	float	Rm;
	float	Ra;
	float	Em;
	float	inject;
	float	x,y,z;
	float   dia;
	float   len;
	Ncomp	*proto_compt;
	struct  comp_type *parent;
	struct  comp_type *next;
} Compinfo;

typedef struct outinfo_type {
	int	op;
	int	cindex;
	int	comptno;
	struct  outinfo_type *next;
} Oinfo;

typedef struct ininfo_type {
	int	type;
	short	sChildType;
	MsgIn	*msgin;
	int	nop;
	int	nchip;
	struct ininfo_type *next;
} Iinfo;

struct hsolve_type {
	ELEMENT_TYPE
	/* DO NOT CHANGE THIS FIELDS AFTER THE SETUP CALL ! */
	char	*path;		/* the wildcard list of elms to be integrated */
	int	comptmode;	/* no longer used */
	int	chanmode;	/* chooses option for channel calculations:
				**
				**    0 == default is the most general, uses
				** least memory and is slowest.
				**
				**    1   tabchannel equations are optimized.
				** Has limitations use of EK msg (nernst only)
				**
                        	**    2-5 assume integer powers. They are the 
				** fastest but use a large 'chip' array which 
				** necessitates use of special input/output 
				** routines. They differ in variable output:
				**    2: all compartments Vm fields are updated
				**    3: but all elements that had outgoing msg
				**       to non-hines objects during the SETUP 
				**       call are updated at a rate determined 
				**       by outclock.
				**    4: no elements are updated, but all state
				**       variables are stored in local arrays
				**       and can be accessed directly (use 
				**       findsolvefield function to get name).
				**    5: as 4 but all currents and 
				**       conductances are normalized for 
				**       compartment surface area.
				*/
	int	calcmode;	/* chooses option for interpolation of
				** tabulated equations, applies to chanmodes
				** 2-4 only:
				**
				**    0: no interpolation, is equivalent
				** to GENESIS 1.4 and 2.0 hsolve modes
				**
				**    1 == default: all tables are interpolated
				*/
	int	no_elminfo;	/* boolean, if false (default) the HPUT and 
				**  HSET commands can be used to get element 
				**  field values in/out of the hsolve chip 
				**  array and findsolvefield function is 
				**  available.  This field is relevant for
				**  chanmode>=2 only.
				*/
	int	outclock;	/* number [0-99] of the clock used for all
				** outgoing msg (only used if chanmode >= 3)
				**  default: element clock.  outclock should 
				**  have dt equal to or larger than hsolve clock
				*/
	int	storemode;	/* chooses options for storage of total currents
				**  model (only chanmode>=2).
				**
				**	0 = default: nothing is stored
				**
				**  1 stores all ionic and synaptic currents in 
				**    itotal (requires that no_elminfo==0)
				**
				**  2 stores all ionic and synaptic conductances
				**    in itotal (requires that no_elminfo==0)
				*/
	int computeIm;		/* chanmode 0,1 only
				** 0 = default : do not compute Im
				** 1 : compute Im (and store in compartments)
				*/
    /* all the following fields are initialized by SETUP and should not
	** be changed by user */
	int	symflag;	/* boolean, determines if symmetric compart */
	int	ncompts;	/* number of compartments in path */
	Element	**compts;	/* array of element pointers IN ORDER of EL */
	/* The order of EL is important : the following arrays depend on it ! */
	int	*parents;	/* array of indices for parent elms */
	int	*nkids;		/* array for number of child elms */
	int	**kids;		/* array of indices for child elms */
	int	*hnum;		/* array of indices for hines elmnumeration */
	int	*elmnum;	/* inverse of above */

	double	*results;	/* array of previous and new state vars:
				** mixed right-side and diagonals of ODEs */
	double  *vm;		/* array of Vm values */

	int	nfuncs;	
	int	*funcs;		/* big array for all ops for the actual hines
				** method part (solving compartment voltages) */
	int	**ravptr;	/* temporary storage for setting up funcs */

/* chanmode 0 arrays */
	Cinfo	**chan;		/* array of channel element link lists  */
	short   *msgcompts; 	/* array of flags for local compt update */
	double	*diagonals;	/* array of constant part diagonals */

/* chanmode 1 arrays */
	Tcinfo	**hh;		/* array of tabchannel info link lists, with 
				** ptr to conc and nernst fields */

/* chanmode 2-4 arrays */
	int	*piCompFlags;	/* flags for comp, 1 : NEWVOLT_OP needed */
	int	nchildren;
	Element **children;	/* array of element ptrs to compt children */
	short	*childtypes;	/* array identifying all children */
	float	*childdata; 	/* array having msg data for all children */
	int	*childmsg;	/* array having extra msg for all children */
	int	*childlink;	/* array having link info for all children */
	int 	*childcode;	/* array having code info for all children */
	int	*childpos;	/* array specifying position for all children */
	int	*childstart;	/* array index of first child for each comp */
	int	nravals;	/* size of Ra values array */
	double	*ravals;	/* array scaled Ra values (replaces values) */
	Iinfo	*ininfo;	/* input msg info list.  Used by chanmode>=2 to 
				** update the appropriate elements */
	Oinfo	*outinfo;	/* output msg info list.  Used by chanmode==3 to
				** update the appropriate elements */
	int	nchips;		/* number of entries in chip array */
	double	*chip;		/* array for channel element fields */
	int	nops;		/* number of entries in ops array */
	int	*ops;		/* array for channel instructions  */
	Element *spikegen;	/* pointer to Spikegen element */
	double  *vmlast;	/* pointer to end of vm array */

    /* concentration stuff */
	int	nconcs;	
	double  *conc;		/* array of concentration and buffer values */
	double  *flux;		/* array of flux values */
	int	nconcchips;	/* number of entries in concchip array */
	double	*concchip;	/* array for concen element fields */
	int	nconcops;	/* number of entries in concops array */
	int	*concops;   	/* array for concen instructions */
	int     *fconc; 	/* array indexes for each comp into conc array*/
	int	ndiffs;		/* total number of diffusion systems */
	int	*fdiffs;	/* array indexes to diffsystems for each compt*/
	int	*dchild; 	/* array indexes of diffsystems into children*/
	int	*dconc;		/* array indexes of diffsystems into conc */
	int	maxshells;	/* largest # of diffusion shells */
	int	maxshcols;	/* largest # of colums in diagonal diff array */
	int	*nshells;	/* array of number of shells each diffsystem */
	int	*nshrows;   	/* array of number of rows in each diffshell */
	int	*nshelms;   	/* array of number of elms in each diffshell */
	int	*nshfix;	/* array number fixbuffers in each diff shell */
	double	*covals0;	/* linear version of tridiag array diff pars */
	double	*covals;	/* scrap array to compute 1 diffusion system */
	double	*coresult;	/* results array of diffusion solution */
	double	*codiag;	/* diag array of diffusion solution */
	double	*cores;		/* scrap results array to compute 1 diffsystem*/
	int	*fcoval;	/* array indexes of diffsystems into covals0 */
	double	*bufvals;	/* array of buffer rate parameters */
	int	*fbufval;	/* array indexes of diffsystems into bufvals */

/* chanmode 4 arrays */
	int  	ngivals;	/* size of givals array */
	double  *givals;	/* contains computed variables (Gk,Ik,...) */
	double  *ovals;		/* pointer into givals, computed vars concchip*/
	int	*compgiv;	/* indexes into givals */
	int	*childgiv;	/* indexes into givals */

/* chanmode 2-4 arrays made if no_elminfo==0 */
	int	*childnames;	/* array pointing to elm_names of children */
	int     nelm_names;	/* number of different elm names */
	char    **elm_names;	/* stores different elm names */
	int	*compchips;	/* indexes compartment entries in chip array */
	int	*compops;	/* indexes compartment entries in ops array */
	int	*childops;	/* indexes child entries in ops array */
	int     *childchips;	/* indexes childentries in chip array */
	double  *itotal;	/* array that can store sum of all ionic and
				** synaptic currents or conductances */
/* chanmode 2-4 conductance factor tables */
	int	ntab;		/* number of tables in tabchannel table */
	int	ncols;		/* number of columns in table */
	double  **tables;	/* pointers to the original tabchannel tables */
	int	*tabcols;	/* starting column for tabchannels in table */
	int	*tabinteg;	/* codes type for tabchannels in table */
	double	invdx;		
	double	xmin;
	double	*xvals;		/* List of V values for composite table */
	int	xdivs;		/* number of rows-1 in table */
	double	*tablist;	/* The composite table. All voltage and conc 
				** indexed lookup tables are stored here so 
				** that values for the same voltages will be
				** represented in adjacent memory locations */
	double	invdy;		
	double	ymin;
	double	*yvals;		/* List of C values for composite table */
	int	ydivs;		/* number of columns in 2D tables */
	int	sntab;
	double	*stablist;	/* Table of constants for synaptic channels, 6
				** entries for each channel type */
	double  dt;		/* value of hsolve clock */
/* fields are only used when hsolve was created by duplicate or read_hines */
	int     readflag;	/* Controls initialization for read_hines */
	Hsolve	*origsolve; 	/* hsolve from which this one was DUPLICATED */
	Compinfo *comps;	/* linked list of compartment data */
	Compinfo **elmcomps;	/* Array of pointers to comps IN INVERSE 
				** ORDER of EL */
/* these fields are only used in partitioned hsolve (at present read_flag
**  always ==1 in parallel mode) */
	int     numnodes;	/* Is also flag: if >0 parallel mode */
	int     nodenumber;	/* Relative node number within model (0..) */
	int     masternode;	/* Node number of master node model: zero */
	int	*compnodes;	/* Array of node number for each compartment
				 ** (incomplete list on slave nodes)*/
	int	*startnodes;	/* Array of first comp elmnum on each node */
	int	*ncnode;	/* Array of number of comparts on all nodes */
	long    *numsbytes;	/* Array number of bytes to send to each node */
	long    *numrbytes;	/* Array number of bytes to receive from each */
	long	*sendid;    	/* Array Delta message IDs for each dest node */
	long	*netid;		/* Array of network dependent id */
};


/* Upinder S. Bhalla Caltech May-December 1991
** Erik De Schutter 1991-1995
**
** We would like to acknowlege the advice of Dr. Michael Mascagni
** during the development of this element.
*/


Loading data, please wait...