Code Monkey home page Code Monkey logo

hodgkin-huxley-model's Introduction

Hodgkin-Huxley model

4 dimensional model for neuronal modelling in Julia

The model

The Hodgkin–Huxley model, or conductance-based model, is a mathematical model that describes how action potentials in neurons are initiated and propagated. It is a set of nonlinear differential equations that approximates the electrical characteristics of excitable cells such as neurons and cardiac myocytes.

The typical Hodgkin–Huxley model treats each component of an excitable cell as an electrical element. The lipid bilayer is represented as a capacitance (C_m ), voltage-gated ion channels are represented by electrical conductances (g_n, where n is the specific ion channel) that depend on both voltage and time. Leak channels are represented by linear conductances (g_L ). The electrochemical gradients driving the flow of ions are represented by voltage sources (E_n ) whose voltages are determined by the ratio of the intra and extracellular concentrations of the ionic species of interest. Finally, ion pumps are represented by current sources (I_p ). The membrane potential is denoted by V_m.

Mathematically, the current flowing through the lipid bilayer is written as

{\displaystyle I_{c}=C_{m}{\frac {{\mathrm {d} }V_{m}}{{\mathrm {d} }t}}}

and the current through a given ion channel is the product

{\displaystyle I_{i}={g_{i}}(V_{m}-V_{i});}

where {\displaystyle V_{i}} is the reversal potential of the i-th ion channel. Thus, for a cell with sodium and potassium channels, the total current through the membrane is given by:

{\displaystyle I=C_{m}{\frac {{\mathrm {d} }V_{m}}{{\mathrm {d} }t}}+g_{K}(V_{m}-V_{K})+g_{Na}(V_{m}-V_{Na})+g_{l}(V_{m}-V_{l})}

where I is the total membrane current per unit area, C_m is the membrane capacitance per unit area, g_K and g_{Na} are the potassium and sodium conductances per unit area, respectively, V_K and V_{Na} are the potassium and sodium reversal potentials, respectively, and g_l and V_l are the leak conductance per unit area and leak reversal potential, respectively. The time dependent elements of this equation are V_m, g_{Na}, and g_K, where the last two conductances depend explicitly on voltage as well.

It turns out that the channels are not always opened but the probability to find them opened depend on the ion concentrations, so the voltage. By denoting n the probability that the Na channel is opened, m the probability that the K channel is opend and h the probability that this last channel is actually activated (more information about this can be found in the references) we can construct a set of 4 diferential equations to model a neuron.

\begin{equation*}\begin{array}{l}\displaystyle C_{m} \frac{d V}{d t}=\bar{G}{N a} m^{3} h\left(E{N a}-V\right)+\bar{G}{K} n^{4}\left(E{K}-V\right) +G_{m}\left(V_{r e s t}-V\right)+I \\  \displaystyle \frac{d x}{d t}=\alpha_{x}(V)(1-x)-\beta_{x}(V) x \end{array}\end{equation*}

with x = n, m, h and \alpha, \ \beta are empirical equations, which can be found for instance in 1.

Some results

The results shown below are obtained with an integration time step of h_{\mathrm{int}}=10^{-3}, a total time of t=200\mathrm{ms} and the initial values of the evolved magnitudes V_0=0, n_0=m_0=h_0=0.5.

First results are shown for the evolution in time of the membrane potential for an intensity value of I=150\mathrm{pA}.

Membrane voltage as a function of time

As we can see with this input current value the stimulus is not enough to excite the neuron.

Now we increase the intensity up to I=170\mathrm{pA}

Membrane voltage as a function of time

Now the neuron get excited for a short period of time but it relaxes finally to a steady state with any response.

Finally we increase the input current value to I=280\mathrm{pA}

Membrane voltage as a function of time

As we can see in the figure, for this values of the input current the neuron is effectively excited and there are several spikes. In fact, the neuron would remain spiking if the simulation was continued, as for this values of the input current the dynamical system follows a limit cycle.

So, as we increase the intensity the number of spikes increases too. In fact the frequency of spikes increases almost linearly after a certain threshold. With the program in this repository this can be computed too.

Frequency vs Intensity

As we can see the pulsing intensity is \nu=0 until a threshold is reached and a big jump is performed to f\sim 50\mathrm{Hz}. After that the frequency increases almost linearly. This kind of behaviour (this discontinuous jump, basically) is characteristic of a type II excitable system.

The statistical errors made in the measurements of the pulsating frequency is represented with a red shaded area. However, their values are so small that they can't be seen.

Now we can do the same calculation but starting from a high input current value:

Frequency vs Intensity

By computing the spiking frequency starting from a high input current intensity value and decreasing it we observe that the threshold for the excitability of the neuron has shifted to I\sim177\mathrm{pA}. By plotting both results simultaneously we see that the neurons perform a kind of hysteresis loop.

Hysteresis

References

  1. Wikipedia
  2. W. Gerstner lectures

hodgkin-huxley-model's People

Contributors

agimenezromero avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

trondarild

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.