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 [email protected] 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 mailing list
[email protected]
http://www.cellml.org/mailman/listinfo/cellml-discussion

Reply via email to