— the global portal for all things SBML

Discussion report and package proposal

The discussion took place on the 12 and 13 of August 2008. A new proposal is available here: L3Fproposal.

The aim of the proposal proposed here is to cover as many formalisms as possible.

During the discussion, people involved were working on logical models (GinSim, SQUAD and ChemChains), on Petri Net (GInsim) and on Pi-calculus (PiML) or on SBML itself.

Remember the idea of SBML is to allow software to exchange models in an unambiguous way.


What should be covered by the extension?

The extension should only cover what is not yet covered by SBML itself. Petri nets, logical models and pi-calculus are incompatible with SBML, even if SBML exports were attempted by GINsim or Squad for example.

A former proposal defined a way to encode both logical models and Petri nets. The next step was to decide if we could include pi-calculus. A discussion with PiML participants showed that there isn't one pi-calculus formalism but several. As the contour of pi-calculus is not well defined, as there is no real formalism consensus between the different software, and as it seems in a first approach to be too far from logical models and Petri nets, it has been decided not to include pi-calculus in the current proposal. A second proposal, specific to pi-calculus, should be possible in the future.

To conclude, the actual proposal should cover qualitative models encompassing both Petri nets and logical models in a generic way.

Which structure to adopt?

It has been decided to keep the structure suggested in the previous proposal, namely:

  • a species is an independent element used to represent the node of the logical model and the place of Petri nets;
  • transitions is an element used to link species using input and output.

Which elements should be used to represent the networks?

In the previous proposal, the SBML element species, and new elements transition, input and output were in use. The question was to keep only SBML elements, by replacing transition, input and output by reaction, reactant and product or create a new element for species.

Former works by the logical community in particular showed that using SBML elements could create confusion, and incompatibilities with regular software. Furthermore, the semantic behind SBML elements is not exactly the same. For example, there is no notion of entity pool node for species.

It has therefore been decided to use specific elements for qualitative modeling. From the previous extension proposal:

  • The element qualitativeSpecies will replace species. Like species, qualitativeSpecies should have compartment, boundaryCondition, constant and speciesType attributes.
  • The elements transition, input and output will be kept.


SBO, System Biology Ontology, is an ontology describing the vocabulary used in modeling.

All the SBML elements could carry it (inherited from SBase). It could be used to annotate a specific element. The inputs should use it to define which kind of interaction (effect) they have on the outputs.

The vocabulary remains to be defined.

Changes in Activity

First it is renamed logicalFunction.

The listOfLogicalFunction contains any number of logicalFunction elements and one defaultFunction. Both defaultFunction and logicalFunction have an attribute result, while logicalFunction has a math child.

The math child of a logicalFunction element contains a Boolean formula, i.e. returning true or false. If the formula is evaluated to true then the result of the transition is set to the result attribute of the current logicalFunction.

All the formulae in one transition with different results must be mutually exclusive, i.e. only one can be evaluated to true at a time.

Several formulae (logicalFunction) leading to the same result could be inclusive. It could be a convenient way to split a complex formula into smaller parts, and maybe annotate the different parts independently.

The result is set when we meet a formula evaluated to true. If all the formula are evaluated to false then the result of the transition is set to the result attribute of the defaultFunction.

Arc weights

In the previous proposal, the elements input and output carry a weight attribute called consume or produce.

  • In Petri nets, it is used to define the consumption and production of tokens and the conditions to enable a transition to fire.
  • In logical models, this attribute is not used, but the conditions are encoded in the activity's math element.

It has been decided to declare the conditions to fire a transition in all cases.

  • In Petri nets, the transition should indicate with a Boolean if it is enabled to fire. If true, it will lead to the consumption/production of tokens.
  • In logical models, any positive integer could be returned to represent the activityLevel to set or to add to the output(s).

Here we see clearly that the result of this function is different. In one case, it corresponds to an increment. In another case, it represents a replacement of the species' level. To resolve this problem, element inputs and ouputs will carry a new attribute, transitionEffect, which can be set to "assignment" or "change".

As the function can't be Boolean, the input/output attributes consumption/production become consumptionFactor/productionFactor. To know the level to add/assign to a species, you need to multiply the result of the function by consumptionFactor/productionFactor.


  • In petri net
    • The function should be always Boolean, returning 0 if the transition is not enabled, 1 if it is.
    • The transitionEffect should be set to "change".
    • The consumptionFactor/productionFactor should be set to the "normal" weight of the arc in the corresponding Petri Net.
    • If 0 is returned, 0 * consumptionFactor = 0, then there will be no consumption.
    • If 1 is returned, 1 * consumptionFactor = consumptionFactor, we consume consumptionFactor level from the input species. Same for production.
    • Test and inhibit arcs should have a consumptionFactor="0".
  • In logical model
    • The function can return any positive integer.
    • The consumptionFactor should be 0.
    • The productionFactor should be 1 with transitionEffect="assignment", thus you set the level returned by the function.


In logical models, the number of levels a species can take is bounded. It can happen also in Petri nets (a capacity attached to a place). A new attribute maxLevel for qualitativeSpecies should indicate the maximum level for the species.

The result of the discussion remain unclear: what to do if the level become more than the maxLevel?

  • Raise exception
  • Set it to maxLevel

Note that initialLevel should not be higher than maxLevel.

Multiple outputs per transition

In Petri nets, there is no problem with this, but it is not common for logical models. In all cases, it is possible to have multiple outputs per transition. All the outputs must be affected the same way by the logical functions modulo their productionFactor.

Multiple transitions per output

It is possible, but some restrictions should be observed:

  • All the transitions must have the same defaultFunction's result.
  • Like in one transition, the formulae from different transitions leading to different results must be mutually exclusive.
  • Unlike in one transition, the formulae from different transitions leading to the same results must be also mutually exclusive.

Time, delay and stochasticity

A one hour discussion shows there is no real consensus to describe time either in logical models or in Petri nets. In the latter, it is possible to have different methods to model time inside the same model. One possibility is to add to the model the 3 main types of time representations: priorities, proportions and delays.

A transition uses one type of temporization declared with its attribute temporizationType = {priority | proportion | delay}. The corresponding value is encoded either in each logicalFunction attribute temporizationValue or in its child temporizationMath (but both cannot be set).

The formulae from different transitions leading to the same results could be not mutually exclusive if they always have different temporization. In the case of complex functions inside temporizationMath, the sets of results of the functions must be mutually exclusive, i.e. the union of all sets should be an empty set.


XML elements and attributes

The following elements and attributes have been accepted. They all inherit from SBase, thus they have name, id, metaid and sboTerm attributes.

This list shows the composition of the elements (in bold) and their attributes.

  • model
    • listOfQualitativeSpecies
      • qualitativeSpecies
        • initialLevel : integer
        • maxLevel : integer
        • compartment : SIdREF
        • speciesType : SIdREF
        • boundaryCondition : boolean
        • constant : boolean
        • temporizationType : {priority | proportion | delay}
    • listOfTransitions
      • transition
        • listOfInputs
          • input
            • qualitativeSpecies : SIdREF
            • consumptionFactor : integer
            • transitionEffect : {assignment | change}
        • listOfOutputs
          • output
            • qualitativeSpecies : SIdREF
            • productionFactor : integer
            • transitionEffect : {assignment | change}
        • listOfLogicalFunctions
          • logicalFunction
            • result : integer
            • temporizationValue : double
            • math
            • temporizationMath
          • defaultFunction
            • result : integer

Please use our issue tracking system for any questions or suggestions about this website. This page was last modified 01:28, 30 January 2010.