Last time, I talked about several changes implemented as part of incorporating repeated tasks in simulation core. The final aspect of this implementation is post-processing raw data returned by tasks using data generators so they can be displayed using output.
Post-processing sed-ml results:
Since the output of task execution is changed to return a List<IRawSimulationResults>, the post-processing had to be modified as well. The input to post-processing is a results list so each entry of the list has to be processed and concatenated, similar to some existing tools such as Tellurium. This means to process MathML of each result of an abstract task, and if the result contains more than one entry, merge each post-processed entry to generate one final data generator list.
Iterate over all the data generator specifications and do the following:
- Map variables and parameters with their IDs to resolve MathML.
- Resolve each identifier of MathML.
- Generate new post-processed data by solving the equations described using MathML.
Interface with the library:
After complete implementation of repeated tasks and their post-processing, the next question is how to use it? A simple sample code which can take in the SED-ML file along with the corresponding SBML file to execute simulation can be found here. To execute the simulation and post-process results, run the following lines:
SedMLSBMLSimulatorExecutor exe = new SedMLSBMLSimulatorExecutor(sedml, wanted, sedmlDir); ... Map<AbstractTask, List<IRawSedmlSimulationResults>> res = exe.run(); ... IProcessedSedMLSimulationResults prRes = exe.processSimulationResults(wanted, res);
Here, the wanted keyword is the desired output specified in the Output element of SED-ML file, sedml is the object which contains parsed sedml tree and res contain a mapping between each task and list of results.