— the global portal for all things SBML

L3F Proposal



Quantitative methods for modeling biological networks require an in-depth knowledge of the biochemical reactions and their stoichiometry and kinetics parameters. For most biological networks, this knowledge is missing. To supply this information, qualitative methods are developed[3], such as the use of gene expression data from functional genomic experiments.

The number of people using these types of methods is increasing. Consequently, the amount of (incompatible) software is also increasing. The aim of this document is to propose a possible package (extension) for the next version of SBML: SBML version 3. This package, called QUAL (previously L3F), should re-use the basics elements of SBML such as species, compartment, SBase… and extend SBML with new elements to encode qualitative models.

Qualitative models

Logical model

Initiated in the 60's by Kauffman [6], Boolean models describe the different elements of a network, with Boolean variables expressing (1) for active or (0) for inactive. Each variable follows a logical formula defined by the interactions with the other elements; one can stimulate or inhibit another. Figure 1 shows a simple Boolean network constituted of 3 genes, A, B and C. The gene A is activated by the gene B and inhibited by C. B is activated by A, and C is activated by B. This network could be represented using the following formula : A := B ∧ ¬C , B := A, C := B

The Boolean networks were then generalized to multivaluate logical networks. These models allow variables to take more than two values, called activities. The formula describing the value of the variable can be split into smaller logical formulae, each describing one activity. If node A has 3 possible activities 0, 1 and 2, and nodes B and C are Boolean, the figure 1 could represent the following formulae :

$$A := 
		2 & if \quad A = 2 \land B = 1 \land C = 0\\
		1 & if \quad (A = 2 \land B = 1 \land C = 1) \lor (A = 0 \land B = 1 \land C = 0)\\
		0 & otherwise\\
	B := A = 1,\quad
	C := B = 1

Petri net

Also originating in the 60s, Petri networks, devised by Carl Adam Petri [7, 8], are used to describe discrete distributed systems. They have been successfully used to model biological systems [9, 1, 4, 5, 2].

A basic Petri net is a directed bipartite graph. It consists of 2 kind of nodes: the "places" noted P = P1 , P2 , … , Pn, drawn with circles; and the "transitions" noted T = T1 , T2 , … , Tm, drawn with rectangles. The "directed arcs" go from a place to a transition or from a transition to a place, and they are drawn with arrows. Each place could carry zero or one token, drawn with a small black, filled circle.

The dynamics of the network are modeled with the transitions. The transitions are capable of transferring tokens between places. The transfer called "firing" occurs when all the places with arcs incoming to the transition are marked with a token and the outgoing places are not marked, and then the outgoing place becomes marked. If there are multiple outgoing places, then a place should be chosen randomly or all the possible choices should be computed. At each iteration of the system, all the transitions try to fire.

Basic Petri networks have many extensions, generally called high level Petri networks. The place/transitions networks (P/T nets) allow multiple tokens per place and weight on the arcs. The stochastic Petri nets (SPN) add a probability of firing to each transition. The timed Petri networks (TPN) add timers on arcs, places, transitions or tokens. The colored Petri networks (CPN) allow multiple type (color) of tokens...

Figure 2 shows a simple example of a basic Petri network. It involves 3 places (P1, P2 and P3)and 2 transitions (T1 and T2). P1 and P2 are marked with a token. As there are arcs between these two places and T1, the transition could fire. If it does fire, the tokens from P1 and P2 are consumed, and two tokens are produced in P2 and P3. As P2 is consumed and refilled, the arc from P2 to T1 is called a read arc.

The second transition could fire as well. If it does, the token from P1 is consumed, and a token is produced in P3. The simulation then has two possibilities: either firing T1 or T2. The simulation should make a choice or fire both into two different simulations.


In this document, the xml elements are represented in bold, e.g. listOfInputs. The xml attributes are in italic, e.g. transitionEffect. Constant values are underlined, e.g. 0, 1, true, false.

The mathematical formulae taking place in math elements will be written in plain text instead of MathML. This is intended to help the readability of the formulae and made the listings shorter.


To use this extension, you should declare a separate namespace like this for its elements:

<?xml version="1.0" encoding="UTF-8"?>
<sbml xmlns="" level="2" version="3"


Composition diagram

Click for a larger view
Click for a larger view

Note that all the "listOfSomething" elements inherit from listOf, all the all the other elements inherit from SBase.

The following figure shows the composition of the elements. An arrow from A to B indicates that B is composed of A. The numbers on the arrow indicates its cardinality, i.e. the possible numbers of B.

Presentation of the elements


In qualitative models, there is no real notion of species' concentration. Instead, each species has a discrete level generally representing an activity. For this reason, a new element, qualitativeSpecies, must be used in place of species.

QualitativeSpecies can use some species attributes: speciesType, compartment, boundaryCondition and constant. Refer to the species definition for theses attributes.

The level of the QualitativeSpecies is represented with two attributes: initialLevel and maxLevel. InitialLevel represents the initial level of the qualitativeSpecies, like initialAmount or initialConcentration for the species. MaxLevel will be discussed below.


