Global structure, robustness, and modulation of neuronal models (Goldman et al. 2001)

 Download zip file 
Help downloading and running models
"The electrical characteristics of many neurons are remarkably robust in the face of changing internal and external conditions. At the same time, neurons can be highly sensitive to neuromodulators. We find correlates of this dual robustness and sensitivity in a global analysis of the structure of a conductance-based model neuron. ..."
1 . Goldman MS, Golowasch J, Marder E, Abbott LF (2001) Global structure, robustness, and modulation of neuronal models. J Neurosci 21:5229-38 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell;
Brain Region(s)/Organism: Stomatogastric ganglion;
Cell Type(s):
Channel(s): I Na,t; I L high threshold; I T low threshold; I A; I K; I K,Ca; I Potassium;
Gap Junctions:
Simulation Environment: C or C++ program;
Model Concept(s): Bursting; Temporal Pattern Generation; Phase Response Curves;
Implementer(s): Goldman, Mark [msgoldman at];
Search NeuronDB for information about:  I Na,t; I L high threshold; I T low threshold; I A; I K; I K,Ca; I Potassium;
// NeuronPage.h : header file

// CNeuronPage dialog

class CNeuronPage : public CPropertyPage

// Construction

//member variables
	//make arrays to hold channel info
	double  m_Area_arr[_MAX_COMPARTS];
	double  m_gAxial_arr[_MAX_COMPARTS];
	double  m_C_arr[_MAX_COMPARTS];
	double  m_V0_arr[_MAX_COMPARTS];
	double  m_Ca0_arr[_MAX_COMPARTS];
	double  m_R_arr[_MAX_COMPARTS];  //array of radii of cylindrical compartments
	double  m_L_arr[_MAX_COMPARTS];  //array of lengths
	double  m_gmax0_arr[_MAX_COMPARTS][_MAX_CHANNELS];
	double	m_E_arr[_MAX_COMPARTS][_MAX_CHANNELS];
	int		m_chan_num_h_arr[_MAX_COMPARTS][_MAX_CHANNELS];
	int		m_chan_num_m_arr[_MAX_COMPARTS][_MAX_CHANNELS];
	double	m_Target_arr[_MAX_COMPARTS][_MAX_SENSORS];
	double	m_sens_ValueMax_arr[_MAX_COMPARTS][_MAX_SENSORS];
	double	m_sens_tau_h_arr[_MAX_COMPARTS][_MAX_SENSORS];
	double	m_sens_tau_m_arr[_MAX_COMPARTS][_MAX_SENSORS];
	double	m_sens_Z_h_arr[_MAX_COMPARTS][_MAX_SENSORS];
	double	m_sens_Z_m_arr[_MAX_COMPARTS][_MAX_SENSORS];
	int		m_sens_num_h_arr[_MAX_COMPARTS][_MAX_SENSORS];
	int		m_sens_num_m_arr[_MAX_COMPARTS][_MAX_SENSORS];
	double	m_syn_E_arr[_MAX_COMPARTS][_MAX_SYNAPSES];
	double	m_syn_TauDecay_arr[_MAX_COMPARTS][_MAX_SYNAPSES];
	double	m_syn_GStep_arr[_MAX_COMPARTS][_MAX_SYNAPSES];
	BOOL m_bChangeMade;  //TRUE when apply button enabled
	BOOL m_bCaChannel[_MAX_COMPARTS][_MAX_CHANNELS]; //TRUE if a Ca-admitting Chan
	BOOL m_bChangedV0[_MAX_COMPARTS];  //used to make change/kill focus cooperate 
	BOOL m_bChangedCa0[_MAX_COMPARTS];  //used to make change/kill focus cooperate 
	BOOL m_bChangedC[_MAX_COMPARTS];  //used to make change/kill focus cooperate 
	BOOL m_bChangedR[_MAX_COMPARTS];  //used to make change/kill focus cooperate 
	BOOL m_bChangedL[_MAX_COMPARTS];  //used to make change/kill focus cooperate 
	BOOL m_bChangedE[_MAX_COMPARTS][_MAX_CHANNELS]; //used to make change/kill focus cooperate
	BOOL m_bChangedgMax0[_MAX_COMPARTS][_MAX_CHANNELS]; //used to make change/kill focus cooperate
	BOOL m_bChangedSensValueMax[_MAX_COMPARTS][_MAX_SENSORS]; //used to make change/kill focus cooperate
	BOOL m_bChangedSensTauM[_MAX_COMPARTS][_MAX_SENSORS]; //used to make change/kill focus cooperate
	BOOL m_bChangedSensTauH[_MAX_COMPARTS][_MAX_SENSORS]; //used to make change/kill focus cooperate
	BOOL m_bChangedSensZM[_MAX_COMPARTS][_MAX_SENSORS]; //used to make change/kill focus cooperate
	BOOL m_bChangedSensZH[_MAX_COMPARTS][_MAX_SENSORS]; //used to make change/kill focus cooperate
	BOOL m_bChangedTarget[_MAX_COMPARTS][_MAX_SENSORS]; //used to make change/kill focus cooperate
	BOOL m_bChangedSynE[_MAX_COMPARTS][_MAX_SYNAPSES]; //used to make change/kill focus cooperate
	BOOL m_bChangedSynTauDecay[_MAX_COMPARTS][_MAX_SYNAPSES]; //used to make change/kill focus cooperate
	BOOL m_bChangedSynGStep[_MAX_COMPARTS][_MAX_SYNAPSES]; //used to make change/kill focus cooperate

	//changed sensor BOOL's
	BOOL m_bChangingChannels;
	BOOL m_bChangingSensors;
	BOOL m_bChangingSynapses;
	BOOL m_bChangingComparts;

