From: Rainer M. <ra...@tb...> - 2006-06-20 15:58:55
|
hi, find below a draft for bringing this issue to the SBML list, as suggested by Andrew. could you review? is the problem stated clearly and correctly? Dear SBML Community, As we recently wanted to model variable compartments we realized that our tool - SOSlib - actually does not solve models with variable compartments correctly. We wonder how other tools approach this topic. In summary: SOSlib constructs ODEs as recommended by the SBML specs, e.g.: species X1 in compartment V1, with concentration x1 = X1/V1 species X2 and X3 in V2, with conc. as above Reactions: X1->X2; k1*X1*V1 // a translocation, k1 [1/sec] X2->X3; k2*X2*V2 // a unimolecular reaction, k2 [1/sec] Derived ODEs: dx1/dt = - ( k1 * X1* V1 ) / V1 dx2/dt = ( k1 * X1* V1 - k2 * X2 * V2 ) / V2 the kinetic laws are the SBML specific conversion of `classic' rate law to substance/time units, instead of concentrations/time to allow for easy software handling of multiple compartment models. If however, the volumes in the model are variable with time, i.e. either an assignment rule or a rate rule, these equations would not be correct. A numerical integration routine would start with the initial concentration x(0) and add the changes during time t: x(t) = x(0) + dx/dt * t i.e. x(t) = X(0)/V(0) + dx/dt * t dx/dt is calculated correctly from above ODE because it also accounts for changing compartments by explicit inclusion of the volume in the kinetic law. However, the change of the initial concentration x(0) is not accounted for anywhere. The solver should rather return: x(t) = X(0)/V(t) + dx/dt * t If x is a function of time and of volume V, x(t,V(t)), then the correct ODE would actually be dx/dt = dx/dt + dx/dV * dV/dt Right? We are currently discussing different solutions and their dangers for SOSlib, i.e. how to correctly convert the ODE system to an ODE system in amount/time instead of concentration/time or whether the above partial differential equation could or should be implemented instead. It would be helpful for us to hear how other tools handle variable compartments. And BTW, it might be good to indicate it as good practice NOT to convert parameters e.g. from [1/sec] to [litre/sec] to obtain correct units for SBML kinetic laws, but to explicitly keep the volume in the formula! This would allow changing the compartment size or even making the variable, at least for tools which do it correctly. E.g. the model in the specs, section 5.6 will not be valid anymore if someone wanted to change the volume sizes! Such rather unconvential volume-dependent rate `constants' can be quite dangerous! Rainer Rainer Machne Institute for Theoretical Chemistry University of Vienna Austria |