CA1 pyramidal neuron: Persistent Na current mediates steep synaptic amplification (Hsu et al 2018)

 Download zip file 
Help downloading and running models
This paper shows that persistent sodium current critically contributes to the subthreshold nonlinear dynamics of CA1 pyramidal neurons and promotes rapidly reversible conversion between place-cell and silent-cell in the hippocampus. A simple model built with realistic axo-somatic voltage-gated sodium channels in CA1 (Carter et al., 2012; Neuron 75, 1081–1093) demonstrates that the biophysics of persistent sodium current is sufficient to explain the synaptic amplification effects. A full model built previously (Grienberger et al., 2017; Nature Neuroscience, 20(3): 417–426) with detailed morphology, ion channel types and biophysical properties of CA1 place cells naturally reproduces the steep voltage dependence of synaptic responses.
1 . Hsu CL, Zhao X, Milstein AD, Spruston N (2018) Persistent sodium current mediates the steep voltage dependence of spatial coding in hippocampal pyramidal neurons Neuron 99:1-16
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Synapse; Channel/Receptor; Neuron or other electrically excitable cell; Axon; Dendrite;
Brain Region(s)/Organism: Hippocampus;
Cell Type(s): Hippocampus CA1 pyramidal GLU cell; Abstract single compartment conductance based cell;
Channel(s): I Sodium; I A; I M; I h; I K;
Gap Junctions:
Receptor(s): AMPA; NMDA;
Transmitter(s): Glutamate;
Simulation Environment: NEURON;
Model Concept(s): Ion Channel Kinetics; Membrane Properties; Synaptic Integration; Synaptic Amplification; Place cell/field; Active Dendrites; Conductance distributions; Detailed Neuronal Models; Electrotonus; Markov-type model;
Implementer(s): Hsu, Ching-Lung [hsuc at]; Milstein, Aaron D. [aaronmil at];
Search NeuronDB for information about:  Hippocampus CA1 pyramidal GLU cell; AMPA; NMDA; I A; I K; I M; I h; I Sodium; Glutamate;
ampa_kin.mod *
gaba_a_kin.mod *
kad.mod *
kap.mod *
kdr.mod *
nmda_kin5.mod *
pr.mod *
vecevent.mod *
install notes.txt
I) To install on a local machine:

1) install anaconda python, includes ipython, numpy, matplotlib

2) clone neuron github repositories:
mkdir ~/neuron
cd ~/neuron
git clone
cd nrn
cd ..
git clone
cd iv

Install following tips from:

3) Install btmorph from

4) Make sure ~/neuron/nrnenv includes:

export IDIR=$HOME/neuron
export IV=$IDIR/iv
export N=$IDIR/nrn
export CPU=x86_64
export PATH=$IV/$CPU/bin:$N/$CPU/bin:$PATH

and ~/.bash_profile includes:

export PATH=$HOME/anaconda/bin:$PATH
export PATH=$HOME/local/bin:$PATH
source $HOME/neuron/nrnenv
export PATH=$HOME/neuron:$PATH
export PYTHONPATH=$HOME/neuron/nrn/lib/python:$PYTHONPATH
export PYTHONPATH=$HOME/python_modules/btmorph:$PYTHONPATH

5) If error related to libreadline.6.2.dylib :

cd ~/neuron/nrn/lib/python/neuron/
install_name_tool -change libreadline.6.2.dylib $HOME/anaconda2/lib/libreadline.6.2.dylib

6) On a linux cluster, may need to set the default backend for matplotlib to 'Agg' in the matplotlibrc file so that
importing pyplot doesn't cause errors in a system without display capability.

Original config file should be in site-packages/matplotlib/mpl-data/matplotlibrc
Copy it to $HOME/.config/matplotlib/matplotlibrc, then change the backend to 'Agg'.

On my mac, I have to manually edit matplotlibrc in site-packages/matplotlib/mpl-data to
'Qt5Agg' every time I update anaconda.

7) To run NEURON simulations, make sure to execute nrnivmodl in the directory that contains the .mod and .py files.
Make sure to put .swc files in the /morphologies directory and expect to find .pkl and .hdf5 data output files in the
/data directory

Then start an iPython session with: ipython

and execute pieces of the similation with:
run name_of_py_file

build your own cell with

from specify_cells import *

cell = HocCell()

You can also import a morphology from an .swc file:

cell = HocCell('str_with_name_of_swc_file.swc')

BtMorph requires that the compartments with indices 1, 2, and 3 all be of type 1 (soma), according to the standard used
by . My model expects compartment types to be labeled as follows
(1 = soma, 2 = axon, 3 = basal, 4 = apical, 5 = trunk, 6 = tuft).
Soma and axon compartments are discarded and replaced with a simplified representation of soma and axon.

Ion channel mechanisms and cable parameters for various types of compartments can be inserted with commands like:

cell.modify_mech_param('soma', 'cable', 'Ra', 150.)
cell.modify_mech_param('soma', 'pas', 'g', 0.0002)
cell.modify_mech_param('basal', 'h', 'ghbar', origin='soma')
cell.modify_mech_param(sec_type, 'kap', 'gkabar', origin='soma', slope=3.84e-4, max=0.24)

Once you have a cell appropriately specified, you can save a file containing the mechanisms with:

cell.export_mech_dict('str_with_name_of_pkl_file.pkl'), or with no arg to automatically generate a unique filename with
the data and timestamp.

Then a cell can be instantiated with a mech_dict file:

cell = HocCell('str_with_name_of_swc_file.swc', 'str_with_name_of_pkl_file.pkl')

plot functions can be executed following:
from plot_results import *

A quick simulation using adaptive timestep integration can be run with:

sim = QuickSim(duration)
sim.append_rec(cell, cell.tree.root, loc=0.5, description='soma')


sim.export_to_file(name_of_hdf5_object, index_of_similation_in_file)

then calling a plot function on the output file:

plot_superimpose_conditions('str_with_name_of_output_file') # no suffix necessary