The element transition is used to represent the interactions between the qualitativeSpecies. It defines a set of incoming arcs and outgoing arcs using lists of inputs and outputs. It defines the different conditions where the interactions are active and what appends to the inputs and ouputs in these cases.

The incoming arcs represent the qualitativeSpecies having an impact on the level of the outgoing species. A qualitativeSpecies may be an input and an output of a transition.

Dynamics of the model

The simulation of the model occurs by successive iteration steps. At each step of the simulation, all the transitions are fired if they are enabled. A firing consists of the modification of the level of their outputs, and maybe of their inputs. To encode the simulation rules in the document, two things need to be known: when the transitions are enabled; and how the species pointed to by their arcs are modified.

The element listOfLogicalFunctions contains a defaultFunction element and any number of logicalFunctions. The aim of the logicalFunctions is to indicate the global effect of the transitions. Then the global effect will be used to compute the local effect on each input/output.

To compute the value of the global effect, all the formulae in the math child of the logicalFunction elements should be evaluated. In a simple case, the global effect is equal to the result attribute of the true logicalFunction. If no logicalFunction returns true, then the global effect is set to defaultFunction's result attribute. See further "Complex case".

When the global effect (noted G below) is known, we compute the local effect on each qualitativeSpecies pointed by the inputs and outputs. Each input and output has an attribute transitionEffect which can take two values: assignment or change.

  • If transitionEffect is assignment then
    • The level of the qualitativeSpecies associated to each input of the transition is set to G multiplied by the input's consumptionFactor.
    • The level of the qualitativeSpecies associated to each output of the transition is set to G multiplied by the output's productionFactor.
  • If transitionEffect is change then
    • The level of the qualitativeSpecies associated to each input of the transition is decreased by G multiplied by the input's consumptionFactor.
    • The level of the qualitativeSpecies associated to each output of the transition is increased by G multiplied by the output's productionFactor.

The level of a qualitativeSpecies is bounded to [0, +∞]. If the qualitativeSpecies' attribute maxLevel is defined, then the level is bounded to [0, maxLevel]. If the level of a qualitativeSpecies goes out of its bounds, an error must be raised. To use the attribute maxLevel in a formula, there is a csymbol taking a qualitativeSpecies sID to return the value. The csymbol must have the definitionURL set to

For example, to get the maxLevel of the qualitativeSpecies X:


<csymbol definitionURL="">

Complex cases

Multiple logicalFunctions or transitions with different results.

There is a fundamental constraint: Multiple logicalFunctions with different results must not be able to occur at the same time in the same conditions.

Multiple logicalFunctions could have the same result value. The global effect will be set to this result if at least one of the logicalFunctions is true. Joining all the logicalFunctions with a mathematical or operator leads to the same model.

It is possible to have multiple transitions with overlaping outputs. (For example, two transitions, where T1 has two outputs A and B, T2 has two ouputs B and C. B is common to both transitions.) In this case all the transitions must have the same defaultFunction result. The ouputs affected by only one transition must be considered independantly. The ouputs affected by multiple transitions must be considered like a new transition made with a union of all the logicalFunctions of all the transitions.


If a qualitativeSpecies is an input and an output in the same transition, to represent an auto-regulation for example, then the input must have a transitionsEffect set to change and a consumptionFactor set to 0. The output can have any value.

Encoding "time" in the model

The transition element has an attribute temporizationType indicating the type of time the simulation must consider. It can take three values: priority, proportion or delay. The logicalFunction has an abstract attribute temporization. Its value is equal either to its attribute temporizationValue or to its child temporizationMath. Only one of them can be set for each logicalFunction.

Encoding time allows several logicalFunctions leading to different results to be evaluated to true in the same conditions (with inclusive formulae).

  • If temporizationType is priority then the result is the logicalFunction with the lowest temporization.
  • If temporizationType is proportion then the result ..? ??
  • If temporizationType is delay then ..? ??


[1] C. Chaouiya. Qualitative modelling of genetic networks: From logical regulatory graphs to standard petri nets. LNCS, 3099(137-156), 2004.

[2] J-P Comet. Modeling multi-valued genetic regulatory networks using high-level petri nets. LNCS, 3536:208?227, June 2005.

[3] Hidde de Jong. Modeling and simulation of genetic regulatory systems: A literature review. Journal of Computational Biology, 9(1):67?103, 2002.

[4] E.Simão. Qualitative modelling of regulated metabolic pathways: Application to the tryptophan biosynthesis in e.coli. Bioinformatics, 21:190?196, 2005.

[5] M. Heiner. Analysis and simulation of steady states in metabolic pathways with petri nets. CPN?01, pages 15?34, 2001.

[6] S. A. Kauffman. Metabolic stability and epigenesis in randomly constructed genetic nets. Journal of Theoretical Biology, 22(3):437?467, 1969.

[7] C. A. Petri. Fundamentals of a theory of asynchronous information flow. IFIP Congress, pages 386?390, 1962.

[8] C. A. Petri. Concepts of net theory. MFCS, pages 137?146, 1973.

[9] Reddy V.N. Qualitative analysis of biochemical reaction systems. Comput. Biol. Med., 26(1):9?24, Jan 1996.

Retrieved from ""

This page was last modified 02:14, 30 January 2010.

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