Volume and units in KINETIC blocks with COMPARTMENT
Posted: Tue Mar 30, 2010 12:42 pm
Hello to all,
I am interested in building a model that incorporates ion diffusion. I have read the chapter on 'Expanding NEURON with NMODL'. I've also run the code examples from that chapter and played with them to work out how to build my own stuff, etc. Overall I found it very helpful and interesting. However, there is still one source of conceptual confusion for me that stems from examples 8 & 9, which describe calcium diffusion/pump models. I've taken the code from these models to build my own simple model that I can successfully run - with the expected results as well. :) But I haven't been able to work out exactly what's going on in it to my own intellectual satisfaction. I've tried looking at other posts currently here on the forum, but nothing really explained it for me. What I cannot get my head around is how the COMPARTMENT statement uses the volume expression. The text explains it by saying:
Now, the variables vrat and frat are unitless, diam is in um, and DCa is in units of um2/ms. As such, the volume expression in the COMPARTMENT statement is actually in units of um2, i.e. an area, not a volume! Moreover, as I understand it, the kinetic expression here specifies a derivative for ca that would work out to DCa*frat[i+1]*(ca[i+1] - ca), which gives us units of (um2/s)*(mol/L) = (1e-9)/(m*s). So, the left-hand side has to be multiplied with an area, and not a volume?!? Thus, I can see that the code "works", e.g. the units are internally consistent, but I do not see how this makes sense anymore. Our derivative specifies a change in mol per m*s, but what is that m there? The length? The diameter? I would sum up my conceptual problem with these two questions:
1. Don't we want an extensive variable to be calculated? Why do we still want another 1/m kicking around in our derivatives?
2. What is actually getting calculated by neuron in the kinetic statement? I thought we were going to calculate the total mols flowing in or out of the compartment per second, but we seem to be calculating something different.
I'm sure my confusion stems from my lack of familiarity with concentration dynamics and kinetic models. But, I would really appreciate some explanation as to what is going on here, as the text seems to contradict the code and I've hit an intellectual brick wall.
Thanks very much,
Blake
I am interested in building a model that incorporates ion diffusion. I have read the chapter on 'Expanding NEURON with NMODL'. I've also run the code examples from that chapter and played with them to work out how to build my own stuff, etc. Overall I found it very helpful and interesting. However, there is still one source of conceptual confusion for me that stems from examples 8 & 9, which describe calcium diffusion/pump models. I've taken the code from these models to build my own simple model that I can successfully run - with the expected results as well. :) But I haven't been able to work out exactly what's going on in it to my own intellectual satisfaction. I've tried looking at other posts currently here on the forum, but nothing really explained it for me. What I cannot get my head around is how the COMPARTMENT statement uses the volume expression. The text explains it by saying:
Okay, that makes good sense to me. We've got some code that is going to specify time derivatives of Ca concentration, i.e. d(mol/L)/dt which is insensitive to volume, but our flux tells us about the rate of Ca entry or exit (mol/s), which will have different effects on concentration based on the volume. So, we've got to multiply the concentrations by a volume to make the units work out. Got it. However, the example code totally confuses the issue for me. Here is the code from example 8:...the STATEs ca[ ] are intensive variables (concentration, or mass/volume),...(but) flux is the time derivative of an extensive variable. This disparity is corrected by specifying STATE volumes with the COMPARTMENT statement... The volume merely multiplies the dSTATE/dt left hand side of the equivalent differential equations, converting it to an extensive quantity and making it consistent with flux terms in units of absolute quantity per time.
Code: Select all
COMPARTMENT i, diam*diam*vrat[i] {ca CaBuffer Buffer}
...
~ca[i] <-> ca[i+1] (DCa*frat[i+1], DCa*frat[i+1])
...
1. Don't we want an extensive variable to be calculated? Why do we still want another 1/m kicking around in our derivatives?
2. What is actually getting calculated by neuron in the kinetic statement? I thought we were going to calculate the total mols flowing in or out of the compartment per second, but we seem to be calculating something different.
I'm sure my confusion stems from my lack of familiarity with concentration dynamics and kinetic models. But, I would really appreciate some explanation as to what is going on here, as the text seems to contradict the code and I've hit an intellectual brick wall.
Thanks very much,
Blake