Open Access Software

An overview of the CellML API and its implementation

Andrew K Miller1*, Justin Marsh1*, Adam Reeve1, Alan Garny2, Randall Britten1, Matt Halstead1, Jonathan Cooper3, David P Nickerson1 and Poul F Nielsen14

Author Affiliations

1 Auckland Bioengineering Institute, The University of Auckland, Auckland, NZ

2 Department of Physiology, Anatomy and Genetics, Sherrington Building, Parks Road, Oxford OX1 3PT, UK

3 Oxford University Computing Laboratory, Wolfson Building, Parks Road, Oxford OX1 3QD, UK

4 Department of Engineering Science, The University of Auckland, Auckland, NZ

For all author emails, please log on.

BMC Bioinformatics 2010, 11:178  doi:10.1186/1471-2105-11-178

Published: 8 April 2010



CellML is an XML based language for representing mathematical models, in a machine-independent form which is suitable for their exchange between different authors, and for archival in a model repository. Allowing for the exchange and archival of models in a computer readable form is a key strategic goal in bioinformatics, because of the associated improvements in scientific record accuracy, the faster iterative process of scientific development, and the ability to combine models into large integrative models.

However, for CellML models to be useful, tools which can process them correctly are needed. Due to some of the more complex features present in CellML models, such as imports, developing code ab initio to correctly process models can be an onerous task. For this reason, there is a clear and pressing need for an application programming interface (API), and a good implementation of that API, upon which tools can base their support for CellML.


We developed an API which allows the information in CellML models to be retrieved and/or modified. We also developed a series of optional extension APIs, for tasks such as simplifying the handling of connections between variables, dealing with physical units, validating models, and translating models into different procedural languages.

We have also provided a Free/Open Source implementation of this application programming interface, optimised to achieve good performance.


Tools have been developed using the API which are mature enough for widespread use. The API has the potential to accelerate the development of additional tools capable of processing CellML, and ultimately lead to an increased level of sharing of mathematical model descriptions.