Week 5: Stepping into SBML

 Hi readers,

This week marked a subtle shift in focus — from writing core components to understanding and aligning LSODA with SBSCL’s broader infrastructure. It wasn’t my most productive week in terms of code commits, but it was certainly rich in learning and architectural clarity.

Understanding SBML

The week began with me diving deep into SBML (Systems Biology Markup Language) — not just from a theoretical perspective, but also to understand how it flows through SBSCL.

  • I read the document shared by Dr. Funahashi (translated it to English from Japanese first, thanks to Google Translate). I also watched the video shared by Dr. Dräger. Both were really helpful.

  • I explored SBMLSimulator, which provided concrete examples of how SBML models are parsed and simulated.

Thanks to these resources, I finally got a clear picture of how:

  • SBMLInterpreter parses the SBML file and constructs the mathematical model.

  • Multitable stores the simulation results and prepares them for output or analysis.

With the understanding of Multitable set, I was now ready to check the integration of LSODA with the SBML parsing pipeline within SBSCL.

Progress this week

  • Wrote more system-level tests to further validate LSODA’s performance.

  • Added multiple exception classes to handle different edge cases and failure modes in the LSODA algorithm — for example: TooMuchAccuracyException, IllegalInputException, MembersNotInitializedException,  MaxStepExceededException and others.

  • Refactored the LSODA driver function to integrate these exceptions in a structured and clean way.

  • Tested the LSODA algorithm with a real SBML file input — a key step toward full integration with SBSCL.

Mentor Meeting

I had a very insightful discussion with Taichi this week. We went over my recent progress, and he shared several helpful suggestions to improve the design and how I can follow OOP principles in a better way. 

One key point we all discussed was, how well does our LSODA implementation perform compared to SBSCL’s existing Rosenbrock solver and the reference libLSODA implementation in C. I gathered the results from all these solvers and matched it with the actual results (I used the 00001 test case from SBMLTestSuite for this testing). We found that LSODA, with absolute and relative tolerance value of 1e-12, performed better than the Rosenbrock solver and the former's results were almost equal to the libLSODA's results. I'll be focusing ore on this in coming weeks. 

Unfortunately, in between the meeting while I was sharing my screen, my system froze and I had to drop from the call mid-discussion. I guess the reason behind this was my RAM got completely occupied because I had opened multiple workspaces and on top of that multiple tabs in my browser, will keep that in mind from next time. We decided to continue any pending points over Slack.

Now, I will start working on testing the algorithm against SBMLTestSuite.

Till then,
Bye👋


Comments

Popular posts from this blog

Week 7: Events, Exhaustion and Evaluations

My GSoC 2025 Journey Begins

Week 1: Coding Period Begins