コード例 #1
0
                 nrn_region='i',
                 geometry=rxd.FractionalVolume(fc, surface_fraction=1))
er = rxd.Region(h.allsec(), geometry=rxd.FractionalVolume(fe))
cyt_er_membrane = rxd.Region(h.allsec(), geometry=rxd.FixedPerimeter(1))

# the species and other states
ca = rxd.Species([cyt, er], d=caDiff, name='ca', charge=2, initial=cac_init)
ip3 = rxd.Species(cyt, d=ip3Diff, initial=ip3_init)
ip3r_gate_state = rxd.State(cyt_er_membrane, initial=0.8)
h_gate = ip3r_gate_state[cyt_er_membrane]

# pumps and channels between ER and Cytosol

serca = rxd.MultiCompartmentReaction(ca[cyt] > ca[er],
                                     gserca / ((kserca /
                                                (1000. * ca[cyt]))**2 + 1),
                                     membrane=cyt_er_membrane,
                                     custom_dynamics=True)
leak = rxd.MultiCompartmentReaction(ca[er] != ca[cyt],
                                    gleak,
                                    gleak,
                                    membrane=cyt_er_membrane)

minf = ip3[cyt] * 1000. * ca[cyt] / (ip3[cyt] + kip3) / (1000. * ca[cyt] +
                                                         kact)
k = gip3r * (minf * h_gate)**3
ip3r = rxd.MultiCompartmentReaction(ca[er] != ca[cyt],
                                    k,
                                    k,
                                    membrane=cyt_er_membrane)
