I wrote a mechanism (in mod) for the longitudinal diffusion (as well as transformation) of a user-defined ion. The syntax seemed fine, and the compiler didn't pick up any problems. However, when I tried to run the program in hoc, the ion didn't diffuse. I don't know what's going on. Can someone look over my code and see if there's something I'm missing? Thanks!
Here's my kinetics block:
KINETIC state{
COMPARTMENT i, PI*diam*diam*(L/nseg) {GTPi}
~Oro+GTPRecep<->OroGTPRecep, (K1, K2)
~OroGTPRecep<->GTPRecep+GTPi (K3, K4)
~GTPi<->GTPDec (KD, 0)
LONGITUDINAL_DIFFUSION i, DFree*diam*diam {GTPi}
~GTPi<<(-iGTP*PI*diam/(2*FARADAY))
}
(Oro, GTPi are intracellular concentrations of 2 different ions. GTPRecep is a GTP receptor. OroGTPRecep is the oro-GTP receptor complex. GTPDec is the GTP decay mechanism. K1~K4, KD are kinetic constants).
More Concerning Longitudinal Diffusion
-
- Site Admin
- Posts: 6384
- Joined: Wed May 18, 2005 4:50 pm
- Location: Yale University School of Medicine
- Contact:
Sounds like it's going to be an interesting model when you're finished
with it.
First question: did you check for units consistency with modlunit? This would
probably have detected the fact that the COMPARTMENT statement is
dimensionally inconsistent, because it should not involve L. It shouldn't
involve nseg, either, but I don't think modlunit will catch that error. Also,
modlunit probably wouldn't have picked up the apparently superfluous i--
superfluous because the kinetic scheme, as written, treats each entire
segment as single compartment. But it would have pointed out dimensional
inconsitencies, which might be present in code that was not included with
your original post, and which might introduce scaling errors involving
many powers of 10. A few thousands or millions here or there might
incorrectly make diffusion vanishingly small.
Second question: do you really want the "GTP ion" to have a valance of 2?
If yes, then does its USEION statement declare that?
Third question: do you have any idea of the spatial scale of diffusion of the
"GTP ion"? That will suggest the appropriate spatial grid for longitudinal
diffusion, and may indicate whether you also need to consider radial
diffusion--or, if GTP just gets destroyed before it has a chance to move
very far, whether all of the "GTP action" should take place in a thin shell,
or a small number of thin shells, just inside the cell membrane, surrounding
a central core (with fixed GTP concentration) that occupies most of the
volume of any segment. If GTP cannot move very far before it is consumed,
then if segments are much longer, you won't see much solute flux
between longitudinally adjacent compartments.
with it.
First question: did you check for units consistency with modlunit? This would
probably have detected the fact that the COMPARTMENT statement is
dimensionally inconsistent, because it should not involve L. It shouldn't
involve nseg, either, but I don't think modlunit will catch that error. Also,
modlunit probably wouldn't have picked up the apparently superfluous i--
superfluous because the kinetic scheme, as written, treats each entire
segment as single compartment. But it would have pointed out dimensional
inconsitencies, which might be present in code that was not included with
your original post, and which might introduce scaling errors involving
many powers of 10. A few thousands or millions here or there might
incorrectly make diffusion vanishingly small.
Second question: do you really want the "GTP ion" to have a valance of 2?
If yes, then does its USEION statement declare that?
Third question: do you have any idea of the spatial scale of diffusion of the
"GTP ion"? That will suggest the appropriate spatial grid for longitudinal
diffusion, and may indicate whether you also need to consider radial
diffusion--or, if GTP just gets destroyed before it has a chance to move
very far, whether all of the "GTP action" should take place in a thin shell,
or a small number of thin shells, just inside the cell membrane, surrounding
a central core (with fixed GTP concentration) that occupies most of the
volume of any segment. If GTP cannot move very far before it is consumed,
then if segments are much longer, you won't see much solute flux
between longitudinally adjacent compartments.
Ted,
Thanks for the last reply. I am still working on the model. One quick question though: if the compiler doesn't pick up any errors with LONGITUDINAL_DIFFUSION, does it mean that there definitely is diffusion, and that the reason why it's not observed macroscopically is because of unit inconsistencies? Thanks!
Thanks for the last reply. I am still working on the model. One quick question though: if the compiler doesn't pick up any errors with LONGITUDINAL_DIFFUSION, does it mean that there definitely is diffusion, and that the reason why it's not observed macroscopically is because of unit inconsistencies? Thanks!
-
- Site Admin
- Posts: 6384
- Joined: Wed May 18, 2005 4:50 pm
- Location: Yale University School of Medicine
- Contact:
It only means that the compiler passed the code without gagging. It is not
a guarantee that the compiled mechanism generates valid results. In
programming, the most treacherous errors are the ones that allow code
to run to completion without crashing or emitting an error message.
Whenever trying anything new, always run tests to verify that what you
get is what you should have gotten.
a guarantee that the compiled mechanism generates valid results. In
programming, the most treacherous errors are the ones that allow code
to run to completion without crashing or emitting an error message.
Whenever trying anything new, always run tests to verify that what you
get is what you should have gotten.