Compare Tsodyks-Markram Synapse models.
This script compares the two variants of the Tsodyks/Markram synapse in NEST.
import nest
import nest.voltage_trace
import numpy
import pylab
nest.ResetKernel()
n_syn = 12.0 # number of synapses in a connection
n_trials = 30 # number of measurement trials
fac_params = {"U": 0.03, "u": 0.03, "tau_fac": 500.,
"tau_rec": 200., "weight": 1.}
dep_params = {"U": 0.5, "u": 0.5, "tau_fac": 15.,
"tau_rec": 670., "weight": 1.}
lin_params = {"U": 0.3, "u": 0.3, "tau_fac": 330.,
"tau_rec": 330., "weight": 1.}
t1_params = fac_params # for tsodyks2_synapse
t2_params = t1_params.copy() # for furhmann_synapse
t2_params['n'] = n_syn
t2_params['weight'] = 1. / n_syn
nest.SetDefaults("tsodyks2_synapse", t1_params)
nest.SetDefaults("quantal_stp_synapse", t2_params)
nest.SetDefaults("iaf_psc_exp", {"tau_syn_ex": 3., 'tau_m': 70.})
source = nest.Create('spike_generator')
nest.SetStatus(source, {'spike_times':
[30., 60., 90., 120., 150., 180., 210., 240., 270.,
300., 330., 360., 390., 900.]})
parrot = nest.Create('parrot_neuron')
neuron = nest.Create("iaf_psc_exp", 2)
nest.Connect(source, parrot)
nest.Connect(parrot, neuron[:1], syn_spec="tsodyks2_synapse")
nest.Connect(parrot, neuron[1:], syn_spec="quantal_stp_synapse")
voltmeter = nest.Create("voltmeter", 2)
nest.SetStatus(voltmeter, {"withgid": False, "withtime": True})
t_plot = 1000.
t_tot = 1500.
the following is a dry run trial so that the synapse dynamics is idential in all subsequent trials.
nest.Simulate(t_tot)
Now we connect the voltmeters
nest.Connect([voltmeter[0]], [neuron[0]])
nest.Connect([voltmeter[1]], [neuron[1]])
WE now run the specified number of trials in a loop.
for t in range(n_trials):
t_net = nest.GetKernelStatus('time')
nest.SetStatus(source, {'origin': t_net})
nest.Simulate(t_tot)
nest.Simulate(.1) # flush the last voltmeter events from the queue
vm = numpy.array(nest.GetStatus([voltmeter[1]], 'events')[0]['V_m'])
vm_reference = numpy.array(nest.GetStatus([voltmeter[0]], 'events')[0]['V_m'])
t_tot = int(t_tot)
t_plot = int(t_plot)
vm.shape = (n_trials, t_tot)
vm_reference.shape = (n_trials, t_tot)
vm_mean = numpy.array([numpy.mean(vm[:, i]) for i in range(t_tot)])
vm_ref_mean = numpy.array([numpy.mean(vm_reference[:, i])
for i in range(t_tot)])
for t in range(n_trials):
pylab.plot(vm[t][:t_plot], color='gray', lw=0.5)
pylab.plot(vm_mean[:t_plot], color='black', lw=2.)
pylab.plot(vm_reference[0][:t_plot], color='red', lw=2.)
To display the results, you need to execute pylab.show()