//================== BASIC FUNCTIONS TO CREATE SYNAPSES ==============//
// This file contains functions to create different types of synapses //
//====================================================================//
include ../lib/global_constants.g
//================ SYNAPSE PARAMETER DEFINITIONS ===================//
float NMDA_CMG = 2
float NMDA_ETA = 0.33
float NMDA_GAMMA = 60
/* ******************************************************************
make_synapse
Creates a synapse called {path}/{syn_channel}.
Parameters:
path name of the compartment containing synapse
syn_channel name of channel type
gmax peak channel conductance
revpot reversal potential
tau1 time constant 1
tau2 time constant 2
****************************************************************** */
function make_synapse(path, syn_channel, gmax, revpot, tau1, tau2)
str path, syn_channel
float gmax, revpot, tau1, tau2
create synchan {path}/{syn_channel}
setfield ^ Ek {revpot} tau1 {tau1} tau2 {tau2} gmax {gmax}
addmsg {path}/{syn_channel} {path} CHANNEL Gk Ek
addmsg {path} {path}/{syn_channel} VOLTAGE Vm
end
/* ******************************************************************
make_synapse_nmda
Creates a synapse called {path}/{syn_channel}.
Parameters:
path name of the compartment containing synapse
syn_channel name of channel type
gmax peak channel conductance
revpot reversal potential
tau1 time constant 1
tau2 time constant 2
****************************************************************** */
function make_synapse_nmda(path, syn_channel, gmax, revpot, tau1, tau2)
str path, syn_channel
float gmax, revpot, tau1, tau2
create synchan {path}/{syn_channel}
setfield ^ Ek {revpot} tau1 {tau1} tau2 {tau2} gmax {gmax}
create Mg_block {path}/{syn_channel}/block
setfield ^ CMg {NMDA_CMG} KMg_A {1.0/NMDA_ETA} KMg_B {1.0/NMDA_GAMMA}
addmsg {path}/{syn_channel} {path}/{syn_channel}/block \
CHANNEL Gk Ek
addmsg {path}/{syn_channel}/block {path} CHANNEL Gk Ek
addmsg {path} {path}/{syn_channel}/block VOLTAGE Vm
addmsg {path} {path}/{syn_channel} VOLTAGE Vm
end
/* ******************************************************************
connect_synapse
Connects a synapse between src and dest
Parameters:
src pre-synaptic source
dest post-synaptic target
chan synapse object name
tdelay synaptic delay
weight synaptic weight
****************************************************************** */
function connect_synapse (src, dest, chan, tdelay, weight)
str src, dest, chan
float tdelay, weight
str dest_syn = {dest}@{"/"@{chan}}
addmsg {src} {dest_syn} SPIKE
int this_syn = {getfield {dest_syn} nsynapses} - 1
setfield {dest_syn} \
synapse[{this_syn}].delay {tdelay} \
synapse[{this_syn}].weight {weight}
end
/* ******************************************************************
gauss
Computes the gaussian of the distance between pre and post, given
the variance. This is used to model gaussian fall-off of synaptic
coupling as a function of distance.
Parameters:
x_pre x coordinate of the presynaptic neuron
x_post x coordinate of the postsynaptic neuron
y_pre y coordinate of the presynaptic neuron
y_post y coordinate of the postsynaptic neuron
var variance of the gaussian distribution
****************************************************************** */
function gauss(x_pre, x_post, y_pre, y_post, var)
float x_pre, y_pre, x_post, y_post, var
float f
f = {exp {-0.5/(var * var)*((x_pre-x_post)**2 + (y_pre-y_post)**2)}}
return f
end