//======== CREATE SYNAPSES FROM LATERAL NEURONS FOR NGU MODEL ========//
// This file contains functions to create a synapses from the //
// lateral neurons. //
// //
// Setup: //
// 1. Call make_lateral_synapses //
// //
// Modeling notes: //
// The lateral synapses are made to horizontal, lateral, medial, //
// stellate and subpial neurons that are within a specified radius //
// of a lateral neuron. The synapses contain both AMPA and NMDA //
// receptors. The weights fall off with a Gaussian weighting factor. //
// Self synapses are not allowed. //
//====================================================================//
include ../lib/global_constants.g
include ../lib/synapses.g
//============ LOCATION OF LATERAL SYNAPSE TARGETS ===================//
str LAT_HOR_TARGET = "/dend2" // Horizontal target of lateral synapses
str LAT_LAT_TARGET = "/basal3" // Lateral target of lateral synapses
str LAT_MED_TARGET = "/dend8" // Medial target of lateral synapses
str LAT_STE_TARGET = "/dend8" // Stellate target of lateral synapses
str LAT_SUB_TARGET = "/dend6" // Subpial target of lateral synapses
//============= LATERAL SYNAPSE TARGET NAMES ==========================//
str LAT_HOR_SYNAPSE = "lat_hor"
str LAT_LAT_SYNAPSE = "lat_lat"
str LAT_MED_SYNAPSE = "lat_med"
str LAT_STE_SYNAPSE = "lat_stel"
str LAT_SUB_SYNAPSE = "lat_subp"
//================== SYNAPSES FROM LATERAL - WEIGHTS =================//
float LAT_VAR = 1.5
float LAT_HOR_WA = 0.02 * LAT_VAR // Weight of lateral-horizontal AMPA synapse
float LAT_HOR_WN = 0.19 * LAT_VAR // Weight of lateral-horizontal NMDA synapse
float LAT_LAT_WA = 0.95 * LAT_VAR // Weight of lateral-lateral AMPA synapse
float LAT_LAT_WN = 0.03 * LAT_VAR // Weight of lateral-lateral NMDA synapse
float LAT_MED_WA = 1.2 * LAT_VAR // Weight of lateral-medial AMPA synapse
float LAT_MED_WN = 0.06 * LAT_VAR // Weight of lateral-medial NMDA synapse
float LAT_STE_WA = 0.01 * LAT_VAR // Weight of lateral-stellate AMPA synapse
float LAT_STE_WN = 0.1 * LAT_VAR // Weight of lateral-stellate NMDA synapse
float LAT_SUB_WA = 0.01 * LAT_VAR // Weight of lateral-subpial AMPA synapse
float LAT_SUB_WN = 0.1 * LAT_VAR // Weight of lateral-subpial NMDA synapse
//============= SYNAPSES FROM LATERAL - EFFECTIVE DISTANCES =========//
float LAT_HOR_R = 0.250
float LAT_LAT_R = 0.250
float LAT_MED_R = 0.250
float LAT_STE_R = 0.250
float LAT_SUB_R = 0.250
//===================== LATERAL SYNAPTIC PARAMETERS =================//
float LAT_GS = 5e-9
float LAT_DELAY_FACTOR = 1e-3/ 0.05
//========================== AMPA PARAMETERS ========================//
float LAT_TA = 3.0e-3
float LAT_TTA = 0.3e-3
float LAT_EA = 0.0e-3
//========================== NMDA PARAMETERS ========================//
float LAT_TN = 80.0e-3
float LAT_TTN = 0.67e-3
float LAT_EN = 0.0
//============= SYNAPSE COUNTS FOR DEBUGGING ========================//
int lat_hor_count = 0
int lat_lat_count = 0
int lat_med_count = 0
int lat_ste_count = 0
int lat_sub_count = 0
/* ******************************************************************
create_lateral_synapses_for_group
Create a synapse for each member of the root group. The synapse
contains an AMPA and an NMDA receptor that will sum
the contributions of all lateral neuron sources that impinge on
the neuron
Parameters:
root root of the neuron group hierarchy
target target compartment for the group
syn_name base name of synapse for this group
****************************************************************** */
function create_lateral_synapses_for_group (root, target, syn_name)
str root, target, syn_name
str name, dest
str syn_chan_a = {syn_name}@"_a"
str syn_chan_n = {syn_name}@"_n"
foreach name ({el {{root}@"/cell"}#})
dest = {name}@{target}
// AMPA receptor
make_synapse {dest} {syn_chan_a} {LAT_GS} {LAT_EA} {LAT_TA} {LAT_TTA}
// NMDA receptor
make_synapse_nmda {dest} {syn_chan_n} {LAT_GS} {LAT_EN} {LAT_TN} {LAT_TTN}
end
end
/* ******************************************************************
connect_lateral_synapse_group
Connects synapses for each member of the root group within a
specified radius of the src lateral neuron
Parameters:
root root of the neuron group hierarchy
src lateral neuron source
syn_name base name of synapse for this group
target target compartment for the group
x_lat x coordinate for the lateral source
y_lat y coordinate for the lateral source
radius effective distance of synapse
weight_fac_a synaptic weight factor for AMPA
weight_fac_n synaptic weight factor for NMDA
Returns: number of synapses created for this src and varicosity
****************************************************************** */
function connect_lateral_synapse_group(root, src, syn_name, target, \
x_lat, y_lat, radius, weight_fac_a, weight_fac_n)
str root, src, syn_name, target
float x_lat, y_lat, radius, weight_fac_a, weight_fac_n
str dest, name
str syn_chan_a = {syn_name}@"_a"
str syn_chan_n = {syn_name}@"_n"
str src_object = {src}@"/soma/spike"
int syn_count = 0
float x, y, dist, tdelay, weight_a, weight_n, grade
float gauss_r = {radius}/LAT_VAR
foreach name ({el {{root}@"/cell"}#})
x = {getfield {name} x}
y = {getfield {name} y}
dist = {sqrt {(x_lat - x)**2 + (y_lat - y)**2} }
if (dist <= radius && {strcmp {src} {name}} != 0)
tdelay = {dist} * LAT_DELAY_FACTOR //sec
dest = {name}@{target}
grade = {gauss {x_lat} {x} {y_lat} {y} {gauss_r}}
weight_a = {weight_fac_a} * grade
weight_n = {weight_fac_n} * grade
connect_synapse {src_object} {dest} {syn_chan_a} {tdelay} {weight_a}
connect_synapse {src_object} {dest} {syn_chan_n} {tdelay} {weight_n}
syn_count = syn_count + 1
end
end
return syn_count
end
/* ******************************************************************
connect_lateral_horizontal_synapses
Connects synapses containing an AMPA and an NMDA receptor from
the lateral src neuron to the destination horizontal neuron
Parameters:
root root of horizontal neuron hierarchy
src lateral neuron source
x_lat x coordinate of the lateral source neuron
y_lat y coordinate of the lateral source neuron
****************************************************************** */
function connect_lateral_horizontal_synapses (root, src, x_lat, y_lat)
str root, src
float x_lat, y_lat
lat_hor_count = lat_hor_count + {connect_lateral_synapse_group \
{root} {src} {LAT_HOR_SYNAPSE} {LAT_HOR_TARGET} \
{x_lat} {y_lat} {LAT_HOR_R} {LAT_HOR_WA} {LAT_HOR_WN}}
end
/* ******************************************************************
connect_lateral_lateral_synapses
Connects synapses containing an AMPA and an NMDA receptor from
the lateral src neuron to the destination lateral neuron
Parameters:
root root of lateral neuron hierarchy
src lateral neuron source
x_lat x coordinate of the lateral source neuron
y_lat y coordinate of the lateral source neuron
Note: Self synapses are not allowed.
****************************************************************** */
function connect_lateral_lateral_synapses (root, src, x_lat, y_lat)
str root, src
float x_lat, y_lat
lat_lat_count = lat_lat_count + {connect_lateral_synapse_group \
{root} {src} {LAT_LAT_SYNAPSE} {LAT_LAT_TARGET} \
{x_lat} {y_lat} {LAT_LAT_R} {LAT_LAT_WA} {LAT_LAT_WN}}
end
/* ******************************************************************
connect_lateral_medial_synapses
Connects synapses containing an AMPA and an NMDA receptor from
the lateral src neuron to the destination medial neuron
Parameters:
root root of medial neuron hierarchy
src lateral neuron source
x_lat x coordinate of the lateral source neuron
y_lat y coordinate of the lateral source neuron
****************************************************************** */
function connect_lateral_medial_synapses (root, src, x_lat, y_lat)
str root, src
float x_lat, y_lat
lat_med_count = lat_med_count + {connect_lateral_synapse_group \
{root} {src} {LAT_MED_SYNAPSE} {LAT_MED_TARGET} \
{x_lat} {y_lat} {LAT_MED_R} {LAT_MED_WA} {LAT_MED_WN}}
end
/* ******************************************************************
connect_lateral_stellate_synapses
Connects synapses containing an AMPA and an NMDA receptor from
the lateral src neuron to the destination stellate neuron
Parameters:
root root of stellate neuron hierarchy
src lateral neuron source
x_lat x coordinate of the lateral source neuron
y_lat y coordinate of the lateral source neuron
****************************************************************** */
function connect_lateral_stellate_synapses (root, src, x_lat, y_lat)
str root, src
float x_lat, y_lat
lat_ste_count = lat_ste_count + {connect_lateral_synapse_group \
{root} {src} {LAT_STE_SYNAPSE} {LAT_STE_TARGET} \
{x_lat} {y_lat} {LAT_STE_R} {LAT_STE_WA} {LAT_STE_WN}}
end
/* ******************************************************************
connect_lateral_subpial_synapses
Connects synapses containing an AMPA and an NMDA receptor from
the lateral src neuron to the destination subpial neuron
Parameters:
root root of subpial neuron hierarchy
src lateral neuron source
x_lat x coordinate of the lateral source neuron
y_lat y coordinate of the lateral source neuron
****************************************************************** */
function connect_lateral_subpial_synapses (root, src, x_lat, y_lat)
str root, src
float x_lat, y_lat
lat_sub_count = lat_sub_count + {connect_lateral_synapse_group \
{root} {src} {LAT_SUB_SYNAPSE} {LAT_SUB_TARGET} \
{x_lat} {y_lat} {LAT_SUB_R} {LAT_SUB_WA} {LAT_SUB_WN}}
end
/* ******************************************************************
make_lateral_synapses
Creates the synapses from lateral neurons in the NGU model
Parameters:
lat_root root of the hierarchy for lateral neurons
hor_root root of the hierarchy for horizontal neurons
med_root root of the hierarchy for medial neurons
ste_root root of the hierarchy for stellate neurons
sub_root root of the hierarchy for subpial neurons
****************************************************************** */
function make_lateral_synapses (lat_root, hor_root, med_root, ste_root, sub_root)
str lat_root, hor_root, med_root, ste_root, sub_root
float x_lat, y_lat
//Start by creating a representative synapse for each potential target neuron
create_lateral_synapses_for_group {lat_root} {LAT_LAT_TARGET} {LAT_LAT_SYNAPSE}
create_lateral_synapses_for_group {med_root} {LAT_MED_TARGET} {LAT_MED_SYNAPSE}
create_lateral_synapses_for_group {ste_root} {LAT_STE_TARGET} {LAT_STE_SYNAPSE}
create_lateral_synapses_for_group {hor_root} {LAT_HOR_TARGET} {LAT_HOR_SYNAPSE}
create_lateral_synapses_for_group {sub_root} {LAT_SUB_TARGET} {LAT_SUB_SYNAPSE}
//Now create spikes from lateral source neurons
str name, src
int count = 0;
foreach name ({el {{lat_root}@"/cell"}#})
count = count + 1;
x_lat = {getfield {name} x}
y_lat = {getfield {name} y}
connect_lateral_lateral_synapses {lat_root} {name} {x_lat} {y_lat}
connect_lateral_medial_synapses {med_root} {name} {x_lat} {y_lat}
connect_lateral_stellate_synapses {ste_root} {name} {x_lat} {y_lat}
connect_lateral_horizontal_synapses {hor_root} {name} {x_lat} {y_lat}
connect_lateral_subpial_synapses {sub_root} {name} {x_lat} {y_lat}
end
if (ECHO_ON == 1)
echo "Created synapses for" {count} "lateral source neurons"
echo " " {lat_hor_count} "synapses from lateral to horizontal neurons"
echo " " {lat_lat_count} "synapses from lateral to lateral neurons"
echo " " {lat_med_count} "synapses from lateral to medial neurons"
echo " " {lat_ste_count} "synapses from lateral to stellate neurons"
echo " " {lat_sub_count} "synapses from lateral to subpial neurons"
end;
end