SharedModelo minimal + modelo bursting (Av-Ron).ipynbOpen in CoCalc
import scipy as sc
import pylab as pl
from scipy.integrate import odeint
#from scipy import stats
#import scipy.linalg as lin
import matplotlib.pylab as gr


%matplotlib inline

from matplotlib import pyplot as plt
import numpy as np

#Definición de parámetros del sistema
V_hw=-46
V_hm=-31
a_m=0.065
a_w=0.055
ld=0.08
s=1
Cm= 1
gNa= 120
#gK= 36
gK=8
gl=0.3
VNa=55
VK=-72
Vl=-49.4
# Parámetros relativos a la corriente de Calcio
gCa=5
VCa=124
#Parámetros dinámica del Calcio
Kp=0.00052
R=0.0045
#Parámetros de la corriente de Potasio dependiente de Calcio
gKCa=0.25
Kd=0.5


# Definición de estados estable w_inf,  m_inf, las escales de tiempo tau_w y tau_c y la función m_L 

def w_inf(V):
    return 1/(1 + sc.exp(-2*a_w*(V-V_hw)))

def m_inf(V):
    return 1/(1+ sc.exp(-2*a_m*(V-V_hm)))

def tau_w(V):
    return 1/(ld*sc.exp(a_w*(V-V_hw))+ld*sc.exp(-a_w*(V-V_hw)))

t = sc.arange(0.0, 40.0, 0.1)
#Definición del sistema
def sistema(U,t):
    V,w =U
    dV=-gNa*(m_inf(V))**3*(1-w)*(V-VNa)-gK*(w/s)**4*(V-VK)-gl*(V-Vl)
    dw=(w_inf(V)-w)/tau_w(V)
    return dV,dw

U = odeint(sistema,[-80,0.1],t)
V = U[:,0]
w = U[:,1]

pl.figure()
pl.title('Modelo minimal')
pl.plot(t, V, 'k')
pl.ylabel('V (mV)')
pl.xlabel('t (seg)')
pl.show()
    
def dV(V,w):
    return -gNa*(m_inf(V))**3*(1-w)*(V-VNa)-gK*(w/s)**4*(V-VK)-gl*(V-Vl)

def dw(V,w):
    return (w_inf(V)-w)/tau_w(V)

V, w = np.meshgrid(np.arange(-80, 60,1), np.arange(0.0, 1,0.03))
dV = dV(V, w)
dw = dw(V, w)
pl.quiver(V,w,dV,dw)
<matplotlib.quiver.Quiver at 0x7fa0a8018278>
#Definición del sistema que depende de la entrada del Calcio
t = sc.arange(0.0, 1000.0, 0.1)
def sistemaCa(U,t):
    V,w,C=U
    dV=-gNa*(m_inf(V))**3*(1-w)*(V-VNa)-gK*(w/s)**4*(V-VK)-gl*(V-Vl)-gKCa*(C/(Kd+C))*(V-VK)
    dw=(w_inf(V)-w)/tau_w(V)
    dC=Kp*(-gCa*(m_inf(V))**3*(1-w)*(V-VCa))-R*C
    return dV,dw,dC

U = odeint(sistemaCa,[-80,0.1,0.01],t)
V = U[:,0]
w = U[:,1]
C = U[:,2]

pl.figure()
pl.title('Modelo minimal')
pl.plot(t, V, 'k')
pl.ylabel('V (mV)')
pl.xlabel('t (seg)')
pl.show()
    
#Ahora vamos a definir el model de burst condicional
#Canbiando primero el parámetro gK
gK=7
gl=0.3
gNa= 130
gCa=6
gKCa=0.25

#Definición del sistema que depende de la entrada del Calcio
t = sc.arange(0.0, 1000.0, 0.1)
def sistemaCa(U,t):
    V,w,C=U
    dV=-gNa*(m_inf(V))**3*(1-w)*(V-VNa)-gK*(w/s)**4*(V-VK)-gl*(V-Vl)-gKCa*(C/(Kd+C))*(V-VK)
    dw=(w_inf(V)-w)/tau_w(V)
    dC=Kp*(-gCa*(m_inf(V))**3*(1-w)*(V-VCa))-R*C
    return dV,dw,dC

U = odeint(sistemaCa,[-80,0.1,0.01],t)
V = U[:,0]
w = U[:,1]
C = U[:,2]

pl.figure()
pl.title('Modelo minimal')
pl.plot(t, V, 'k')
pl.ylabel('V (mV)')
pl.xlabel('t (seg)')
pl.show()