An overview of the CellML API and its implementation

BackgroundCellML 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.ResultsWe 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.ConclusionsTools 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.

[1]  Jacky L. Snoep,et al.  BioModels Database: a free, centralized database of curated, published, quantitative kinetic models of biochemical and cellular systems , 2005, Nucleic Acids Res..

[2]  C. M. Sperberg-McQueen,et al.  eXtensible Markup Language (XML) 1.0 (Second Edition) , 2000 .

[3]  Michael Hucka,et al.  LibSBML: an API Library for SBML , 2008, Bioinform..

[4]  E. Hairer,et al.  Solving Ordinary Differential Equations II: Stiff and Differential-Algebraic Problems , 2010 .

[5]  C. M. Sperberg-McQueen,et al.  Extensible Markup Language (XML) , 1997, World Wide Web J..

[6]  David Riddoch,et al.  The omniORB version 4.1 User's Guide , 2002 .

[7]  Y. Rudy,et al.  Linking a genetic defect to its cellular phenotype in a cardiac arrhythmia , 1999, Nature.

[8]  Brent Stearn XULRunner: A New Approach for Developing Rich Internet Applications , 2007, IEEE Internet Computing.

[9]  J. Lambert Numerical Methods for Ordinary Differential Systems: The Initial Value Problem , 1991 .

[10]  Uri M. Ascher,et al.  Computer methods for ordinary differential equations and differential-algebraic equations , 1998 .

[11]  M. Wells,et al.  Variations and Fluctuations of the Number of Individuals in Animal Species living together , 2006 .

[12]  Cris Kobryn,et al.  Modeling components and frameworks with UML , 2000, CACM.

[13]  Bjarne Stroustrup Exception Safety: Concepts and Techniques , 2000, Advances in Exception Handling Techniques.

[14]  V. Volterra Variations and Fluctuations of the Number of Individuals in Animal Species living together , 1928 .

[15]  Peter J. Hunter,et al.  The CellML Model Repository , 2008, Bioinform..

[16]  Andrew Wallard,et al.  The International System of Units (SI), 8th edition , 2006 .

[17]  F. Krogh,et al.  Solving Ordinary Differential Equations , 2019, Programming for Computations - Python.

[18]  Jon Siegel,et al.  OMG overview: CORBA and the OMA in enterprise computing , 1998, CACM.

[19]  A. Hindmarsh,et al.  CVODE, a stiff/nonstiff ODE solver in C , 1996 .

[20]  Carol S. Woodward,et al.  Enabling New Flexibility in the SUNDIALS Suite of Nonlinear and Differential/Algebraic Equation Solvers , 2020, ACM Trans. Math. Softw..

[21]  David P. Nickerson,et al.  Reference descriptions of cellular electrophysiology models , 2008, Bioinform..

[22]  Jeremy J. Carroll,et al.  Resource description framework (rdf) concepts and abstract syntax , 2003 .

[23]  D. I. Bevan,et al.  Distributed Garbage Collection Using Reference Counting , 1987, PARLE.

[24]  Hiroaki Kitano,et al.  The systems biology markup language (SBML): a medium for representation and exchange of biochemical network models , 2003, Bioinform..

[25]  Robert E. Tarjan,et al.  Efficiency of a Good But Not Linear Set Union Algorithm , 1972, JACM.

[26]  E. Hairer,et al.  Stiff and differential-algebraic problems , 1991 .

[27]  Stephen M. Watt,et al.  Mathematical Markup Language (MathML) Version 3.0 , 2001, WWW 2001.

[28]  Guy L. Steele,et al.  Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley)) , 2005 .

[29]  Brian W. Kernighan,et al.  The C Programming Language , 1978 .

[30]  Lauren Wood Programming the Web: The W3C DOM Specification , 1999, IEEE Internet Comput..

[31]  Rodrigo Weber dos Santos,et al.  CellML and associated tools and techniques , 2008, Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences.

[32]  Peter J. Hunter,et al.  CellML metadata standards, associated tools and repositories , 2009, Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences.

[33]  Peter Hunter,et al.  A strategy for integrative computational physiology. , 2005, Physiology.

[34]  David M. Beazley,et al.  SWIG: An Easy to Use Tool for Integrating Scripting Languages with C and C++ , 1996, Tcl/Tk Workshop.

[35]  David Nickerson,et al.  Practical application of CellML 1.1: The integration of new mechanisms into a human ventricular myocyte model. , 2008, Progress in biophysics and molecular biology.

[36]  Mark Lutz,et al.  Programming Python , 1996 .