Closed shalinshah1993 closed 6 years ago
This is also applicable to parameter-scan-2d
JUnit test.
The KISAO Term 282 identifies an inexact Newton iteration method. If this algorithm is available as Java implementation, we could incorporate it. So far, I haven't checked if there are any free implementations for this specific method.
As far as I understand the KISAO it just defines the method of calculating the steady state. The algorithm is not implemented in SBSCL, but an alternative method for calculating the steady state exists (by direct integration).
I would just give a warning, that the actual algorithm is not supported, and perform simulation with an alternative algorithm. Similar things should occur for integration routines. For instance, KISAO for an Euler integration could be provided, but most simulators don't support it. But they have better routines with adaptive step size which are able to solve the problem. I would just give a warning that the exact algorithm/algorithm parameter is not supported, but try to perform the simulation experiment.
@shalinshah1993: I agree with @matthiaskoenig. While it would certainly be best to use the exact algorithm specified in KISAO, the "find the closest method that can do the job"-approach is better than rejecting the job entirely.
Based on our discussion, this can be addressed by using the tree-like KIASO structure. If an algorithm isn't available in SBSCL, climb up to the parent until an alternative algorithm is found. Also, as @matthiaskoenig mentions, throw a warning to let the user know that some other algorithm is used.
And don't forget that the supported KISAO algorithm can also be a child of the term requested, not only a parent term.
I am able to find the full hierarchy to KIASO in the paper. What is our evaluation criteria for selecting an algorithm? Can you please explain in more detail since I was thinking we just need to find a parent? In other words, how should the distance function
look like for finding the closest match?
Currently, we are already checking if the algorithm offered by SBSCL is subType of one of the desired algorithm. https://github.com/shalinshah1993/SBSCL/blob/fb9c214f02a2a14b2ecaad0d71966c0ed40e65dd/src/main/java/org/simulator/sedml/SedMLSBMLSimulatorExecutor.java#L180
That makes sense! Thanks, also I am assuming you call parent of wanted everytime we can't find it using 1. or 2.
Today we talked about using biojava for querying Kiaso ID's, however, I cannot find its documentation for Kiaso support. I did, however, found an alternative Java library libKiaso which we can use. However, it doesn't have maven central repo. Thoughts?
Added support for finding the closest match using libKiSAO. Confirm it and we can close this issue. https://github.com/shalinshah1993/SBSCL/commit/2411bae03b74f522bccedc9332fe818008a6f47f
This issue was moved to draeger-lab/SBSCL#14
This JUnit test needs to be removed since SBSCL doesn't support simulation algorithm with KIASO ID: 0000282. Currently, it throws an error for it.
01.07 13:34:31 WARNS org.simulator.sedml.SedMLSBMLSimulatorExecutor@418: Cannot simulate task task0 Either the simulation reference is corrupt or the simulation algorithm is not available.
Supported algorithms are: "KISAO:0000033","KISAO:0000030", "KISAO:0000087", "KISAO:0000088", "KISAO:0000019"