//========= 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