CellML
CellML (Cell Markup Language) is an XML-based language for describing mathematical models of biological and physiological systems, especially the ordinary-differential-equation models common in systems biology, cell electrophysiology, and cardiac modelling. It was created for the Physiome Project by David Bullivant, Warren Hedley, and Poul Nielsen at the University of Auckland, with a first working group in 1998 and CellML 1.0 published in 2001. CellML 2.0, the current normative specification, was released in July 2020.
Structurally, a CellML document is built from components, each declaring variables with explicit physical units, and mathematical relationships expressed as declarative MathML rather than procedural code. Components are wired together through connections that map variables between them, and can be organised into encapsulation hierarchies so that nested subcomponents are hidden from non-parent components. This modular graph of components-and-mappings is what makes CellML naturally reusable and what distinguishes it from purely flat formats. CellML 2.0 notably restricts unit definitions to model level, removes the directional connotations of connections, and adds resets for conditional variable reassignment; earlier versions used RDF for metadata and XLink for imports, with CellML 1.1 (2002) introducing the import mechanism for pulling components from external models.
In the graph-data and format-conversion landscape, CellML sits alongside other XML systems-biology and pathway languages such as SBML, SBGN-ML, CellDesigner, BioPAX, and the KEGG-derived KGML. It overlaps most with SBML: both are XML model-exchange formats for reaction and rate-law systems, but CellML emphasises generic mathematics, strict units, and component modularity over SBML's biochemistry-centric species/reaction vocabulary, and the two are often compared and interconverted.
Tooling centres on libCellML, the C++/Python reference library for creating, validating, serialising, and instantiating CellML 2.0 models, and OpenCOR, a desktop application for authoring, simulating, and browsing models. Curated models live in the Physiome Model Repository (models.physiomeproject.org), typically paired with SED-ML simulation descriptions.
Strengths are strong unit handling, component reuse via imports and encapsulation, and a mathematically general MathML core. Limitations include no native support for stochastic or agent-based modelling, uneven support for the full MathML subset across simulators, verbose XML, and a comparatively small ecosystem relative to SBML.
Alternative Names: Cell Markup Language
| Feature | CellML |
|---|---|
| Multiple Graphs per Document | |
| Nodes | |
| Undirected Edges | |
| Directed Edges | |
| Hyperedges | |
| Mixed-directionality Edges | |
| Parallel Edges | |
| Self-loops | |
| Edges on Edges | |
| Nested Graphs in Nodes | |
| Nested Graphs in Edges | |
| Nested Graphs in Graphs | |
| Node Labels | |
| Attributes on Nodes | |
| Attributes on Edges | |
| Attributes on Graphs | |
| Typed Edges | |
Tools(Read & Write)
Frequently Asked Questions
What is a CellML file?
A CellML file stores a graph — its nodes, edges and attributes — in the CellML format (also: Cell Markup Language). See the feature table above for what it supports.
How do I open a CellML file?
Open it in a graph tool that supports CellML, or convert it to a format your tool reads. With GraphInOut you can convert CellML to GraphML, DOT, Connected JSON and more, right in your browser.
How do I convert a CellML file to another format?
Use the Convert from CellML link above: upload or paste your CellML file (input preset to CellML), choose a target format and download the result — free, no install.
