CellML.org - Meeting Minutes 19 September 2000
October 2000 31 October 2000 24 October 2000 08 October 2000 06 October 2000 05 October 2000 04 October 2000 02 October 2000 01 October 2000 September 2000 28 September 2000 22 September 2000 19 September 2000 18 September 2000 13 September 2000 12 September 2000 11 September 2000 05 September 2000 |
Author: 1 SummaryAgain, this document is not just limited in scope to meeting minutes, but also contains what might potentially be parts of the CellML specification, and some documentation created in preparation for upcoming meetings. Two meetings occurred on Tuesday the 19th of September, the first was a teleconference with Melanie at Physiome, and the second was attended only by the Auckland team mid-afternoon. 2 Physiome Teleconference2.1 SummaryPrior to the September 19 teleconference, Melanie had submitted a list of priorities for CellML development. The Auckland team was proud to have knocked off the first one (variable role/scope/privileges) with its work from the previous day (see Section 4 of the minutes), a project which actually still required some further work. Grouping, which was the second priority, was suggested as a possible mechanism for handling the specification of reactions in pathway models, and some convergence to the "grouping with root components" scheme presented in Section 3.2 of the September 18 minutes was noted. 2.2 Role / Scope / Privileges
David was still dissatisfied with the solution proposed to the variable role problem in Section 4 of the September 18 minutes. It turned out that this was mainly due to a misunderstanding as to the meaning of the value
For the record, David's solution was to split up the interfaces completely. At the top level, a component has a public interface which is a list of variables with role Of course, it is debatable whether we actually that extra functionality — is anyone ever going to want to have a variable in the public interface that isn't in the private interface? Probably not. But there is no reason not to provide this functionality if it can be done in an obvious and self-consistent manner. 2.3 AdjacentnessOne of the more disturbing outcomes of the morning teleconference was the possible demise of the relationship formerly known as is-next-to. It appears that there is very little support for the inclusion of this kind of information in the CellML data model, particularly as it wouldn't fit into the grouping scheme discussed in the previous section, and would probably have to be kept as a property of a connection. This kind of topic always brings a lot of emotion to the surface as it is really edging well into the realm of rendering information, not model information, but I still think that it's possible that this is on the model information side of the line. 3 Variable Interface Specification3.1 SummaryWhen this section was originally written, it was thought that variable interface specification had been largely agreed on during the morning teleconference. In fact this was not the case, although as usual, the argument revolved around a lack of understanding of the documentation (the original of this section as it happened.) The BS-generation department at Auckland had been busy all morning working on the most obfuscated, least obvious description of what had been agreed on. Luckily this has been fleshed out and elaborated in the current version, with diagrams added. (This doesn't necessarily make the document any clearer, but it does make it longer!) Note that David persisted in pushing the implementation of variable interface specification described in Section 2.2. Poul was also originally not convinced. As neither could actually point out any advantages over Warren's implementation (described below in Section 3.4), they were eventually forced to concede that the increased functionality and conciseness of Warren's implementation was vastly superior. 3.2 Some TermsBefore attempting to define the interface system for variables in CellML let us define some terms that allow us to easily describe the important sets of components in a network, with respect to a particular component, which will be referred to as the current component. The set of all components immediately encapsulated by the current component will be referred to as the encapsulated set. The parent-and-sibling set refers to the remainder of the components in the model that may be connected to the current component. If the current component is encapsulated inside another component, the parent-and-sibling set consists of the parent of the current component along with any other components with the same parent. If the current component is not encapsulated, then the parent-and-sibling set consists of all other components that are not encapsulated in the model. As the above paragraph had caused some problems in its first presentation, some examples will be given with respect to the encapsulation network shown in Figure 1. Table 1 lists the components in the encapsulated and parent-and-sibling sets with a selected set of components picked as the current component.
3.3 Variable Interface RequirementsThe variable interface scheme to be used in CellML must be able to satisfy the requirements in the following list.
3.4 Implementation in the Data Model / XML
A variable has two properties: a public and a private interface. The public interface of a variable describes the interface exposed to components in the parent-and-sibling set, whereas the private interface describes the interface exposed to components in the encapsulated set. Each interface has three possible values:
Considering the public interface first. Variables with a public interface value of
The private interface is the interface exposed to all components in the encapsulated set. Variables with a private interface value of
Note that if a variable has no private or public interface, it may only be used in the current component, and is visible to no other components in the model. In order to work out which variables may be modified in the current component, we must check if either the public and private interface has a value of
The two interface properties of a variable are completely independent with one exception: it is invalid for a variable to have both public and private interfaces with value Just for the purposes of illustration, a possible XML serialization of the variable interface scheme proposed here is given in Figure 2. 4 Grouping4.1 SummaryIt was quickly agreed on during the September 19 teleconference that grouping was by far the biggest and hardest problem left on the agenda. A new proposal from the Physiome team for the description of qualitative information in pathway models led to the promotion of "grouping with root components" (see Section 3.2 of the September 18 minutes) as a very likely candidate for solving this as well as the encapsulation and geometry hierarchy problems. 4.2 Discussion"Grouping with root components" is probably a bit of a misnomer considering the functionality that we might add to this concept — a better name might be "grouping with special components" — but we're just going to settle for "grouping" from now on. In our new scheme, a grouping object is used to imply some kind of relationship between a "major" component and a group of "minor" components (note that it's legal to have a relationship with minors in CellML ;-). In the meeting minutes of September 13, it was suggested that the relationship in question could include encapsulation and/or geometry information. To solve our reaction identification problem, we could use a grouping to indicate that the "major" component was the reaction and the "minor" components were the participants. Note that the grouping and corresponding relationship information would be completely unrelated to the connections under this scheme. Connections would undoubtedly exist between most of the components in any group, and in particular between the major and minor components. (Although I had previously complained that having, for instance, geometric relationships on connections made it hard to find the siblings of any component, one could well complain with this system that it is difficult to check if there is any kind of encapsulation or geometric relationship along a connection. The latter is definitely the lesser of the two evils.) Encapsulation, geometric and reaction relationships make up the three distinct classes of grouping defined in the CellML specification. A set of rules is defined that limit the interactions between the components that take part in each of these relationships as well as the variables belonging to those components. For instance, the restrictions on components in an encapsulation relationship were defined in Section 2.2 of the September 13 meeting minutes. The restrictions on geometry and reaction groupings have not yet been defined, but these will be addressed in the next version of the specification. There is no reason that for the user not to define other classes of grouping, for which they can define their own set of rules, possibly in an ontology associated with a model. Note that CellML processing software would be free to ignore user-defined grouping classes. A complete geometry or encapsulation hierarchy is made up of a system of one-level hierarchies. Each level in the hierarchy requires a root component, even when this component may contribute no information to the model. As the modeller may wish to define multiple geometric hierarchies over a single base network of components, a mechanism for associating the geometric relationships at each level of a hierarchy is needed. This is most simply implemented by associating a unique name with the geometric groupings across a hierarchy. Note that a particular grouping could easily be re-used in multiple geometric hierarchies. Although we don't require this functionality for encapsulation and reaction groupings, it could also be made available to the modeller for their own user-defined classes of grouping.
To make the grouping concept even more powerful, user-defined classes of grouping need not even have a major component. This could be useful when the sole purpose of a grouping is to assign a name to an association between components. A good example of this (when you consider how Adjacentness was dismissed earlier in this document) might be a grouping class called For a large anatomical network with multiple hierarchies described across the actual functional part of the network, the large number of components defined purely for the purposes of grouping may well lead to naming clashes (currently all of the components in a model must be uniquely named). It has been contended however that these problems would rarely occur as individual hierarchies would generally be stored separately so the names of components would typically be unique within the context in which they were processed, even if they were not unique across an entire network. 4.3 Sample Implementation in Data Model and XMLFrom the discussion above we can see that a group object:
Note that each relationship object consists of a class and a name. The relationship class may be one of the CellML-defined types
An example XML serialization of the grouping mechanism is given in Figure 3. The first two groupings demonstrate the possible use of the encapsulation, geometry and reaction information in a CellML-like context. The next three demonstrate how the naming of relationships allows the formation of multiple geometry hierarchies. In that example the | ||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||