.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/clopath_synapse_spike_pairing.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_examples_clopath_synapse_spike_pairing.py: Clopath Rule: Spike pairing experiment -------------------------------------- .. only:: html ---- Run this example as a Jupyter notebook: .. card:: :width: 25% :margin: 2 :text-align: center :link: https://lab.ebrains.eu/hub/user-redirect/git-pull?repo=https%3A%2F%2Fgithub.com%2Fnest%2Fnest-simulator-examples&urlpath=lab%2Ftree%2Fnest-simulator-examples%2Fnotebooks%2Fnotebooks%2Fclopath_synapse_spike_pairing.ipynb&branch=main :link-alt: JupyterHub service .. image:: https://nest-simulator.org/TryItOnEBRAINS.png .. grid:: 1 1 1 1 :padding: 0 0 2 0 .. grid-item:: :class: sd-text-muted :margin: 0 0 3 0 :padding: 0 0 3 0 :columns: 4 See :ref:`our guide ` for more information and troubleshooting. ---- This script simulates one ``aeif_psc_delta_clopath`` neuron that is connected with a Clopath connection [1]_. The synapse receives pairs of a pre- and a postsynaptic spikes that are separated by either 10 ms (pre before post) or -10 ms (post before pre). The change of the synaptic weight is measured after five of such pairs. This experiment is repeated five times with different rates of the sequence of the spike pairs: 10Hz, 20Hz, 30Hz, 40Hz, and 50Hz. References ~~~~~~~~~~ .. [1] Clopath C, Büsing L, Vasilaki E, Gerstner W (2010). Connectivity reflects coding: a model of voltage-based STDP with homeostasis. Nature Neuroscience 13:3, 344--352 .. GENERATED FROM PYTHON SOURCE LINES 40-45 .. code-block:: Python import matplotlib.pyplot as plt import nest import numpy as np .. GENERATED FROM PYTHON SOURCE LINES 46-48 First we specify the neuron parameters. To enable voltage dependent prefactor ``A_LTD(u_bar_bar)`` add ``A_LTD_const: False`` to the dictionary. .. GENERATED FROM PYTHON SOURCE LINES 48-69 .. code-block:: Python nrn_params = { "V_m": -70.6, "E_L": -70.6, "C_m": 281.0, "theta_minus": -70.6, "theta_plus": -45.3, "A_LTD": 14.0e-5, "A_LTP": 8.0e-5, "tau_u_bar_minus": 10.0, "tau_u_bar_plus": 7.0, "delay_u_bars": 4.0, "a": 4.0, "b": 0.0805, "V_reset": -70.6 + 21.0, "V_clamp": 33.0, "t_clamp": 2.0, "t_ref": 0.0, } .. GENERATED FROM PYTHON SOURCE LINES 70-71 Hardcoded spike times of presynaptic spike generator .. GENERATED FROM PYTHON SOURCE LINES 71-87 .. code-block:: Python spike_times_pre = [ # Presynaptic spike before the postsynaptic [20.0, 120.0, 220.0, 320.0, 420.0], # noqa [20.0, 70.0, 120.0, 170.0, 220.0], # noqa [20.0, 53.3, 86.7, 120.0, 153.3], # noqa [20.0, 45.0, 70.0, 95.0, 120.0], # noqa [20.0, 40.0, 60.0, 80.0, 100.0], # noqa # Presynaptic spike after the postsynaptic [120.0, 220.0, 320.0, 420.0, 520.0, 620.0], # noqa [70.0, 120.0, 170.0, 220.0, 270.0, 320.0], # noqa [53.3, 86.6, 120.0, 153.3, 186.6, 220.0], # noqa [45.0, 70.0, 95.0, 120.0, 145.0, 170.0], # noqa [40.0, 60.0, 80.0, 100.0, 120.0, 140.0], ] # noqa .. GENERATED FROM PYTHON SOURCE LINES 88-89 Hardcoded spike times of postsynaptic spike generator .. GENERATED FROM PYTHON SOURCE LINES 89-106 .. code-block:: Python spike_times_post = [ [10.0, 110.0, 210.0, 310.0, 410.0], # noqa [10.0, 60.0, 110.0, 160.0, 210.0], # noqa [10.0, 43.3, 76.7, 110.0, 143.3], # noqa [10.0, 35.0, 60.0, 85.0, 110.0], # noqa [10.0, 30.0, 50.0, 70.0, 90.0], # noqa [130.0, 230.0, 330.0, 430.0, 530.0, 630.0], # noqa [80.0, 130.0, 180.0, 230.0, 280.0, 330.0], # noqa [63.3, 96.6, 130.0, 163.3, 196.6, 230.0], # noqa [55.0, 80.0, 105.0, 130.0, 155.0, 180.0], # noqa [50.0, 70.0, 90.0, 110.0, 130.0, 150.0], ] # noqa init_w = 0.5 syn_weights = [] resolution = 0.1 .. GENERATED FROM PYTHON SOURCE LINES 107-108 Loop over pairs of spike trains .. GENERATED FROM PYTHON SOURCE LINES 108-159 .. code-block:: Python for s_t_pre, s_t_post in zip(spike_times_pre, spike_times_post): nest.ResetKernel() nest.resolution = resolution # Create one neuron nrn = nest.Create("aeif_psc_delta_clopath", 1, nrn_params) # We need a parrot neuron since spike generators can only # be connected with static connections prrt_nrn = nest.Create("parrot_neuron", 1) # Create and connect spike generators spike_gen_pre = nest.Create("spike_generator", {"spike_times": s_t_pre}) nest.Connect(spike_gen_pre, prrt_nrn, syn_spec={"delay": resolution}) spike_gen_post = nest.Create("spike_generator", {"spike_times": s_t_post}) nest.Connect(spike_gen_post, nrn, syn_spec={"delay": resolution, "weight": 80.0}) # Create weight recorder wr = nest.Create("weight_recorder") # Create Clopath connection with weight recorder nest.CopyModel("clopath_synapse", "clopath_synapse_rec", {"weight_recorder": wr}) syn_dict = {"synapse_model": "clopath_synapse_rec", "weight": init_w, "delay": resolution} nest.Connect(prrt_nrn, nrn, syn_spec=syn_dict) # Simulation simulation_time = 10.0 + max(s_t_pre[-1], s_t_post[-1]) nest.Simulate(simulation_time) # Extract and save synaptic weights weights = wr.get("events", "weights") syn_weights.append(weights[-1]) syn_weights = np.array(syn_weights) # scaling of the weights so that they are comparable to [1] syn_weights = 100.0 * 15.0 * (syn_weights - init_w) / init_w + 100.0 # Plot results fig, ax = plt.subplots(1, sharex=False) ax.plot([10.0, 20.0, 30.0, 40.0, 50.0], syn_weights[5:], color="b", lw=2.5, ls="-", label="pre-post pairing") ax.plot([10.0, 20.0, 30.0, 40.0, 50.0], syn_weights[:5], color="g", lw=2.5, ls="-", label="post-pre pairing") ax.set_ylabel("normalized weight change") ax.set_xlabel("rho (Hz)") ax.legend() ax.set_title("synaptic weight") plt.show() .. _sphx_glr_download_auto_examples_clopath_synapse_spike_pairing.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: clopath_synapse_spike_pairing.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: clopath_synapse_spike_pairing.py ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_