ip3rg = rxd.Rate(h_gate,
コード例 #2
0
caexinit = dconf['caexinit']
caextrude = rxd.Rate(ca, (caexinit - ca[cyt]) / taurcada,
                     regions=cyt,
                     membrane_flux=False)

ip3 = rxd.Species(cyt, d=0.283, name='ip3', initial=0.0)
# action of IP3 receptor
Kip3 = 0.13
Kact = 0.4
minf = ip3[cyt] * 1000. * ca[cyt] / (ip3[cyt] + Kip3) / (1000. * ca[cyt] +
                                                         Kact)
ip3r_gate_state = rxd.State(cyt_er_membrane, initial=0.8)
h_gate = ip3r_gate_state[cyt_er_membrane]
k = dconf['gip3'] * (minf * h_gate)**3
ip3r = rxd.MultiCompartmentReaction(ca[er] <> ca[cyt],
                                    k,
                                    k,
                                    membrane=cyt_er_membrane)
# IP3 receptor gating
ip3rg = rxd.Rate(h_gate, (1. / (1 + 1000. * ca[cyt] / (0.4)) - h_gate) / 400.0)
# IP3 degradation - moves towards baseline level (ip3_init)
ip3degTau = 1000  # 1000 ms
ip3deg = rxd.Rate(ip3, (0.0 - ip3[cyt]) / ip3degTau,
                  regions=cyt,
                  membrane_flux=False)


def setmGLURflux():  # mGLUR synapses generate ip3 that is fed into rxd ip3
    for c in ce:
        if ice(c.ty): continue
        for syn, seg in zip(
            [c.Adend3mGLUR.syn, c.Adend2mGLUR.syn, c.Adend1mGLUR.syn],
コード例 #3
0
ca = rxd.Species(
    [cyt],
    d=1,  # with single section and nseg=1 only affects extracellular
    name="ca",
    charge=2,
    initial=lambda node: 1e-3 if node.region == cyt else 0,
)

e = 1.60217662e-19
scale = 1e-14 / e

# rate constant is in terms of molecules/um2 ms
ca_pump = rxd.MultiCompartmentReaction(
    ca[cyt],
    cao[ecs],
    ca[cyt] * scale,
    custom_dynamics=True,
    membrane_flux=True,
    membrane=mem,
)

t = h.Vector().record(h._ref_t)
ca_vec = h.Vector().record(soma(0.5)._ref_cai)
ca_vec2 = h.Vector().record(cao.nodes(soma(0.5))._ref_value)
v = h.Vector().record(soma(0.5)._ref_v)

h.finitialize(-65 * mV)
h.continuerun(100 * ms)

if __name__ == "__main__":
    import matplotlib.pyplot as plt
コード例 #4
0
# dh/dt
h_gate = rxd.Rate(hgate, (alpha_h * (1.0 - hgate)) - (beta_h * hgate))

# dn/dt
n_gate = rxd.Rate(ngate, (alpha_n * (1.0 - ngate)) - (beta_n * ngate))

# d[O2]o/dt
o2_ecs = rxd.Rate(o2ecs, (epsilon * (oa_bath - o2ecs)))

# CURRENTS/LEAKS ----------------------------------------------------------------------------------------------------------------

# sodium (Na) current
na_current = rxd.MultiCompartmentReaction(nai,
                                          nao,
                                          gna * (v - ena),
                                          mass_action=False,
                                          membrane=mem,
                                          membrane_flux=True)

# potassium (K) current
k_current = rxd.MultiCompartmentReaction(ki,
                                         ko,
                                         gk * (v - ek),
                                         mass_action=False,
                                         membrane=mem,
                                         membrane_flux=True)

# chlorine (Cl) current
cl_current = rxd.MultiCompartmentReaction(cli,
                                          clo,
                                          gclbar_l * (v - ecl),
コード例 #5
0
ファイル: ecs_before_sections.py プロジェクト: pramodk/nrn
    def __init__(self, x, y, z, rec=False):
        self.x = x
        self.y = y
        self.z = z

        self.soma = h.Section(name="soma", cell=self)
        # add 3D points to locate the neuron in the ECS
        self.soma.pt3dadd(x, y, z + somaR, 2.0 * somaR)
        self.soma.pt3dadd(x, y, z - somaR, 2.0 * somaR)

        # Where? -- define the intracellular space and membrane
        self.cyt = rxd.Region(self.soma, name="cyt", nrn_region="i")
        self.mem = rxd.Region(self.soma, name="mem", geometry=rxd.membrane())
        cell = [self.cyt, self.mem]

        # Who? -- the relevant ions and gates
        self.k = rxd.Species(cell, name="k", d=2.62, charge=1, initial=125)
        self.na = rxd.Species(cell, name="na", d=1.78, charge=1, initial=10)
        self.n = rxd.State(cell, name="n", initial=0.25512)
        self.ki, self.nai = self.k[self.cyt], self.na[self.cyt]

        # What? -- gating variables and ion currents
        self.n_gate = rxd.Rate(self.n, phin * (ninf - self.n) / taun)

        # Nernst potentials
        ena = 1e3 * h.R * (h.celsius + 273.15) * log(
            nao / self.nai) / h.FARADAY
        ek = 1e3 * h.R * (h.celsius + 273.15) * log(ko / self.ki) / h.FARADAY

        # Persistent Na current
        self.nap_current = rxd.MultiCompartmentReaction(
            self.nai,
            nao,
            gnap * nap_minf * nap_hinf * (v - ena),
            mass_action=False,
            membrane=self.mem,
            membrane_flux=True,
        )
        # Na current
        self.na_current = rxd.MultiCompartmentReaction(
            self.nai,
            nao,
            gna * minf**3 * (1.0 - self.n) * (v - ena),
            mass_action=False,
            membrane=self.mem,
            membrane_flux=True,
        )
        # K current
        self.k_current = rxd.MultiCompartmentReaction(
            self.ki,
            ko,
            gk * self.n**4 * (v - ek),
            mass_action=False,
            membrane=self.mem,
            membrane_flux=True,
        )
        # K leak
        self.k_leak = rxd.MultiCompartmentReaction(
            self.ki,
            ko,
            gl * (v - ek),
            mass_action=False,
            membrane=self.mem,
            membrane_flux=True,
        )
        # passive leak
        self.soma.insert("pas")
        self.soma(0.5).pas.g = pas_gl
        self.soma(0.5).pas.e = pas_el

        if rec:  # record membrane potential (shown in figure 1C)
            self.somaV = h.Vector()
            self.somaV.record(self.soma(0.5)._ref_v, rec)
コード例 #6
0
axon_terminal_region = rxd.Region([axon_terminal], nrn_region='i')
synaptic_cleft = rxd.Region([axon_terminal], nrn_region='o')
terminal_membrane = rxd.Region(h.allsec(), geometry=rxd.DistributedBoundary(1))

# In[3]:

VA = rxd.Species([axon_terminal_region], name="VA", initial=10, charge=1)
T = rxd.Species([synaptic_cleft], name="T", initial=10, charge=1)

# In[4]:

# if you comment the exocytosis line below, the error will go away
exocytosis = rxd.MultiCompartmentReaction(VA[axon_terminal_region],
                                          T[synaptic_cleft],
                                          500,
                                          0,
                                          membrane=terminal_membrane,
                                          membrane_flux=True)

# In[5]:

VA_conc = h.Vector().record(VA.nodes[0]._ref_concentration)
T_conc = h.Vector().record(T.nodes[0]._ref_concentration)
t_vec = h.Vector().record(h._ref_t)

h.finitialize(-70)
h.continuerun(100)

pyplot.plot(t_vec, VA_conc)
pyplot.plot(t_vec, T_conc)
pyplot.show()