.. 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:: default import nest import matplotlib.pyplot as plt 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:: default 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:: default 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:: default 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:: default 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:: default 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:: default 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:: default 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:: default 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:: default 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:: default 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:: default 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:: default 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:: default 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:: default 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:: default 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:: default 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:: default 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() .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 0.000 seconds) .. _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-python :download:`Download Python source code: two_comps.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: two_comps.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_