-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathsd.py
More file actions
124 lines (113 loc) · 3.9 KB
/
sd.py
File metadata and controls
124 lines (113 loc) · 3.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
from neuron import h, gui
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as pyplot
import math
#neuron.load_mechanisms("./mod")
from fiber import fiber
def set_recording_vectors(compartment):
''' recording voltage
Parameters
----------
compartment: NEURON section
compartment for recording
Returns
-------
v_vec: h.Vector()
recorded voltage
t_vec: h.Vector()
recorded time
'''
v_vec = h.Vector() # Membrane potential vector at compartment
t_vec = h.Vector() # Time stamp vector
v_vec.record(compartment(0.5)._ref_v)
t_vec.record(h._ref_t)
return v_vec, t_vec
def addpointers(cell, glia):
for sec in cell.accums:
for sec_g in glia.diffs:
print(sec_g.ina)
h.setpointer(sec_g._ref_ina, 'inag', sec)
# for sec in cell.all:
# for sec_g in glia.all:
# print(sec_g.ina_nakpump)
# h.setpointer(sec_g._ref_ina_nakpump, 'inag_accum', sec)
# h.setpointer(sec._ref_icag_accum, 'ica', sec_g)
# h.setpointer(sec._ref_iclg_accum, 'icl', sec_g)
# h.setpointer(sec._ref_iag_accum, 'ia', sec_g)
# h.setpointer(sec._ref_diamg_accum, 'diam', sec_g)
# h.setpointer(sec_g._ref_ko, 'kog_getconc', sec)
# h.setpointer(sec_g._ref_naog_getconc, 'nao', sec)
# h.setpointer(sec_g._ref_caog_getconc, 'cao', sec)
# h.setpointer(sec_g._ref_clog_getconc, 'clo', sec)
# h.setpointer(sec_g._ref_aog_getconc, 'ao', sec)
# h.setpointer(sec_g._ref_kig_getconc, 'kg_accum', sec)
# h.setpointer(sec_g._ref_naig_getconc, 'nag_accum', sec)
# h.setpointer(sec_g._ref_caig_getconc, 'cag_accum', sec)
# h.setpointer(sec_g._ref_clig_getconc, 'clg_accum', sec)
# h.setpointer(sec_g._ref_aig_getconc, 'ag_accum', sec)
def balance(cell, vinit=-55):
''' voltage balance
Parameters
----------
cell: NEURON cell
cell for balance
vinit: int (mV)
initialized voltage
'''
for sec in cell.all:
if ((-(sec.ina_nattxs + sec.ina_navv1p8 + sec.ina_Nav1_3 + sec.ina_nakpump) / (vinit - sec.ena)) < 0):
sec.pumpina_extrapump = -(sec.ina_nattxs + sec.ina_navv1p8 + sec.ina_Nav1_3 + sec.ina_nakpump)
else:
sec.gnaleak_leak = -(sec.ina_nattxs + sec.ina_navv1p8 + sec.ina_Nav1_3 + sec.ina_nakpump) / (vinit - sec.ena)
if ((-(sec.ik_kdr + sec.ik_nakpump + sec.ik_kap + sec.ik_kad) / (vinit - sec.ek)) < 0):
sec.pumpik_extrapump = -(sec.ik_kdr + sec.ik_nakpump + sec.ik_kap + sec.ik_kad)
else:
sec.gkleak_leak = -(sec.ik_kdr + sec.ik_nakpump + sec.ik_kap + sec.ik_kad) / (vinit - sec.ek)
def init(cell, glia, vinit=-70, vglia=-88):
''' simulation control
Parameters
----------
cell: NEURON cell
cell for simulation
tstop: int (ms)
simulation time
vinit: int (mV)
initialized voltage
'''
h.finitialize()
for sec in cell.all:
sec.v = vinit
for sec in glia.all:
sec.v = vglia
sec.nai = setnag_accum
sec.ki = setkg_accum
sec.cli = setclg_accum
sec.ai = setag_accum
h.fcurrent()
def simulate():
h.frecord_init()
h.tstop = tstop
h.run()
def show_output(v_vec, t_vec):
''' show graphs
Parameters
----------
v_vec: h.Vector()
recorded voltage
t_vec: h.Vector()
recorded time
'''
dend_plot = pyplot.plot(t_vec, v_vec)
pyplot.xlabel('time (ms)')
pyplot.ylabel('mV')
if __name__ == '__main__':
cell = fiber(False)
glia = fiber(True)
for sec in h.allsec():
h.psection(sec=sec) #show parameters of each section
# addpointers(cell,glia)
# branch_vec, t_vec = set_recording_vectors(cell.branch)
# simulate(cell, glia)
# show_output(branch_vec, t_vec)
# pyplot.show()