-
Notifications
You must be signed in to change notification settings - Fork 216
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
libsbml based SBML parser #685
Conversation
Codecov Report
@@ Coverage Diff @@
## devel #685 +/- ##
==========================================
- Coverage 84.62% 84.14% -0.49%
==========================================
Files 43 43
Lines 3909 4105 +196
Branches 892 960 +68
==========================================
+ Hits 3308 3454 +146
- Misses 401 422 +21
- Partials 200 229 +29
Continue to review full report at Codecov.
|
When we last talked your new parser implementation was still faster than both existing versions. Is this due to the parsing of GPR associations or where is the biggest performance problem? |
Biggest performance hit is gprs. Basically one goes from ast node in sbml
to string representation back to ast node in cobra. This requires 2 rounds
of astnode parsing. This will probably give another 10 to 20 percent
performance by just directly translating astnode in each other.
I did a bit of profiling and expect the libsbml parser being 15 percent
slower. Because of the full parsing of all information overhead which is in
this range.
Creating the cobra objects and optlang objects seems to be the main time
the parsers are needing.
So i can bring it down within the 20% slower.
…On Sun, Mar 25, 2018, 22:30 Moritz E. Beber ***@***.***> wrote:
When we last talked your new parser implementation was still faster than
both existing versions. Is this due to the parsing of GPR associations or
where is the biggest performance problem?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#685 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AA29uoe4VyrIWQhzz47k9lsxZAwx6hnmks5th_59gaJpZM4S6M7L>
.
|
That sounds great. You could also check performance when you have symengine installed. |
Honestly none of the time differences look very critical to me. In absolute terms they look pretty small. For small models this does not matter and for large ones the differences are pretty minor. I would rather concentrate on the following things:
Cheers and thanks for all the work. Looks very good! |
All points addressed, all tests passing. |
Hi all,
I want to use this code in production. |
Lack of time 😞 sorry. |
Hi all,
here a first version of the libsbml based SBML parser. This has the full feature set of the old parser and fixes a few smaller bugs I found on the way. All SBML based tests are passing.
The new parser is in the
cobra.io.sbmlnew
module, the tests are intest.test_io_sbmlnew
. This is fully backwards compatible to the existing implementation (same function signatures).I performed some timings and in the end the libsbml version is around 10-15% slower on reading very large models (RECON3D), and around 30-40% slower on writing very large models.
I did not look into any optimizations. Let me know what to change.
Best Matthias