Reading CellML

To start using cellmlmanip, load a model using

cellmlmanip.load_model(path, unit_store=None)[source]

Parses a CellML file and returns a cellmlmanip.model.Model.

Parameters:

unit_store – Optional cellmlmanip.units.UnitStore instance; if given the model will share the underlying registry so that conversions between model units and those from the provided store work.

This uses the cellmlmanip.parser.Parser class. Most users won’t need to worry about this, but its documentation is included below for completeness.

This cellmlmanip.parser module contains the CellML parser and related classes. It reads a CellML model and stores model information in the cellmlmanip.model.Model class. MathML equations are translated to Sympy. RDF is handled by RDFLib.

class cellmlmanip.parser.XmlNs(value)[source]

Bases: Enum

Namespaces in CellML documents

cellmlmanip.parser.with_ns(ns_enum, name)[source]

Returns an ElementTree-friendly name with namespace in brackets

class cellmlmanip.parser.Parser(filepath)[source]

Bases: object

Handles parsing of CellML files

parse(unit_store=None)[source]

The main method that reads the XML file and extracts the relevant parts of the CellML model definition.

Parameters:

unit_store – Optional cellmlmanip.units.UnitStore instance; if given the model will share the underlying registry so that conversions between model units and those from the provided store work.

Returns:

a Model holding CellML model definition, reading for manipulation.

transform_constants()[source]

Standardise handling of ‘constants’.

Once this has been called, the only variables with an initial_value attribute will be state variables, and the initial value will do what it implies - hold the value the state variable should take at t=0.

Non state variables with an initial value are treated as constants. For consistent processing later on we add equations defining them, and remove the initial_value attribute.

class cellmlmanip.parser.Transpiler(symbol_generator=None, number_generator=None)[source]

Bases: object

Handles conversion of MathmL to Sympy exprerssions.

Parameters:
  • symbol_generator – An optional method to create expressions for symbols. Must have signature f(name) -> sympy.Basic.

  • number_generator – An optional method to create expressions for numbers with units. Must have signature f(value, unit) -> sympy.Basic.

static set_mathml_handler(mathml_operator, operator_class)[source]

Change how the transpiler handles a given mathml_operator.

Parameters:
  • mathml_operator – The name of a MathML operator e.g. ‘exp’, ‘true’ etc.

  • operator_class – A class that can handle the given operator e.g. sympy.exp, or a function that creates and returns a sympy object given the operands as arguments.

parse_string(xml_string)[source]

Reads MathML content from a string and returns equivalent SymPy expressions. :return: A list of SymPy expressions.

parse_tree(math_element)[source]

Accepts a <math> element and returns equivalent SymPy expressions.

Note: math_element must be the <math> Element, not the root ElementTree.

Parameters:

math_element – <math> etree.Element object

Returns:

A list of SymPy expressions.

transpile(element)[source]

Convert MathML to Sympy expressions.

Descends the given MathML element node, calling the corresponding handler for child elements, and returns the appropriate SymPy expression.

Parameters:

element – an etree Element of parsed MathML

Returns:

a list of SymPy expressions