draeger-lab / 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
20 stars 13 forks source link

SBSCL expect one of the Output elements to be a time symbol #18

Closed shalinshah1993 closed 6 years ago

shalinshah1993 commented 6 years ago

From @shalinshah1993 on June 15, 2018 0:40

On running repressilator.xml test, I found that it returns a NullPointerException when trying to execute the following plot2D output:

<plot2D id="postprocessing" name="Timecourse after post-processing">
      <listOfCurves>
        <curve id="plot_2__plot_2_0_0__plot_2_0_1" logX="false" logY="false" xDataReference="dg_2_0_0" yDataReference="dg_2_0_1"/>
        <curve id="plot_2__plot_2_1_0__plot_2_0_0" logX="false" logY="false" xDataReference="dg_2_1_0" yDataReference="dg_2_0_0"/>
        <curve id="plot_2__plot_2_0_1__plot_2_1_0" logX="false" logY="false" xDataReference="dg_2_0_1" yDataReference="dg_2_1_0"/>
      </listOfCurves>
    </plot2D>

This is because none of the x or y data references are time symbols.

This is understandable since originally SBSCL was complete command line library and therefore plot2D wasn't supported.

@draeger What do you recommend, when working with SED-ML files the output need not be MultiTable?

Copied from original issue: shalinshah1993/SBSCL#42

shalinshah1993 commented 6 years ago

From @matthiaskoenig on June 15, 2018 9:35

The current DataStructures for SED-ML are completely inadequate to represent SED-ML results. Personally, I would just drop the old DataStructures and create new one which are able to handle the data produced by SED-ML simulations.

Basically IProcessedSedMLSimulationResults should store the DataGenerators!!! not the outputs. The DataGenerators are the real processed results!.

Outputs are afterwards generated from the DataGenerator Multitable.

shalinshah1993 commented 6 years ago

@draeger How can I deal with 2D data using MultiTable assuming that there might or might not be any time column? If not MultiTable, do you have any data structure suggestion?

shalinshah1993 commented 6 years ago

From @draeger on June 30, 2018 21:3

I think, MultiTable should be changed anyway, because it is based on a TableModel from the swing package, which is no longer maintained. In this context, we should rethink if we can make the time column optional.

shalinshah1993 commented 6 years ago

Let's discuss it during our Monday meeting.

shalinshah1993 commented 6 years ago

There are two different class in jlibsedml @matthiaskoenig

IRawSimulationsResult and IProcessedSimulationsResults. The second class directly gives processed data generators as output. This is what currently happens in SBSCL, depending on what data generators Output elements requests for will be available as 2D array data in IProcessedSimulationsResults.

Most of the existing sed-ml tests work except for oscli-nested-pulse and repeated-scan-oscli. Somehow they request for datagenerators but MathML for them could not be resolved as mentioned in #49

shalinshah1993 commented 6 years ago

Currently, the output of running SED-ML file is a 2D double[][] data array which contains information about all the data generators requested by the Output sedml element.

This can be changed in the future depending on whether we keep MultiTable or change it.