5
5
from EDPRmodel .somatic_injection_current import *
6
6
from scipy .integrate import solve_ivp
7
7
from functions .print_initial_values import *
8
+ import pkg_resources
8
9
9
10
def solve_EDPRmodel (t_dur , alpha , I_stim , stim_start , stim_end ):
10
11
"""
@@ -22,53 +23,42 @@ def solve_EDPRmodel(t_dur, alpha, I_stim, stim_start, stim_end):
22
23
"""
23
24
24
25
T = 309.14
25
-
26
- Na_si0 = 18.
27
- Na_se0 = 140.
28
- K_si0 = 99.
29
- K_se0 = 4.3
30
- Cl_si0 = 7.
31
- Cl_se0 = 134.
32
- Ca_si0 = 0.01
33
- Ca_se0 = 1.1
34
-
35
- Na_di0 = 18.
36
- Na_de0 = 140.
37
- K_di0 = 99.
38
- K_de0 = 4.3
39
- Cl_di0 = 7.
40
- Cl_de0 = 134.
41
- Ca_di0 = 0.01
42
- Ca_de0 = 1.1
43
-
44
- res_i = - 68e-3 * 3e-2 * 616e-12 / (1437e-18 * 9.648e4 )
45
- res_e = - 68e-3 * 3e-2 * 616e-12 / (718.5e-18 * 9.648e4 )
46
-
47
- k_res_si0 = Cl_si0 - Na_si0 - K_si0 - 2 * Ca_si0 + res_i
48
- k_res_se0 = Cl_se0 - Na_se0 - K_se0 - 2 * Ca_se0 - res_e
49
- k_res_di0 = Cl_di0 - Na_di0 - K_di0 - 2 * Ca_di0 + res_i
50
- k_res_de0 = Cl_de0 - Na_de0 - K_de0 - 2 * Ca_de0 - res_e
51
-
52
- n0 = 0.0003
53
- h0 = 0.999
54
- s0 = 0.007
55
- c0 = 0.006
56
- q0 = 0.011
57
- z0 = 1.0
58
-
59
- def calibrate (t ,k ):
60
-
61
- Na_si , Na_se , Na_di , Na_de , K_si , K_se , K_di , K_de , Cl_si , Cl_se , Cl_di , Cl_de , Ca_si , Ca_se , Ca_di , Ca_de , k_res_si , k_res_se , k_res_di , k_res_de , n , h , s , c , q , z = k
62
-
63
- my_cell = EDPRmodel (T , Na_si , Na_se , Na_di , Na_de , K_si , K_se , K_di , K_de , Cl_si , Cl_se , Cl_di , Cl_de , Ca_si , Ca_se , Ca_di , Ca_de , k_res_si , k_res_se , k_res_di , k_res_de , alpha , Ca_si0 , Ca_di0 , n , h , s , c , q , z )
64
-
65
- dNadt_si , dNadt_se , dNadt_di , dNadt_de , dKdt_si , dKdt_se , dKdt_di , dKdt_de , dCldt_si , dCldt_se , dCldt_di , dCldt_de , \
66
- dCadt_si , dCadt_se , dCadt_di , dCadt_de , dresdt_si , dresdt_se , dresdt_di , dresdt_de = my_cell .dkdt ()
67
- dndt , dhdt , dsdt , dcdt , dqdt , dzdt = my_cell .dmdt ()
68
-
69
- return dNadt_si , dNadt_se , dNadt_di , dNadt_de , dKdt_si , dKdt_se , dKdt_di , dKdt_de , \
70
- dCldt_si , dCldt_se , dCldt_di , dCldt_de , dCadt_si , dCadt_se , dCadt_di , dCadt_de , \
71
- dresdt_si , dresdt_se , dresdt_di , dresdt_de , dndt , dhdt , dsdt , dcdt , dqdt , dzdt
26
+
27
+ filename = pkg_resources .resource_filename ('data' , 'initial_values/initial_values.npz' )
28
+ data = np .load (filename )
29
+
30
+ Na_si0 = data ['Na_si' ]
31
+ Na_se0 = data ['Na_se' ]
32
+ K_si0 = data ['K_si' ]
33
+ K_se0 = data ['K_se' ]
34
+ Cl_si0 = data ['Cl_si' ]
35
+ Cl_se0 = data ['Cl_se' ]
36
+ Ca_si0 = data ['Ca_si' ]
37
+ Ca_se0 = data ['Ca_se' ]
38
+
39
+ Na_di0 = data ['Na_di' ]
40
+ Na_de0 = data ['Na_de' ]
41
+ K_di0 = data ['K_di' ]
42
+ K_de0 = data ['K_de' ]
43
+ Cl_di0 = data ['Cl_di' ]
44
+ Cl_de0 = data ['Cl_de' ]
45
+ Ca_di0 = data ['Ca_di' ]
46
+ Ca_de0 = data ['Ca_de' ]
47
+
48
+ k_res_si0 = data ['k_res_si' ][- 1 ]
49
+ k_res_se0 = data ['k_res_se' ][- 1 ]
50
+ k_res_di0 = data ['k_res_di' ][- 1 ]
51
+ k_res_de0 = data ['k_res_de' ][- 1 ]
52
+
53
+ n0 = data ['n' ]
54
+ h0 = data ['h' ]
55
+ s0 = data ['s' ]
56
+ c0 = data ['c' ]
57
+ q0 = data ['q' ]
58
+ z0 = data ['z' ]
59
+
60
+ init_cell = EDPRmodel (T , Na_si0 , Na_se0 , Na_di0 , Na_de0 , K_si0 , K_se0 , K_di0 , K_de0 , Cl_si0 , Cl_se0 , Cl_di0 , Cl_de0 , Ca_si0 , Ca_se0 , Ca_di0 , Ca_de0 , k_res_si0 , k_res_se0 , k_res_di0 , k_res_de0 , alpha , Ca_si0 , Ca_di0 , n0 , h0 , s0 , c0 , q0 , z0 )
61
+ print_initial_values (init_cell )
72
62
73
63
def dkdt (t ,k ):
74
64
@@ -87,25 +77,12 @@ def dkdt(t,k):
87
77
dCldt_si , dCldt_se , dCldt_di , dCldt_de , dCadt_si , dCadt_se , dCadt_di , dCadt_de , \
88
78
dresdt_si , dresdt_se , dresdt_di , dresdt_de , dndt , dhdt , dsdt , dcdt , dqdt , dzdt
89
79
90
- # calibrate
91
- t_span = (0 , 15 )
80
+ # solve
81
+ t_span = (0 , t_dur )
92
82
93
83
k0 = [Na_si0 , Na_se0 , Na_di0 , Na_de0 , K_si0 , K_se0 , K_di0 , K_de0 , Cl_si0 , Cl_se0 , Cl_di0 , Cl_de0 , Ca_si0 , Ca_se0 , Ca_di0 , Ca_de0 , \
94
84
k_res_si0 , k_res_se0 , k_res_di0 , k_res_de0 , n0 , h0 , s0 , c0 , q0 , z0 ]
95
85
96
- sol = solve_ivp (calibrate , t_span , k0 , max_step = 1e-4 )
97
- Na_si , Na_se , Na_di , Na_de , K_si , K_se , K_di , K_de , Cl_si , Cl_se , Cl_di , Cl_de , Ca_si , Ca_se , Ca_di , Ca_de , \
98
- k_res_si , k_res_se , k_res_di , k_res_de , n , h , s , c , q , z = sol .y
99
-
100
- # solve
101
- t_span = (0 , t_dur )
102
-
103
- k0 = [Na_si [- 1 ], Na_se [- 1 ], Na_di [- 1 ], Na_de [- 1 ], K_si [- 1 ], K_se [- 1 ], K_di [- 1 ], K_de [- 1 ], Cl_si [- 1 ], Cl_se [- 1 ], Cl_di [- 1 ], Cl_de [- 1 ], Ca_si [- 1 ], Ca_se [- 1 ], Ca_di [- 1 ], Ca_de [- 1 ], \
104
- k_res_si [- 1 ], k_res_se [- 1 ], k_res_di [- 1 ], k_res_de [- 1 ], n [- 1 ], h [- 1 ], s [- 1 ], c [- 1 ], q [- 1 ], z [- 1 ]]
105
-
106
86
sol = solve_ivp (dkdt , t_span , k0 , max_step = 1e-4 )
107
87
108
- init_cell = EDPRmodel (T , Na_si0 , Na_se0 , Na_di0 , Na_de0 , K_si0 , K_se0 , K_di0 , K_de0 , Cl_si0 , Cl_se0 , Cl_di0 , Cl_de0 , Ca_si0 , Ca_se0 , Ca_di0 , Ca_de0 , k_res_si0 , k_res_se0 , k_res_di0 , k_res_de0 , alpha , Ca_si0 , Ca_di0 , n0 , h0 , s0 , c0 , q0 , z0 )
109
- #print_initial_values(init_cell)
110
-
111
88
return sol
0 commit comments