Week 10: Starting Documentation and Polishing LSODA-Integrator
Hi everyone,
This week was about moving from testing to outreach and deeper documentation.
- I wrote a document for the SBSCL Wikipedia update, and incorporated suggestions from Dr. Draeger.
- I added a default relative and absolute tolerance values for LSODA-Integrator, after discussing it with my mentors.
- We also agreed that some legacy files like
LSODAFunctions
andLSODACommonContext
can now be removed. - I have now sent the announcement emails to relevant mailing lists.
- I have now created a Pull Request with code from the testing phase, which primarily includes SBMLTestSuiteRunner wrapper and some documentation files along with few more changes to improve the readability.
We talked about the next major step which is writing detailed HTML documentation for LSODA, matching the style of SBSCL’s other solver docs.
What’s Next
-
Finalize and publish the updated SBSCL Wikipedia entry.
-
Write comprehensive HTML documentation for LSODA-Integrator.
-
Polish the codebase.
The LSODA-Integrator is now nearly complete from a functionality standpoint — the focus is shifting toward making it easy to use, easy to find, and well-documented for the community.
Till next time,
Bye! đŸ‘‹
In my work with assessing reproducibility of simulators across curated Biomodels, I discovered that default *single* absolute tolerance values are often inadequate. It turns out to be much better to have what we now call an 'absolute tolerance adjustment factor' which is converted into a vector of absolute tolerance values by multiplying by the initial value of all non-zero entries in the 'state vector' (all the values that the solver is solving for). For values with an initial value of zero, you just use the absolute tolerance adjustment factor directly. This is what COPASI did and what Roadrunner now does behind the scenes, and it made them both able to get reasonable values for simulations where before, roadrunner would fail and give nonsensical results.
ReplyDeleteThank you Lucian for sharing this.
DeleteYes, I completely agree with you that having a vector of tolerances is much better than a single default tolerance value. Actually, we have already implemented a way where users can provide state vector specific tolerances (for both relative and absolute tolerances) while running simulations. You can see this document (https://github.com/baranwalayush/SBSCL/blob/testing/src/main/java/org/simulator/math/odes/LSODA/howToUse.md), refer to the 4th point under the usage with SBML models.
Your point about the `absolute tolerance adjustment factor` for the default values sure is better, especially in the case of vast differences between state vector entries and I would be more than happy to implement something similar for the default case within this project.