LibSBML is a native library for reading, writing and manipulating files and data streams containing the Systems Biology Markup Language (SBML). It offers language bindings for C, C++, C#, Java, JavaScript, MATLAB, Perl, PHP, Python, R and Ruby.
We found a model that didn't work correctly on roadrunner, since there was a piecewise equation that only changed for a window of time that wasn't checked by the CVODE algorithm. Translating the logic to events worked fine, however. It might be nice to have a translator in libsbml that would convert piecewise equations to events, something like (in Antimony)
...piecewise(x, cond1, y, cond2, z)...
changes to:
...piecewise_var1...
piecewise_var1 = z
at cond1, t0=false: piecewise_var1 = x
at cond2 && !cond1, t0=false: piecewise_var1 = y
at !cond2 && !cond1, t0=false: piecewise_var1 = z
We found a model that didn't work correctly on roadrunner, since there was a piecewise equation that only changed for a window of time that wasn't checked by the CVODE algorithm. Translating the logic to events worked fine, however. It might be nice to have a translator in libsbml that would convert piecewise equations to events, something like (in Antimony)
...piecewise(x, cond1, y, cond2, z)...
changes to:
...piecewise_var1...
piecewise_var1 = z at cond1, t0=false: piecewise_var1 = x at cond2 && !cond1, t0=false: piecewise_var1 = y at !cond2 && !cond1, t0=false: piecewise_var1 = z