Hippocampal CA3 network and circadian regulation (Stanley et al. 2013)

 Download zip file 
Help downloading and running models
Accession:142104
This model produces the hippocampal CA3 neural network model used in the paper below. It has two modes of operation, a default mode and a circadian mode. In the circadian mode, parameters are swept through a range of values. This model can be quite easily adapted to produce theta and gamma oscillations, as certain parameter sweeps will reveal (see Figures). BASH scripts interact with GENESIS 2.3 to implement parameter sweeps. The model contains four cell types derived from prior papers. CA3 pyramidal are derived from Traub et al (1991); Basket, stratum oriens (O-LM), and Medial Septal GABAergic (MSG) interneurons are taken from Hajos et al (2004).
Reference:
1 . Stanley DA, Talathi SS, Parekh MB, Cordiner DJ, Zhou J, Mareci TH, Ditto WL, Carney PR (2013) Phase shift in the 24-hour rhythm of hippocampal EEG spiking activity in a rat model of temporal lobe epilepsy. J Neurophysiol 110:1070-86 [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: Hippocampus; Medial Septum;
Cell Type(s): Hippocampus CA3 pyramidal GLU cell; Hippocampus CA3 interneuron basket GABA cell; Hippocampus CA3 stratum oriens lacunosum-moleculare interneuron; Hippocampus septum medial GABAergic neuron;
Channel(s): I Na,t; I A; I K; I h; I K,Ca; I Calcium;
Gap Junctions:
Receptor(s): GabaA; AMPA;
Gene(s):
Transmitter(s): Gaba; Glutamate;
Simulation Environment: GENESIS; MATLAB;
Model Concept(s): Epilepsy; Brain Rhythms; Circadian Rhythms;
Implementer(s): Stanley, David A ;
Search NeuronDB for information about:  Hippocampus CA3 pyramidal GLU cell; Hippocampus CA3 interneuron basket GABA cell; GabaA; AMPA; I Na,t; I A; I K; I h; I K,Ca; I Calcium; Gaba; Glutamate;



//====================================================================
// simulation parameter
//====================================================================
//***** Integration time (at least for interneurons)*/
float	dt = 1e-5
setclock 0 {dt}

//*****Data collection time*/
float dt2 = 5e-4
setclock 1 {dt2}

float dt3 = 1e-4	// Clock used for extracellular field object
setclock 2 {dt3}

//float sim_time=0.2		// Total simulation runtime

// Injection currents (From Neymotin / Traub)
//float pyr_inject = 50.0e-12		// Value used in Neymotin paper
float pyr_inject = 200.0e-12		// Value used in Traub91.g
float bc_inject = 0.0			// From Neymotin 2011
float olm_inject = -25.0e-12	// From Neymotin 2011
float msg_inject = 1.885e-11	// From Hajos 2004

// Injection currents (From Hajos / Traub)
float pyr_inject = 200.0e-12		// From Traub 1991
float bc_inject = 1.7592904e-11	// From Hajos 2004
float olm_inject = 0.0			//  From Hajos 2004 
float msg_inject = 1.885e-11		// From Hajos 2004



//====================================================================
// Dataset paths
//====================================================================
str	gp, pp, sp
gp = "./dataset_temp/"
pp = "0_def/"
sp = "t0/"

gp = "./dataset_temp/"
pp = ""
sp = ""

gp = {{dataoutput_path} @ "/"}	// Davedit
pp = {{expname_path} @ "/"}	// Davedit
sp = {{circtime_path} @ "/"}	// Davedit



//============================================================
// network dimensions
//==========================================================

if (small_net)
	int pyr_nx = 2 // number of pyramidal cells along x-axis
	int pyr_ny = 1 // number of pyramidal cells along y-axis
	int olm_nx = 2 // number of feedback interneurons along x-axis
	int olm_ny = 1 // number of feedback interneurons along y-axis
	int bc_nx = 2 // number of feedforward interneurons along x-axis
	int bc_ny = 1 // number of feedforward interneurons along y-axis
	int msg_nx = 2 // number of feedforward interneurons along x-axis
	int msg_ny = 1 // number of feedforward interneurons along y-axis
	if (include_msg_aff_input)
		msg_nx = 25
		msg_ny = 1
	end
else
	int pyr_nx = 200 // number of pyramidal cells along x-axis
	int pyr_ny = 1 // number of pyramidal cells along y-axis
	int olm_nx = 25 // number of feedback interneurons along x-axis
	int olm_ny = 1 // number of feedback interneurons along y-axis
	int bc_nx = 25 // number of feedforward interneurons along x-axis
	int bc_ny = 1 // number of feedforward interneurons along y-axis
	int msg_nx = 25 // number of feedforward interneurons along x-axis
	int msg_ny = 1 // number of feedforward interneurons along y-axis
end

int n_of_pyr // number of pyramidal cells in array    
n_of_pyr = {pyr_nx}*{pyr_ny} 
float pyr_dx = 10e-6 // distance between pyramidal cells in x-dimension
float pyr_dy = 10e-6 // distance between pyramidal cells in y-dimension
float pyr_origin_x = 0 // x-coordinate for first element in network
float pyr_origin_y = 0 // y-coordinate for first element in network

int n_of_olm // number of feedback interneurons in array    
n_of_olm = {olm_nx}*{olm_ny} 
float olm_dx = 20e-6 // distance between olm interneurons in x-dimension
float olm_dy = 40e-6 // distance between olm interneurons in y-dimension
float olm_origin_x = 5e-6 // x-coordinate for first element in network
float olm_origin_y = 5e-6 // y-coordinate for first element in network
 
int n_of_bc // number of feedforward interneurons in array    
n_of_bc = {bc_nx}*{bc_ny} 
float bc_dx = 20e-6 // distance between bc interneurons in x-dimension
float bc_dy = 40e-6 // distance between bc interneurons in y-dimension
float bc_origin_x = 5e-6 // x-coordinate for first element in network
float bc_origin_y = 25e-6 // y-coordinate for first element in network

int n_of_msg // number of feedforward interneurons in array    
n_of_msg = {msg_nx}*{msg_ny} 
float msg_dx = 20e-6 // distance between msg interneurons in x-dimension
float msg_dy = 40e-6 // distance between msg interneurons in y-dimension
float msg_origin_x = 5e-6 // x-coordinate for first element in network
float msg_origin_y = 50e-6 // y-coordinate for first element in network



//Biophysical constants for HN network
float E_AMPA = 0.0
float E_NMDA = 0.0
float E_GABA_A = -0.080

// Frequencies for background synaptic activity
float freq_bkgnd = 1000
float freq_bkgnd_pyr = 1000
float freq_bkgnd_olm = 1000
float freq_bkgnd_nmda = 10
float freq_bkgnd_nmda_pyr = 10

if (noise_off)
	float freq_bkgnd = 0
	float freq_bkgnd_pyr = 0
	float freq_bkgnd_olm = 0
	float freq_bkgnd_nmda = 0
	float freq_bkgnd_nmda_pyr = 0
end

// Gmaxes for background synaptic activity
float Gmax_pyr_soma_AMPA = 0.05e-9
float Gmax_pyr_dend_AMPA = 0.05e-9
float Gmax_bc_soma_AMPA = 0.02e-9
float Gmax_olm_soma_AMPA = 0.0625e-9
float Gmax_pyr_soma_GABA_A = 0.012e-9
float Gmax_pyr_dend_GABA_A = 0.012e-9
float Gmax_bc_soma_GABA_A = 0.2e-9
float Gmax_olm_soma_GABA_A = 0.2e-9
float Gmax_pyr_dend_NMDA = 6.5e-9

// Gmaxes for CA3 network
float pyr2pyr_AMPA = 0.02e-9
float pyr2bc_AMPA = 0.36e-9
float pyr2olm_AMPA = 0.36e-9
float bc2pyr_GABA_A = 0.72e-9
float bc2bc_GABA_A = 4.5e-9
float olm2pyr_GABA_A = 72e-9	
//float msg2bc_GABA_A = 1.6e-9	// From Neymotin 2011
//float msg2olm_GABA_A = 1.6e-9 // From Neymotin 2011
float msg2bc_GABA_A = 0.5e-9	// From Hajos 2004
float msg2olm_GABA_A = 0.5e-9 // From Hajos 2004
float msg2msg_GABA_A = 0.25e-9	// From Hajos 2004
float olm2bc_GABA_A = 0.88e-9	// From Hajos 2004
float olm2msg_GABA_A = 0.5e-9	// From Hajos 2004

float pyr2pyr_NMDA = 0.004e-9
float pyr2bc_NMDA = 1.38e-9
float pyr2olm_NMDA = 0.7e-9


// Synaptic time constants
float AMPA_tau1 = 0.05e-3
float AMPA_tau2 = 5.3e-3
float NMDA_tau1 = 15e-3
float NMDA_tau2 = 150e-3
float GABAA_tau1=0.07e-3	// Neymotin 2011
float GABAA_tau2=9.1e-3		// Neymotin 2011
float GABAA_OLM_tau1 = 0.2e-3	// Neymotin 2011
float GABAA_OLM_tau2 = 20e-3	// Neymotin 2011
float GABAA_MS_tau1 = 20e-3	// Neymotin 2011
float GABAA_MS_tau2 = 40e-3	// Neymotin 2011
float GABAA_MS_tau1 = 0.07e-3	// Davedit (follow same pattern as Hajos, using default GABA const here)
float GABAA_MS_tau2 = 9.1e-3	// Davedit (follow same pattern as Hajos, using default GABA const here)

float Q10_synapse = 1.0

// Destination compartments
str pyr2pyr_compt = "basal_5"
str olm2pyr_compt = "apical_18"


// Connectivity convergences
int pyr2pyr_conv = 25
int pyr2bc_conv = 100
int pyr2olm_conv = 10
int bc2pyr_conv = 50
int bc2bc_conv = 60
int olm2pyr_conv = 20
//int msg2bc_conv = 1		//Neymotin 2011
//int msg2olm_conv = 1	//Neymotin 2011
int msg2bc_conv = 10	//Hajos 2004
int msg2olm_conv = 10	//Hajos 2004

int msg2msg_conv = 10	//Hajos 2004
int olm2bc_conv = 5	//Hajos 2004
int olm2msg_conv = 2	//Hajos 2004

//Traub connectivities
int pyr2pyr_conv = 10
int pyr2bc_conv = 20
int pyr2olm_conv = 10
int bc2pyr_conv = 15
int bc2bc_conv = 25
int olm2pyr_conv = 10
//int msg2bc_conv = 1		//Neymotin 2011
//int msg2olm_conv = 1	//Neymotin 2011
int msg2bc_conv = 5		//Hajos 2004
int msg2olm_conv = 5	//Hajos 2004

int msg2msg_conv = 10	//Hajos 2004
int olm2bc_conv = 5	//Hajos 2004
int olm2msg_conv = 2	//Hajos 2004

if (test_synapses)
	pyr2bc_conv = 1
	pyr2pyr_conv = 1
	pyr2pyr_conv = 1
	pyr2bc_conv = 1
	pyr2olm_conv = 1
	bc2pyr_conv = 1
	bc2bc_conv = 1
	olm2pyr_conv = 1
	msg2bc_conv = 1	
	msg2olm_conv = 1
	msg2msg_conv = 1
end

//==============================================================
// spike generator and randomspike parameters
//==============================================================


float int_refract_HN = 0.001 // sec; refractory-period
float pyr_refract_HN = 0.001 // sec; allows discrimination of single action 

float AFF_min_amp = 1 // parameters for randomspike
float AFF_max_amp = 1 // all spikes have unit amplitude
float AFF_rate = 40 // 50 spikes per second; Reinouds suggestion
float AFF_abs_refract = 0.001 // 0.005 consecutive events cannot occur in an 
			      // interval shorter than abs_refract



//=================================================================
// randomization of variables
//=================================================================
float rand_Vinit=-0.010
float rand_VEm=-0.002
//rand_inj=


 
//=================================================================
// elektrode information
//=================================================================

str e_recsite1 = "/rec_site"

float e_z1_min = -55e-6 // -50e-6; -60e-6; -130e-6 level of lowest recording site for one electrode
float e_z1_max = 96e-6 // 200e-6; 160e-6; 150; 151e-6; 221e-6 since 150 was not used correctly level of highest recording site
float e_dz1 = 12.5e-6 // distance between recording sites of electrode

float e_scale1 = -15 // -50; -10; -15; -30 scale factor used in efield-object
int n_of_e90 = { {{e_z1_max} - {e_z1_min}} / {e_dz1} + 1}


//=================================================================
// conduction velocities and percentage of randomization for delay
//=================================================================

float cond_vel_pyr_ax = 0.5 // m*s^-1; pyramidal cell axons are myelinated
float cond_vel_int_ax = 0.1  // unmyelinated


//float pyr_refract_HN = 0.1 // sec; allows discrimination of single action 

float pyr2pyr_NMDA = 0.008e-9
float pyr2bc_NMDA = 0.0034e-9		//davedit 
float pyr2olm_NMDA = 0.0034e-9		//davedit

// Tune EPSPs and IPSPs to literature values!
float pyr2pyr_AMPA = 2.6e-9			//Tuned to EPSP value based on Traub - Fast Oscillations (1999). EPSP of 1.0mV @ -65mV
float pyr2bc_AMPA = 0.05e-9			//Tuned to EPSP value based on Traub - Fast Oscillations (1999); Taxidis 2011. EPSP of ~1.5mV @ -65mV
float pyr2olm_AMPA = 0.05e-9		//Tuned to EPSP value based on Traub - Fast Oscillations (1999); Taxidis 2011. EPSP of ~1.4mV @ -65mV
float bc2pyr_GABA_A = 9.2e-9		//Tuned to IPSP value based on Traub - Fast Oscillations (1999). IPSP of ~1.2mV @ -62mV
float olm2pyr_GABA_A = 8.3e-9		//Tuned to IPSP value based on Traub - Fast Oscillations (1999). IPSP of ~1.0mV @ -62mV
float bc2bc_GABA_A = 0.125e-9		//From Hajos et al, 2004; This approximates that used by Taxidis et al (2011). (~0.6mV IPSP)


//
//// Alter afferent input ratio adjustment
////float Gmax_pyr_soma_AMPA = 0.8e-9	//Davedit
////float Gmax_pyr_dend_AMPA = 0.8e-9	//Davedit
//float Gmax_bc_soma_AMPA = 0.00278e-9
//float Gmax_olm_soma_AMPA = 0.00868e-9
//float Gmax_pyr_soma_GABA_A = 0.153e-9
//float Gmax_pyr_dend_GABA_A = 0.153e-9
//float Gmax_bc_soma_GABA_A = 0.00556e-9
//float Gmax_olm_soma_GABA_A = 0.00556e-9
//float Gmax_pyr_dend_NMDA = 6.5e-9

// Adjust afferent input to produce Vm fluctuations at -65mV of approximately 1.5mV standard deviation
float Gmax_olm_soma_AMPA = 0.03e-9
float Gmax_olm_soma_GABA_A = 0.01e-9
float Gmax_bc_soma_AMPA = 0.03e-9
float Gmax_bc_soma_GABA_A = 0.01e-9
float Gmax_pyr_soma_GABA_A = 2.5e-9
float Gmax_pyr_dend_GABA_A = 2.5e-9


// Gmaxes for background synaptic activity

//float Gmax_pyr_soma_AMPA = 0.05e-9
//float Gmax_pyr_dend_AMPA = 0.05e-9
//float Gmax_pyr_soma_GABA_A = 0.012e-9
//float Gmax_pyr_dend_GABA_A = 0.012e-9


// Adjust input currents for new afferent input
//float pyr_inject = 320.0e-12		// From Traub 1991
//float bc_inject = 0.8592904e-11	// From Hajos 2004
//float olm_inject = -0.20e-11			//  From Hajos 2004 
//float msg_inject = 1.885e-11		// From Hajos 2004
//float msg_inject = 2.00e-11		// From Hajos 2004	// Increased to compensate for olm->msg connectivity
//float bc_inject = 1.3592904e-11	// Increase this again to get back gamma rhythms

float pyr_inject = {pyr_inject0}		// From Traub 1991
float bc_inject = 3.8592904e-11	// From Hajos 2004
float olm_inject = 1.0592904e-11			//  From Hajos 2004 
float msg_inject = 1.885e-11		// From Hajos 2004

float bc_inject = 1.1592904e-11	// From Hajos 2004
float olm_inject = -0.25e-11			//  From Neymotin 2010 
float msg_inject = 1.885e-11		// From Hajos 2004
float bc_inject = 0.40e-11	// From Hajos 2004

float bc_inject = {bc_inject0}	// From Hajos 2004
float olm_inject = {olm_inject0}			//  From Neymotin 2010 
float msg_inject = {msg_inject0}		// From Hajos 2004


//
////Tuning Adjustments
//int pyr2pyr_conv = 25
//int pyr2bc_conv = 100
////int pyr2olm_conv = 10
//float bc2pyr_GABA_A = 4.6e-9		//Tuned to IPSP value based on Traub - Fast Oscillations (1999). IPSP of ~1.2mV @ -62mV
////float pyr2pyr_AMPA = 5.2e-9			//Tuned to EPSP value based on Traub - Fast Oscillations (1999). EPSP of 1.0mV @ -65mV
//float Gmax_pyr_soma_AMPA = 0.05e-9	//Neymotin original
//float Gmax_pyr_dend_AMPA = 0.05e-9
//

float bc2pyr_GABA_A = {bc2pyr_GABA_A0}		//Tuned to IPSP value based on Traub - Fast Oscillations (1999). IPSP of ~1.2mV @ -62mV
float pyr2pyr_AMPA = {pyr2pyr_AMPA0}			//Tuned to EPSP value based on Traub - Fast Oscillations (1999). EPSP of 1.0mV @ -65mV
float Gmax_pyr_soma_AMPA = {Gmax_pyr_bkgnd0}	//Neymotin original
float Gmax_pyr_dend_AMPA = {Gmax_pyr_bkgnd0}


if (enable_olm2bc_synapse)
 	bc_inject = bc_inject + 0.5e-11	// From Hajos 2004
 	// Should be around this: bc_inject = 1.5592904e-11	// From Hajos 2004
end

if (bc_gammanet)
	bc2pyr_conv = 10
	bc_inject = 1.0592904e-11
//	bc_inject = 1.3592904e-11	// Increase this again to get back gamma rhythms
	bc2bc_conv = 20
//	Gmax_pyr_soma_GABA_A = 0.0e-9
//	Gmax_pyr_dend_GABA_A = 0.0e-9
	pyr_inject = 220.0e-12		// From Traub 1991
	// pyr2bc_conv = 100 		// Set to 100 to reduce bursting, get sporadic behaviour
end

//Disable connections
//float pyr2pyr_AMPA = 0.0
//float pyr2bc_AMPA = 0.0
//float pyr2olm_AMPA = 0.0
//float bc2pyr_GABA_A = 0.0
//float bc2bc_GABA_A = 0.025e-9
//float olm2pyr_GABA_A = 0.0
//float msg2bc_GABA_A = 0.0	// From Hajos 2004
//float msg2olm_GABA_A = 0.0 // From Hajos 2004
//float msg2msg_GABA_A = 0.0	// From Hajos 2004
//float pyr2pyr_NMDA = 0.0
//float pyr2bc_NMDA = 0.0
//float pyr2olm_NMDA = 0.0




if (test_synapses)
	float bc_inject = 0.22904e-11
	float olm_inject = 0.0
end



//int msg2bc_conv = 20	//Davedit -- increased septal influence (maybe not necessary)
//int msg2olm_conv = 20	//Davedit -- increased septal influence (maybe not necessary)




































int msg2bc_div = msg2bc_conv * n_of_bc / n_of_msg
int msg2olm_div = msg2olm_conv * n_of_olm / n_of_msg




//============================================================
// network dimensions
//==========================================================

int AFF_nx = 4 // number of randomspike elements along x-axis
int AFF_ny = 4 // number of randomspike elements along y-axis
int n_of_AFF // number of randomspike elements in array    
n_of_AFF = {AFF_nx}*{AFF_ny} 
float AFF_dx = 15e-6 // distance between randomspike elements in x-dimension
float AFF_dy = 15e-6 // distance between randomspike elements in y-dimension
float AFF_origin_x_1 = 0 // x-coordinate for first element in network
float AFF_origin_y_1 = 0 // y-coordinate for first element in network

float AFF_origin_x_2 = 0 // x-coordinate for first element in network
float AFF_origin_y_2 = 60e-6 // y-coordinate for first element in network


//===================================================================
// x1,y1,z1, x2,y2,z2 for destination mask of volumeconnect
//==================================================================

float AFF2ca3_x1 = -1 // meter
float AFF2ca3_y1 = -1 // employment of this huge number ensures, that 
float AFF2ca3_z1 = -1 // connections are made from each element in the
float AFF2ca3_x2 = 1  // source region to each element in the destination
float AFF2ca3_y2 = 1  // region; AFFerents can have contacts to 
float AFF2ca3_z2 = 1  // ca3amidal cells everywhere in the network

float AFF2bc_x1 = -1 // meter
float AFF2bc_y1 = -1 // AFFerents can have contacts to bc interneurons
float AFF2bc_z1 = -1 // everywhere in the network
float AFF2bc_x2 = 1  // 
float AFF2bc_y2 = 1  //   
float AFF2bc_z2 = 1  // 

float ca32ca3_x1 = -1 // meter
float ca32ca3_y1 = -1 // employment of this huge number ensures, that 
float ca32ca3_z1 = -1 // connections are made from each element in the
float ca32ca3_x2 = 1  // source region to each element in the destination
float ca32ca3_y2 = 1  // region; ca3amidal cells can have contacts to other
float ca32ca3_z2 = 1  // ca3amidal cell everywhere in the network

float ca32olm_x1 = -1  // ca3amidal cells contact olm interneurons everywhere
float ca32olm_y1 = -1  // in the network
float ca32olm_z1 = -1
float ca32olm_x2 = 1
float ca32olm_y2 = 1
float ca32olm_z2 = 1

float olm2ca3_x1 = 0   // interneurons are only allowed to contact ca3amidal
float olm2ca3_y1 = 0   // cells within a distance of 500microns from the
float olm2ca3_z1 = 0   // respective interneuron; since relative positions 
float olm2ca3_x2 = 1000e-6 // and elipsoidal sourcemask are used, 0,0,0 gives 
float olm2ca3_y2 = 1000e-6 // the position of the interneuron(center of ellipse)
float olm2ca3_z2 = 1000e-6 // x2,y2,z2 specify lengthes of the axis

float bc2ca3_x1 = 0
float bc2ca3_y1 = 0
float bc2ca3_z1 = 0
float bc2ca3_x2 = 1000e-6
float bc2ca3_y2 = 1000e-6
float bc2ca3_z2 = 1000e-6


//=================================================================
// conduction velocities and percentage of randomization for delay
//=================================================================

float cond_vel_ca3_ax = 0.5 // m*s^-1; ca3amidal cell axons are supposed to be
		            // myelinated
float cond_vel_olm_ax = 0.2  // unmyelinated
float cond_vel_bc_ax = 0.2  // unmyelinated
float cond_vel_AFF_ax = 0.2  // mossy fibers are unmyelinated (Shepherd)

float rand_delay_ca3_ax = 0.15 // calculated delay +/- upto 15% (connections.g)
float rand_delay_olm_ax = 0.15
float rand_delay_bc_ax = 0.15
float rand_delay_AFF_ax = 0.15


//================================================
// synaptic weights used in volumeweight-function
//===============================================

float from_AFF_weight = 1 // gmax defined by values in cell descriptor files
// AMPA 100.0 in cell descriptor file of bc-interneurons
float from_ca3_weight = 1 // ca3amidal cell on presynaptic site
// AMPA 1.0 in cell descriptor file of olm-interneurons
float from_olm_weight = 1  // olm interneuron on presynaptic site
float from_bc_weight = 1  // bc interneuron on presynaptic site

float rand_from_AFF_weight = 0.15 // calculated weight +/- up to 15%
float rand_from_ca3_weight = 0.15
float rand_from_olm_weight = 0.15
float rand_from_bc_weight = 0.15

float injcurr = 0 	      // default injection
float bc_hold_cur = -0.03e-9 // Traub II: -0.045 nA current suppreses spontaneo				    //	us firing
float olm_hold_cur = -0.03e-9 // holding currents not employed
float ca3_hold_cur = -0.07e-9

//====================================================================
// hines solver
//====================================================================

int chanmode = 1 // 3

/* chanmodes 0 and 3 allow outgoing messages to non-hsolved elements.
   chanmode 3 is fastest.
*/




Loading data, please wait...