//cell controls
	CComboBox& ctrlChanCombo() { return *(CComboBox *) GetDlgItem (IDC_CHAN_COMBO); }
	CComboBox& ctrlCompartCombo() { return *(CComboBox *) GetDlgItem (IDC_COMPART_COMBO); }
	CComboBox& ctrlSensCombo() { return *(CComboBox *) GetDlgItem (IDC_SENS_COMBO); }
	CComboBox& ctrlSynCombo() { return *(CComboBox *) GetDlgItem (IDC_SYN_COMBO); }
	CEdit& ctrlgAxialEdit() { return *(CEdit *) GetDlgItem (IDC_AXIAL_CONDUCT_EDIT); }
	CEdit& ctrlAreaEdit() { return *(CEdit *) GetDlgItem (IDC_AREA_EDIT); }
	CEdit& ctrlCEdit() { return *(CEdit *) GetDlgItem (IDC_C_EDIT); }
	CEdit& ctrlLEdit() { return *(CEdit *) GetDlgItem (IDC_LENGTH_EDIT); }
	CEdit& ctrlREdit() { return *(CEdit *) GetDlgItem (IDC_RADIUS_EDIT); }
	CEdit& ctrlInitVEdit() { return *(CEdit *) GetDlgItem (IDC_INIT_V_EDIT); }
	CEdit& ctrlInitCaEdit() { return *(CEdit *) GetDlgItem (IDC_INIT_Ca_EDIT); }
	CEdit& ctrlgMax0LeakEdit() { return *(CEdit *) GetDlgItem (IDC_Leak_GMAX0_EDIT); }
	CEdit& ctrlgMax0NaEdit() { return *(CEdit *) GetDlgItem (IDC_Na_GMAX0_EDIT); }
	CEdit& ctrlgMax0CaTEdit() { return *(CEdit *) GetDlgItem (IDC_CaT_GMAX0_EDIT); }
	CEdit& ctrlgMax0CaPEdit() { return *(CEdit *) GetDlgItem (IDC_CaP_GMAX0_EDIT); }
	CEdit& ctrlgMax0AEdit() { return *(CEdit *) GetDlgItem (IDC_A_GMAX0_EDIT); }
	CEdit& ctrlgMax0KCaEdit() { return *(CEdit *) GetDlgItem (IDC_KCa_GMAX0_EDIT); }
	CEdit& ctrlgMax0KdEdit() { return *(CEdit *) GetDlgItem (IDC_Kd_GMAX0_EDIT); }
	CEdit& ctrlgMax0hEdit() { return *(CEdit *) GetDlgItem (IDC_h_GMAX0_EDIT); }
	CEdit& ctrlgMaxLeakStatic() { return *(CEdit *) GetDlgItem (IDC_Leak_GMAX_STATIC); }
	CEdit& ctrlgMaxNaStatic() { return *(CEdit *) GetDlgItem (IDC_Na_GMAX_STATIC); }
	CEdit& ctrlgMaxCaTStatic() { return *(CEdit *) GetDlgItem (IDC_CaT_GMAX_STATIC); }
	CEdit& ctrlgMaxCaPStatic() { return *(CEdit *) GetDlgItem (IDC_CaP_GMAX_STATIC); }
	CEdit& ctrlgMaxAStatic() { return *(CEdit *) GetDlgItem (IDC_A_GMAX_STATIC); }
	CEdit& ctrlgMaxKCaStatic() { return *(CEdit *) GetDlgItem (IDC_KCa_GMAX_STATIC); }
	CEdit& ctrlgMaxKdStatic() { return *(CEdit *) GetDlgItem (IDC_Kd_GMAX_STATIC); }
	CEdit& ctrlgMaxhStatic() { return *(CEdit *) GetDlgItem (IDC_h_GMAX_STATIC); }
	CEdit& ctrlEEdit() { return *(CEdit *) GetDlgItem (IDC_E_EDIT); }
	CEdit& ctrlChan_Num_mEdit() { return *(CEdit *) GetDlgItem (IDC_CHAN_NUM_M_EDIT); }
	CEdit& ctrlChan_Num_hEdit() { return *(CEdit *) GetDlgItem (IDC_CHAN_NUM_H_EDIT); }
	CEdit& ctrlDC_TargetEdit() { return *(CEdit *) GetDlgItem (IDC_DC_TARGET_EDIT); }
	CEdit& ctrlSlow_TargetEdit() { return *(CEdit *) GetDlgItem (IDC_SLOW_TARGET_EDIT); }
	CEdit& ctrlFast_TargetEdit() { return *(CEdit *) GetDlgItem (IDC_FAST_TARGET_EDIT); }
	CEdit& ctrlDC_ValueStatic() { return *(CEdit *) GetDlgItem (IDC_DC_VALUE_STATIC); }
	CEdit& ctrlSlow_ValueStatic() { return *(CEdit *) GetDlgItem (IDC_SLOW_VALUE_STATIC); }
	CEdit& ctrlFast_ValueStatic() { return *(CEdit *) GetDlgItem (IDC_FAST_VALUE_STATIC); }
	CEdit& ctrlSens_ValueMaxEdit() { return *(CEdit *) GetDlgItem (IDC_SENS_VALUEMAX_EDIT); }
	CEdit& ctrlSens_Tau_mEdit() { return *(CEdit *) GetDlgItem (IDC_SENS_TAU_M_EDIT); }
	CEdit& ctrlSens_Tau_hEdit() { return *(CEdit *) GetDlgItem (IDC_SENS_TAU_H_EDIT); }
	CEdit& ctrlSens_Z_mEdit() { return *(CEdit *) GetDlgItem (IDC_SENS_Z_M_EDIT); }
	CEdit& ctrlSens_Z_hEdit() { return *(CEdit *) GetDlgItem (IDC_SENS_Z_H_EDIT); }
	CEdit& ctrlSens_Num_mEdit() { return *(CEdit *) GetDlgItem (IDC_SENS_NUM_M_EDIT); }
	CEdit& ctrlSens_Num_hEdit() { return *(CEdit *) GetDlgItem (IDC_SENS_NUM_H_EDIT); }
	CEdit& ctrlSyn_EEdit() { return *(CEdit *) GetDlgItem (IDC_SYN_E_EDIT); }
	CEdit& ctrlSyn_TauDecayEdit() { return *(CEdit *) GetDlgItem (IDC_SYN_TAUDECAY_EDIT); }
	CEdit& ctrlSyn_GStepEdit() { return *(CEdit *) GetDlgItem (IDC_SYN_GSTEP_EDIT); }
	CButton& ctrlApplyButt() { return *(CButton *) GetDlgItem (IDC_APPLY_BUTT); }
	CButton& ctrlRemoveChanButt() { return *(CButton *) GetDlgItem (IDC_REMOVE_CHAN_BUTT); }
	CButton& ctrlRemoveSensButt() { return *(CButton *) GetDlgItem (IDC_REMOVE_SENS_BUTT); }
	CButton& ctrlRemoveSynButt() { return *(CButton *) GetDlgItem (IDC_REMOVE_SYN_BUTT); }

