Biomedical Engineering Reference
In-Depth Information
The CellML API is the software used to read and write CellML models and to pro-
vide a number of services, listed below, that are associated with the use of CellML
models. The API can be viewed as a collection of interfaces that describe objects
from CellML models, together with operations and attributes on each object. It is
formally described in IDL 10 . Bindings describe how the IDL maps to particular pro-
gramming languages. Bridges describe how to access the objects, operations, and
attributes of one binding from another one, and vice versa. Documentation of the
API is provided via Doxygen style comments on each interface.
Along with the API, a reference implementation is provided. This is a full Open
Source implementation of all API interfaces, written in C++ (the binding is called the
Physiome C++ Mapping or PCM). Bindings have been written between PCM and
Java, PCM and Javascript (via XPCOM), PCM and Python, and PCM and CORBA.
The goal is to provide a common interface between implementations (CellML li-
braries) and applications, so that implementations are interchangeable and applica-
tions can efficiently communicate parsed models. This makes it easier for applica-
tions to process CellML properly, and aims to increase support for, and the correct-
ness of, CellML processing. It also avoids unnecessary duplication of effort spent
on CellML processing software.
The API is divided up into a 'core' part (providing the basic data model) and ser-
vices. The core provides an object for every element type. MathML is accessed using
the W3C MathML Document Object Model (DOM) specification and extension el-
ements are accessed via the W3C DOM Specification. Optionally, implementations
can provide access to the full W3C DOM alongside access via the API (the reference
API does this).
The API services are as follows: The CellML Variable Association Service
( CeVAS ) makes dealing with variables connected to each other in multiple com-
ponents a lot easier. The MathML Language Expression Service ( MaLaES) allows
MathML fragments to be converted into text based expressions. This is used as part
of the CCGS service (discussed below). The language is described in a format called
MAL. The CellML Units Simplification and Expansion Service ( CUSES) allows
CellML Units to be resolved into the base units they are made up of, thus facilitating
unit comparison. The CellML Code Generation Service ( CCGS ) allows models to
be translated into imperative code. The MaLaES transformer can be provided so that
a wide range of languages are supported (some, like FORTRAN77 do, however, re-
quire substantial post-processing). The CellML Language Export Definition Service
( CeLEDS and CeLEDSExporter) provides an XML wrapper around MAL. The
CeLEDSExporter provides an XML description of all configurable parts of CCGS
code generation, so that a single XML file can define an imperative language to
generate code in. The CellML Integration Service ( CIS) is used to run numerical
simulations of models. Results (or reasons for failure) are provided back to the ap-
plication by a call-back interface as they come in. Parameters can be perturbed via
the API without recompiling the model, e.g. for sampling-based sensitivity analy-
ses. The Validation Against CellML Specification Service ( VACSS) allows models
10
Interface Description Language. See www. OMG .org/cgi-bin/doc?formal/02-06-39
Search WWH ::




Custom Search