· 

心臓刺激伝導系の数理モデルのPythonでのシミュレーション

(著) 山拓

薬理学の試験の息抜き(している場合ではない)。心臓刺激伝導系の初めの数理モデルである、NobleモデルをPythonで実装したという話。NobleモデルはPurkinje線維のモデルである。Hodgkin-Huxleyモデルを修正したモデルなのでちゃちゃっと実装。

(cf.)Hodgkin-Huxleyモデルをアニメーションで見る

 

Nobleモデル

数式は省略(下の参考文献参照)。見た感じの形状は一致しているが、Ca2+チャネルの存在を予測できなかった、など生理的に誤っていることが(現在は)分かっている。ただし、前述したように心臓の刺激伝導系の数理モデルの先駆けとなった点で偉大。

import math
import numpy as np
import matplotlib.pyplot as plt 
from scipy.integrate import odeint

class NobleModel():
    C_m = 12.0 #membrane capacitance, in uF/cm^2
    g_Na = 400.0 #Sodium (Na) maximum conductances, in mS/cm^2
    g_K = 1.2 #Postassium (K) maximum conductances, in mS/cm^2
    g_Cl = 0.075 #Leak maximum conductances, in mS/cm^2
    E_Na = 40.0 #Sodium (Na) Nernst reversal potentials, in mV
    E_K = -100.0 #Postassium (K) Nernst reversal potentials, in mV
    E_Cl = -60 #Leak Nernst reversal potentials, in mV
    
    dt = 0.1 #ms
    T = 1000 #ms
    t = np.arange(0.0, T, dt) #The time to integrate over

    def alpha_m(self, V):
        """Channel gating kinetics. Functions of membrane voltage"""
        return 0.1*(V + 48) / (1 - math.exp(-(V + 48)/15))

    def beta_m(self, V):
        """Channel gating kinetics. Functions of membrane voltage"""
        return 0.12*(V + 8) / (math.exp((V + 8)/5) - 1)

    def alpha_h(self, V):
        """Channel gating kinetics. Functions of membrane voltage"""
        return 0.17*math.exp(-(V + 90)/20)

    def beta_h(self, V):
        """Channel gating kinetics. Functions of membrane voltage"""
        return 1 / (1 + math.exp(-(V + 42)/10))

    def alpha_n(self, V):
        """Channel gating kinetics. Functions of membrane voltage"""
        return 1e-4*(V + 50) / (1 - math.exp(-(V + 50)/10))

    def beta_n(self, V):
        """Channel gating kinetics. Functions of membrane voltage"""
        return 2e-3*math.exp(-(V + 90)/80)

    def I_Na(self, V, m, h):
        return (self.g_Na * (m**3) * h + 0.14)* (V - self.E_Na)

    def I_K(self, V, n):
        gK1 = self.g_K * np.exp(-(V + 90)/50) + 0.015*np.exp((V + 90)/60)
        gK2 = self.g_K * (n**4)
        return (gK1 + gK2) * (V - self.E_K)

    def I_Cl(self, V):
        return self.g_Cl * (V - self.E_Cl)

    @staticmethod
    def dALLdt(X, t, self):
        V, m, h, n = X

        dVdt = - (self.I_Na(V, m, h) + self.I_K(V, n) + self.I_Cl(V)) / self.C_m
        dmdt = self.alpha_m(V)*(1.0-m) - self.beta_m(V)*m
        dhdt = self.alpha_h(V)*(1.0-h) - self.beta_h(V)*h
        dndt = self.alpha_n(V)*(1.0-n) - self.beta_n(V)*n
        return dVdt, dmdt, dhdt, dndt

    def simulation(self):
        initX = [-75, 0.06, 0.7, 0.3] # V, m, h, n
        X = odeint(self.dALLdt, initX, self.t, args=(self,))
        V = X[:,0]
        m = X[:,1]
        h = X[:,2]
        n = X[:,3]
        ina = self.I_Na(V, m, h)
        ik = self.I_K(V, n)
        icl = self.I_Cl(V)

        plt.figure(figsize=(6,6))
        plt.subplot(3,1,1)
        plt.title('Noble model')
        plt.plot(self.t*1e-3, V, 'k')
        plt.ylabel('V (mV)')

        plt.subplot(3,1,2)
        plt.plot(self.t*1e-3, ina, 'c', label='$I_{Na}$')
        plt.plot(self.t*1e-3, ik, 'y', label='$I_{K}$')
        plt.plot(self.t*1e-3, icl, 'm', label='$I_{L}$')
        plt.ylabel('Current ($\mu$A/cm$^2$)')
        plt.legend()

        plt.subplot(3,1,3)
        plt.plot(self.t*1e-3, m, 'r', label='m')
        plt.plot(self.t*1e-3, h, 'g', label='h')
        plt.plot(self.t*1e-3, n, 'b', label='n')
        plt.ylabel('Gating Value')
        plt.xlabel('t (sec)')
        plt.legend()
        
        plt.tight_layout()
        plt.savefig("Noble_model.png")
        #plt.show()

if __name__ == '__main__':
    model = NobleModel()
    model.simulation()
        

Zhangモデル

洞房結節(sinoatrial (SA) node)のモデルとしてZhangモデルというのがあるらしい。

 

参考文献

・Noble, D. A modification of the Hodgkin—Huxley equations applicable to Purkinje fibre action and pacemaker potentials. J. Physiol. (1962).

Noble model - Scholarpedia

Models of cardiac cell - Scholarpedia

心筋細胞の多くのモデルがまとまっている。

 

Noble model

Heart model

・Purkinje Fiber Action Potential Model (pdf)

・心筋のイオン電流と活動電位のシミュレーション(pdf)

 

・Zhang, H. et al. Mathematical models of action potentials in the periphery and center of the rabbit sinoatrial node. Am. J. Physiol. Heart Circ. Physiol. (2000)