// Dialog Data
	double	m_resistivity;
	double	m_gAxial;
	double	m_Area;
	double	m_C;
	double	m_V0;
	double	m_Ca0;
	double	m_length;
	double	m_radius;
	int		m_CompartType;
	int		m_ChanType;
	int		m_SensorType;
	double	m_E;
	double	m_gmax0_A;
	double	m_gmax0_CaP;
	double	m_gmax0_CaT;
	double	m_gmax0_h;
	double	m_gmax0_KCa;
	double	m_gmax0_Kd;
	double	m_gmax0_Leak;
	double	m_gmax0_Na;
	int		m_chan_num_h;
	int		m_chan_num_m;
	double	m_sens_ValueMax;
	int		m_sens_num_h;
	int		m_sens_num_m;
	double	m_sens_tau_h;
	double	m_sens_tau_m;
	double	m_sens_Z_h;
	double	m_sens_Z_m;
	double	m_DC_Target;
	double	m_Slow_Target;
	double	m_Fast_Target;
	int		m_SynType;
	double	m_syn_E;
	double	m_syn_GStep;
	double	m_syn_TauDecay;

	void UpdateGMaxDisplay();  //updates the current value of GMax as determined by the sensor
	void UpdateSensorValueDisplay();  //updates the current value of GMax as determined by the sensor
