CellML API
CellML API Index Page
Introduction
The CellML Application Programming Interface (API) provides a simple interface that applications can use to manipulate and process CellML documents. The interfaces are designed to be independent of any programming language, platform, or vendor, and are expressed in OMG Interface Definition Language (IDL). It addresses both CellML 1.0 and CellML 1.1.
The CellML API Implementation is a full implementation of all API interfaces, and provides an easier way to write programs using CellML models than implementing CellML processing from scratch. You can use it out of the box from C++, Java, Python; it has also been used in the past over CORBA and from Javascript over XPCOM.
Getting started with the API implementation
The CellML API and implementation is a Free / Open Source project, and so you have a choice of either building it yourself from source, or downloading binaries.
You also have a choice of getting the bleeding edge (and possibly broken) version of the API implementation, as it is developed, or getting a version of the API that has been through a bit more testing and has been released.
Released source code and binaries (for Linux, Windows, and Mac) are available at http://www.cellml.org/tools/downloads/cellml_api/releases/ (look under Stable Releases).
If you want to work with the bleeding edge version, you can clone it from Mercurial using:
hg clone http://cellml-api.hg.sourceforge.net/hg/cellml-api/cellml-api/
You can run hg pull -u to keep up to date with changes.
Before doing this, you can see if the code has built and passed tests on all platforms at http://autotest.bioeng.auckland.ac.nz/cellml-build/waterfall (check for green boxes in the row titled 'Last Build').
Once you have obtained the API, you can learn how to write simple C++ or Java programs, and get them running with the API here.
Once you have an idea of how to access parts of the API implementation from your language of choice, it is helpful to explore the interfaces available through the API. These interfaces are documented using Doxygen; generated HTML can be viewed online here.
General information about the CellML API
The CellML API has been designed so that it can support with various ways of parsing and representing XML documents. The University of Auckland implementation is built on top of a Document Object Model (DOM) representation of the XML. However, the CellML API does not expose the DOM to the application except in the cases where it cannot be avoided (these currently restricted to getting the initial Model object and manipulating extension elements. In addition, see the comments about MathML elements below).
The CellML API provides access to the MathML via the World Wide Web Consortium (W3C) MathML DOM. The objects in this API extend from those defined by the DOM core.
Please see the following published article (based on version 1.6 of the API):
Miller AK, Marsh J, Reeve A, Garny A, Britten R, Halstead M, Cooper J, Nickerson DP, Nielsen PF. An overview of the CellML API and its implementation. BMC Bioinformatics. 2010 Apr 8;11:178.
If your software makes use of the CellML API, please cite this article.
Interface definitions
IDL files for the CellML API are available. This is currently the normative reference for the CellML API. The CellML team also plans to release a plain-English definition of the API semantics; this will probably look similar to the API specifications released by the W3C.
The documentation generated from the API can be viewed at http://cellml-api.sf.net/
Implementations
An implementation of the CellML API is complete. See current and planned releases here. You can get the current development branch via Mercurial, at http://cellml-api.hg.sourceforge.net:8000/hgroot/cellml-api/cellml-api. There is an rss feed of changes to the repository available at http://cellml-api.hg.sourceforge.net/hgweb/cellml-api/cellml-api/rss-log. See the build instructions for various platforms. This implementation is written in C++, with mappings to CORBA and Java. It has been designed in such a way that automatic mappings to other languages can be easily added.
Testsuites
A testsuite, designed to test the C++ API, has also been developed, and is available in the source distribution.
Ongoing Work
Bugs and feature requests are put in the tracker. A page drafting the milestones for the next release are available here.


