//========= CREATE POPULATION OF LATERAL NEURONS FOR NGU MODEL =======// // This file contains functions to create a population of lateral // // pyramidal neurons for the NGU model. // // // // Setup: // // 1. Specify the neurons by creating a text file of x y z // // coordinates for the neurons, one neuron per line. // // 2. Call make_lateral_cells // // // //====================================================================// include ../lib/global_constants.g include ../lib/utilities_build.g include ../lib/channels.g //========== LATERAL NEURON PARAMETER DEFINITIONS ===================// float LAT_RM = 1/0.03 * 1e3 * 1e-4 //specific membrane resistance (ohms m^2) float LAT_CM = 1.4 * 1e-6/1e-4 //specific membrane capacitance (farads/m^2) float LAT_RA = 100.00 * 1e-2 //specific axial resistance (ohms m) float LAT_EREST = -57.4 * 1e-3 //resting membrane potential (volts) float LAT_ELEAK = -58.4 * 1e-3 //membrane leakage potential (volts) float LAT_ENa = 40.00 * 1e-3 //sodium reversal potential (volts) float LAT_GNa = 370.00 * 1e-3/1e-4 //maximum sodium conductance (S/m^2) float LAT_EK = -90.00 * 1e-3 //potassium reversal potential (volts) float LAT_GK = 250.00 * 1e-3/1e-4 //maximum potassium conductance (S/m^2) float LAT_ECa = 40.00 * 1e-3 //calcium reversal potential (volts) float LAT_GCa = 2.3 * 1e-3/1e-4 //maximum calcium conductance (S/m^2) float LAT_GKAHP = 0.02* 1e-3/1e-4 //maximum KAHP conductance (S/m^2) float LAT_SF = 1.8 * PI //membrane scale factor (dimensionless) float LAT_TAU = 1 float LAT_B = 6.00055e12 // compartment dimensions diameter(_D), length (_L) in meters float LAT_SOMA_D = 20.6 * 1e-6 float LAT_APICAL1_D = 8.5 * 1e-6, LAT_APICAL1_L = 153.00 * 1e-6 float LAT_APICAL2_D = 7.1 * 1e-6, LAT_APICAL2_L = 140.00 * 1e-6 float LAT_APICAL3_D = 5.1 * 1e-6, LAT_APICAL3_L = 119.00 * 1e-6 float LAT_APICAL4_D = 2.5 * 1e-6, LAT_APICAL4_L = 83.00 * 1e-6 float LAT_APICAL5_D = 2.3 * 1e-6, LAT_APICAL5_L = 79.00 * 1e-6 float LAT_APICAL6_D = 0.9 * 1e-6, LAT_APICAL6_L = 50.00 * 1e-6 float LAT_BASAL1_D = 14.7 * 1e-6, LAT_BASAL1_L = 201.00 * 1e-6 float LAT_BASAL2_D = 8.0 * 1e-6, LAT_BASAL2_L = 148.00 * 1e-6 float LAT_BASAL3_D = 3.6 * 1e-6, LAT_BASAL3_L = 124.00 * 1e-6 float LAT_BASAL4_D = 5.9 * 1e-6, LAT_BASAL4_L = 127.00 * 1e-6 float LAT_BASAL5_D = 5.0 * 1e-6, LAT_BASAL5_L = 117.00 * 1e-6 float LAT_BASAL6_D = 3.5 * 1e-6, LAT_BASAL6_L = 98.00 * 1e-6 float LAT_BASAL7_D = 3.4 * 1e-6, LAT_BASAL7_L = 97.00 * 1e-6 float LAT_BASAL8_D = 1.4 * 1e-6, LAT_BASAL8_L = 62.00 * 1e-6 float LAT_BASAL9_D = 0.8 * 1e-6, LAT_BASAL9_L = 47.00 * 1e-6 // effective compartment surface areas (_A) in m^2 float LAT_SOMA_A = (LAT_SOMA_D * LAT_SOMA_D - 0.25 * \ (LAT_APICAL1_D * LAT_APICAL1_D + LAT_BASAL1_D * LAT_BASAL1_D)) * LAT_SF float LAT_APICAL1_A = LAT_APICAL1_D * LAT_APICAL1_L * LAT_SF float LAT_APICAL2_A = LAT_APICAL2_D * LAT_APICAL2_L * LAT_SF float LAT_APICAL3_A = LAT_APICAL3_D * LAT_APICAL3_L * LAT_SF float LAT_APICAL4_A = LAT_APICAL4_D * LAT_APICAL4_L * LAT_SF float LAT_APICAL5_A = LAT_APICAL5_D * LAT_APICAL5_L * LAT_SF float LAT_APICAL6_A = LAT_APICAL6_D * \ (0.25 * LAT_APICAL6_D + LAT_APICAL6_L) * LAT_SF float LAT_BASAL1_A = LAT_BASAL1_D * LAT_BASAL1_L * LAT_SF float LAT_BASAL2_A = LAT_BASAL2_D * LAT_BASAL2_L * LAT_SF float LAT_BASAL3_A = LAT_BASAL3_D * LAT_BASAL3_L * LAT_SF float LAT_BASAL4_A = LAT_BASAL4_D * LAT_BASAL4_L * LAT_SF float LAT_BASAL5_A = LAT_BASAL5_D * LAT_BASAL5_L * LAT_SF float LAT_BASAL6_A = LAT_BASAL6_D * LAT_BASAL6_L * LAT_SF float LAT_BASAL7_A = LAT_BASAL7_D * LAT_BASAL7_L * LAT_SF float LAT_BASAL8_A = LAT_BASAL8_D * LAT_BASAL8_L * LAT_SF float LAT_BASAL9_A = LAT_BASAL9_D * \ (0.25*LAT_BASAL9_D + LAT_BASAL9_L) * LAT_SF // soma spike parameters float LAT_SPIKE_THRESH = -0.02 float LAT_SPIKE_REFRACT = 0.01 float LAT_SPIKE_AMP = 1 /* ****************************************************************** make_soma_lateral Creates a spherical soma compartment containing sodium and potassium channels Parameters: path name of the soma object to be created dia diameter of spherical compartment area effective surface area ****************************************************************** */ function make_soma_lateral(path, dia, area) str path float dia, area make_sphere_compartment {path} {dia} {area} \ {LAT_ELEAK} {LAT_RM} {LAT_CM} {LAT_RA} make_sodium_channel {path} {LAT_GNa} {LAT_ENa} {area} make_potassium_channel {path} {LAT_GK} {LAT_EK} {area} make_calcium_dep_K_AHP {path} {LAT_GKAHP} {LAT_GCa} \ {LAT_EK} {LAT_ECa} {area} {LAT_TAU} {LAT_B} end /* ****************************************************************** make_dendrite_lateral Creates a dendrite for a lateral cell consisting of a single cylindrical compartment Parameters: path name of the dendrite object len length of the dendrite dia diameter of the dendrite area effective membrane area ****************************************************************** */ function make_dendrite_lateral(path, len, dia, area) str path float len, dia, area make_cylind_compartment {path} {len} {dia} \ {area} {LAT_ELEAK} {LAT_RM} {LAT_CM} {LAT_RA} end /* ****************************************************************** make_cell_lateral Creates a lateral cell consisting of a soma, 6 apical dendrites and 9 basal dendrites Parameters: parent name of the lateral cell to be created ****************************************************************** */ function make_cell_lateral(parent) str parent make_soma_lateral {parent}/soma {LAT_SOMA_D} {LAT_SOMA_A} make_dendrite_lateral {parent}/apical1 \ {LAT_APICAL1_L} {LAT_APICAL1_D} {LAT_APICAL1_A} make_dendrite_lateral {parent}/apical2 \ {LAT_APICAL2_L} {LAT_APICAL2_D} {LAT_APICAL2_A} make_dendrite_lateral {parent}/apical3 \ {LAT_APICAL3_L} {LAT_APICAL3_D} {LAT_APICAL3_A} make_dendrite_lateral {parent}/apical4 \ {LAT_APICAL4_L} {LAT_APICAL4_D} {LAT_APICAL4_A} make_dendrite_lateral {parent}/apical5 \ {LAT_APICAL5_L} {LAT_APICAL5_D} {LAT_APICAL5_A} make_dendrite_lateral {parent}/apical6 \ {LAT_APICAL6_L} {LAT_APICAL6_D} {LAT_APICAL6_A} make_dendrite_lateral {parent}/basal1 \ {LAT_BASAL1_L} {LAT_BASAL1_D} {LAT_BASAL1_A} make_dendrite_lateral {parent}/basal2 \ {LAT_BASAL2_L} {LAT_BASAL2_D} {LAT_BASAL2_A} make_dendrite_lateral {parent}/basal3 \ {LAT_BASAL3_L} {LAT_BASAL3_D} {LAT_BASAL3_A} make_dendrite_lateral {parent}/basal4 \ {LAT_BASAL4_L} {LAT_BASAL4_D} {LAT_BASAL4_A} make_dendrite_lateral {parent}/basal5 \ {LAT_BASAL5_L} {LAT_BASAL5_D} {LAT_BASAL5_A} make_dendrite_lateral {parent}/basal6 \ {LAT_BASAL6_L} {LAT_BASAL6_D} {LAT_BASAL6_A} make_dendrite_lateral {parent}/basal7 \ {LAT_BASAL7_L} {LAT_BASAL7_D} {LAT_BASAL7_A} make_dendrite_lateral {parent}/basal8 \ {LAT_BASAL8_L} {LAT_BASAL8_D} {LAT_BASAL8_A} make_dendrite_lateral {parent}/basal9 \ {LAT_BASAL9_L} {LAT_BASAL9_D} {LAT_BASAL9_A} float a1, a2, a3, a4, a5, a6, b1, b2, b3, b4, b5, b6, b7, b8, b9, s a1 = {getfield {parent}/apical1 Ra} a2 = {getfield {parent}/apical2 Ra} a3 = {getfield {parent}/apical3 Ra} a4 = {getfield {parent}/apical4 Ra} a5 = {getfield {parent}/apical5 Ra} a6 = {getfield {parent}/apical6 Ra} b1 = {getfield {parent}/basal1 Ra} b2 = {getfield {parent}/basal2 Ra} b3 = {getfield {parent}/basal3 Ra} b4 = {getfield {parent}/basal4 Ra} b5 = {getfield {parent}/basal5 Ra} b6 = {getfield {parent}/basal6 Ra} b7 = {getfield {parent}/basal7 Ra} b8 = {getfield {parent}/basal8 Ra} b9 = {getfield {parent}/basal9 Ra} s = {getfield {parent}/soma Ra} setfield {parent}/apical5 Ra {0.5*(a5 + a6)} setfield {parent}/apical4 Ra {0.5*(a4 + a5)} setfield {parent}/apical3 Ra {0.5*(a3 + a4)} setfield {parent}/apical2 Ra {0.5*(a2 + a3)} setfield {parent}/apical1 Ra {0.5*(a1 + a2)} setfield {parent}/soma Ra {0.5*(s + a1)} setfield {parent}/basal1 Ra {0.5*(s + b1)} setfield {parent}/basal2 Ra {0.5*(b1 + b2)} setfield {parent}/basal3 Ra {0.5*(b2 + b3)} setfield {parent}/basal4 Ra {0.5*(b3 + b4)} setfield {parent}/basal5 Ra {0.5*(b4 + b5)} setfield {parent}/basal6 Ra {0.5*(b5 + b6)} setfield {parent}/basal7 Ra {0.5*(b6 + b7)} setfield {parent}/basal8 Ra {0.5*(b7 + b8)} setfield {parent}/basal9 Ra {0.5*(b8 + b9)} connect_compartments {parent}/apical6 {parent}/apical5 connect_compartments {parent}/apical5 {parent}/apical4 connect_compartments {parent}/apical4 {parent}/apical3 connect_compartments {parent}/apical3 {parent}/apical2 connect_compartments {parent}/apical2 {parent}/apical1 connect_compartments {parent}/apical1 {parent}/soma connect_compartments {parent}/soma {parent}/basal1 connect_compartments {parent}/basal1 {parent}/basal2 connect_compartments {parent}/basal2 {parent}/basal3 connect_compartments {parent}/basal3 {parent}/basal4 connect_compartments {parent}/basal4 {parent}/basal5 connect_compartments {parent}/basal5 {parent}/basal6 connect_compartments {parent}/basal6 {parent}/basal7 connect_compartments {parent}/basal7 {parent}/basal8 connect_compartments {parent}/basal8 {parent}/basal9 make_spike {parent}/soma \ {LAT_SPIKE_THRESH} {LAT_SPIKE_REFRACT} {LAT_SPIKE_AMP} end /* ****************************************************************** make_lateral_cells Creates a population of lateral cells with names of the form {root}/cell#. Parameters: coord_file name of text file containing neuron positions root parent of all lateral neurons ****************************************************************** */ function make_lateral_cells(coord_file, root) str coord_file, root create neutral {root} str parent = {root}@"/cell" read_coords {coord_file} {parent} str name foreach name ({el {parent}#}) make_cell_lateral {name} end end