// Overrides
	// ClassWizard generate virtual function overrides
	virtual BOOL OnKillActive();
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	void Serialize(CArchive& ar);

// Implementation
	// Generated message map functions
	virtual BOOL OnInitDialog();
	afx_msg void OnRemoveChanButt();
	afx_msg void OnApplyButt();
	afx_msg void OnSelchangeChanCombo();
	afx_msg void OnChangeCEdit();
	afx_msg void OnKillfocusEEdit();
	afx_msg void OnKillfocusInitVEdit();
	afx_msg void OnChangeINITCaEDIT();
	afx_msg void OnChangeEEdit();
	afx_msg void OnChangeInitVEdit();
	afx_msg void OnSelchangeCompartCombo();
	afx_msg void OnChangeLengthEdit();
	afx_msg void OnChangeRadiusEdit();
	afx_msg void OnChangeResistivityEdit();
	afx_msg void OnKillfocusCEdit();
	afx_msg void OnKillfocusLengthEdit();
	afx_msg void OnKillfocusRadiusEdit();
	afx_msg void OnKillfocusINITCaEDIT();
	afx_msg void OnRemoveSensButt();
	afx_msg void OnSelchangeSensCombo();
	afx_msg void OnChangeChanNumMEdit();
	afx_msg void OnChangeChanNumHEdit();
	afx_msg void OnChangeSensNumMEdit();
	afx_msg void OnChangeSensNumHEdit();
	afx_msg void OnChangeLeakGMAX0EDIT();
	afx_msg void OnKillfocusLeakGMAX0EDIT();
	afx_msg void OnChangeNaGMAX0EDIT();
	afx_msg void OnKillfocusNaGMAX0EDIT();
	afx_msg void OnChangeCaTGMAX0EDIT();
	afx_msg void OnKillfocusCaTGMAX0EDIT();
	afx_msg void OnChangeCaPGMAX0EDIT();
	afx_msg void OnKillfocusCaPGMAX0EDIT();
	afx_msg void OnChangeAGmax0Edit();
	afx_msg void OnKillfocusAGmax0Edit();
	afx_msg void OnChangeKCaGMAX0EDIT();
	afx_msg void OnKillfocusKCaGMAX0EDIT();
	afx_msg void OnChangeKdGMAX0EDIT();
	afx_msg void OnKillfocusKdGMAX0EDIT();
	afx_msg void OnChangehGMAX0EDIT();
	afx_msg void OnKillfocushGMAX0EDIT();
	afx_msg void OnChangeSensValuemaxEdit();
	afx_msg void OnKillfocusSensValuemaxEdit();
	afx_msg void OnChangeSensTauMEdit();
	afx_msg void OnKillfocusSensTauMEdit();
	afx_msg void OnChangeSensTauHEdit();
	afx_msg void OnKillfocusSensTauHEdit();
	afx_msg void OnChangeSensZMEdit();
	afx_msg void OnKillfocusSensZMEdit();
	afx_msg void OnChangeSensZHEdit();
	afx_msg void OnKillfocusSensZHEdit();
	afx_msg void OnChangeDcTargetEdit();
	afx_msg void OnKillfocusDcTargetEdit();
	afx_msg void OnChangeSlowTargetEdit();
	afx_msg void OnKillfocusSlowTargetEdit();
	afx_msg void OnChangeFastTargetEdit();
	afx_msg void OnKillfocusFastTargetEdit();
	afx_msg void OnSelchangeSynCombo();
	afx_msg void OnChangeSynEEdit();
	afx_msg void OnKillfocusSynEEdit();
	afx_msg void OnChangeSynTaudecayEdit();
	afx_msg void OnKillfocusSynTaudecayEdit();
	afx_msg void OnChangeSynGstepEdit();
	afx_msg void OnKillfocusSynGstepEdit();
	afx_msg void OnRemoveSynButt();


Loading data, please wait...