-
-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Speeding things up via linear first integrals #63
Comments
If I understand correctly, would this require solving a system |
What is |
j-th Lie derivative of x[i], the i-th state variable. |
I would not think that the Lie derivatives are necessary. Basically, we are talking about "one" equation |
Not entirely, sorry. I understand the starting idea: we have one linear combination for which we seek coefficients A[i]. We would need to differentiate w.r.t. time several times to obtain a square linear system for A[i], right? I guess I'm confused at this part:
|
Well, I think one could approach this via differentiation but this is very subtle (not to mention computationally demanding): the coefficients of the system will involve parameters and states while the solution will be sought in the parameters only. Maybe discussing this on an example would be a better way:
We would like to find
Since
This is what I meant by "collecting with respect to the degree in x". Does this make more sense now? |
In progress with @StefanVaylBX2023 |
Main idea
Many models of interest (especially, in life sciences) have linear first integrals (for example, conservation of mass, etc.). If there is such a first integral
a_1 * x_1 + ... + a_n * x_n
, wherex_1, ..., x_n
are the states anda_1, ...., a_n
are constants (maybe involving parameters), one can do the following:C = a_1 * x_1 + ... + a_n * x_n
x_1 = 1 / a_1 * (C - a_2 * x_2 - ... - a_n * x_n)
to eliminatex_1
from the systemAs a result, we reduce the number of states by one at the expense of having one more parameter. Since the typical bottleneck of the algorithm is differential elimination, this will very likely speed up the computation.
Motivating example
As a motivating/illustrating example, we consider this CRN model but with only one output:
This model is quite hard, it does not finish in an hour (and I remember trying it earlier, I think it just took all my memory in a couple of hours).
One can observe that
x5(t) + x6(t)
is constant. Thus, we can introduceC1 = x5(t) + x6(t)
and eliminatex5(t)
:Doing the same with first integrals
C2 = x2(t) + x4(t)
andC3 = x1(t) - x2(t) + x3(t) + x6(t)
, we arrive at the following model with only three states:Now global identifiability is successfully analyzed in 60 seconds (and computing the input-output equation takes only 15 seconds)
What to do
The substantial speedup above can be achieved automatically if we can
assess_global_identifiability
The text was updated successfully, but these errors were encountered: