CellML Discussion List

Text archives Help


[cellml-discussion] PCEnv and CellML API


Chronological Thread 
  • From: ak.miller at auckland.ac.nz (Andrew Miller)
  • Subject: [cellml-discussion] PCEnv and CellML API
  • Date: Fri, 27 Oct 2006 13:02:28 +1300

Steve McKeever wrote:
> Hi Andrew,
> For the Progress in Biophysics focused issue I need to say something
> about both PCEnv and the CellML API. David Nickerson has sent me the
> links to the API files but there doesn't seem to be much usable
> documentation. Any suggestions?
The CellML API documentation is currently inline in the IDL (i.e. the
interface is supposed to be self-documenting). It would be useful to
also produce a document (similar to the W3C DOM specification) that
moves this into a formatted document, but we don't have anything like
that yet.

The best link for the API specification would be:
https://svn.physiomeproject.org/svn/physiome/CellML_DOM_API/trunk/interfaces/CellML_APISPEC.idl
This is the product of collaboration with the CellML community to
produce an API which everyone is happy with. Efforts have been made to
make the comments in the IDL produce a specification which is as
unambiguous as possible. If you can find anything in there which you
think is ambiguous, or which is written in confusing language, please
bring it up on the cellml-discussion at cellml.org mailing list, so it can
be cleared up.

Note that the CellML API is divided roughly into modules:

Core: The above IDL file. This contains everything needed to work with
CellML documents by traversing through them.
CellML Events:
https://svn.physiomeproject.org/svn/physiome/CellML_DOM_API/trunk/interfaces/CellML_events.idl

. This allows event consumers to register to receive notifications when
certain parts of the underlying CellML model gets changed.

The above two modules are the only 'mandatory' modules in the CellML DOM
API implementation written at the Bioengineering Institute, others must
be turned on with --enable- flags at configure time.

CellML Context:
https://svn.physiomeproject.org/svn/physiome/CellML_DOM_API/trunk/interfaces/CellML_Context.idl

. This keeps track of a hierarchy of models, as well as generalised
annotation data, and the tools / services which are open. This allows
multiple tools to inter-operate on a single system, with a single list
of open models.

CCGS:
https://svn.physiomeproject.org/svn/physiome/CellML_DOM_API/trunk/interfaces/CCGS.idl

. This service generates C code for a CellML model.

CIS:
https://svn.physiomeproject.org/svn/physiome/CellML_DOM_API/trunk/interfaces/CIS.idl

. This service integrates CellML models (representing systems of ODEs).


I have developed implementations of all of the above interfaces. I have
also implemented the W3C DOM level 2 (core and events), and W3C MathML
DOM, because these are included by reference from the CellML API
specification, and this code is also in the CellML_DOM_API source tree.

The implementation:
1) Is implemented using a mapping called the Physiome C++ Mapping (PCM).
This mapping could do with more documentation (there isn't much yet).
You can look at the tests in
https://svn.physiomeproject.org/svn/physiome/CellML_DOM_API/trunk/tests/CellMLTest.cpp

for an example of the mapping.

The code which maps IDLs into C++ can be found in
https://svn.physiomeproject.org/svn/physiome/simple_interface_generators/trunk/omniidl_be/simple_cpp/cxxheadergen.py

(which calls methods from omniORB's omniidl framework, as well as from
other files in the same directory).

2) Can be accessed across CORBA, because there is a PCM <=> CORBA C++
mapping bridge. This is used to allow PCEnv to access the CellML API,
and is also used to provide the "Procedural code" service on the CellML
website (for an example, see
http://www.cellml.org/models/beard_2005_version01/pmr_view_model_code).

Regarding PCEnv:
The PCEnv manual is primarily targeted at users. You can see it by
downloading the latest binary snapshot (traverse down from
ftp://ftp.bioeng.auckland.ac.nz/pub/physiome/pcenv/snapshots, the
subdirectory you go into depends on what platform you are running), and
accessing Manual on the Help menu of PCEnv. You could alternatively grab
the manual
https://svn.physiomeproject.org/svn/physiome/pce/trunk/chrome/content/help/manual.html,

although the stylesheet reference will be wrong so the page will look
different.

Best regards,
Andrew




  • [cellml-discussion] PCEnv and CellML API, Andrew Miller, 10/27/2006

Archive powered by MHonArc 2.6.18.

Top of page