POOL.DOC

advertisement
Object Type:
pool
Description:
Pool of molecules involved in chemical reactions and
transport between cellular compartments. Keeps track of the
number of molecules resulting from forward and backward
reactions. Uses mean-rate theory which assumes large numbers
of molecules, not probabilities of transitions of individual
molecules.
Does Michaelis-Menten enzyme kinetics when hooked to the
'enz'
object, and standard kinetic reactions with the 'reac'
object.
The MM scheme is modeled as:
k1
k3
Substrate + Enzyme <-----> EnzComplex ----> Enz + Prd
k2
The generic reaction scheme is:
kf
Substrate1 + S2 + .. <----> Prd1 + Prd2 + ...
kb
Note that vol, n and Co are interdependent. vol is never
changed except by the user or by messages. n changes if
Co is
changed.
Co changes if either vol or n is changed.
Volume is
typically scaled by the Avogadro number, so that Co is in
convenient units such as micromolar.
During integration, all calculations are done in terms of
n, and, where needed, vol. Co is calculated as n / vol on
each timestep.
Author:
U. S. Bhalla, National Centre for Biological Sciences,
Bangalore, India. (1993).
----------------------------------------------------------------------------ELEMENT PARAMETERS
DataStructure:
Size:
Fields:
pool_type
[in src/kinetics/kin_struct.h]
Co
Concentration of molecule. Calculated
from 'n' as n/vol.
Initial concentration of molecule.
Co gets set to this value on RESET.
Total concentration of molecule. Used
when applying conservation rules.
CoTotal - Co.
Number of molecules. This is the
bytes
CoInit
CoTotal
CoRemaining
n
nInit
nTotal
nRemaining
nMin
vol
slave_enable
keepconc
consv_flag
value used for all calcultions.
Initial number of molecules.
'n 'gets set to this value on RESET.
Total number of molecules. Used
when applying conservation rules.
nTotal - n
Minimum allowed number of molecules.
Normally zero.
Volume occupied by pool. Often involves
extra units so as to have direct
conversion from 'n' to some sensible
units of Co, such as micromolar.
Flag used to control buffering and
other overrides. Values:
1 - Obey slave message, representing n
2 - Obey slave message, representing Co
4 - Buffering on: n is set to nInit,
Co to CoInit, every timestep.
See below for details.
Flag determining whether to change
concs or n when volume changes
Internal flag keeping track of presence
of CONSERVE and SUMTOTAL msgs
----------------------------------------------------------------------------SIMULATION PARAMETERS
Function:
PoolFunc
[in src/kinetics/pool.c]
Classes:
segment, concentration
Actions:
CREATE
PROCESS
RESET
SET
Messages:
REAC
A B
MM_PRD
[A is increment to n,
B is decrement to n,
where n is number of molecules in pool.
This message is used for hooking up
all reactions and enzymes.]
A
[increment n by A. This message
SLAVE
used for the product of enzymes.
We assume it is irreversible, so there
is no B term]
number
[Sets n or Co to this command
is
number
depending on the slave_enable status,
described below. This message is
used to make concentrations in the pool
follow an external signal.]
REMAINING
CONSERVE
VOL
SUMTOTAL
n
[decrement to nRemaining]
n nInit [This message is used for setting up
conservation relationships.
n from all derived molecules is summed
to do the conservation. nInit is used
during RESET to calculate the total
number of molecules. See notes.]
vol
[volume of pool]
n nInit [This message is used to make a pool
whose n is the sum of that of several
other pools. nInit is used at
RESET to get the initial levels]
----------------------------------------------------------------------------Notes:
The pool has numerous extras used in practical simulations.
Most of these are readily accessed from within kinetikit, which is
the recommended way of developing kinetic simulations. For
completeness, here is a list of features of the pool:
1. Buffering. When slave_enable is set to 4, then all the pool
does is assign n to nInit and Co to CoInit every timestep.
2. Following an external signal. This works when the SLAVE
message is passing in the external number. if slave_enable is
1 then the external number represents n. If it is 2 the
external number represents Co.
3. Conservation relationships. In some cases it helps stability
and accuracy to apply explicit conservation relationships,
rather than rely on the implicit ones that arise from the
numerical integrations. Warning: in some cases explicit
conservation relationships actually worsen stability ! So
try it for each case before relying on it. Conservation
relationships are set up in two phases:
- identify the pool whose value you want to be calculated
from conservation.
- Send CONSERVE messages from all pools to which this molecule
gets converted. Be sure you have found ALL the pools: this is
a very common source of error. For example, you may need to
send a CONSERVE message from enzyme intermediates, which
are represented by 'enz' objects.
4. Summation. In some cases the final amount of an active
species recieves contributions from several independent pathways.
An example is an enzyme whose active site always has the same
activity regardless of the means of activation. The total amount
of the active enzyme could then be represented as the sum of
the active forms from several independent activation pathways.
The SUMTOTAL message is used for such cases.
5. Calculating the amount of the molecule that has reacted, and is
no longer in this pool.
The nRemaining field plus the REMAINING message are used for this.
Again, the REMAINING message must come in from all other molecules
into which this pool may convert. This is mainly useful for
checking
accuracy and stability.
The combination of pools, reacs, and tables is capable in principle
of
implementing very complicated ODEs, not restricted to
chemical reactions. The pools represent the variables, reacs
represent
processes increasing and decreasing variables, and the tables can
twiddle the rate constants of the reacs according to arbitrary
complicated functions. It should be stressed that this is an
extremely inefficient but reasonably general way of doing this.
Example:
Message setup between pools, reacs and enzymes:
For the reaction
kf
2X + Y <======> Z
kb
we would have 3 pools, and 1 reac. The messaging would be as
follows:
addmsg
addmsg
addmsg
addmsg
X
X
reac
reac
reac
reac
X
X
SUBSTRATE
SUBSTRATE
REAC
REAC
n
n
A B
A B
addmsg
addmsg
Y
reac
reac
Y
SUBSTRATE n
REAC
A B
addmsg
addmsg
Z
reac
reac
Z
SUBSTRATE
REAC
n
B A
Some points about this messaging scheme:
1. We need N sets of SUBSTRATE and REAC messages between a pool and
a reac, where the order of the reaction for that pool is N.
2. The Z pool, which is the product, has the A and B state
variables
reversed in the message. This is because any decrease in X or Y is
an
_increase_ in Z.
Setting up the enzymatic reaction:
Sub + X --> Prd
We normally put the enzyme site enz as a child of the pool which
represents the enzyme.
create enz X/enz
A given pool can have any number of enzyme
'sites'. This is required when an enzyme has different levels
of activity for different substrates, as each of the enzyme 'sites'
can then be given different rates. The messaging would look like
this:
addmsg
addmsg
X
X/enz ENZYME
X/enz X
REAC
eA B
addmsg
addmsg
sub
X/enz SUBSTRATE
X/enz sub
REAC
n
sA B
addmsg
X/enz prd
MM_PRD
n
pA
Some points about this messaging scheme:
1. In the irreversible Michaelis-Menten model we are using, the
enzyme cannot reduce the level of the product. So there is only one
term required in the outgoing message, and no incoming message from
the product to the enzyem
2. If this scheme doesn't suit you, you can always build better
enzyme models using combinations of reacs and intermediate pools.
Download