Plotting Ca current through different types of VDCC's

Extending NEURON to handle reaction-diffusion problems.

Moderators: hines, wwlytton, ramcdougal

Post Reply
sangwonc
Posts: 10
Joined: Sun Nov 07, 2021 7:13 pm

Plotting Ca current through different types of VDCC's

Post by sangwonc »

Hello,

I want to plot current through different types of voltage gated calcium channels. This is the code that I have:

Code: Select all

#Formulas for Non-modulated Ca currents
threshold = 1.10e-4
m = 10000 # steepness of switch
temp1 = 0.0853*T/2
temp2  = v/temp1 
# switch goes to 0 for abs(temp2) < threshold and 1 for abs(temp2) > threshold
switch = (1 + tanh(((fabs(temp2) - threshold)*100)))/2
temp3 = (1-switch)*(1-temp2/2) + switch*(temp2/exp(temp2)-1)

gca_N = gcabar_N * mgate_N**2 * hgate_N
gca_L = gcabar_L * mgate_L**2
    
dvf = 0.001/(0.001+cai)*temp1*temp3*(1-cai/cao*exp(temp2))

I_non_mod_L = -gca_L*dvf
I_non_mod_N = -gca_N*dvf

mgate_N = rxd.State([cyt, mem], name = 'mgate_N', initial = 0.001581552)
hgate_N = rxd.State([cyt, mem], name = 'hgate_N', initial = 0.973556944)
mgate_L = rxd.State([cyt, mem], name = 'mgate_L', initial = 3.42574e-6)

m_gate_N = rxd.Rate(mgate_N, (minf_N-mgate_N)/tau_Nm)
h_gate_N = rxd.Rate(hgate_N, (hinf_N-hgate_N)/tau_Nh)
m_gate_L = rxd.Rate(mgate_L, (minf_L-mgate_L)/tau_Lm)

ca_N_current = rxd.MultiCompartmentReaction(cai, cao, I_non_mod_N, mass_action = False,
                                        membrane = mem, membrane_flux = True)

ca_L_current = rxd.MultiCompartmentReaction(cai, cao, I_non_mod_L, mass_action = False,
                                        membrane = mem, membrane_flux = True)

leak_current = rxd.MultiCompartmentReaction(xi, xo, gl*(v - el), mass_action = False,
                                        membrane = mem, membrane_flux = True)
How can I record and plot the current through the N-type Ca channel and L-type channel?
adamjhn
Posts: 50
Joined: Tue Apr 18, 2017 10:05 am

Re: Plotting Ca current through different types of VDCC's

Post by adamjhn »

Hi,

Sorry for the delay.
The flux from rxd multi compartment reactions are not stored so can not be directly recorded. However it is possible to infer them by recording the relevant rxd states and species and substituting them into the the f_rate and b_rate.

Here is an example rxd Hodgkin–Huxley model with the calculations for the multi-compartment fluxes and currents.

Let me know if you have any questions about it.
sangwonc
Posts: 10
Joined: Sun Nov 07, 2021 7:13 pm

Re: Plotting Ca current through different types of VDCC's

Post by sangwonc »

Thank you. I'm assuming that one could also infer intracellular Ca concentration as well by recording relevant RXD states and species and using f_rate and b_rate, right?
sangwonc
Posts: 10
Joined: Sun Nov 07, 2021 7:13 pm

Re: Plotting Ca current through different types of VDCC's

Post by sangwonc »

Also, could you explain what f_rate and b_rate are supposed to do? I couldn't find any documentation on them.
adamjhn
Posts: 50
Joined: Tue Apr 18, 2017 10:05 am

Re: Plotting Ca current through different types of VDCC's

Post by adamjhn »

The f_rate and b_rate are the forwards and backward rates of the reaction, provided you are using mass_action=False, they are usually third and fourth positional arguments to rxd, (the backward rate is optional and None by default), for example;

Code: Select all

k_current = rxd.MultiCompartmentReaction(ki, ko, gk * (v - ek), mass_action=False, membrane=mem, membrane_flux=True)
k_current.f_rate == gk * (v - ek)
k_current.b_rate == None
If you specify reactions using the law of mass action, to calculate the flux you would need to multiple the f_rate and b_rate by the relevant concentrations.

You are right, you could calculate the intracellular calcium concentration by from the fluxes, but you can just record it directly, either from the rxd node or the NEURON state, e.g.;

Code: Select all

cavec = h.Vector().record(ca[cyt].nodes(soma(0.5))._ref_concentration)
# if cyt is declared with nrn_region='i' this is the same as
cavec = h.Vector().record(soma(0.5)._ref_cai)
Last edited by adamjhn on Thu Feb 10, 2022 10:52 am, edited 1 time in total.
ted
Site Admin
Posts: 6009
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Plotting Ca current through different types of VDCC's

Post by ted »

Code: Select all

# if cyt is declared with nrn_region='i' this is the same as
cavec = h.Vector().record(soma(0.5)._ref_ica)
Not

Code: Select all

cavec = h.Vector().record(soma(0.5)._ref_cai)
?
adamjhn
Posts: 50
Joined: Tue Apr 18, 2017 10:05 am

Re: Plotting Ca current through different types of VDCC's

Post by adamjhn »

Sorry, Ted is right. It should be;

Code: Select all

cavec = h.Vector().record(soma(0.5)._ref_cai)
for calcium concentration. I've edited my previous post.
Post Reply