//======== CREATE SYNAPSES FROM MEDIAL NEURONS FOR NGU MODEL =========//
// This file contains functions to create a synapses from the //
// medial neurons. //
// //
// Setup: //
// 1. Call make_medial_synapses //
// //
// Modeling notes: //
// The medial synapses are made to horizontal, lateral, medial, //
// stellate and subpial neurons that are within a specified radius //
// of a medial neuron. The synapses contain both AMPA and NMDA //
// receptors. The synaptic weights fall off with a Gaussian weighting //
// factor. Self synapses are not allowed. //
//====================================================================//
include ../lib/global_constants.g
include ../lib/synapses.g
//=============== LOCATION OF MEDIAL SYNAPSE TARGETS =================//
str MED_HOR_TARGET = "/dend3" // Horizontal target of medial synapses
str MED_LAT_TARGET = "/basal4" // Lateral target of medial synapses
str MED_MED_TARGET = "/dend7" // Medial target of medial synapses
str MED_STE_TARGET = "/dend3" // Stellate target of medial synapses
str MED_SUB_TARGET = "/dend16" // Subpial target of medial synapses
//=============== MED SYNAPSE TARGET NAMES ===========================//
str MED_HOR_SYNAPSE = "med_hor"
str MED_LAT_SYNAPSE = "med_lat"
str MED_MED_SYNAPSE = "med_med"
str MED_STE_SYNAPSE = "med_stel"
str MED_SUB_SYNAPSE = "med_subp"
//==================== SYNAPSES FROM MEDIAL - WEIGHTS ================//
float MED_VAR = 1.5
float MED_HOR_WA = 0.02 * MED_VAR // Weight of medial-horizontal AMPA synapse
float MED_HOR_WN = 0.22 * MED_VAR // Weight of medial-horizontal NMDA synapse
float MED_LAT_WA = 0.3 * MED_VAR // Weight of medial-lateral AMPA synapse
float MED_LAT_WN = 0.0167 * MED_VAR // Weight of medial-lateral NMDA synapse
float MED_MED_WA = 0.4 * MED_VAR // Weight of medial-medial AMPA synapse
float MED_MED_WN = 0.0167 * MED_VAR // Weight of medial-medial NMDA synapse
float MED_STE_WA = 0.01 * MED_VAR // Weight of medial-stellate AMPA synapse
float MED_STE_WN = 0.11 * MED_VAR // Weight of medial-stellate NMDA synapse
float MED_SUB_WA = 0.01 * MED_VAR // Weight of medial-subpial AMPA synapse
float MED_SUB_WN = 0.11 * MED_VAR // Weight of medial-subpial NMDA synapse
//============= SYNAPSES FROM MEDIAL - EFFECTIVE DISTANCES ===========//
float MED_HOR_R = 0.250
float MED_LAT_R = 0.250
float MED_MED_R = 0.250
float MED_STE_R = 0.250
float MED_SUB_R = 0.250
//===================== MEDIAL SYNAPTIC PARAMETERS ===================//
float MED_GS = 5e-9
float MED_DELAY_FACTOR = 1e-3/ 0.05
//========================== AMPA PARAMETERS =========================//
float MED_TA = 3.0e-3
float MED_TTA = 0.3e-3
float MED_EA = 0.0e-3
//========================== NMDA PARAMETERS =========================//
float MED_TN = 80.0e-3
float MED_TTN = 0.67e-3
float MED_EN = 0.0
//============= SYNAPSE COUNTS FOR DEBUGGING =========================//
int med_hor_count = 0
int med_lat_count = 0
int med_med_count = 0
int med_ste_count = 0
int med_sub_count = 0
/* ******************************************************************
create_medial_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 medial 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_medial_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} {MED_GS} {MED_EA} {MED_TA} {MED_TTA}
// NMDA receptor
make_synapse_nmda {dest} {syn_chan_n} {MED_GS} {MED_EN} {MED_TN} {MED_TTN}
end
end
/* ******************************************************************
connect_medial_synapse_group
Connects synapses for each member of the root group within a
specified radius of the src medial neuron
Parameters:
root root of the neuron group hierarchy
src medial neuron source
syn_name base name of synapse for this group
target target compartment for the group
x_med x coordinate for the medial source
y_med y coordinate for the meidal 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
****************************************************************** */
function connect_medial_synapse_group(root, src, syn_name, target, \
x_med, y_med, radius, weight_fac_a, weight_fac_n)
str root, src, syn_name, target
float x_med, y_med, 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}/MED_VAR
foreach name ({el {{root}@"/cell"}#})
x = {getfield {name} x}
y = {getfield {name} y}
dist = {sqrt {(x_med - x)**2 + (y_med - y)**2} }
if (dist <= radius && {strcmp {src} {name}} != 0)
tdelay = {dist} * MED_DELAY_FACTOR //sec
dest = {name}@{target}
grade = {gauss {x_med} {x} {y_med} {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_medial_horizontal_synapses
Connects synapses containing an AMPA and an NMDA receptor from
the medial src neuron to the destination horizontal neuron
Parameters:
root root of horizontal neuron hierarchy
src medial neuron source
x_med x coordinate of the medial source neuron
y_med y coordinate of the medial source neuron
****************************************************************** */
function connect_medial_horizontal_synapses (root, src, x_med, y_med)
str root, src
float x_med, y_med
med_hor_count = med_hor_count + {connect_medial_synapse_group \
{root} {src} {MED_HOR_SYNAPSE} {MED_HOR_TARGET}\
{x_med} {y_med} {MED_HOR_R} {MED_HOR_WA} {MED_HOR_WN}}
end
/* ******************************************************************
connect_medial_lateral_synapses
Connects synapses containing an AMPA and an NMDA receptor from
the medial src neuron to the destination lateral neuron
Parameters:
root root of lateral neuron hierarchy
src medial neuron source
x_med x coordinate of the medial source neuron
y_med y coordinate of the medial source neuron
****************************************************************** */
function connect_medial_lateral_synapses (root, src, x_med, y_med)
str root, src
float x_med, y_med
med_lat_count = med_lat_count + {connect_medial_synapse_group \
{root} {src} {MED_LAT_SYNAPSE} {MED_LAT_TARGET} \
{x_med} {y_med} {MED_LAT_R} {MED_LAT_WA} {MED_LAT_WN}}
end
/* ******************************************************************
connect_medial_medial_synapses
Connects synapses synapse containing an AMPA and an NMDA receptor from
the medial src neuron to the destination medial neuron
Parameters:
root root of medial neuron hierarchy
src medial neuron source
x_med x coordinate of the medial source neuron
y_med y coordinate of the medial source neuron
Note: Self synapses are not allowed.
****************************************************************** */
function connect_medial_medial_synapses (root, src, x_med, y_med)
str root, src
float x_med, y_med
med_med_count = med_med_count + {connect_medial_synapse_group \
{root} {src} {MED_MED_SYNAPSE} {MED_MED_TARGET} \
{x_med} {y_med} {MED_MED_R} {MED_MED_WA} {MED_MED_WN}}
end
/* ******************************************************************
connect_medial_stellate_synapses
Connects synapses containing an AMPA and an NMDA receptor from
the medial src neuron to the destination stellate neuron
Parameters:
root root of stellate neuron hierarchy
src medial neuron source
x_med x coordinate of the medial source neuron
y_med y coordinate of the medial source neuron
****************************************************************** */
function connect_medial_stellate_synapses (root, src, x_med, y_med)
str root, src
float x_med, y_med
med_ste_count = med_ste_count + {connect_medial_synapse_group \
{root} {src} {MED_STE_SYNAPSE} {MED_STE_TARGET} \
{x_med} {y_med} {MED_STE_R} {MED_STE_WA} {MED_STE_WN}}
end
/* ******************************************************************
connect_medial_subpial_synapses
Connects synapses containing an AMPA and an NMDA receptor from
the medial src neuron to the destination subpial neuron
Parameters:
root root of subpial neuron hierarchy
src medial neuron source
x_med x coordinate of the medial source neuron
y_med y coordinate of the medial source neuron
****************************************************************** */
function connect_medial_subpial_synapses (root, src, x_med, y_med)
str root, src
float x_med, y_med
med_sub_count = med_sub_count + {connect_medial_synapse_group \
{root} {src} {MED_SUB_SYNAPSE} {MED_SUB_TARGET} \
{x_med} {y_med} {MED_SUB_R} {MED_SUB_WA} {MED_SUB_WN}}
end
/* ******************************************************************
make_medial_synapses
Creates the synapses from the medial neurons in the NGU model
Parameters:
med_root root of the hierarchy for medial neurons
hor_root root of the hierarchy for horizontal neurons
lat_root root of the hierarchy for lateral neurons
ste_root root of the hierarchy for stellate neurons
sub_root root of the hierarchy for subpial neurons
****************************************************************** */
function make_medial_synapses(med_root, hor_root, lat_root, ste_root, sub_root)
str med_root, hor_root, lat_root, ste_root, sub_root
//Start by creating a representative synapse for each potential target neuron
create_medial_synapses_for_group {lat_root} {MED_LAT_TARGET} {MED_LAT_SYNAPSE}
create_medial_synapses_for_group {med_root} {MED_MED_TARGET} {MED_MED_SYNAPSE}
create_medial_synapses_for_group {ste_root} {MED_STE_TARGET} {MED_STE_SYNAPSE}
create_medial_synapses_for_group {hor_root} {MED_HOR_TARGET} {MED_HOR_SYNAPSE}
create_medial_synapses_for_group {sub_root} {MED_SUB_TARGET} {MED_SUB_SYNAPSE}
//Now create spikes from medial source neurons
str name, src
int count = 0;
float x_med, y_med
foreach name ({el {{med_root}@"/cell"}#})
count = count + 1;
x_med = {getfield {name} x}
y_med = {getfield {name} y}
connect_medial_lateral_synapses {lat_root} {name} {x_med} {y_med}
connect_medial_medial_synapses {med_root} {name} {x_med} {y_med}
connect_medial_stellate_synapses {ste_root} {name} {x_med} {y_med}
connect_medial_horizontal_synapses {hor_root} {name} {x_med} {y_med}
connect_medial_subpial_synapses {sub_root} {name} {x_med} {y_med}
end
if (ECHO_ON == 1)
echo "Created synapses for" {count} "medial source neurons"
echo " " {med_hor_count} "synapses from medial to horizontal neurons"
echo " " {med_lat_count} "synapses from medial to lateral neurons"
echo " " {med_med_count} "synapses from medial to medial neurons"
echo " " {med_ste_count} "synapses from medial to stellate neurons"
echo " " {med_sub_count} "synapses from medial to subpial neurons"
end;
end