shalinshah1993 / SBSCL

The Systems Biology Simulation Core Library (SBSCL) provides an efficient and exhaustive Java implementation of methods to interpret the content of models encoded in the Systems Biology Markup Language (SBML) and its numerical solution.
https://draeger-lab.github.io/SBSCL/
GNU Lesser General Public License v3.0
0 stars 2 forks source link

Remove repeated-steady-scan-oscli test #50

Closed shalinshah1993 closed 6 years ago

shalinshah1993 commented 6 years ago

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"

shalinshah1993 commented 6 years ago

This is also applicable to parameter-scan-2d JUnit test.

draeger commented 6 years ago

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.

matthiaskoenig commented 6 years ago

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.

draeger commented 6 years ago

@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.

shalinshah1993 commented 6 years ago

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.

niko-rodrigue commented 6 years ago

And don't forget that the supported KISAO algorithm can also be a child of the term requested, not only a parent term.

shalinshah1993 commented 6 years ago

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

draeger commented 6 years ago
  1. If an algorighm exactly matches a given KISAO term, use it.
  2. If an algorithm in SBSCL corresponds to a more specific KISAO (child) term, use it.
  3. While the KISAO term is too specific walk up the tree until either condition 1) or 2) is satisfied.
shalinshah1993 commented 6 years ago

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?

shalinshah1993 commented 6 years ago

Added support for finding the closest match using libKiSAO. Confirm it and we can close this issue. https://github.com/shalinshah1993/SBSCL/commit/2411bae03b74f522bccedc9332fe818008a6f47f

shalinshah1993 commented 6 years ago

This issue was moved to draeger-lab/SBSCL#14