NMODL and the Channel Builder.
- Posts: 4
- Joined: Fri Jan 18, 2019 10:58 am
We have been building a model coupling electrophysiology and signal transduction using expanded NEURON. In our debugging process, we decided to validate the modeling of the chemical reactions with another simulator. Simulation results with NEURON are wrong as soon as we introduce enzymatic reactions with KINETIC blocks.
We read this thread viewtopic.php?p=1667
where numerical instability is mentioned in the last message. This doesn't seem to be our problem. We do however use variables in the rate constants. This is an example in which variables are used to compute a dynamic rate parameter based on Michaelis-Menten:
Code: Select all
tempRaf = ((kcat_raf * RasGTPi)/(Rafi + km_raf))
tempRafP = (kcat_rafP * RafPhosphatase)/(RafPi + km_rafP)
~ Rafi <-> RafPi (tempRaf, tempRafP)
In this example, RasGTPi and RafPhosphatase are enzymes involved in opposite reactions phosphorylating and dephosphorylating Raf.
What is wrong with this?
- Site Admin
- Posts: 1607
- Joined: Wed May 18, 2005 3:32 pm
I suspect that the solver has been tricked into thinking the system is linear and can be solved in a single iteration. Ie the changes in
Rafi and RafPi are computed with constant rates (for that time step) that will be computed based on the entry values of Rafi and RafPi.
Unfortunately, my experience is that iterative (Newton) methods to find a fixed point of the equations can have a hard time when states are
in the denominator. e.g x = 1 can be solved but 1/x = 1 cannot be solved by newton iteration. A good way of avoiding the problem is to
explicitly specify the enzyme reactions using the style
~ S + E <-> E* (k1, k2)
~ E* <-> R + E (k3, k4)
for each enzyme.