GSoC Week 4

Hi,


Last week, we had our first meeting after the coding period started on the 2nd of May. Again, excellent experience and discussed many new issues I encountered in the week. We mainly discussed the FBC (Flux Balance Constraints) issues where I paused in the last blog and the new problems I got in running the SBML Test Suite models. Here’s the complete summary of the meeting with the weekly progress of work done:

  • Continuing with the last blog, the first discussion we did was on resolving the FBC model issues. We found out that there was an issue in checking the namespace of the FBC model in JSBML. We opened a GitHub issue for the same in JSBML (issue #216). Currently, we resolved it by changing the method of getting namespace to getting the FBC package version until JSBML solves it [Commit Link]. The results of FluxBalanceAnalysis were somewhat scrambled up, which I made correct using a hashmap with key as reaction id and value as its flux.

  • We decided to rename the CobraSolver class to FluxBalanceAnalysis to make it more generalized.

  • SCPSolver had some restrictions as listed below:

    • One is that it does not allow the same values for lower bounds as well as upper bounds. It was implemented for fbcNamespace2 but not for fbcNamespace1.

    • And it did not allow the infinite values for any of the bounds.

  • Both things have been implemented now. An epsilon value (1E-10) is added to the upper bound when both upper and lower bounds are the same. And when the bounds are +infinity or -infinity, then they are made as +MAX_DOUBLE and -MAX_DOUBLE respectively. All these are handled in the adjustBoundMetric() method (Link to the method).
  • Also, the FBC models in the SBML Test Suite, as well as the SBML Test Runner Wrapper, are now tested using the Flux Balance Analysis, which were tested before using the SBML Simulator, which obviously gave wrong results.
  • All the issues above and the ones resolved in the previous blogs were merged in the main SBSCL repository through PR #40 this week by resolving some requested changes after the review from mentors.
  • Then for the SBML Test Suite tests failing with small deviations, the main suggestion from mentors to make the tolerances more strict.
  • After this, I found the minimum of all the tolerances from the settings file of each test case of the SBML Test Suite. And made the absolute as well as relative tolerance for a particular reaction to be 1E-3 times these minimum values. With this, the models which failed with small deviations started to pass.
  • We also discussed the issue for the column name time. We decided to change the SBSCL to give the output column name as time instead of Time. With this, my mentor Andreas Dräger suggested that when in general, comparing two strings in a case-insensitive manner, use equalsIgnoreCase() instead of changing the string to lowercase.
  • With this, I also started to work on SBML L3V2 issues to complete my first milestone for this project.
  • I solved some of the issues in the week. All are listed here:

    • Updated the check for the fast reaction in SBSCL as SBML L3V2 models do not have any fast property for the reaction.

    • The new SBML L3V2 models are now allowed to have initial assignments, constraints, and some other features without Math. It created some issues which I resolved by adding some checks.

    • Added the cases for all the logical operators in the compileDouble method of ASTNodeValue class.

    • Updated the piecewise function in the ASTNodeInterpreter class.

Also, some of the more SBML L3V2 issues that failed tests were found before the next meeting, which I will discuss in my next blog post. So, stay tuned for that!

The updated code can be found in my forked repository at the testrunner branch.

Regards!

Comments

  1. Good good, Hemil! Lots of weekly progress. Here are some comments:

    Please define the acronym on the first use (in this case FBC)

    Since maven is auto-generating javadoc for you, maybe you can add URL to the method adjustBoundMetric() documentation or link to the line in the code where you committed it.

    "All the issues above and" => "All the issues above were"

    FBC models use FBA and they failed. can you elaborate why? Comment a little on both the methods!

    ReplyDelete
    Replies
    1. Hi Shalin,

      Sorry for the late reply as I saw your message just now. I have updated the blog as per your comments.

      Just didn't got what does the last comment says. Can you please elaborate it once?

      Delete

Post a Comment

Popular posts from this blog

Starting Google Summer of Code 2020

GSoC Week 10

GSoC Week 11