Download Links

Simulate 3D | SBW (Win32) | Bifurcation Discovery | FluxBalance

Thursday, August 25, 2011

Release of libSBML 5.1.0 (b0)

And another release done in time for ICSB and COMBINE. This latest release of libSBML not only contains a number of bug fixes and general improvements, such as:

  • the ability to obtain elements via getElementBySId() and getElementByMetaId()
  • a better way to build Matlab bindings

But also a new Conversion API.

Conversion API

So what is so special about it, and how would you use it? Previously we had a number of additional functions such as:

  • setLevelAndVersion
  • expandFunctionDefinitions
  • expandInitialAssignments

on the SBMLDocument. This meant that the document had to know how to do all these operations. Now we went ahead and introduced just one more level of abstraction:

  • SBMLDocument::convert(ConversionOptions options)

When called this function will look through a registry and find the best converter that matches the options (uhm … or none, if that might be the case, in which case the conversion would fail). Then that converter runs on the document to change it. And reports the status.

We have created converters for the tasks mentioned above: setLevelAndVersion, expandFunctionsDefinitions, expandInitialAssignments and also stripPackage (which removes a specific SBML L3 package from the current document).

Registry

The biggest advantage of course is that all these converters are available from a registry, that means:

  • it is possible to replace existing converters
  • and to add new ones!

I have started with a first flattening converter (not complete yet) for the COMP package. So this might be something that package writers might want to consider, perhaps they would like their package to serialize to a Level 2 annotation or some such thing!

More on this at COMBINE, I hope to see you there.

SBML logo

No comments: