.. 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 Click :ref:`here ` 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 --------------------------------------------------------------------------------------- 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., # [mV] Na reversal 'gbar_K': 956.112772900, # [nS] K maximal conductance 'e_K': -90. # [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., # [mV] Na reversal 'gbar_K': 11.887347450, # [nS] K maximal conductance 'e_K': -90. # [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-82 .. 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 83-84 create a neuron model with an active dendritic compartment .. GENERATED FROM PYTHON SOURCE LINES 84-90 .. 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 91-92 set spike thresholds .. GENERATED FROM PYTHON SOURCE LINES 92-95 .. code-block:: default cm_pas.V_th = -50. cm_act.V_th = -50. .. GENERATED FROM PYTHON SOURCE LINES 96-97 add somatic and dendritic receptor to passive dendrite model .. GENERATED FROM PYTHON SOURCE LINES 97-103 .. 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 104-105 add somatic and dendritic receptor to active dendrite model .. GENERATED FROM PYTHON SOURCE LINES 105-112 .. 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 113-114 create a two spike generators .. GENERATED FROM PYTHON SOURCE LINES 114-117 .. code-block:: default sg_soma = nest.Create('spike_generator', 1, {'spike_times': [10., 13., 16.]}) sg_dend = nest.Create('spike_generator', 1, {'spike_times': [70., 73., 76.]}) .. GENERATED FROM PYTHON SOURCE LINES 118-119 connect spike generators to passive dendrite model (weight in nS) .. GENERATED FROM PYTHON SOURCE LINES 119-123 .. code-block:: default nest.Connect(sg_soma, cm_pas, syn_spec={ 'synapse_model': 'static_synapse', 'weight': 5., 'delay': 0.5, 'receptor_type': syn_idx_soma_pas}) nest.Connect(sg_dend, cm_pas, syn_spec={ 'synapse_model': 'static_synapse', 'weight': 2., 'delay': 0.5, 'receptor_type': syn_idx_dend_pas}) .. GENERATED FROM PYTHON SOURCE LINES 124-125 connect spike generators to active dendrite model (weight in nS) .. GENERATED FROM PYTHON SOURCE LINES 125-130 .. code-block:: default nest.Connect(sg_soma, cm_act, syn_spec={ 'synapse_model': 'static_synapse', 'weight': 5., 'delay': 0.5, 'receptor_type': syn_idx_soma_act}) nest.Connect(sg_dend, cm_act, syn_spec={ 'synapse_model': 'static_synapse', 'weight': 2., '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-137 .. 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': .1}) mm_act = nest.Create('multimeter', 1, {'record_from': rec_list, 'interval': .1}) .. GENERATED FROM PYTHON SOURCE LINES 138-139 connect the multimeters to the respective neurons .. GENERATED FROM PYTHON SOURCE LINES 139-142 .. code-block:: default nest.Connect(mm_pas, cm_pas) nest.Connect(mm_act, cm_act) .. GENERATED FROM PYTHON SOURCE LINES 143-144 simulate the models .. GENERATED FROM PYTHON SOURCE LINES 144-149 .. code-block:: default nest.Simulate(160.) res_pas = nest.GetStatus(mm_pas, 'events')[0] res_act = nest.GetStatus(mm_act, 'events')[0] plt.figure('voltage') .. GENERATED FROM PYTHON SOURCE LINES 150-151 plot voltage for somatic compartment .. GENERATED FROM PYTHON SOURCE LINES 151-158 .. 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., 40.)) ax_soma.legend(loc=0) .. GENERATED FROM PYTHON SOURCE LINES 159-160 plot voltage for dendritic compartment .. GENERATED FROM PYTHON SOURCE LINES 160-169 .. 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., 40.)) ax_dend.legend(loc=0) plt.figure('channel state variables') .. GENERATED FROM PYTHON SOURCE LINES 170-171 plot ion channel state variables for somatic compartment .. GENERATED FROM PYTHON SOURCE LINES 171-182 .. 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., label='m_Na active dend') ax_soma.plot(res_act['times'], res_act['h_Na_0'], c='r', ls='--', lw=2., label='h_Na active dend') ax_soma.plot(res_act['times'], res_act['n_K_0'], c='g', ls='--', lw=2., label='n_K active dend') ax_soma.set_xlabel(r'$t$ (ms)') ax_soma.set_ylabel(r'svar') ax_soma.set_ylim((0., 1.)) ax_soma.legend(loc=0) .. GENERATED FROM PYTHON SOURCE LINES 183-184 plot ion channel state variables for dendritic compartment .. GENERATED FROM PYTHON SOURCE LINES 184-197 .. 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., label='m_Na active dend') ax_dend.plot(res_act['times'], res_act['h_Na_1'], c='r', ls='--', lw=2., label='h_Na active dend') ax_dend.plot(res_act['times'], res_act['n_K_1'], c='g', ls='--', lw=2., label='n_K active dend') ax_dend.set_xlabel(r'$t$ (ms)') ax_dend.set_ylabel(r'svar') ax_dend.set_ylim((0., 1.)) ax_dend.legend(loc=0) plt.figure('dendritic synapse conductances') .. GENERATED FROM PYTHON SOURCE LINES 198-199 plot synapse state variables for dendritic compartment .. GENERATED FROM PYTHON SOURCE LINES 199-210 .. 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., 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., 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 `_