ABI CellML Meeting Minutes, 13th October 2010

Present: Dougal Cowan, Andrew Miller, Tommy Yu

Apologies: Randall Britten

This week's agenda:

1) Repository contributions - update

  • No update.

2) PMR2 development - update


  • Tommy: writing more test cases. Simplifiying workspace views using the new testing framework. Finishing migrating Mercurial into its own module.

3) CellML API - update


  • Andrew: Continued to work on TeLICeMS. Updated the interfaces slightly to enable specifying of top-level DOM. To deal with the fact that TeLICeM can be used for both entire CellML expressions, and for MathML expressions, results from TeLICeMS are now provided by two specialised interfaces - one for CellML model results, and one for MathML results. The interfaces share a common base interface, which provides facilities for retrieving parse errors.
  • Andrew: Looked into language used to generate parsers - currently using Flex & Bison. Other options examined were ANTLR and Boost SPIRIT. It appears that the ANTLR C++ parser generator is not yet very stable or usable, so it is likely to bring more work than it saves. Boost SPIRIT is a domain-specific language within C++, which has a number of drawbacks due to the difficulties of writing good DSLs in C++, and the performance of such a parser is also unclear. It therefore looks like sticking with Flex and Bison is the best approach for now.
  • Andrew: Has had email correspondance with Paolo Pannarale from Bari Polytech in Italy, who is using the API. He found that make check doesn't work on his 64-bit version of gcc, due to debug code which doesn't do anything important (tracker item 2731). In addition, he discovered that make install doesn't work with the Java bindings (at present using make install for Java bindings is not recommended, as what should be installed where is unclear), and needed some help getting an example program to work with a different model. Andrew has replied to him about this.


  • Andrew: A meeting was held last week to plan a survey to work out what the important features of the API are for users. It is also apparent that we need to work out why those who are not using the API have chosen not to use it.

4) CellML core specs - update


  • Andrew: ModML - working on diagnostics, working out where a problem has occurred in a model. Is looking at creating a debugger program which allows users to examine the last steps. Causes of unit errors should show up in this history, especially because Haskell uses lazy evaluation, so the code which triggered a problem will often be one of the most recent things evaluated. Has been using GHC's Haskell compiler API, but this has a bug which is stopping this method from working.
  • Andrew: ModML - adding more diagnostics to translation modules. This provides, for example, the equations which have unit imbalances.
  • Andrew: ModML - has now fixed a bug in the reaction module, so that the generated equations now appear to be correct. As a result of this change, the model of hydrogen burning in oxygen gets as far as the numerical solver, where it is currently failing to converge - the reason why still needs to be determined.