Concentration dependent nonlinear K+ and Cl- leak current (Huang et al. 2015)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:195569
"In their seminal works on squid giant axons, Hodgkin, and Huxley approximated the membrane leak current as Ohmic, i.e., linear, since in their preparation, sub-threshold current rectification due to the influence of ionic concentration is negligible. Most studies on mammalian neurons have made the same, largely untested, assumption. Here we show that the membrane time constant and input resistance of mammalian neurons (when other major voltage-sensitive and ligand-gated ionic currents are discounted) varies non-linearly with membrane voltage, following the prediction of a Goldman-Hodgkin-Katz-based passive membrane model. ..." (see paper for details and more).
References:
1 . Huang S, Hong S, De Schutter E (2015) Corrigendum: Non-linear leak currents affect mammalian neuron physiology. Front Cell Neurosci 9:475 [PubMed]
2 . Huang S, Hong S, De Schutter E (2015) Non-linear leak currents affect mammalian neuron physiology. Front Cell Neurosci 9:432 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type:
Brain Region(s)/Organism:
Cell Type(s): Cerebellum Purkinje GABA cell; Hodgkin-Huxley neuron;
Channel(s): I K,leak; I Cl, leak;
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON; Python;
Model Concept(s):
Implementer(s): Huang, Shiwei [shiweihuang at outlook.com]; Hong, Sungho [shhong at oist.jp];
Search NeuronDB for information about:  Cerebellum Purkinje GABA cell; I K,leak; I Cl, leak;
/
HuangEtAl2015
readme.html
kcl.mod
fig2a_run.py
fig2a_show.py
mosinit.py
screenshot.png
                            
"""

fig2a_show.py

Make Fig. 2A in Huang S, Hong S, and De Schutter E. 2015. Non-linear leak currents affect mammalian neuron physiology. Front Cell Neurosci 9: 4602-10, based on simulated data created by fig2a_run.py.

Written by Shiwei Huang, Computational Neuroscience Unit, OIST (shiwei.huang@hotmail.com.au)
Updated 2015

"""


#import matplotlib
#matplotlib.use('SVG')
import matplotlib.pyplot as plt
import os
import pickle
import matplotlib as mpl
mpl.rcParams['pdf.fonttype'] = 42

def get_index_of_prev_element(np_array, curr_element):
    for i, val in enumerate(np_array):
        if(val >= curr_element):
            return i-1
            break

allfiles  = os.listdir('data')
pklfiles  = [os.path.join('data', x) for x in allfiles if( 'Pr_1.341_ecl_-67.9_CONC_10_EL_-85_IHOLD_0.3_ISTEP_' in x and ('0.015' in x) )]
pklfiles1 = [os.path.join('data', x) for x in allfiles if( ('Pr_1.341_ecl_-67.9_CONC_10_EL_-85_IHOLD_0_ISTEP_' in x) and ('0.015' in x) )]
pklfiles2 = [os.path.join('data', x) for x in allfiles if( 'Pr_1.341_ecl_-67.9_CONC_10_EL_-85_IHOLD_-0.3_ISTEP_' in x and ('0.015' in x) )]

fig = plt.figure()
ax1 = fig.add_subplot(321)
ax2 = fig.add_subplot(322)
ax3 = fig.add_subplot(323)
ax4 = fig.add_subplot(324)
ax5 = fig.add_subplot(325)
ax6 = fig.add_subplot(326)

def load_and_plottraces(dataset, ax1, ax2):
    for n, fname in enumerate(dataset):
        f = open(fname)
        gdat = pickle.load(f)
        odat = pickle.load(f)

        v0 = gdat['v']
        t  = gdat['t']
        t0 = get_index_of_prev_element(t, 3999)
        v  = gdat['v'] - gdat['v'][t0]

        vo0 = odat['v']
        to  = odat['t']
        to0 = get_index_of_prev_element(to, 3999)
        vo  = odat['v'] - odat['v'][to0]

        if (gdat['ISTEP'] < 0):
            v = abs(v)
            ax2.plot(t, v, color='orange', linestyle='dotted', linewidth=3)
            vo = abs(vo)
            ax1.plot(to, vo, color='blue', linestyle='dotted', linewidth=3)

        else:
            ax2.plot(t, v, 'orange')
            ax1.plot(to, vo, 'blue')

        for l in ax1, ax2:
            l.set_ylim([0, 3])
            l.set_xlim([3500, 7000])

        f.close()

load_and_plottraces(pklfiles, ax1, ax2)
load_and_plottraces(pklfiles1, ax3, ax4)
load_and_plottraces(pklfiles2, ax5, ax6)

for ax in (ax5, ax6): ax.set_xlabel('Time (ms)')

plt.show()

Loading data, please wait...