GSoC Week 5

Hi,


As discussed in the last blog, I started working on my first milestone of adding support for the SBML L3V2 models to SBSCL. This blog contains a summary of the meeting with the new features I added and the issues I worked on and fixed this week to add SBML L3V2 support. So, let's quickly dive in summary:


  • The main suggestion from the mentors in the meeting was that I should make GitHub issues for each of the new problems (similar problems in a single issue) I get and discuss them on GitHub. All new issues can be found at this link.

  • We talked about issue #38 and found out that now that test case works fine (maybe I was making some mistake in the values earlier).

  • Then, we discussed the issue that SBML L3V2 allows now for the reaction without reactants and products and currently got an issue for these models. But afterward, I found that there was only a warning that the model is without reactants and products. The issue was that rules were dependent on the kinetic laws and were initialized before kinetic laws, leading to the wrong result. Just initializing rules after kinetic laws solved the issue. Link to the issue in GitHub.

  • I just told mentors that after changing the absolute and relative tolerances to 1E-9 (min. of tolerances given in settings file of all the test cases of SBML Test Suite), the runtime was increased much more. And they suggested me to make the tolerances 1E-3 of the tolerances given in the settings file of that particular test case and on updating that fixed the runtime. With this, they also suggested making variables for hardcoded tolerances for easy manipulations later on.

  • Some of the SBML L3V2 models failed as there was no implementation for the FUNCTION_QUOTIENT, FUNCTION_REMAINDER, MIN, MAX, and IMPLIES in SBSCL. An issue #42 was opened for that. I added the functions this week, and now the models run fine.

  • This week's main work was adding rateOf function to SBSCL, which was introduced in SBML L3V2 models. Issue #43 was created for discussions about it. I implemented the rateOf feature this week, which can be seen at this link. All the cases of calculating rateOf are referenced from the SBML L3V2 specification. Only the functionality of delay is currently not added to rateOf, which I will be working on next.

  • In the meeting, we also discussed to make a different class for the initialization of the SBMLinterpreter class. This will help to find problems, and solving them can improve the runtime. Currently, all the things seem to be in just a single class.

  • With this, I also updated all the occurrences of compileBoolean to compileDouble in the ASTNodeInterpreter class which made some failed issues pass now.

  • Also, this week, I identified that SBML L3V2 models also support more than two children for the RELATIONAL_GT (>), RELATIONAL_GEQ (≥), and other similar functions. When there are more than two children, say a,b,c,d, and the function is RELATIONAL_GT, then it should check the condition a>b>c>d and give results accordingly. It has been resolved now in this commit.

  • I also encountered another issue about the FunctionDefinition (issue #45) and trigger (issue #44), which I will be discussing in my next blog.


Complete code is updated in the testrunner branch in my forked repository linked here. I have provided links for all the issues in the post where you can get a detailed description of the issue.


Regards!


Comments

Popular posts from this blog

Starting Google Summer of Code 2020

GSoC Week 10

GSoC Week 11