SenseLab Home ModelDB Home

Stochastic versions of the Hodgkin-Huxley equations (Goldwyn, Shea-Brown 2011) (pylab)
Accession: 144499
A pylab version from Alan Leggitt for simulating different channel noise models using the Hodgkin-Huxley equations. Methods provided and reviewed in Goldwyn and Shea-Brown (2011) are: current noise, subunit noise, conductance noise, and Markov chain, as well as the standard deterministic Hodgkin-Huxley model.
Reference: Goldwyn JH, Shea-Brown E (2011) The what and where of adding channel noise to the Hodgkin-Huxley Equations. PLoS Computational Biology 7(11):e1002247 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type:  Neuron or other electrically excitable cell;
Brain Region(s)/Organism:  
Cell Type(s):   Hodgkin-Huxley neuron;
Channel(s):   
Gap Junctions:  
Receptor(s):  
Gene(s):  
Transmitter(s):  
Simulation Environment:  Python;
Model Concept(s):  Action Potential Initiation; Ion Channel Kinetics; Action Potentials;
Implementer(s):  Leggitt, Alan [alan.leggitt at ucsf.edu];
\
StochasticHH
README.html
screenshot1.jpg
screenshot2.jpg
screenshot3.jpg
StochasticHH_ObjectOriented.py
                            
README

StochasticHH_ObjectOriented.py
Author: Alan Leggitt
5-11-2012

This code is a re-implementation of Matlab code written by Joshua
Goldwyn. The original Matlab code can be found at

http://faculty.washington.edu/etsb/tutorials.html

This version runs best using Pylab from the Enthought Python
Distribution 7.2 For more information visit www.enthought.com

For more information, contact Alan Leggitt at alan.leggitt@ucsf.edu


Using the Code
--------------

To get started use the following commands in a Pylab terminal (see
http://enthought.com/products/epdgetstart.php):

run StochasticHH_ObjectOriented
n = Neuron()
n()

This will output two figures, one of voltage vs. time,
screenshot 1

the other of Fraction of ion channels vs. time, similar to Fig 1B:
screenshot 2

setting the second parameter in the time array to 30.01 (default
100.1) for a faster run and setting the model to Markov chain:

run StochasticHH_ObjectOriented
n=Neuron(timeArray=arange(0,30.01, 0.01), noiseModel="MarkovChain")
n()

we get a result similar to Fig 1A, although for expedience a current
injection is included here:
screenshot 3

The Neuron class has some default values: a time array of 0 to 100 in
increments of 0.01 ms, an input current array with a 10 ms step
current, a noise standard deviation of 10, an area of 100 cm**2, and a
noise model (no noise). Any of these parameters can be changed, using
the following guidelines

Parameters
----------

timeArray - array of times
inputCurrent - an array of input current values, must be the same
               length as time
noiseSTD - the standard deviation of the noise
area - the area of the neuron
noiseModel - model for the input noise, must be a string
	ODE - no input noise
	Current - noise added to current input
	Subunit - noise added to subunit variables
	VClamp - voltage clamp conductance noise, Linaro et al model
	FoxLuSystemSize - system size conductance noise, Fox and Lu
                          model
	MarkovChain - Markov Chain model

For example...

run StochasticHH_ObjectOriented
t = arange(0,100,0.01)
n = Neuron(timeArray=t,inputCurrent=sin(t),noiseSTD=5,area=50,noiseModel='Current')
n()

Will generate the same two plots using the above parameters. 

Note: Any number of these parameters can be specified. Those that are
left unspecified will use the default values.


Functions
---------

The Neuron class has the following functions

solveStochasticModel - solve the Hodgkin Huxley model using the noise
                       model
plotVoltage - plot the voltage vs. time
plotChannelFractions - plot fractions of both ion channel types
                       vs. time

The Neuron class also has a call function installed, so that running
the following

run StochasticHH_ObjectOriented
n = Neuron()
n()

Will automatically call all three of the above functions. These
functions can also be called manually. For example...

run StochasticHH_ObjectOriented
n = Neuron()
n.solveStochasticModel()
n.plotVoltage()
n.plotChannelFractions()

Note: solveStochasticModel must be called before either plotting
function.


Plotting
--------

Each plotting function can also be called with an axis specified. For
example...

run StochasticHH_ObjectOriented
fig = figure()
ax1 = fig.add_subplot(211)
ax2 = fig.add_subplot(212)
n = Neuron()
n.solveStochasticModel()
n.plotVoltage(ax=ax1)
n.plotChannelFractions(ax=ax2)

Will plot each output plot on a separate subplot. 

These plotting functions use default linestyles. The default for
voltage is a solid black line.
The default for fraction of Na Channels is a blue line and the default
for fraction of K Channels is a green line.
These linestyle parameters can also be changed, which allows for super
imposing different neuron plots. For example...

run StochasticHH_ObjectOriented
fig = figure()
ax = fig.add_subplot(111)
n1 = Neuron()
n2 = Neuron(noiseModel='Current')
n1.solveStochasticModel()
n2.solveStochasticModel()
n1.plotVoltage(ax=ax,lineStyle='k')
n2.plotVoltage(ax=ax,lineStyle='r')

20120515 python script updated with state variable permutation bug fix.

ModelDB Home  SenseLab Home   Help
Questions, comments, problems? Email the ModelDB Administrator
How to cite ModelDB
This site is Copyright 2012 Shepherd Lab, Yale University