Skip to content

Hodgkin‐Huxley (HH) Systems

RXanderR edited this page Oct 6, 2024 · 2 revisions

These systems involve solving coupled ordinary differential equations (ODEs) to describe the action potential across the neuronal membrane [1].

Usage

Import the package by running import HodgkinHuxley as HH. Use HH.solveHH(system, solver, I0, ti,tf,dt, **kwargs) to obtain $V, m, h,$ and $n$.

This package supports three ODE solvers:

  1. solver='lsoda': LSODA, via odeint function
  2. solver='euler': Forward Euler
  3. solver='rk4': Runge-Kutta 4th Order

For the external stimulus, there are four sets of parameters which can be implemented in any combination, except when using LSODA. LSODA is incompatible with noisy and coupled systems. For the stimulus duration, provide initial time ti, final time tf and timestep dt.

  1. Constant Input:    $I_{1} = I_0$
  2. Sinusoidal Input [2]: $I_{2} = I_s~\sin(2\pi~f_s t)$
  3. Noisy Input [3]:    $I_{3} = I_n~\eta(t)$, where $\eta(t)\in[-0.5,0.5]$, $\langle \eta \rangle_t = 0$
  4. Coupling Input [3]:   $I_{4} = \sum_{j} I_{ij}$, where $I_{ij} = -g a_{ij} (V_i-V_j)$

A) Single HH Systems

These systems involve single independent HH neuron [1-3]. Any solver can be used, and any combination of $I_{1}$ and $I_{2}$. If both $I_{1}$ and $I_{2}$ are present, $I_1$ works as the bias current. Use HH.solveHH(system='single', solver=, I0=, ti=,tf=,dt=, Is=,fs=).

B) Noisy Single HH Systems

These systems assume a uniform noise with a zero time-average [3]. Use either solver='euler' or solver='rk4'. For the external stimulus, use any combination of $I_1$, $I_2$, and $I_3$. Use HH.solveHH(system='noisy', solver=, I0=, ti=,tf=,dt=, Is=,fs=, In=).

C) Coupled HH Systems

These systems assume a square lattice of size L and a population $L\times L$ [3]. Use either solver='euler' or solver='rk4'. For the external stimulus, use any combination of $I_1$, $I_2$, and $I_4$. Use HH.solveHH(system='coupled', solver=, I0=, ti=,tf=,dt=, Is=,fs=, L=,g=).

##c D) Noisy Coupled HH Systems These systems assume a uniform noise with a zero time-average, and a square lattice of size L and a population $L\times L$. Use either solver='euler' or solver='rk4'. For the external stimulus, use any combination of $I_1$, $I_2$, $I_3$, and $I_4$. For maximum insanity, provide all kwargs: HH.solveHH(system='noisy coupled', solver=, I0=, ti=,tf=,dt=, Is=,fs=, In=, L=,g=).

Test Cases

Run main.py to test the following systems:
A.1) Single HH with constant input: HH.solveHH(system='single', solver='lsoda', I0=2.5)
A.2) Single HH with sinusoid input: HH.solveHH(system='single', solver='rk4', Is=10, fs=4.905)
B) Noisy HH with constant input: HH.solveHH(system='noisy', solver='euler', In=60)
C) Coupled HH with constant input: HH.solveHH(system='coupled', solver='euler', I0=10, L=3, g=0.1)
D) Noisy Coupled HH with bias, sinusoid, noisy input: HH.solveHH(system='noisy coupled', solver='euler', I0=2.5, Is=10, fs=4.905, In=60, L=3, g=0.1)

References

  1. Hodgkin, Alan L., and Andrew F. Huxley. "A quantitative description of membrane current and its application to conduction and excitation in nerve." The Journal of physiology 117.4 (1952): 500.
  2. Escosio, Rey Audie S., and Johnrob Y. Bantang. "Frequency response analysis of a Hodgkin-Huxley neuron in a generalized current density stimulus." Proceedings of the Samahang Pisika ng Pilipinas (2016).
  3. Pang, James Christopher S., Christopher P. Monterola, and Johnrob Y. Bantang. "Noise-induced synchronization in a lattice Hodgkin–Huxley neural network." Physica A: Statistical Mechanics and its Applications 393 (2014): 638-645.