.. 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-52 .. 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 # 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 53-55 by default, active conductances are set to zero, so we don't need to specify them explicitly .. GENERATED FROM PYTHON SOURCE LINES 55-75 .. code-block:: Python dend_params_passive = { # passive parameters "C_m": 1.929929, "g_C": 1.255439494, "g_L": 0.192992878, "e_L": -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 # 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 76-77 create a neuron model with a passive dendritic compartment .. GENERATED FROM PYTHON SOURCE LINES 77-79 .. 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 80-81 create a neuron model with an active dendritic compartment .. GENERATED FROM PYTHON SOURCE LINES 81-84 .. 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 85-86 set spike thresholds .. GENERATED FROM PYTHON SOURCE LINES 86-89 .. code-block:: Python cm_pas.V_th = -50.0 cm_act.V_th = -50.0 .. GENERATED FROM PYTHON SOURCE LINES 90-91 add somatic and dendritic receptor to passive dendrite model .. GENERATED FROM PYTHON SOURCE LINES 91-94 .. 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 95-96 add somatic and dendritic receptor to active dendrite model .. GENERATED FROM PYTHON SOURCE LINES 96-100 .. 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 101-102 create a two spike generators .. GENERATED FROM PYTHON SOURCE LINES 102-105 .. 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 106-107 connect spike generators to passive dendrite model (weight in nS) .. GENERATED FROM PYTHON SOURCE LINES 107-117 .. 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 118-119 connect spike generators to active dendrite model (weight in nS) .. GENERATED FROM PYTHON SOURCE LINES 119-130 .. 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 131-132 create multimeters to record compartment voltages and various state variables .. GENERATED FROM PYTHON SOURCE LINES 132-148 .. 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 149-150 connect the multimeters to the respective neurons .. GENERATED FROM PYTHON SOURCE LINES 150-153 .. code-block:: Python nest.Connect(mm_pas, cm_pas) nest.Connect(mm_act, cm_act) .. GENERATED FROM PYTHON SOURCE LINES 154-155 simulate the models .. GENERATED FROM PYTHON SOURCE LINES 155-160 .. 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 161-162 plot voltage for somatic compartment .. GENERATED FROM PYTHON SOURCE LINES 162-169 .. 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 170-171 plot voltage for dendritic compartment .. GENERATED FROM PYTHON SOURCE LINES 171-180 .. 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 181-182 plot ion channel state variables for somatic compartment .. GENERATED FROM PYTHON SOURCE LINES 182-193 .. 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 194-195 plot ion channel state variables for dendritic compartment .. GENERATED FROM PYTHON SOURCE LINES 195-208 .. 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 209-210 plot synapse state variables for dendritic compartment .. GENERATED FROM PYTHON SOURCE LINES 210-233 .. 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 `_