.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/compartmental_model/two_comps.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_compartmental_model_two_comps.py: Constructing and simulating compartmental models with active and passive dendrites --------------------------------------------------------------------------------------- .. 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%2Fcompartmental_model%2Ftwo_comps.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 example demonstrates how to initialize compartmental models. It creates two models with two compartments, once with active channels in the dendritic compartment and once without. It then adds and excitatory receptors with AMPA and NMDA components to both the somatic and dendritic compartment. The output shows the evolution of the state variables present in the model. :Authors: WAM Wybo .. GENERATED FROM PYTHON SOURCE LINES 33-53 .. code-block:: Python import matplotlib.pyplot as plt import nest nest.ResetKernel() soma_params = { # passive parameters "C_m": 89.245535, # [pF] Capacitance "g_C": 0.0, # soma has no parent "g_L": 8.924572508, # [nS] Leak conductance "e_L": -75.0, # [mV] leak reversal "v_comp": -75.0, # [mV] compartment initialization # ion channel params "gbar_Na": 4608.698576715, # [nS] Na maximal conductance "e_Na": 60.0, # [mV] Na reversal "gbar_K": 956.112772900, # [nS] K maximal conductance "e_K": -90.0, # [mV] K reversal } .. GENERATED FROM PYTHON SOURCE LINES 54-56 by default, active conductances are set to zero, so we don't need to specify them explicitly .. GENERATED FROM PYTHON SOURCE LINES 56-78 .. code-block:: Python dend_params_passive = { # passive parameters "C_m": 1.929929, "g_C": 1.255439494, "g_L": 0.192992878, "e_L": -75.0, "v_comp": -75.0, } dend_params_active = { # passive parameters "C_m": 1.929929, # [pF] Capacitance "g_C": 1.255439494, # [nS] Coupling conductance to parent (soma here) "g_L": 0.192992878, # [nS] Leak conductance "e_L": -70.0, # [mV] leak reversal "v_comp": -70.0, # [mV] compartment initialization # ion channel params "gbar_Na": 17.203212493, # [nS] Na maximal conductance "e_Na": 60.0, # [mV] Na reversal "gbar_K": 11.887347450, # [nS] K maximal conductance "e_K": -90.0, # [mV] K reversal } .. GENERATED FROM PYTHON SOURCE LINES 79-80 create a neuron model with a passive dendritic compartment .. GENERATED FROM PYTHON SOURCE LINES 80-82 .. code-block:: Python cm_pas = nest.Create("cm_default") cm_pas.compartments = [{"parent_idx": -1, "params": soma_params}, {"parent_idx": 0, "params": dend_params_passive}] .. GENERATED FROM PYTHON SOURCE LINES 83-84 create a neuron model with an active dendritic compartment .. GENERATED FROM PYTHON SOURCE LINES 84-87 .. code-block:: Python cm_act = nest.Create("cm_default") cm_act.compartments = [{"parent_idx": -1, "params": soma_params}, {"parent_idx": 0, "params": dend_params_active}] .. GENERATED FROM PYTHON SOURCE LINES 88-89 set spike thresholds .. GENERATED FROM PYTHON SOURCE LINES 89-92 .. code-block:: Python cm_pas.V_th = -50.0 cm_act.V_th = -50.0 .. GENERATED FROM PYTHON SOURCE LINES 93-94 add somatic and dendritic receptor to passive dendrite model .. GENERATED FROM PYTHON SOURCE LINES 94-97 .. code-block:: Python cm_pas.receptors = [{"comp_idx": 0, "receptor_type": "AMPA_NMDA"}, {"comp_idx": 1, "receptor_type": "AMPA_NMDA"}] syn_idx_soma_pas = 0 syn_idx_dend_pas = 1 .. GENERATED FROM PYTHON SOURCE LINES 98-99 add somatic and dendritic receptor to active dendrite model .. GENERATED FROM PYTHON SOURCE LINES 99-103 .. code-block:: Python cm_act.receptors = [{"comp_idx": 0, "receptor_type": "AMPA_NMDA"}, {"comp_idx": 1, "receptor_type": "AMPA_NMDA"}] syn_idx_soma_act = 0 syn_idx_dend_act = 1 .. GENERATED FROM PYTHON SOURCE LINES 104-105 create a two spike generators .. GENERATED FROM PYTHON SOURCE LINES 105-108 .. code-block:: Python sg_soma = nest.Create("spike_generator", 1, {"spike_times": [10.0, 13.0, 16.0]}) sg_dend = nest.Create("spike_generator", 1, {"spike_times": [70.0, 73.0, 76.0]}) .. GENERATED FROM PYTHON SOURCE LINES 109-110 connect spike generators to passive dendrite model (weight in nS) .. GENERATED FROM PYTHON SOURCE LINES 110-120 .. code-block:: Python nest.Connect( sg_soma, cm_pas, syn_spec={"synapse_model": "static_synapse", "weight": 5.0, "delay": 0.5, "receptor_type": syn_idx_soma_pas}, ) nest.Connect( sg_dend, cm_pas, syn_spec={"synapse_model": "static_synapse", "weight": 2.0, "delay": 0.5, "receptor_type": syn_idx_dend_pas}, ) .. GENERATED FROM PYTHON SOURCE LINES 121-122 connect spike generators to active dendrite model (weight in nS) .. GENERATED FROM PYTHON SOURCE LINES 122-133 .. code-block:: Python nest.Connect( sg_soma, cm_act, syn_spec={"synapse_model": "static_synapse", "weight": 5.0, "delay": 0.5, "receptor_type": syn_idx_soma_act}, ) nest.Connect( sg_dend, cm_act, syn_spec={"synapse_model": "static_synapse", "weight": 2.0, "delay": 0.5, "receptor_type": syn_idx_dend_act}, ) .. GENERATED FROM PYTHON SOURCE LINES 134-135 create multimeters to record compartment voltages and various state variables .. GENERATED FROM PYTHON SOURCE LINES 135-151 .. code-block:: Python rec_list = [ "v_comp0", "v_comp1", "m_Na_0", "h_Na_0", "n_K_0", "m_Na_1", "h_Na_1", "n_K_1", "g_r_AN_AMPA_1", "g_d_AN_AMPA_1", "g_r_AN_NMDA_1", "g_d_AN_NMDA_1", ] mm_pas = nest.Create("multimeter", 1, {"record_from": rec_list, "interval": 0.1}) mm_act = nest.Create("multimeter", 1, {"record_from": rec_list, "interval": 0.1}) .. GENERATED FROM PYTHON SOURCE LINES 152-153 connect the multimeters to the respective neurons .. GENERATED FROM PYTHON SOURCE LINES 153-156 .. code-block:: Python nest.Connect(mm_pas, cm_pas) nest.Connect(mm_act, cm_act) .. GENERATED FROM PYTHON SOURCE LINES 157-158 simulate the models .. GENERATED FROM PYTHON SOURCE LINES 158-163 .. code-block:: Python nest.Simulate(160.0) res_pas = nest.GetStatus(mm_pas, "events")[0] res_act = nest.GetStatus(mm_act, "events")[0] plt.figure("voltage") .. GENERATED FROM PYTHON SOURCE LINES 164-165 plot voltage for somatic compartment .. GENERATED FROM PYTHON SOURCE LINES 165-172 .. code-block:: Python ax_soma = plt.subplot(121) ax_soma.plot(res_pas["times"], res_pas["v_comp0"], c="b", label="passive dend") ax_soma.plot(res_act["times"], res_act["v_comp0"], c="r", label="active dend") ax_soma.set_xlabel(r"$t$ (ms)") ax_soma.set_ylabel(r"$v_{soma}$ (mV)") ax_soma.set_ylim((-90.0, 40.0)) ax_soma.legend(loc=0) .. GENERATED FROM PYTHON SOURCE LINES 173-174 plot voltage for dendritic compartment .. GENERATED FROM PYTHON SOURCE LINES 174-183 .. code-block:: Python ax_dend = plt.subplot(122) ax_dend.plot(res_pas["times"], res_pas["v_comp1"], c="b", label="passive dend") ax_dend.plot(res_act["times"], res_act["v_comp1"], c="r", label="active dend") ax_dend.set_xlabel(r"$t$ (ms)") ax_dend.set_ylabel(r"$v_{dend}$ (mV)") ax_dend.set_ylim((-90.0, 40.0)) ax_dend.legend(loc=0) plt.figure("channel state variables") .. GENERATED FROM PYTHON SOURCE LINES 184-185 plot ion channel state variables for somatic compartment .. GENERATED FROM PYTHON SOURCE LINES 185-196 .. code-block:: Python ax_soma = plt.subplot(121) ax_soma.plot(res_pas["times"], res_pas["m_Na_0"], c="b", label="m_Na passive dend") ax_soma.plot(res_pas["times"], res_pas["h_Na_0"], c="r", label="h_Na passive dend") ax_soma.plot(res_pas["times"], res_pas["n_K_0"], c="g", label="n_K passive dend") ax_soma.plot(res_act["times"], res_act["m_Na_0"], c="b", ls="--", lw=2.0, label="m_Na active dend") ax_soma.plot(res_act["times"], res_act["h_Na_0"], c="r", ls="--", lw=2.0, label="h_Na active dend") ax_soma.plot(res_act["times"], res_act["n_K_0"], c="g", ls="--", lw=2.0, label="n_K active dend") ax_soma.set_xlabel(r"$t$ (ms)") ax_soma.set_ylabel(r"svar") ax_soma.set_ylim((0.0, 1.0)) ax_soma.legend(loc=0) .. GENERATED FROM PYTHON SOURCE LINES 197-198 plot ion channel state variables for dendritic compartment .. GENERATED FROM PYTHON SOURCE LINES 198-211 .. code-block:: Python ax_dend = plt.subplot(122) ax_dend.plot(res_pas["times"], res_pas["m_Na_1"], c="b", label="m_Na passive dend") ax_dend.plot(res_pas["times"], res_pas["h_Na_1"], c="r", label="h_Na passive dend") ax_dend.plot(res_pas["times"], res_pas["n_K_1"], c="g", label="n_K passive dend") ax_dend.plot(res_act["times"], res_act["m_Na_1"], c="b", ls="--", lw=2.0, label="m_Na active dend") ax_dend.plot(res_act["times"], res_act["h_Na_1"], c="r", ls="--", lw=2.0, label="h_Na active dend") ax_dend.plot(res_act["times"], res_act["n_K_1"], c="g", ls="--", lw=2.0, label="n_K active dend") ax_dend.set_xlabel(r"$t$ (ms)") ax_dend.set_ylabel(r"svar") ax_dend.set_ylim((0.0, 1.0)) ax_dend.legend(loc=0) plt.figure("dendritic synapse conductances") .. GENERATED FROM PYTHON SOURCE LINES 212-213 plot synapse state variables for dendritic compartment .. GENERATED FROM PYTHON SOURCE LINES 213-236 .. code-block:: Python ax_dend = plt.gca() ax_dend.plot(res_pas["times"], res_pas["g_r_AN_AMPA_1"] + res_pas["g_d_AN_AMPA_1"], c="b", label="AMPA passive dend") ax_dend.plot(res_pas["times"], res_pas["g_r_AN_NMDA_1"] + res_pas["g_d_AN_NMDA_1"], c="r", label="NMDA passive dend") ax_dend.plot( res_act["times"], res_act["g_r_AN_AMPA_1"] + res_act["g_d_AN_AMPA_1"], c="b", ls="--", lw=2.0, label="AMPA active dend", ) ax_dend.plot( res_act["times"], res_act["g_r_AN_NMDA_1"] + res_act["g_d_AN_NMDA_1"], c="r", ls="--", lw=2.0, label="NMDA active dend", ) ax_dend.legend(loc=0) plt.tight_layout() plt.show() .. _sphx_glr_download_auto_examples_compartmental_model_two_comps.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: two_comps.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: two_comps.py ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_