Skip to content

Roundtrip example

The example converts the repressilator from SBML to CellML and back to SBML and simulates all three models: the SBML model with roadrunner, the CellML model with libopencor and the SBML model of the roundtrip with roadrunner again.

model simulator
1 SBML examples/models/repressilator.xml roadrunner
2 CellML, converted from 1 with sbml2cellml, with the metadata of 1 as RDF next to it libopencor
3 SBML, converted from 2 with cellml2sbml roadrunner

The repressilator of Elowitz and Leibler (2000) is a ring of three genes whose proteins LacI, TetR and cI each repress the transcription of the next gene, which makes the protein numbers oscillate. The model is BIOMD0000000012 of BioModels (SBML level 2 version 3, CC0) with its names, notes and annotations, which CellML has no place for: they go into an RDF file next to the CellML model and come back in the SBML model of the roundtrip, see Metadata.

Run the example

The example is examples/repressilator_example.py of the repository. It needs both simulators, see Simulation:

uv sync --extra dev
uv run python examples/repressilator_example.py

The models, the metadata, the timecourses and the figure go to examples/results/.

Convert

Two calls convert the model in both directions, each validates its result (libcellml for the CellML model, libsbml for the SBML model). The first one writes repressilator.rdf next to repressilator.cellml, the second one reads it:

from pathlib import Path

from sbml2cellml import convert_cellml2sbml, convert_sbml2cellml

sbml_path = Path("repressilator.xml")
cellml_path = Path("repressilator.cellml")
roundtrip_path = Path("repressilator_roundtrip.xml")

convert_sbml2cellml(sbml_path, cellml_path=cellml_path)
convert_cellml2sbml(cellml_path, sbml_path=roundtrip_path)

The command line does the same:

sbml2cellml repressilator.xml -o repressilator.cellml
cellml2sbml repressilator.cellml -o repressilator_roundtrip.xml

The models

The six species (three mRNAs, three proteins) are amounts in the compartment cell, twelve reactions transcribe, translate and degrade them. Assignment rules compute the rate constants from the half lifes and the promoter strengths. The model, the species and the reactions have names, notes, SBO terms and annotations.

examples/models/repressilator.xml
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<sbml xmlns="http://www.sbml.org/sbml/level2/version3" level="2" metaid="_153818" version="3">
  <model id="BIOMD0000000012" metaid="_000001" name="Elowitz2000 - Repressilator">
    <notes>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div class="dc:title">Elowitz2000 - Repressilator</div>
        <div class="dc:description">
          <p>This model describes the deterministic version of the repressilator system.</p>
          <p>The authors of this model (see reference) use three transcriptional repressor systems that are not part of any natural biological clock to build an oscillating network that they called the repressilator. The model system was induced in Escherichia coli.</p>
          <p>In this system, LacI (variable X is the mRNA, variable PX is the protein) inhibits the tetracycline-resistance transposon tetR (Y, PY describe mRNA and protein). Protein tetR inhibits the gene Cl from phage Lambda (Z, PZ: mRNA, protein),and protein Cl inhibits lacI expression. With the appropriate parameter values this system oscillates.</p>
        </div>
        <div class="dc:bibliographicCitation">
          <p>This model is described in the article:</p>
          <div class="bibo:title">
            <a href="http://identifiers.org/pubmed/10659856" title="Access to this publication">A synthetic oscillatory network of transcriptional regulators.</a>
          </div>
          <div class="bibo:authorList">Elowitz MB, Leibler S.</div>
          <div class="bibo:Journal">Nature. 2000 Jan; 403(6767):335-338</div>
          <p>Abstract:</p>
          <div class="bibo:abstract">
            <p>Networks of interacting biomolecules carry out many essential functions in living cells, but the 'design principles' underlying the functioning of such intracellular networks remain poorly understood, despite intensive efforts including quantitative analysis of relatively simple systems. Here we present a complementary approach to this problem: the design and construction of a synthetic network to implement a particular function. We used three transcriptional repressor systems that are not part of any natural biological clock to build an oscillating network, termed the repressilator, in Escherichia coli. The network periodically induces the synthesis of green fluorescent protein as a readout of its state in individual cells. The resulting oscillations, with typical periods of hours, are slower than the cell-division cycle, so the state of the oscillator has to be transmitted from generation to generation. This artificial clock displays noisy behaviour, possibly because of stochastic fluctuations of its components. Such 'rational network design may lead both to the engineering of new cellular behaviours and to an improved understanding of naturally occurring networks.</p>
          </div>
        </div>
        <div class="bm:curation">
          <p>The model is based upon the equations in Box 1 of the paper; however, these equations as printed are dimensionless, and the correct dimensions have been returned to the equations, and the parameters set to reproduce Figure 1C (left).</p>
        </div>
        <div class="bm:modification">
          <p>The original model was generated by B.E. Shapiro using Cellerator version 1.0 update 2.1127 using Mathematica 4.2 for Mac OS X (June 4, 2002), November 27, 2002 12:15:32, using (PowerMac,PowerPC, Mac OS X,MacOSX,Darwin).</p>
          <p>Nicolas Le Novere provided a corrected version generated by SBMLeditor on Sun Aug 20 00:44:05 BST 2006. This removed the EmptySet species. Ran fine on COPASI 4.0 build 18.</p>
          <p>Bruce Shapiro revised the model with SBMLeditor on 23 October 2006 20:39 PST. This defines default units and correct reactions. The original Cellerator reactions while being mathematically correct did not accurately reflect the intent of the authors. The original notes were mostly removed because they were mostly incorrect in the revised version. Tested with MathSBML 2.6.0.</p>
          <p>Nicolas Le Novere changed the volume to 1 cubic micrometre, to allow for stochastic simulation.</p>
          <p>Changed by Lukas Endler to use the average livetime of mRNA instead of its halflife and a corrected value of alpha and alpha0.</p>
          <p>Moreover, the equations used in this model were clarified, cf. below.</p>
          <p>The equations given in        <b>box 1</b>
            of the original publication are rescaled in three respects (lowercase letters denote the rescaled, uppercase letters the unscaled number of molecules per cell):        </p>
          <ul>
            <li>the time is rescaled to the average mRNA lifetime,          <em>t_ave: τ = t/t_ave</em></li>
            <li>the mRNA concentration is rescaled to the translation efficiency          <em>eff: m = M/eff</em></li>
            <li>the protein concentration is rescaled to          <em>Km: p = P/Km</em></li>
          </ul>
          <p>
            <em>α</em>
            in the equations should be in units of rescaled proteins per promotor and cell, and        <em>β</em>
            is the ratio of the protein to the mRNA decay rates or the ratio of the mRNA to the protein halflife.        </p>
            <p>In this version of the model        <em>α</em>
            and        <em>β</em>
            are calculated correspondingly to the article, while        <em>p</em>
            and        <em>m</em>
            where just replaced by        <em>P/Km</em>
            resp.        <em>M/eff</em>
            and all equations multiplied by        <em>1/t_ave</em>
            . Also, to make the equations easier to read, commonly used variables derived from the parameters given in the article by simple rules were introduced.        </p>
            <p>The parameters given in the article were:</p>
            <table>
              <tr>
                <td>promotor strength (repressed) (            <em>tps_repr</em>
                ):            </td>
                <td>5*10            <sup>-4</sup></td>
                <td>transcripts/(promotor*s)</td>
              </tr>
              <tr>
                <td>promotor strength (full) (            <em>tps_active</em>
                ):            </td>
                <td>0.5</td>
                <td>transcripts/(promotor*s)</td>
              </tr>
              <tr>
                <td>mRNA half life, τ            <sub>1/2,mRNA</sub>
                :            </td>
                <td>2</td>
                <td>min</td>
              </tr>
              <tr>
                <td>protein half life, τ            <sub>1/2,prot</sub>
                :            </td>
                <td>10</td>
                <td>min</td>
              </tr>
              <tr>
                <td>K            <sub>M</sub>
                :            </td>
                <td>40</td>
                <td>monomers/cell</td>
              </tr>
              <tr>
                <td>Hill coefficient n:</td>
                <td>2</td>
                <td/>
              </tr>
            </table>
            <p>From these the following constants can be derived:</p>
            <table>
              <tr>
                <td>average mRNA lifetime (            <em>t_ave</em>
                ):            </td>
                <td>
                  <em>τ              <sub>1/2,mRNA</sub>
                  /ln(2)              </em>
                </td>
                <td>= 2.89 min</td>
              </tr>
              <tr>
                <td>mRNA decay rate (            <em>kd_mRNA</em>
                ):            </td>
                <td>
                  <em>ln(2)/ τ              <sub>1/2,mRNA</sub></em>
                </td>
                <td>= 0.347 min            <sup>-1</sup></td>
              </tr>
              <tr>
                <td>protein decay rate (            <em>kd_prot</em>
                ):            </td>
                <td>
                  <em>ln(2)/ τ              <sub>1/2,prot</sub></em>
                </td>
              </tr>
              <tr>
                <td>transcription rate (            <em>a_tr</em>
                ):            </td>
                <td>
                  <em>tps_active*60</em>
                </td>
                <td>= 29.97 transcripts/min</td>
              </tr>
              <tr>
                <td>transcription rate (repressed) (            <em>a0_tr</em>
                ):            </td>
                <td>
                  <em>tps_repr*60</em>
                </td>
                <td>= 0.03 transcripts/min</td>
              </tr>
              <tr>
                <td>translation rate (            <em>k_tl</em>
                ):            </td>
                <td>
                  <em>eff*kd_mRNA</em>
                </td>
                <td>= 6.93 proteins/(mRNA*min)</td>
              </tr>
              <tr>
                <td>α :</td>
                <td>
                  <em>a_tr*eff*τ              <sub>1/2,prot</sub>
                  /(ln(2)*K              <sub>M</sub>
                  )              </em>
                </td>
                <td>= 216.4 proteins/(promotor*cell*Km)</td>
              </tr>
              <tr>
                <td>α            <sub>0</sub>
                :            </td>
                <td>
                  <em>a0_tr*eff*τ              <sub>1/2,prot</sub>
                  /(ln(2)*K              <sub>M</sub>
                  )              </em>
                </td>
                <td>= 0.2164 proteins/(promotor*cell*Km)</td>
              </tr>
              <tr>
                <td>β :</td>
                <td>
                  <em>k_dp/k_dm</em>
                </td>
                <td>= 0.2</td>
              </tr>
            </table>
            <br/>
            <p>Annotation by the Kinetic Simulation Algorithm Ontology (KiSAO):</p>
            <p>To reproduce the simulations run published by the authors, the model has to be simulated with any of two different approaches. First, one could use a deterministic method (        <a href="http://identifiers.org/biomodels.kisao/KISAO_0000035" title="Access to: KISAO_0000035">KISAO_0000035</a>
            ) with continuous variables (        <a href="http://identifiers.org/biomodels.kisao/KISAO_0000018" title="Access to: KISAO_0000018">KISAO_0000018</a>
            ). One sample algorithm to use is the CVODE solver (        <a href="http://identifiers.org/biomodels.kisao/KISAO_0000019" title="Access to: KISAO_0000019">KISAO_0000019</a>
            ). Second, one could simulate the system using Gillespie's direct method (        <a href="http://identifiers.org/biomodels.kisao/KISAO_0000029" title="Access to: KISAO_0000029">KISAO_0000029</a>
            ), which is a stochastic method (        <a href="http://identifiers.org/biomodels.kisao/KISAO_0000036" title="Access to: KISAO_0000036">KISAO_0000036</a>
            ) supporting adaptive timesteps (        <a href="http://identifiers.org/biomodels.kisao/KISAO_0000041" title="Access to: KISAO_0000041">KISAO_0000041</a>
            ) and using discrete variables (        <a href="http://identifiers.org/biomodels.kisao/KISAO_0000016" title="Access to: KISAO_0000016">KISAO_0000016</a>
            ).        </p>
          </div>
          <div class="dc:publisher">
            <p>This model is hosted on        <a href="http://www.ebi.ac.uk/biomodels/">BioModels Database</a>
            and identified by:        <a href="http://identifiers.org/biomodels.db/BIOMD0000000012">BIOMD0000000012</a>
            .        </p>
            <p>To cite BioModels Database, please use:        <a href="http://identifiers.org/pubmed/20587024" title="Latest BioModels Database publication">BioModels Database: An enhanced, curated and annotated resource for published quantitative kinetic models</a>
            .        </p>
          </div>
          <div class="dc:license">
            <p>To the extent possible under law, all copyright and related or neighbouring rights to this encoded model have been dedicated to the public domain worldwide. Please refer to        <a href="http://creativecommons.org/publicdomain/zero/1.0/" title="Access to: CC0 1.0 Universal (CC0 1.0), Public Domain Dedication">CC0 Public Domain Dedication</a>
            for more information.        </p>
          </div>
        </body>
      </notes>
    <annotation>
      <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">
        <rdf:Description rdf:about="#_000001">
    <dc:creator>
    <rdf:Bag>
    <rdf:li rdf:parseType="Resource">
    <vCard:N rdf:parseType="Resource">
    <vCard:Family>Le Novère</vCard:Family>
    <vCard:Given>Nicolas</vCard:Given>
    </vCard:N>
    <vCard:EMAIL>lenov@ebi.ac.uk</vCard:EMAIL>
    <vCard:ORG rdf:parseType="Resource">
    <vCard:Orgname>EMBL-EBI</vCard:Orgname>
    </vCard:ORG>
    </rdf:li>



    <rdf:li rdf:parseType="Resource">
    <vCard:N rdf:parseType="Resource">
    <vCard:Family>Shapiro</vCard:Family>
    <vCard:Given>Bruce</vCard:Given>
    </vCard:N>
    <vCard:EMAIL>bshapiro@caltech.edu</vCard:EMAIL>
    <vCard:ORG rdf:parseType="Resource">
    <vCard:Orgname>Jet Propulsion Laboratory</vCard:Orgname>
    </vCard:ORG>
    </rdf:li>
    <rdf:li rdf:parseType="Resource">
    <vCard:N rdf:parseType="Resource">
    <vCard:Family>Juty</vCard:Family>
    <vCard:Given>Nick</vCard:Given>
    </vCard:N>
    <vCard:EMAIL>juty@ebi.ac.uk</vCard:EMAIL>
    <vCard:ORG rdf:parseType="Resource">
    <vCard:Orgname>EMBL-EBI</vCard:Orgname>
    </vCard:ORG>
    </rdf:li>
    <rdf:li rdf:parseType="Resource">
    <vCard:N rdf:parseType="Resource">
    <vCard:Family>Endler</vCard:Family>
    <vCard:Given>Lukas</vCard:Given>
    </vCard:N>
    <vCard:EMAIL>lukas@ebi.ac.uk</vCard:EMAIL>
    <vCard:ORG rdf:parseType="Resource">
    <vCard:Orgname>EMBL-EBI</vCard:Orgname>
    </vCard:ORG>
    </rdf:li>
    <rdf:li rdf:parseType="Resource">
    <vCard:N rdf:parseType="Resource">
    <vCard:Family>Chelliah</vCard:Family>
    <vCard:Given>Vijayalakshmi</vCard:Given>
    </vCard:N>
    <vCard:EMAIL>viji@ebi.ac.uk</vCard:EMAIL>
    <vCard:ORG rdf:parseType="Resource">
    <vCard:Orgname>EMBL-EBI</vCard:Orgname>
    </vCard:ORG>
    </rdf:li>
    </rdf:Bag>
    </dc:creator>
    <dcterms:created rdf:parseType="Resource">
    <dcterms:W3CDTF>2009-01-20T14:03:56Z</dcterms:W3CDTF>
    </dcterms:created>
    <dcterms:modified rdf:parseType="Resource">
    <dcterms:W3CDTF>2013-07-10T10:59:30Z</dcterms:W3CDTF>
    </dcterms:modified>
    <bqmodel:is>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/biomodels.db/MODEL6615351360"/>
    </rdf:Bag>
    </bqmodel:is>
    <bqmodel:is>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/biomodels.db/BIOMD0000000012"/>
    </rdf:Bag>
    </bqmodel:is>
    <bqmodel:isDescribedBy>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/pubmed/10659856"/>
    </rdf:Bag>
    </bqmodel:isDescribedBy>
    <bqbiol:hasTaxon>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/taxonomy/562"/>
    </rdf:Bag>
    </bqbiol:hasTaxon>
    <bqbiol:isVersionOf>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/go/GO:0040029"/>
    </rdf:Bag>
    </bqbiol:isVersionOf>
    <bqbiol:hasProperty>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/mamo/MAMO_0000046"/>
    </rdf:Bag>
    </bqbiol:hasProperty>
    </rdf:Description>

      </rdf:RDF>
    </annotation>
      <listOfUnitDefinitions>
      <unitDefinition id="volume" metaid="metaid_0000029" name="cubic microns">
        <listOfUnits>
          <unit kind="litre" metaid="_420934" scale="-15"/>
        </listOfUnits>
      </unitDefinition>
      <unitDefinition id="substance" metaid="metaid_1000000" name="item">
        <listOfUnits>
          <unit kind="item" metaid="_420947"/>
        </listOfUnits>
      </unitDefinition>
      <unitDefinition id="time" metaid="metaid_0000030" name="minute">
        <listOfUnits>
          <unit kind="second" metaid="_420960" multiplier="60"/>
        </listOfUnits>
      </unitDefinition>
    </listOfUnitDefinitions>
    <listOfCompartments>
      <compartment id="cell" metaid="_000002" sboTerm="SBO:0000290" size="1">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">
            <rdf:Description rdf:about="#_000002">
    <bqbiol:is>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/go/GO:0005623"/>
    </rdf:Bag>
    </bqbiol:is>
    </rdf:Description>

          </rdf:RDF>
        </annotation>
            </compartment>
    </listOfCompartments>
    <listOfSpecies>
      <species compartment="cell" hasOnlySubstanceUnits="true" id="PX" initialAmount="0" metaid="PX" name="LacI protein" sboTerm="SBO:0000252">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        lacI inhibitor</p>
        </notes>
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">
            <rdf:Description rdf:about="#PX">
    <bqbiol:is>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/uniprot/P03023"/>
    </rdf:Bag>
    </bqbiol:is>
    </rdf:Description>

          </rdf:RDF>
        </annotation>
            </species>
      <species compartment="cell" hasOnlySubstanceUnits="true" id="PY" initialAmount="0" metaid="PY" name="TetR protein" sboTerm="SBO:0000252">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        Tet repressor protein</p>
        </notes>
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">
            <rdf:Description rdf:about="#PY">
    <bqbiol:is>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/uniprot/P04483"/>
    </rdf:Bag>
    </bqbiol:is>
    </rdf:Description>

          </rdf:RDF>
        </annotation>
            </species>
      <species compartment="cell" hasOnlySubstanceUnits="true" id="PZ" initialAmount="0" metaid="PZ" name="cI protein" sboTerm="SBO:0000252">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        lambda repressor</p>
        </notes>
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">
            <rdf:Description rdf:about="#PZ">
    <bqbiol:is>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/uniprot/P03034"/>
    </rdf:Bag>
    </bqbiol:is>
    </rdf:Description>

          </rdf:RDF>
        </annotation>
            </species>
      <species compartment="cell" hasOnlySubstanceUnits="true" id="X" initialAmount="0" metaid="_905769" name="LacI mRNA" sboTerm="SBO:0000250">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">
            <rdf:Description rdf:about="#_905769">
              <bqbiol:isVersionOf>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/chebi/CHEBI:33699"/>
    <rdf:li rdf:resource="http://identifiers.org/kegg.compound/C00046"/>
    </rdf:Bag>
    </bqbiol:isVersionOf>

    <bqbiol:encodes>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/uniprot/P03023"/>
    </rdf:Bag>
    </bqbiol:encodes>
    </rdf:Description>

          </rdf:RDF>
        </annotation>
            </species>
      <species compartment="cell" hasOnlySubstanceUnits="true" id="Y" initialAmount="20" metaid="_905781" name="TetR mRNA" sboTerm="SBO:0000250">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">
            <rdf:Description rdf:about="#_905781">
              <bqbiol:isVersionOf>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/chebi/CHEBI:33699"/>
    <rdf:li rdf:resource="http://identifiers.org/kegg.compound/C00046"/>
    </rdf:Bag>
    </bqbiol:isVersionOf>

    <bqbiol:encodes>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/uniprot/P04483"/>
    </rdf:Bag>
    </bqbiol:encodes>
    </rdf:Description>

          </rdf:RDF>
        </annotation>
            </species>
      <species compartment="cell" hasOnlySubstanceUnits="true" id="Z" initialAmount="0" metaid="_905802" name="cI mRNA" sboTerm="SBO:0000250">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">
            <rdf:Description rdf:about="#_905802">
              <bqbiol:isVersionOf>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/chebi/CHEBI:33699"/>
    <rdf:li rdf:resource="http://identifiers.org/kegg.compound/C00046"/>
    </rdf:Bag>
    </bqbiol:isVersionOf>

    <bqbiol:encodes>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/uniprot/P03034"/>
    </rdf:Bag>
    </bqbiol:encodes>
    </rdf:Description>

          </rdf:RDF>
        </annotation>
            </species>
    </listOfSpecies>
    <listOfParameters>
      <parameter constant="false" id="beta" metaid="metaid_0000022" name="beta" value="0.2">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        ratio of protein to mRNA decay rates</p>
        </notes>
      </parameter>
      <parameter constant="false" id="alpha0" metaid="metaid_0000023" name="alpha0" sboTerm="SBO:0000485" value="0.2164">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        Leakiness in protein copies per promoter and cell</p>
        </notes>
      </parameter>
      <parameter constant="false" id="alpha" metaid="metaid_0000024" name="alpha" sboTerm="SBO:0000186" value="216.404">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        Protein copies per promoter and cell</p>
        </notes>
      </parameter>
      <parameter id="eff" metaid="metaid_0000025" name="translation efficiency" value="20">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        Average number of proteins per transcript</p>
        </notes>
      </parameter>
      <parameter id="n" metaid="metaid_0000026" name="n" sboTerm="SBO:0000190" value="2">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        Hill coefficient</p>
        </notes>
      </parameter>
      <parameter id="KM" metaid="metaid_0000027" name="KM" sboTerm="SBO:0000288" value="40">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        Number of repressor molecules per cell giving half maximal repression, in monomers per cell</p>
        </notes>
      </parameter>
      <parameter id="tau_mRNA" metaid="metaid_0000028" name="mRNA half life" sboTerm="SBO:0000332" value="2"/>
      <parameter id="tau_prot" metaid="metaid_0000128" name="protein half life" sboTerm="SBO:0000332" value="10"/>
      <parameter constant="false" id="t_ave" metaid="metaid_0000032" name="average mRNA life time" sboTerm="SBO:0000348"/>
      <parameter constant="false" id="kd_mRNA" metaid="metaid_0000132" name="kd_mRNA" sboTerm="SBO:0000356">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        mRNA decay rate constant</p>
        </notes>
      </parameter>
      <parameter constant="false" id="kd_prot" metaid="metaid_0000133" name="kd_prot" sboTerm="SBO:0000356">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        Protein decay rate costant</p>
        </notes>
      </parameter>
      <parameter constant="false" id="k_tl" metaid="metaid_0000233" name="k_tl" sboTerm="SBO:0000016">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        Translation rate constant</p>
        </notes>
      </parameter>
      <parameter constant="false" id="a_tr" metaid="metaid_0900235" name="a_tr" sboTerm="SBO:0000186">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        Transcription rate from free promotor minus a0_tr</p>
        </notes>
      </parameter>
      <parameter id="ps_a" metaid="metaid_0800235" name="tps_active" sboTerm="SBO:0000186" value="0.5">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        Transcrition from free promotor in transcripts per second and promotor</p>
        </notes>
      </parameter>
      <parameter id="ps_0" metaid="metaid_0500235" name="tps_repr" sboTerm="SBO:0000485" value="0.0005">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        Transcrition from fully repressed promotor in transcripts per second and promotor</p>
        </notes>
      </parameter>
      <parameter constant="false" id="a0_tr" metaid="metaid_0000234" name="a0_tr" sboTerm="SBO:0000485">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        Transcription rate from fully repressed promotor</p>
        </notes>
      </parameter>
    </listOfParameters>
    <listOfRules>
      <assignmentRule metaid="metaid_0500035" variable="t_ave">
        <math xmlns="http://www.w3.org/1998/Math/MathML">        
          <apply>
            <divide/>
            <ci> tau_mRNA </ci>
            <apply>
              <ln/>
              <cn> 2 </cn>
            </apply>
          </apply>
        </math>
            </assignmentRule>
      <assignmentRule metaid="metaid_0240045" variable="beta">
        <math xmlns="http://www.w3.org/1998/Math/MathML">        
          <apply>
            <divide/>
            <ci> tau_mRNA </ci>
            <ci> tau_prot </ci>
          </apply>
        </math>
            </assignmentRule>
      <assignmentRule metaid="metaid_0400235" variable="k_tl">
        <math xmlns="http://www.w3.org/1998/Math/MathML">        
          <apply>
            <divide/>
            <ci> eff </ci>
            <ci> t_ave </ci>
          </apply>
        </math>
            </assignmentRule>
      <assignmentRule metaid="metaid_1000237" variable="a_tr">
        <math xmlns="http://www.w3.org/1998/Math/MathML">        
          <apply>
            <times/>
            <apply>
              <minus/>
              <ci> ps_a </ci>
              <ci> ps_0 </ci>
            </apply>
            <cn> 60 </cn>
          </apply>
        </math>
            </assignmentRule>
      <assignmentRule metaid="metaid_0100236" variable="a0_tr">
        <math xmlns="http://www.w3.org/1998/Math/MathML">        
          <apply>
            <times/>
            <ci> ps_0 </ci>
            <cn> 60 </cn>
          </apply>
        </math>
            </assignmentRule>
      <assignmentRule metaid="metaid_0010335" variable="kd_prot">
        <math xmlns="http://www.w3.org/1998/Math/MathML">        
          <apply>
            <divide/>
            <apply>
              <ln/>
              <cn> 2 </cn>
            </apply>
            <ci> tau_prot </ci>
          </apply>
        </math>
            </assignmentRule>
      <assignmentRule metaid="metaid_0020435" variable="kd_mRNA">
        <math xmlns="http://www.w3.org/1998/Math/MathML">        
          <apply>
            <divide/>
            <apply>
              <ln/>
              <cn> 2 </cn>
            </apply>
            <ci> tau_mRNA </ci>
          </apply>
        </math>
            </assignmentRule>
      <assignmentRule metaid="metaid_0230035" variable="alpha">
        <math xmlns="http://www.w3.org/1998/Math/MathML">        
          <apply>
            <divide/>
            <apply>
              <times/>
              <ci> a_tr </ci>
              <ci> eff </ci>
              <ci> tau_prot </ci>
            </apply>
            <apply>
              <times/>
              <apply>
                <ln/>
                <cn> 2 </cn>
              </apply>
              <ci> KM </ci>
            </apply>
          </apply>
        </math>
            </assignmentRule>
      <assignmentRule metaid="metaid_0240035" variable="alpha0">
        <math xmlns="http://www.w3.org/1998/Math/MathML">        
          <apply>
            <divide/>
            <apply>
              <times/>
              <ci> a0_tr </ci>
              <ci> eff </ci>
              <ci> tau_prot </ci>
            </apply>
            <apply>
              <times/>
              <apply>
                <ln/>
                <cn> 2 </cn>
              </apply>
              <ci> KM </ci>
            </apply>
          </apply>
        </math>
            </assignmentRule>
    </listOfRules>
    <listOfReactions>
      <reaction id="Reaction1" metaid="_905823" name="degradation of LacI transcripts" reversible="false" sboTerm="SBO:0000179">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">
            <rdf:Description rdf:about="#_905823">
    <bqbiol:isVersionOf>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/go/GO:0006402"/>
    </rdf:Bag>
    </bqbiol:isVersionOf>
    </rdf:Description>

          </rdf:RDF>
        </annotation>
              <listOfReactants>
          <speciesReference metaid="_420973" species="X"/>
        </listOfReactants>
        <kineticLaw metaid="_420986" sboTerm="SBO:0000049">
          <math xmlns="http://www.w3.org/1998/Math/MathML">          
            <apply>
              <times/>
              <ci> kd_mRNA </ci>
              <ci> X </ci>
            </apply>
          </math>
                </kineticLaw>
      </reaction>
      <reaction id="Reaction2" metaid="_905842" name="degradation of TetR transcripts" reversible="false" sboTerm="SBO:0000179">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">
            <rdf:Description rdf:about="#_905842">
    <bqbiol:isVersionOf>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/go/GO:0006402"/>
    </rdf:Bag>
    </bqbiol:isVersionOf>
    </rdf:Description>

          </rdf:RDF>
        </annotation>
              <listOfReactants>
          <speciesReference metaid="_420999" species="Y"/>
        </listOfReactants>
        <kineticLaw metaid="_421012" sboTerm="SBO:0000049">
          <math xmlns="http://www.w3.org/1998/Math/MathML">          
            <apply>
              <times/>
              <ci> kd_mRNA </ci>
              <ci> Y </ci>
            </apply>
          </math>
                </kineticLaw>
      </reaction>
      <reaction id="Reaction3" metaid="_905862" name="degradation of CI transcripts" reversible="false" sboTerm="SBO:0000179">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">
            <rdf:Description rdf:about="#_905862">
    <bqbiol:isVersionOf>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/go/GO:0006402"/>
    </rdf:Bag>
    </bqbiol:isVersionOf>
    </rdf:Description>

          </rdf:RDF>
        </annotation>
              <listOfReactants>
          <speciesReference metaid="_421025" species="Z"/>
        </listOfReactants>
        <kineticLaw metaid="_421038" sboTerm="SBO:0000049">
          <math xmlns="http://www.w3.org/1998/Math/MathML">          
            <apply>
              <times/>
              <ci> kd_mRNA </ci>
              <ci> Z </ci>
            </apply>
          </math>
                </kineticLaw>
      </reaction>
      <reaction id="Reaction4" metaid="_905882" name="translation of LacI" reversible="false" sboTerm="SBO:0000184">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">
            <rdf:Description rdf:about="#_905882">
    <bqbiol:isVersionOf>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/go/GO:0006412"/>
    </rdf:Bag>
    </bqbiol:isVersionOf>
    </rdf:Description>

          </rdf:RDF>
        </annotation>
              <listOfProducts>
          <speciesReference metaid="_421051" species="PX"/>
        </listOfProducts>
        <listOfModifiers>
          <modifierSpeciesReference metaid="_421064" sboTerm="SBO:0000461" species="X"/>
        </listOfModifiers>
        <kineticLaw metaid="_421076" sboTerm="SBO:0000049">
          <math xmlns="http://www.w3.org/1998/Math/MathML">          
            <apply>
              <times/>
              <ci> k_tl </ci>
              <ci> X </ci>
            </apply>
          </math>
                </kineticLaw>
      </reaction>
      <reaction id="Reaction5" metaid="_905903" name="translation of TetR" reversible="false" sboTerm="SBO:0000184">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">
            <rdf:Description rdf:about="#_905903">
    <bqbiol:isVersionOf>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/go/GO:0006412"/>
    </rdf:Bag>
    </bqbiol:isVersionOf>
    </rdf:Description>

          </rdf:RDF>
        </annotation>
              <listOfProducts>
          <speciesReference metaid="_421088" species="PY"/>
        </listOfProducts>
        <listOfModifiers>
          <modifierSpeciesReference metaid="_421100" sboTerm="SBO:0000461" species="Y"/>
        </listOfModifiers>
        <kineticLaw metaid="_421112" sboTerm="SBO:0000049">
          <math xmlns="http://www.w3.org/1998/Math/MathML">          
            <apply>
              <times/>
              <ci> k_tl </ci>
              <ci> Y </ci>
            </apply>
          </math>
                </kineticLaw>
      </reaction>
      <reaction id="Reaction6" metaid="_905923" name="translation of CI" reversible="false" sboTerm="SBO:0000184">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">
            <rdf:Description rdf:about="#_905923">
    <bqbiol:isVersionOf>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/go/GO:0006412"/>
    </rdf:Bag>
    </bqbiol:isVersionOf>
    </rdf:Description>

          </rdf:RDF>
        </annotation>
              <listOfProducts>
          <speciesReference metaid="_421124" species="PZ"/>
        </listOfProducts>
        <listOfModifiers>
          <modifierSpeciesReference metaid="_421136" sboTerm="SBO:0000461" species="Z"/>
        </listOfModifiers>
        <kineticLaw metaid="_421148" sboTerm="SBO:0000049">
          <math xmlns="http://www.w3.org/1998/Math/MathML">          
            <apply>
              <times/>
              <ci> k_tl </ci>
              <ci> Z </ci>
            </apply>
          </math>
                </kineticLaw>
      </reaction>
      <reaction id="Reaction7" metaid="_905943" name="degradation of LacI" reversible="false" sboTerm="SBO:0000179">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">
            <rdf:Description rdf:about="#_905943">
    <bqbiol:isVersionOf>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/go/GO:0030163"/>
    </rdf:Bag>
    </bqbiol:isVersionOf>
    </rdf:Description>

          </rdf:RDF>
        </annotation>
              <listOfReactants>
          <speciesReference metaid="_421160" species="PX"/>
        </listOfReactants>
        <kineticLaw metaid="_421172" sboTerm="SBO:0000049">
          <math xmlns="http://www.w3.org/1998/Math/MathML">          
            <apply>
              <times/>
              <ci> kd_prot </ci>
              <ci> PX </ci>
            </apply>
          </math>
                </kineticLaw>
      </reaction>
      <reaction id="Reaction8" metaid="_905962" name="degradation of TetR" reversible="false" sboTerm="SBO:0000179">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">
            <rdf:Description rdf:about="#_905962">
    <bqbiol:isVersionOf>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/go/GO:0030163"/>
    </rdf:Bag>
    </bqbiol:isVersionOf>
    </rdf:Description>

          </rdf:RDF>
        </annotation>
              <listOfReactants>
          <speciesReference metaid="_421184" species="PY"/>
        </listOfReactants>
        <kineticLaw metaid="_421196" sboTerm="SBO:0000049">
          <math xmlns="http://www.w3.org/1998/Math/MathML">          
            <apply>
              <times/>
              <ci> kd_prot </ci>
              <ci> PY </ci>
            </apply>
          </math>
                </kineticLaw>
      </reaction>
      <reaction id="Reaction9" metaid="_905982" name="degradation of CI" reversible="false" sboTerm="SBO:0000179">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">
            <rdf:Description rdf:about="#_905982">
    <bqbiol:isVersionOf>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/go/GO:0030163"/>
    </rdf:Bag>
    </bqbiol:isVersionOf>
    </rdf:Description>

          </rdf:RDF>
        </annotation>
              <listOfReactants>
          <speciesReference metaid="_421208" species="PZ"/>
        </listOfReactants>
        <kineticLaw metaid="_421220" sboTerm="SBO:0000049">
          <math xmlns="http://www.w3.org/1998/Math/MathML">          
            <apply>
              <times/>
              <ci> kd_prot </ci>
              <ci> PZ </ci>
            </apply>
          </math>
                </kineticLaw>
      </reaction>
      <reaction id="Reaction10" metaid="_906002" name="transcription of LacI" reversible="false" sboTerm="SBO:0000183">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">
            <rdf:Description rdf:about="#_906002">
    <bqbiol:isVersionOf>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/go/GO:0006351"/>
    </rdf:Bag>
    </bqbiol:isVersionOf>
    </rdf:Description>

          </rdf:RDF>
        </annotation>
              <listOfProducts>
          <speciesReference metaid="_421232" species="X"/>
        </listOfProducts>
        <listOfModifiers>
          <modifierSpeciesReference metaid="_421244" sboTerm="SBO:0000536" species="PZ"/>
        </listOfModifiers>
        <kineticLaw metaid="_421256">
          <math xmlns="http://www.w3.org/1998/Math/MathML">          
            <apply>
              <plus/>
              <ci> a0_tr </ci>
              <apply>
                <divide/>
                <apply>
                  <times/>
                  <ci> a_tr </ci>
                  <apply>
                    <power/>
                    <ci> KM </ci>
                    <ci> n </ci>
                  </apply>
                </apply>
                <apply>
                  <plus/>
                  <apply>
                    <power/>
                    <ci> KM </ci>
                    <ci> n </ci>
                  </apply>
                  <apply>
                    <power/>
                    <ci> PZ </ci>
                    <ci> n </ci>
                  </apply>
                </apply>
              </apply>
            </apply>
          </math>
                </kineticLaw>
      </reaction>
      <reaction id="Reaction11" metaid="_906022" name="transcription of TetR" reversible="false" sboTerm="SBO:0000183">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">
            <rdf:Description rdf:about="#_906022">
    <bqbiol:isVersionOf>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/go/GO:0006351"/>
    </rdf:Bag>
    </bqbiol:isVersionOf>
    </rdf:Description>

          </rdf:RDF>
        </annotation>
              <listOfProducts>
          <speciesReference metaid="_421268" species="Y"/>
        </listOfProducts>
        <listOfModifiers>
          <modifierSpeciesReference metaid="_421280" sboTerm="SBO:0000536" species="PX"/>
        </listOfModifiers>
        <kineticLaw metaid="_421292">
          <math xmlns="http://www.w3.org/1998/Math/MathML">          
            <apply>
              <plus/>
              <ci> a0_tr </ci>
              <apply>
                <divide/>
                <apply>
                  <times/>
                  <ci> a_tr </ci>
                  <apply>
                    <power/>
                    <ci> KM </ci>
                    <ci> n </ci>
                  </apply>
                </apply>
                <apply>
                  <plus/>
                  <apply>
                    <power/>
                    <ci> KM </ci>
                    <ci> n </ci>
                  </apply>
                  <apply>
                    <power/>
                    <ci> PX </ci>
                    <ci> n </ci>
                  </apply>
                </apply>
              </apply>
            </apply>
          </math>
                </kineticLaw>
      </reaction>
      <reaction id="Reaction12" metaid="_906042" name="transcription of CI" reversible="false" sboTerm="SBO:0000183">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:bqmodel="http://biomodels.net/model-qualifiers/" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/">
            <rdf:Description rdf:about="#_906042">
    <bqbiol:isVersionOf>
    <rdf:Bag>
    <rdf:li rdf:resource="http://identifiers.org/go/GO:0006351"/>
    </rdf:Bag>
    </bqbiol:isVersionOf>
    </rdf:Description>

          </rdf:RDF>
        </annotation>
              <listOfProducts>
          <speciesReference metaid="_421304" species="Z"/>
        </listOfProducts>
        <listOfModifiers>
          <modifierSpeciesReference metaid="_421317" sboTerm="SBO:0000536" species="PY"/>
        </listOfModifiers>
        <kineticLaw metaid="_421329">
          <math xmlns="http://www.w3.org/1998/Math/MathML">          
            <apply>
              <plus/>
              <ci> a0_tr </ci>
              <apply>
                <divide/>
                <apply>
                  <times/>
                  <ci> a_tr </ci>
                  <apply>
                    <power/>
                    <ci> KM </ci>
                    <ci> n </ci>
                  </apply>
                </apply>
                <apply>
                  <plus/>
                  <apply>
                    <power/>
                    <ci> KM </ci>
                    <ci> n </ci>
                  </apply>
                  <apply>
                    <power/>
                    <ci> PY </ci>
                    <ci> n </ci>
                  </apply>
                </apply>
              </apply>
            </apply>
          </math>
                </kineticLaw>
      </reaction>
    </listOfReactions>
  </model>
</sbml>

One component sbml with a variable for the compartment, every parameter, every species and the rate of every reaction, and the variable of integration time. The assignment rules and the kinetic laws are equations, the rates of its reactions the differential equation of a species. Every element has an id, which the metadata points at.

The variables are dimensionless: the parameters of the SBML model have no units, and the units are only converted when the annotation is complete, see Units.

repressilator.cellml
<?xml version="1.0" encoding="UTF-8"?>
<model xmlns="http://www.cellml.org/cellml/2.0#" name="BIOMD0000000012" id="BIOMD0000000012">
  <units name="volume" id="units_volume">
    <unit prefix="femto" units="litre"/>
  </units>
  <units name="item" id="units_item"/>
  <units name="substance" id="units_substance">
    <unit units="item"/>
  </units>
  <units name="time" id="units_time">
    <unit multiplier="60" units="second"/>
  </units>
  <units name="substance_per_time" id="units_substance_per_time">
    <unit units="substance"/>
    <unit exponent="-1" units="time"/>
  </units>
  <component name="sbml">
    <variable name="time" units="dimensionless" id="time"/>
    <variable name="cell" units="dimensionless" initial_value="1" id="cell"/>
    <variable name="beta" units="dimensionless" id="beta"/>
    <variable name="alpha0" units="dimensionless" id="alpha0"/>
    <variable name="alpha" units="dimensionless" id="alpha"/>
    <variable name="eff" units="dimensionless" initial_value="20" id="eff"/>
    <variable name="n" units="dimensionless" initial_value="2" id="n"/>
    <variable name="KM" units="dimensionless" initial_value="40" id="KM"/>
    <variable name="tau_mRNA" units="dimensionless" initial_value="2" id="tau_mRNA"/>
    <variable name="tau_prot" units="dimensionless" initial_value="10" id="tau_prot"/>
    <variable name="t_ave" units="dimensionless" id="t_ave"/>
    <variable name="kd_mRNA" units="dimensionless" id="kd_mRNA"/>
    <variable name="kd_prot" units="dimensionless" id="kd_prot"/>
    <variable name="k_tl" units="dimensionless" id="k_tl"/>
    <variable name="a_tr" units="dimensionless" id="a_tr"/>
    <variable name="ps_a" units="dimensionless" initial_value="0.5" id="ps_a"/>
    <variable name="ps_0" units="dimensionless" initial_value="0.0005" id="ps_0"/>
    <variable name="a0_tr" units="dimensionless" id="a0_tr"/>
    <variable name="PX" units="dimensionless" initial_value="0" id="PX"/>
    <variable name="PY" units="dimensionless" initial_value="0" id="PY"/>
    <variable name="PZ" units="dimensionless" initial_value="0" id="PZ"/>
    <variable name="X" units="dimensionless" initial_value="0" id="X"/>
    <variable name="Y" units="dimensionless" initial_value="20" id="Y"/>
    <variable name="Z" units="dimensionless" initial_value="0" id="Z"/>
    <variable name="Reaction1" units="dimensionless" id="Reaction1"/>
    <variable name="Reaction2" units="dimensionless" id="Reaction2"/>
    <variable name="Reaction3" units="dimensionless" id="Reaction3"/>
    <variable name="Reaction4" units="dimensionless" id="Reaction4"/>
    <variable name="Reaction5" units="dimensionless" id="Reaction5"/>
    <variable name="Reaction6" units="dimensionless" id="Reaction6"/>
    <variable name="Reaction7" units="dimensionless" id="Reaction7"/>
    <variable name="Reaction8" units="dimensionless" id="Reaction8"/>
    <variable name="Reaction9" units="dimensionless" id="Reaction9"/>
    <variable name="Reaction10" units="dimensionless" id="Reaction10"/>
    <variable name="Reaction11" units="dimensionless" id="Reaction11"/>
    <variable name="Reaction12" units="dimensionless" id="Reaction12"/>
    <math xmlns="http://www.w3.org/1998/Math/MathML" xmlns:cellml="http://www.cellml.org/cellml/2.0#">
      <apply>
        <eq/>
        <ci>t_ave</ci>
        <apply>
          <divide/>
          <ci>tau_mRNA</ci>
          <apply>
            <ln/>
            <cn cellml:units="dimensionless">2</cn>
          </apply>
        </apply>
      </apply>
      <apply>
        <eq/>
        <ci>beta</ci>
        <apply>
          <divide/>
          <ci>tau_mRNA</ci>
          <ci>tau_prot</ci>
        </apply>
      </apply>
      <apply>
        <eq/>
        <ci>k_tl</ci>
        <apply>
          <divide/>
          <ci>eff</ci>
          <ci>t_ave</ci>
        </apply>
      </apply>
      <apply>
        <eq/>
        <ci>a_tr</ci>
        <apply>
          <times/>
          <apply>
            <minus/>
            <ci>ps_a</ci>
            <ci>ps_0</ci>
          </apply>
          <cn cellml:units="dimensionless">60</cn>
        </apply>
      </apply>
      <apply>
        <eq/>
        <ci>a0_tr</ci>
        <apply>
          <times/>
          <ci>ps_0</ci>
          <cn cellml:units="dimensionless">60</cn>
        </apply>
      </apply>
      <apply>
        <eq/>
        <ci>kd_prot</ci>
        <apply>
          <divide/>
          <apply>
            <ln/>
            <cn cellml:units="dimensionless">2</cn>
          </apply>
          <ci>tau_prot</ci>
        </apply>
      </apply>
      <apply>
        <eq/>
        <ci>kd_mRNA</ci>
        <apply>
          <divide/>
          <apply>
            <ln/>
            <cn cellml:units="dimensionless">2</cn>
          </apply>
          <ci>tau_mRNA</ci>
        </apply>
      </apply>
      <apply>
        <eq/>
        <ci>alpha</ci>
        <apply>
          <divide/>
          <apply>
            <times/>
            <ci>a_tr</ci>
            <ci>eff</ci>
            <ci>tau_prot</ci>
          </apply>
          <apply>
            <times/>
            <apply>
              <ln/>
              <cn cellml:units="dimensionless">2</cn>
            </apply>
            <ci>KM</ci>
          </apply>
        </apply>
      </apply>
      <apply>
        <eq/>
        <ci>alpha0</ci>
        <apply>
          <divide/>
          <apply>
            <times/>
            <ci>a0_tr</ci>
            <ci>eff</ci>
            <ci>tau_prot</ci>
          </apply>
          <apply>
            <times/>
            <apply>
              <ln/>
              <cn cellml:units="dimensionless">2</cn>
            </apply>
            <ci>KM</ci>
          </apply>
        </apply>
      </apply>
      <apply>
        <eq/>
        <apply>
          <diff/>
          <bvar>
            <ci>time</ci>
          </bvar>
          <ci>X</ci>
        </apply>
        <apply>
          <plus/>
          <apply>
            <minus/>
            <ci>Reaction1</ci>
          </apply>
          <ci>Reaction10</ci>
        </apply>
      </apply>
      <apply>
        <eq/>
        <apply>
          <diff/>
          <bvar>
            <ci>time</ci>
          </bvar>
          <ci>Y</ci>
        </apply>
        <apply>
          <plus/>
          <apply>
            <minus/>
            <ci>Reaction2</ci>
          </apply>
          <ci>Reaction11</ci>
        </apply>
      </apply>
      <apply>
        <eq/>
        <apply>
          <diff/>
          <bvar>
            <ci>time</ci>
          </bvar>
          <ci>Z</ci>
        </apply>
        <apply>
          <plus/>
          <apply>
            <minus/>
            <ci>Reaction3</ci>
          </apply>
          <ci>Reaction12</ci>
        </apply>
      </apply>
      <apply>
        <eq/>
        <apply>
          <diff/>
          <bvar>
            <ci>time</ci>
          </bvar>
          <ci>PX</ci>
        </apply>
        <apply>
          <minus/>
          <ci>Reaction4</ci>
          <ci>Reaction7</ci>
        </apply>
      </apply>
      <apply>
        <eq/>
        <apply>
          <diff/>
          <bvar>
            <ci>time</ci>
          </bvar>
          <ci>PY</ci>
        </apply>
        <apply>
          <minus/>
          <ci>Reaction5</ci>
          <ci>Reaction8</ci>
        </apply>
      </apply>
      <apply>
        <eq/>
        <apply>
          <diff/>
          <bvar>
            <ci>time</ci>
          </bvar>
          <ci>PZ</ci>
        </apply>
        <apply>
          <minus/>
          <ci>Reaction6</ci>
          <ci>Reaction9</ci>
        </apply>
      </apply>
      <apply>
        <eq/>
        <ci>Reaction1</ci>
        <apply>
          <times/>
          <ci>kd_mRNA</ci>
          <ci>X</ci>
        </apply>
      </apply>
      <apply>
        <eq/>
        <ci>Reaction2</ci>
        <apply>
          <times/>
          <ci>kd_mRNA</ci>
          <ci>Y</ci>
        </apply>
      </apply>
      <apply>
        <eq/>
        <ci>Reaction3</ci>
        <apply>
          <times/>
          <ci>kd_mRNA</ci>
          <ci>Z</ci>
        </apply>
      </apply>
      <apply>
        <eq/>
        <ci>Reaction4</ci>
        <apply>
          <times/>
          <ci>k_tl</ci>
          <ci>X</ci>
        </apply>
      </apply>
      <apply>
        <eq/>
        <ci>Reaction5</ci>
        <apply>
          <times/>
          <ci>k_tl</ci>
          <ci>Y</ci>
        </apply>
      </apply>
      <apply>
        <eq/>
        <ci>Reaction6</ci>
        <apply>
          <times/>
          <ci>k_tl</ci>
          <ci>Z</ci>
        </apply>
      </apply>
      <apply>
        <eq/>
        <ci>Reaction7</ci>
        <apply>
          <times/>
          <ci>kd_prot</ci>
          <ci>PX</ci>
        </apply>
      </apply>
      <apply>
        <eq/>
        <ci>Reaction8</ci>
        <apply>
          <times/>
          <ci>kd_prot</ci>
          <ci>PY</ci>
        </apply>
      </apply>
      <apply>
        <eq/>
        <ci>Reaction9</ci>
        <apply>
          <times/>
          <ci>kd_prot</ci>
          <ci>PZ</ci>
        </apply>
      </apply>
      <apply>
        <eq/>
        <ci>Reaction10</ci>
        <apply>
          <plus/>
          <ci>a0_tr</ci>
          <apply>
            <divide/>
            <apply>
              <times/>
              <ci>a_tr</ci>
              <apply>
                <power/>
                <ci>KM</ci>
                <ci>n</ci>
              </apply>
            </apply>
            <apply>
              <plus/>
              <apply>
                <power/>
                <ci>KM</ci>
                <ci>n</ci>
              </apply>
              <apply>
                <power/>
                <ci>PZ</ci>
                <ci>n</ci>
              </apply>
            </apply>
          </apply>
        </apply>
      </apply>
      <apply>
        <eq/>
        <ci>Reaction11</ci>
        <apply>
          <plus/>
          <ci>a0_tr</ci>
          <apply>
            <divide/>
            <apply>
              <times/>
              <ci>a_tr</ci>
              <apply>
                <power/>
                <ci>KM</ci>
                <ci>n</ci>
              </apply>
            </apply>
            <apply>
              <plus/>
              <apply>
                <power/>
                <ci>KM</ci>
                <ci>n</ci>
              </apply>
              <apply>
                <power/>
                <ci>PX</ci>
                <ci>n</ci>
              </apply>
            </apply>
          </apply>
        </apply>
      </apply>
      <apply>
        <eq/>
        <ci>Reaction12</ci>
        <apply>
          <plus/>
          <ci>a0_tr</ci>
          <apply>
            <divide/>
            <apply>
              <times/>
              <ci>a_tr</ci>
              <apply>
                <power/>
                <ci>KM</ci>
                <ci>n</ci>
              </apply>
            </apply>
            <apply>
              <plus/>
              <apply>
                <power/>
                <ci>KM</ci>
                <ci>n</ci>
              </apply>
              <apply>
                <power/>
                <ci>PY</ci>
                <ci>n</ci>
              </apply>
            </apply>
          </apply>
        </apply>
      </apply>
    </math>
  </component>
</model>

The names (dcterms:title), notes (dcterms:description), SBO terms (the first bqbiol:is), annotations and the history of the SBML elements, with repressilator.cellml#<id> as subject. The RDF is the one of the SBML annotations, in the form of SBML level 3.

repressilator.rdf
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:vCard4="http://www.w3.org/2006/vcard/ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
  <rdf:Description rdf:about="repressilator.cellml#BIOMD0000000012">
    <dcterms:title>Elowitz2000 - Repressilator</dcterms:title>
    <dcterms:description rdf:parseType="Literal">
<body xmlns="http://www.w3.org/1999/xhtml">
  <div class="dc:title">Elowitz2000 - Repressilator</div>
  <div class="dc:description">
    <p>This model describes the deterministic version of the repressilator system.</p>
    <p>The authors of this model (see reference) use three transcriptional repressor systems that are not part of any natural biological clock to build an oscillating network that they called the repressilator. The model system was induced in Escherichia coli.</p>
    <p>In this system, LacI (variable X is the mRNA, variable PX is the protein) inhibits the tetracycline-resistance transposon tetR (Y, PY describe mRNA and protein). Protein tetR inhibits the gene Cl from phage Lambda (Z, PZ: mRNA, protein),and protein Cl inhibits lacI expression. With the appropriate parameter values this system oscillates.</p>
  </div>
  <div class="dc:bibliographicCitation">
    <p>This model is described in the article:</p>
    <div class="bibo:title">
      <a href="http://identifiers.org/pubmed/10659856" title="Access to this publication">A synthetic oscillatory network of transcriptional regulators.</a>
    </div>
    <div class="bibo:authorList">Elowitz MB, Leibler S.</div>
    <div class="bibo:Journal">Nature. 2000 Jan; 403(6767):335-338</div>
    <p>Abstract:</p>
    <div class="bibo:abstract">
      <p>Networks of interacting biomolecules carry out many essential functions in living cells, but the &apos;design principles&apos; underlying the functioning of such intracellular networks remain poorly understood, despite intensive efforts including quantitative analysis of relatively simple systems. Here we present a complementary approach to this problem: the design and construction of a synthetic network to implement a particular function. We used three transcriptional repressor systems that are not part of any natural biological clock to build an oscillating network, termed the repressilator, in Escherichia coli. The network periodically induces the synthesis of green fluorescent protein as a readout of its state in individual cells. The resulting oscillations, with typical periods of hours, are slower than the cell-division cycle, so the state of the oscillator has to be transmitted from generation to generation. This artificial clock displays noisy behaviour, possibly because of stochastic fluctuations of its components. Such &apos;rational network design may lead both to the engineering of new cellular behaviours and to an improved understanding of naturally occurring networks.</p>
    </div>
  </div>
  <div class="bm:curation">
    <p>The model is based upon the equations in Box 1 of the paper; however, these equations as printed are dimensionless, and the correct dimensions have been returned to the equations, and the parameters set to reproduce Figure 1C (left).</p>
  </div>
  <div class="bm:modification">
    <p>The original model was generated by B.E. Shapiro using Cellerator version 1.0 update 2.1127 using Mathematica 4.2 for Mac OS X (June 4, 2002), November 27, 2002 12:15:32, using (PowerMac,PowerPC, Mac OS X,MacOSX,Darwin).</p>
    <p>Nicolas Le Novere provided a corrected version generated by SBMLeditor on Sun Aug 20 00:44:05 BST 2006. This removed the EmptySet species. Ran fine on COPASI 4.0 build 18.</p>
    <p>Bruce Shapiro revised the model with SBMLeditor on 23 October 2006 20:39 PST. This defines default units and correct reactions. The original Cellerator reactions while being mathematically correct did not accurately reflect the intent of the authors. The original notes were mostly removed because they were mostly incorrect in the revised version. Tested with MathSBML 2.6.0.</p>
    <p>Nicolas Le Novere changed the volume to 1 cubic micrometre, to allow for stochastic simulation.</p>
    <p>Changed by Lukas Endler to use the average livetime of mRNA instead of its halflife and a corrected value of alpha and alpha0.</p>
    <p>Moreover, the equations used in this model were clarified, cf. below.</p>
    <p>The equations given in        <b>box 1</b>
            of the original publication are rescaled in three respects (lowercase letters denote the rescaled, uppercase letters the unscaled number of molecules per cell):        </p>
    <ul>
      <li>the time is rescaled to the average mRNA lifetime,          <em>t_ave: τ = t/t_ave</em></li>
      <li>the mRNA concentration is rescaled to the translation efficiency          <em>eff: m = M/eff</em></li>
      <li>the protein concentration is rescaled to          <em>Km: p = P/Km</em></li>
    </ul>
    <p>
      <em>α</em>
            in the equations should be in units of rescaled proteins per promotor and cell, and        <em>β</em>
            is the ratio of the protein to the mRNA decay rates or the ratio of the mRNA to the protein halflife.        </p>
      <p>In this version of the model        <em>α</em>
            and        <em>β</em>
            are calculated correspondingly to the article, while        <em>p</em>
            and        <em>m</em>
            where just replaced by        <em>P/Km</em>
            resp.        <em>M/eff</em>
            and all equations multiplied by        <em>1/t_ave</em>
            . Also, to make the equations easier to read, commonly used variables derived from the parameters given in the article by simple rules were introduced.        </p>
      <p>The parameters given in the article were:</p>
      <table>
        <tr>
          <td>promotor strength (repressed) (            <em>tps_repr</em>
                ):            </td>
          <td>5*10            <sup>-4</sup></td>
          <td>transcripts/(promotor*s)</td>
        </tr>
        <tr>
          <td>promotor strength (full) (            <em>tps_active</em>
                ):            </td>
          <td>0.5</td>
          <td>transcripts/(promotor*s)</td>
        </tr>
        <tr>
          <td>mRNA half life, τ            <sub>1/2,mRNA</sub>
                :            </td>
          <td>2</td>
          <td>min</td>
        </tr>
        <tr>
          <td>protein half life, τ            <sub>1/2,prot</sub>
                :            </td>
          <td>10</td>
          <td>min</td>
        </tr>
        <tr>
          <td>K            <sub>M</sub>
                :            </td>
          <td>40</td>
          <td>monomers/cell</td>
        </tr>
        <tr>
          <td>Hill coefficient n:</td>
          <td>2</td>
          <td/>
        </tr>
      </table>
      <p>From these the following constants can be derived:</p>
      <table>
        <tr>
          <td>average mRNA lifetime (            <em>t_ave</em>
                ):            </td>
          <td>
            <em>τ              <sub>1/2,mRNA</sub>
                  /ln(2)              </em>
          </td>
          <td>= 2.89 min</td>
        </tr>
        <tr>
          <td>mRNA decay rate (            <em>kd_mRNA</em>
                ):            </td>
          <td>
            <em>ln(2)/ τ              <sub>1/2,mRNA</sub></em>
          </td>
          <td>= 0.347 min            <sup>-1</sup></td>
        </tr>
        <tr>
          <td>protein decay rate (            <em>kd_prot</em>
                ):            </td>
          <td>
            <em>ln(2)/ τ              <sub>1/2,prot</sub></em>
          </td>
        </tr>
        <tr>
          <td>transcription rate (            <em>a_tr</em>
                ):            </td>
          <td>
            <em>tps_active*60</em>
          </td>
          <td>= 29.97 transcripts/min</td>
        </tr>
        <tr>
          <td>transcription rate (repressed) (            <em>a0_tr</em>
                ):            </td>
          <td>
            <em>tps_repr*60</em>
          </td>
          <td>= 0.03 transcripts/min</td>
        </tr>
        <tr>
          <td>translation rate (            <em>k_tl</em>
                ):            </td>
          <td>
            <em>eff*kd_mRNA</em>
          </td>
          <td>= 6.93 proteins/(mRNA*min)</td>
        </tr>
        <tr>
          <td>α :</td>
          <td>
            <em>a_tr*eff*τ              <sub>1/2,prot</sub>
                  /(ln(2)*K              <sub>M</sub>
                  )              </em>
          </td>
          <td>= 216.4 proteins/(promotor*cell*Km)</td>
        </tr>
        <tr>
          <td>α            <sub>0</sub>
                :            </td>
          <td>
            <em>a0_tr*eff*τ              <sub>1/2,prot</sub>
                  /(ln(2)*K              <sub>M</sub>
                  )              </em>
          </td>
          <td>= 0.2164 proteins/(promotor*cell*Km)</td>
        </tr>
        <tr>
          <td>β :</td>
          <td>
            <em>k_dp/k_dm</em>
          </td>
          <td>= 0.2</td>
        </tr>
      </table>
      <br/>
      <p>Annotation by the Kinetic Simulation Algorithm Ontology (KiSAO):</p>
      <p>To reproduce the simulations run published by the authors, the model has to be simulated with any of two different approaches. First, one could use a deterministic method (        <a href="http://identifiers.org/biomodels.kisao/KISAO_0000035" title="Access to: KISAO_0000035">KISAO_0000035</a>
            ) with continuous variables (        <a href="http://identifiers.org/biomodels.kisao/KISAO_0000018" title="Access to: KISAO_0000018">KISAO_0000018</a>
            ). One sample algorithm to use is the CVODE solver (        <a href="http://identifiers.org/biomodels.kisao/KISAO_0000019" title="Access to: KISAO_0000019">KISAO_0000019</a>
            ). Second, one could simulate the system using Gillespie&apos;s direct method (        <a href="http://identifiers.org/biomodels.kisao/KISAO_0000029" title="Access to: KISAO_0000029">KISAO_0000029</a>
            ), which is a stochastic method (        <a href="http://identifiers.org/biomodels.kisao/KISAO_0000036" title="Access to: KISAO_0000036">KISAO_0000036</a>
            ) supporting adaptive timesteps (        <a href="http://identifiers.org/biomodels.kisao/KISAO_0000041" title="Access to: KISAO_0000041">KISAO_0000041</a>
            ) and using discrete variables (        <a href="http://identifiers.org/biomodels.kisao/KISAO_0000016" title="Access to: KISAO_0000016">KISAO_0000016</a>
            ).        </p>
    </div>
    <div class="dc:publisher">
      <p>This model is hosted on        <a href="http://www.ebi.ac.uk/biomodels/">BioModels Database</a>
            and identified by:        <a href="http://identifiers.org/biomodels.db/BIOMD0000000012">BIOMD0000000012</a>
            .        </p>
      <p>To cite BioModels Database, please use:        <a href="http://identifiers.org/pubmed/20587024" title="Latest BioModels Database publication">BioModels Database: An enhanced, curated and annotated resource for published quantitative kinetic models</a>
            .        </p>
    </div>
    <div class="dc:license">
      <p>To the extent possible under law, all copyright and related or neighbouring rights to this encoded model have been dedicated to the public domain worldwide. Please refer to        <a href="http://creativecommons.org/publicdomain/zero/1.0/" title="Access to: CC0 1.0 Universal (CC0 1.0), Public Domain Dedication">CC0 Public Domain Dedication</a>
            for more information.        </p>
    </div>
  </body>
    </dcterms:description>
    <dcterms:creator>
      <rdf:Bag>
        <rdf:li rdf:parseType="Resource">
          <vCard4:hasName rdf:parseType="Resource">
            <vCard4:family-name>Le Novère</vCard4:family-name>
            <vCard4:given-name>Nicolas</vCard4:given-name>
          </vCard4:hasName>
          <vCard4:hasEmail>lenov@ebi.ac.uk</vCard4:hasEmail>
          <vCard4:organization-name>EMBL-EBI</vCard4:organization-name>
        </rdf:li>
        <rdf:li rdf:parseType="Resource">
          <vCard4:hasName rdf:parseType="Resource">
            <vCard4:family-name>Shapiro</vCard4:family-name>
            <vCard4:given-name>Bruce</vCard4:given-name>
          </vCard4:hasName>
          <vCard4:hasEmail>bshapiro@caltech.edu</vCard4:hasEmail>
          <vCard4:organization-name>Jet Propulsion Laboratory</vCard4:organization-name>
        </rdf:li>
        <rdf:li rdf:parseType="Resource">
          <vCard4:hasName rdf:parseType="Resource">
            <vCard4:family-name>Juty</vCard4:family-name>
            <vCard4:given-name>Nick</vCard4:given-name>
          </vCard4:hasName>
          <vCard4:hasEmail>juty@ebi.ac.uk</vCard4:hasEmail>
          <vCard4:organization-name>EMBL-EBI</vCard4:organization-name>
        </rdf:li>
        <rdf:li rdf:parseType="Resource">
          <vCard4:hasName rdf:parseType="Resource">
            <vCard4:family-name>Endler</vCard4:family-name>
            <vCard4:given-name>Lukas</vCard4:given-name>
          </vCard4:hasName>
          <vCard4:hasEmail>lukas@ebi.ac.uk</vCard4:hasEmail>
          <vCard4:organization-name>EMBL-EBI</vCard4:organization-name>
        </rdf:li>
        <rdf:li rdf:parseType="Resource">
          <vCard4:hasName rdf:parseType="Resource">
            <vCard4:family-name>Chelliah</vCard4:family-name>
            <vCard4:given-name>Vijayalakshmi</vCard4:given-name>
          </vCard4:hasName>
          <vCard4:hasEmail>viji@ebi.ac.uk</vCard4:hasEmail>
          <vCard4:organization-name>EMBL-EBI</vCard4:organization-name>
        </rdf:li>
      </rdf:Bag>
    </dcterms:creator>
    <dcterms:created rdf:parseType="Resource">
      <dcterms:W3CDTF>2009-01-20T14:03:56Z</dcterms:W3CDTF>
    </dcterms:created>
    <dcterms:modified rdf:parseType="Resource">
      <dcterms:W3CDTF>2013-07-10T10:59:30Z</dcterms:W3CDTF>
    </dcterms:modified>
    <bqmodel:is>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/biomodels.db/MODEL6615351360"/>
        <rdf:li rdf:resource="http://identifiers.org/biomodels.db/BIOMD0000000012"/>
      </rdf:Bag>
    </bqmodel:is>
    <bqmodel:isDescribedBy>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/pubmed/10659856"/>
      </rdf:Bag>
    </bqmodel:isDescribedBy>
    <bqbiol:hasTaxon>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/taxonomy/562"/>
      </rdf:Bag>
    </bqbiol:hasTaxon>
    <bqbiol:isVersionOf>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/go/GO:0040029"/>
      </rdf:Bag>
    </bqbiol:isVersionOf>
    <bqbiol:hasProperty>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/mamo/MAMO_0000046"/>
      </rdf:Bag>
    </bqbiol:hasProperty>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#cell">
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000290"/>
      </rdf:Bag>
    </bqbiol:is>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/go/GO:0005623"/>
      </rdf:Bag>
    </bqbiol:is>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#PX">
    <dcterms:title>LacI protein</dcterms:title>
    <dcterms:description rdf:parseType="Literal">
<p xmlns="http://www.w3.org/1999/xhtml">
        lacI inhibitor</p>
    </dcterms:description>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000252"/>
      </rdf:Bag>
    </bqbiol:is>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/uniprot/P03023"/>
      </rdf:Bag>
    </bqbiol:is>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#PY">
    <dcterms:title>TetR protein</dcterms:title>
    <dcterms:description rdf:parseType="Literal">
<p xmlns="http://www.w3.org/1999/xhtml">
        Tet repressor protein</p>
    </dcterms:description>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000252"/>
      </rdf:Bag>
    </bqbiol:is>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/uniprot/P04483"/>
      </rdf:Bag>
    </bqbiol:is>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#PZ">
    <dcterms:title>cI protein</dcterms:title>
    <dcterms:description rdf:parseType="Literal">
<p xmlns="http://www.w3.org/1999/xhtml">
        lambda repressor</p>
    </dcterms:description>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000252"/>
      </rdf:Bag>
    </bqbiol:is>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/uniprot/P03034"/>
      </rdf:Bag>
    </bqbiol:is>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#X">
    <dcterms:title>LacI mRNA</dcterms:title>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000250"/>
      </rdf:Bag>
    </bqbiol:is>
    <bqbiol:isVersionOf>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/chebi/CHEBI:33699"/>
        <rdf:li rdf:resource="http://identifiers.org/kegg.compound/C00046"/>
      </rdf:Bag>
    </bqbiol:isVersionOf>
    <bqbiol:encodes>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/uniprot/P03023"/>
      </rdf:Bag>
    </bqbiol:encodes>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#Y">
    <dcterms:title>TetR mRNA</dcterms:title>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000250"/>
      </rdf:Bag>
    </bqbiol:is>
    <bqbiol:isVersionOf>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/chebi/CHEBI:33699"/>
        <rdf:li rdf:resource="http://identifiers.org/kegg.compound/C00046"/>
      </rdf:Bag>
    </bqbiol:isVersionOf>
    <bqbiol:encodes>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/uniprot/P04483"/>
      </rdf:Bag>
    </bqbiol:encodes>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#Z">
    <dcterms:title>cI mRNA</dcterms:title>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000250"/>
      </rdf:Bag>
    </bqbiol:is>
    <bqbiol:isVersionOf>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/chebi/CHEBI:33699"/>
        <rdf:li rdf:resource="http://identifiers.org/kegg.compound/C00046"/>
      </rdf:Bag>
    </bqbiol:isVersionOf>
    <bqbiol:encodes>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/uniprot/P03034"/>
      </rdf:Bag>
    </bqbiol:encodes>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#beta">
    <dcterms:description rdf:parseType="Literal">
<p xmlns="http://www.w3.org/1999/xhtml">
        ratio of protein to mRNA decay rates</p>
    </dcterms:description>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#alpha0">
    <dcterms:description rdf:parseType="Literal">
<p xmlns="http://www.w3.org/1999/xhtml">
        Leakiness in protein copies per promoter and cell</p>
    </dcterms:description>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000485"/>
      </rdf:Bag>
    </bqbiol:is>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#alpha">
    <dcterms:description rdf:parseType="Literal">
<p xmlns="http://www.w3.org/1999/xhtml">
        Protein copies per promoter and cell</p>
    </dcterms:description>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000186"/>
      </rdf:Bag>
    </bqbiol:is>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#eff">
    <dcterms:title>translation efficiency</dcterms:title>
    <dcterms:description rdf:parseType="Literal">
<p xmlns="http://www.w3.org/1999/xhtml">
        Average number of proteins per transcript</p>
    </dcterms:description>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#n">
    <dcterms:description rdf:parseType="Literal">
<p xmlns="http://www.w3.org/1999/xhtml">
        Hill coefficient</p>
    </dcterms:description>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000190"/>
      </rdf:Bag>
    </bqbiol:is>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#KM">
    <dcterms:description rdf:parseType="Literal">
<p xmlns="http://www.w3.org/1999/xhtml">
        Number of repressor molecules per cell giving half maximal repression, in monomers per cell</p>
    </dcterms:description>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000288"/>
      </rdf:Bag>
    </bqbiol:is>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#tau_mRNA">
    <dcterms:title>mRNA half life</dcterms:title>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000332"/>
      </rdf:Bag>
    </bqbiol:is>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#tau_prot">
    <dcterms:title>protein half life</dcterms:title>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000332"/>
      </rdf:Bag>
    </bqbiol:is>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#t_ave">
    <dcterms:title>average mRNA life time</dcterms:title>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000348"/>
      </rdf:Bag>
    </bqbiol:is>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#kd_mRNA">
    <dcterms:description rdf:parseType="Literal">
<p xmlns="http://www.w3.org/1999/xhtml">
        mRNA decay rate constant</p>
    </dcterms:description>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000356"/>
      </rdf:Bag>
    </bqbiol:is>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#kd_prot">
    <dcterms:description rdf:parseType="Literal">
<p xmlns="http://www.w3.org/1999/xhtml">
        Protein decay rate costant</p>
    </dcterms:description>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000356"/>
      </rdf:Bag>
    </bqbiol:is>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#k_tl">
    <dcterms:description rdf:parseType="Literal">
<p xmlns="http://www.w3.org/1999/xhtml">
        Translation rate constant</p>
    </dcterms:description>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000016"/>
      </rdf:Bag>
    </bqbiol:is>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#a_tr">
    <dcterms:description rdf:parseType="Literal">
<p xmlns="http://www.w3.org/1999/xhtml">
        Transcription rate from free promotor minus a0_tr</p>
    </dcterms:description>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000186"/>
      </rdf:Bag>
    </bqbiol:is>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#ps_a">
    <dcterms:title>tps_active</dcterms:title>
    <dcterms:description rdf:parseType="Literal">
<p xmlns="http://www.w3.org/1999/xhtml">
        Transcrition from free promotor in transcripts per second and promotor</p>
    </dcterms:description>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000186"/>
      </rdf:Bag>
    </bqbiol:is>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#ps_0">
    <dcterms:title>tps_repr</dcterms:title>
    <dcterms:description rdf:parseType="Literal">
<p xmlns="http://www.w3.org/1999/xhtml">
        Transcrition from fully repressed promotor in transcripts per second and promotor</p>
    </dcterms:description>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000485"/>
      </rdf:Bag>
    </bqbiol:is>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#a0_tr">
    <dcterms:description rdf:parseType="Literal">
<p xmlns="http://www.w3.org/1999/xhtml">
        Transcription rate from fully repressed promotor</p>
    </dcterms:description>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000485"/>
      </rdf:Bag>
    </bqbiol:is>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#Reaction1">
    <dcterms:title>degradation of LacI transcripts</dcterms:title>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000179"/>
      </rdf:Bag>
    </bqbiol:is>
    <bqbiol:isVersionOf>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/go/GO:0006402"/>
      </rdf:Bag>
    </bqbiol:isVersionOf>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#Reaction2">
    <dcterms:title>degradation of TetR transcripts</dcterms:title>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000179"/>
      </rdf:Bag>
    </bqbiol:is>
    <bqbiol:isVersionOf>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/go/GO:0006402"/>
      </rdf:Bag>
    </bqbiol:isVersionOf>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#Reaction3">
    <dcterms:title>degradation of CI transcripts</dcterms:title>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000179"/>
      </rdf:Bag>
    </bqbiol:is>
    <bqbiol:isVersionOf>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/go/GO:0006402"/>
      </rdf:Bag>
    </bqbiol:isVersionOf>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#Reaction4">
    <dcterms:title>translation of LacI</dcterms:title>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000184"/>
      </rdf:Bag>
    </bqbiol:is>
    <bqbiol:isVersionOf>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/go/GO:0006412"/>
      </rdf:Bag>
    </bqbiol:isVersionOf>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#Reaction5">
    <dcterms:title>translation of TetR</dcterms:title>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000184"/>
      </rdf:Bag>
    </bqbiol:is>
    <bqbiol:isVersionOf>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/go/GO:0006412"/>
      </rdf:Bag>
    </bqbiol:isVersionOf>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#Reaction6">
    <dcterms:title>translation of CI</dcterms:title>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000184"/>
      </rdf:Bag>
    </bqbiol:is>
    <bqbiol:isVersionOf>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/go/GO:0006412"/>
      </rdf:Bag>
    </bqbiol:isVersionOf>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#Reaction7">
    <dcterms:title>degradation of LacI</dcterms:title>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000179"/>
      </rdf:Bag>
    </bqbiol:is>
    <bqbiol:isVersionOf>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/go/GO:0030163"/>
      </rdf:Bag>
    </bqbiol:isVersionOf>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#Reaction8">
    <dcterms:title>degradation of TetR</dcterms:title>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000179"/>
      </rdf:Bag>
    </bqbiol:is>
    <bqbiol:isVersionOf>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/go/GO:0030163"/>
      </rdf:Bag>
    </bqbiol:isVersionOf>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#Reaction9">
    <dcterms:title>degradation of CI</dcterms:title>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000179"/>
      </rdf:Bag>
    </bqbiol:is>
    <bqbiol:isVersionOf>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/go/GO:0030163"/>
      </rdf:Bag>
    </bqbiol:isVersionOf>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#Reaction10">
    <dcterms:title>transcription of LacI</dcterms:title>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000183"/>
      </rdf:Bag>
    </bqbiol:is>
    <bqbiol:isVersionOf>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/go/GO:0006351"/>
      </rdf:Bag>
    </bqbiol:isVersionOf>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#Reaction11">
    <dcterms:title>transcription of TetR</dcterms:title>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000183"/>
      </rdf:Bag>
    </bqbiol:is>
    <bqbiol:isVersionOf>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/go/GO:0006351"/>
      </rdf:Bag>
    </bqbiol:isVersionOf>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#Reaction12">
    <dcterms:title>transcription of CI</dcterms:title>
    <bqbiol:is>
      <rdf:Bag>
        <rdf:li rdf:resource="https://identifiers.org/SBO:0000183"/>
      </rdf:Bag>
    </bqbiol:is>
    <bqbiol:isVersionOf>
      <rdf:Bag>
        <rdf:li rdf:resource="http://identifiers.org/go/GO:0006351"/>
      </rdf:Bag>
    </bqbiol:isVersionOf>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#units_volume">
    <dcterms:title>cubic microns</dcterms:title>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#units_substance">
    <dcterms:title>item</dcterms:title>
  </rdf:Description>
  <rdf:Description rdf:about="repressilator.cellml#units_time">
    <dcterms:title>minute</dcterms:title>
  </rdf:Description>
</rdf:RDF>

CellML has neither compartments nor species: every variable comes back as a parameter, the differential equations as rate rules, the equations as assignment rules, or as initial assignments when they compute a constant, see CellML to SBML. The mathematics is the one of the first model, its biological structure is not. The metadata is back: a species is a parameter, but with its name, its notes, its SBO term and its annotations, and the model has its history.

repressilator_roundtrip.xml
<?xml version="1.0" encoding="UTF-8"?>
<sbml xmlns="http://www.sbml.org/sbml/level3/version2/core" level="3" version="2">
  <model metaid="BIOMD0000000012" id="BIOMD0000000012" name="Elowitz2000 - Repressilator" timeUnits="dimensionless">
    <notes>
      <html:body xmlns:html="http://www.w3.org/1999/xhtml">
        <html:div class="dc:title">Elowitz2000 - Repressilator</html:div>
        <html:div class="dc:description">
          <html:p>This model describes the deterministic version of the repressilator system.</html:p>
          <html:p>The authors of this model (see reference) use three transcriptional repressor systems that are not part of any natural biological clock to build an oscillating network that they called the repressilator. The model system was induced in Escherichia coli.</html:p>
          <html:p>In this system, LacI (variable X is the mRNA, variable PX is the protein) inhibits the tetracycline-resistance transposon tetR (Y, PY describe mRNA and protein). Protein tetR inhibits the gene Cl from phage Lambda (Z, PZ: mRNA, protein),and protein Cl inhibits lacI expression. With the appropriate parameter values this system oscillates.</html:p>
        </html:div>
        <html:div class="dc:bibliographicCitation">
          <html:p>This model is described in the article:</html:p>
          <html:div class="bibo:title">
            <html:a href="http://identifiers.org/pubmed/10659856" title="Access to this publication">A synthetic oscillatory network of transcriptional regulators.</html:a>
          </html:div>
          <html:div class="bibo:authorList">Elowitz MB, Leibler S.</html:div>
          <html:div class="bibo:Journal">Nature. 2000 Jan; 403(6767):335-338</html:div>
          <html:p>Abstract:</html:p>
          <html:div class="bibo:abstract">
            <html:p>Networks of interacting biomolecules carry out many essential functions in living cells, but the &apos;design principles&apos; underlying the functioning of such intracellular networks remain poorly understood, despite intensive efforts including quantitative analysis of relatively simple systems. Here we present a complementary approach to this problem: the design and construction of a synthetic network to implement a particular function. We used three transcriptional repressor systems that are not part of any natural biological clock to build an oscillating network, termed the repressilator, in Escherichia coli. The network periodically induces the synthesis of green fluorescent protein as a readout of its state in individual cells. The resulting oscillations, with typical periods of hours, are slower than the cell-division cycle, so the state of the oscillator has to be transmitted from generation to generation. This artificial clock displays noisy behaviour, possibly because of stochastic fluctuations of its components. Such &apos;rational network design may lead both to the engineering of new cellular behaviours and to an improved understanding of naturally occurring networks.</html:p>
          </html:div>
        </html:div>
        <html:div class="bm:curation">
          <html:p>The model is based upon the equations in Box 1 of the paper; however, these equations as printed are dimensionless, and the correct dimensions have been returned to the equations, and the parameters set to reproduce Figure 1C (left).</html:p>
        </html:div>
        <html:div class="bm:modification">
          <html:p>The original model was generated by B.E. Shapiro using Cellerator version 1.0 update 2.1127 using Mathematica 4.2 for Mac OS X (June 4, 2002), November 27, 2002 12:15:32, using (PowerMac,PowerPC, Mac OS X,MacOSX,Darwin).</html:p>
          <html:p>Nicolas Le Novere provided a corrected version generated by SBMLeditor on Sun Aug 20 00:44:05 BST 2006. This removed the EmptySet species. Ran fine on COPASI 4.0 build 18.</html:p>
          <html:p>Bruce Shapiro revised the model with SBMLeditor on 23 October 2006 20:39 PST. This defines default units and correct reactions. The original Cellerator reactions while being mathematically correct did not accurately reflect the intent of the authors. The original notes were mostly removed because they were mostly incorrect in the revised version. Tested with MathSBML 2.6.0.</html:p>
          <html:p>Nicolas Le Novere changed the volume to 1 cubic micrometre, to allow for stochastic simulation.</html:p>
          <html:p>Changed by Lukas Endler to use the average livetime of mRNA instead of its halflife and a corrected value of alpha and alpha0.</html:p>
          <html:p>Moreover, the equations used in this model were clarified, cf. below.</html:p>
          <html:p>The equations given in        <html:b>box 1</html:b>
            of the original publication are rescaled in three respects (lowercase letters denote the rescaled, uppercase letters the unscaled number of molecules per cell):        </html:p>
          <html:ul>
            <html:li>the time is rescaled to the average mRNA lifetime,          <html:em>t_ave: τ = t/t_ave</html:em></html:li>
            <html:li>the mRNA concentration is rescaled to the translation efficiency          <html:em>eff: m = M/eff</html:em></html:li>
            <html:li>the protein concentration is rescaled to          <html:em>Km: p = P/Km</html:em></html:li>
          </html:ul>
          <html:p>
            <html:em>α</html:em>
            in the equations should be in units of rescaled proteins per promotor and cell, and        <html:em>β</html:em>
            is the ratio of the protein to the mRNA decay rates or the ratio of the mRNA to the protein halflife.        </html:p>
            <html:p>In this version of the model        <html:em>α</html:em>
            and        <html:em>β</html:em>
            are calculated correspondingly to the article, while        <html:em>p</html:em>
            and        <html:em>m</html:em>
            where just replaced by        <html:em>P/Km</html:em>
            resp.        <html:em>M/eff</html:em>
            and all equations multiplied by        <html:em>1/t_ave</html:em>
            . Also, to make the equations easier to read, commonly used variables derived from the parameters given in the article by simple rules were introduced.        </html:p>
            <html:p>The parameters given in the article were:</html:p>
            <html:table>
              <html:tr>
                <html:td>promotor strength (repressed) (            <html:em>tps_repr</html:em>
                ):            </html:td>
                <html:td>5*10            <html:sup>-4</html:sup></html:td>
                <html:td>transcripts/(promotor*s)</html:td>
              </html:tr>
              <html:tr>
                <html:td>promotor strength (full) (            <html:em>tps_active</html:em>
                ):            </html:td>
                <html:td>0.5</html:td>
                <html:td>transcripts/(promotor*s)</html:td>
              </html:tr>
              <html:tr>
                <html:td>mRNA half life, τ            <html:sub>1/2,mRNA</html:sub>
                :            </html:td>
                <html:td>2</html:td>
                <html:td>min</html:td>
              </html:tr>
              <html:tr>
                <html:td>protein half life, τ            <html:sub>1/2,prot</html:sub>
                :            </html:td>
                <html:td>10</html:td>
                <html:td>min</html:td>
              </html:tr>
              <html:tr>
                <html:td>K            <html:sub>M</html:sub>
                :            </html:td>
                <html:td>40</html:td>
                <html:td>monomers/cell</html:td>
              </html:tr>
              <html:tr>
                <html:td>Hill coefficient n:</html:td>
                <html:td>2</html:td>
                <html:td/>
              </html:tr>
            </html:table>
            <html:p>From these the following constants can be derived:</html:p>
            <html:table>
              <html:tr>
                <html:td>average mRNA lifetime (            <html:em>t_ave</html:em>
                ):            </html:td>
                <html:td>
                  <html:em>τ              <html:sub>1/2,mRNA</html:sub>
                  /ln(2)              </html:em>
                </html:td>
                <html:td>= 2.89 min</html:td>
              </html:tr>
              <html:tr>
                <html:td>mRNA decay rate (            <html:em>kd_mRNA</html:em>
                ):            </html:td>
                <html:td>
                  <html:em>ln(2)/ τ              <html:sub>1/2,mRNA</html:sub></html:em>
                </html:td>
                <html:td>= 0.347 min            <html:sup>-1</html:sup></html:td>
              </html:tr>
              <html:tr>
                <html:td>protein decay rate (            <html:em>kd_prot</html:em>
                ):            </html:td>
                <html:td>
                  <html:em>ln(2)/ τ              <html:sub>1/2,prot</html:sub></html:em>
                </html:td>
              </html:tr>
              <html:tr>
                <html:td>transcription rate (            <html:em>a_tr</html:em>
                ):            </html:td>
                <html:td>
                  <html:em>tps_active*60</html:em>
                </html:td>
                <html:td>= 29.97 transcripts/min</html:td>
              </html:tr>
              <html:tr>
                <html:td>transcription rate (repressed) (            <html:em>a0_tr</html:em>
                ):            </html:td>
                <html:td>
                  <html:em>tps_repr*60</html:em>
                </html:td>
                <html:td>= 0.03 transcripts/min</html:td>
              </html:tr>
              <html:tr>
                <html:td>translation rate (            <html:em>k_tl</html:em>
                ):            </html:td>
                <html:td>
                  <html:em>eff*kd_mRNA</html:em>
                </html:td>
                <html:td>= 6.93 proteins/(mRNA*min)</html:td>
              </html:tr>
              <html:tr>
                <html:td>α :</html:td>
                <html:td>
                  <html:em>a_tr*eff*τ              <html:sub>1/2,prot</html:sub>
                  /(ln(2)*K              <html:sub>M</html:sub>
                  )              </html:em>
                </html:td>
                <html:td>= 216.4 proteins/(promotor*cell*Km)</html:td>
              </html:tr>
              <html:tr>
                <html:td>α            <html:sub>0</html:sub>
                :            </html:td>
                <html:td>
                  <html:em>a0_tr*eff*τ              <html:sub>1/2,prot</html:sub>
                  /(ln(2)*K              <html:sub>M</html:sub>
                  )              </html:em>
                </html:td>
                <html:td>= 0.2164 proteins/(promotor*cell*Km)</html:td>
              </html:tr>
              <html:tr>
                <html:td>β :</html:td>
                <html:td>
                  <html:em>k_dp/k_dm</html:em>
                </html:td>
                <html:td>= 0.2</html:td>
              </html:tr>
            </html:table>
            <html:br/>
            <html:p>Annotation by the Kinetic Simulation Algorithm Ontology (KiSAO):</html:p>
            <html:p>To reproduce the simulations run published by the authors, the model has to be simulated with any of two different approaches. First, one could use a deterministic method (        <html:a href="http://identifiers.org/biomodels.kisao/KISAO_0000035" title="Access to: KISAO_0000035">KISAO_0000035</html:a>
            ) with continuous variables (        <html:a href="http://identifiers.org/biomodels.kisao/KISAO_0000018" title="Access to: KISAO_0000018">KISAO_0000018</html:a>
            ). One sample algorithm to use is the CVODE solver (        <html:a href="http://identifiers.org/biomodels.kisao/KISAO_0000019" title="Access to: KISAO_0000019">KISAO_0000019</html:a>
            ). Second, one could simulate the system using Gillespie&apos;s direct method (        <html:a href="http://identifiers.org/biomodels.kisao/KISAO_0000029" title="Access to: KISAO_0000029">KISAO_0000029</html:a>
            ), which is a stochastic method (        <html:a href="http://identifiers.org/biomodels.kisao/KISAO_0000036" title="Access to: KISAO_0000036">KISAO_0000036</html:a>
            ) supporting adaptive timesteps (        <html:a href="http://identifiers.org/biomodels.kisao/KISAO_0000041" title="Access to: KISAO_0000041">KISAO_0000041</html:a>
            ) and using discrete variables (        <html:a href="http://identifiers.org/biomodels.kisao/KISAO_0000016" title="Access to: KISAO_0000016">KISAO_0000016</html:a>
            ).        </html:p>
          </html:div>
          <html:div class="dc:publisher">
            <html:p>This model is hosted on        <html:a href="http://www.ebi.ac.uk/biomodels/">BioModels Database</html:a>
            and identified by:        <html:a href="http://identifiers.org/biomodels.db/BIOMD0000000012">BIOMD0000000012</html:a>
            .        </html:p>
            <html:p>To cite BioModels Database, please use:        <html:a href="http://identifiers.org/pubmed/20587024" title="Latest BioModels Database publication">BioModels Database: An enhanced, curated and annotated resource for published quantitative kinetic models</html:a>
            .        </html:p>
          </html:div>
          <html:div class="dc:license">
            <html:p>To the extent possible under law, all copyright and related or neighbouring rights to this encoded model have been dedicated to the public domain worldwide. Please refer to        <html:a href="http://creativecommons.org/publicdomain/zero/1.0/" title="Access to: CC0 1.0 Universal (CC0 1.0), Public Domain Dedication">CC0 Public Domain Dedication</html:a>
            for more information.        </html:p>
          </html:div>
        </html:body>
      </notes>
    <annotation>
      <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:vCard4="http://www.w3.org/2006/vcard/ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
        <rdf:Description rdf:about="#BIOMD0000000012">
          <dcterms:creator>
            <rdf:Bag>
              <rdf:li rdf:parseType="Resource">
                <vCard4:hasName rdf:parseType="Resource">
                  <vCard4:family-name>Le Novère</vCard4:family-name>
                  <vCard4:given-name>Nicolas</vCard4:given-name>
                </vCard4:hasName>
                <vCard4:hasEmail>lenov@ebi.ac.uk</vCard4:hasEmail>
                <vCard4:organization-name>EMBL-EBI</vCard4:organization-name>
              </rdf:li>
              <rdf:li rdf:parseType="Resource">
                <vCard4:hasName rdf:parseType="Resource">
                  <vCard4:family-name>Shapiro</vCard4:family-name>
                  <vCard4:given-name>Bruce</vCard4:given-name>
                </vCard4:hasName>
                <vCard4:hasEmail>bshapiro@caltech.edu</vCard4:hasEmail>
                <vCard4:organization-name>Jet Propulsion Laboratory</vCard4:organization-name>
              </rdf:li>
              <rdf:li rdf:parseType="Resource">
                <vCard4:hasName rdf:parseType="Resource">
                  <vCard4:family-name>Juty</vCard4:family-name>
                  <vCard4:given-name>Nick</vCard4:given-name>
                </vCard4:hasName>
                <vCard4:hasEmail>juty@ebi.ac.uk</vCard4:hasEmail>
                <vCard4:organization-name>EMBL-EBI</vCard4:organization-name>
              </rdf:li>
              <rdf:li rdf:parseType="Resource">
                <vCard4:hasName rdf:parseType="Resource">
                  <vCard4:family-name>Endler</vCard4:family-name>
                  <vCard4:given-name>Lukas</vCard4:given-name>
                </vCard4:hasName>
                <vCard4:hasEmail>lukas@ebi.ac.uk</vCard4:hasEmail>
                <vCard4:organization-name>EMBL-EBI</vCard4:organization-name>
              </rdf:li>
              <rdf:li rdf:parseType="Resource">
                <vCard4:hasName rdf:parseType="Resource">
                  <vCard4:family-name>Chelliah</vCard4:family-name>
                  <vCard4:given-name>Vijayalakshmi</vCard4:given-name>
                </vCard4:hasName>
                <vCard4:hasEmail>viji@ebi.ac.uk</vCard4:hasEmail>
                <vCard4:organization-name>EMBL-EBI</vCard4:organization-name>
              </rdf:li>
            </rdf:Bag>
          </dcterms:creator>
          <dcterms:created rdf:parseType="Resource">
            <dcterms:W3CDTF>2009-01-20T14:03:56Z</dcterms:W3CDTF>
          </dcterms:created>
          <dcterms:modified rdf:parseType="Resource">
            <dcterms:W3CDTF>2013-07-10T10:59:30Z</dcterms:W3CDTF>
          </dcterms:modified>
          <bqmodel:is>
            <rdf:Bag>
              <rdf:li rdf:resource="http://identifiers.org/biomodels.db/MODEL6615351360"/>
              <rdf:li rdf:resource="http://identifiers.org/biomodels.db/BIOMD0000000012"/>
            </rdf:Bag>
          </bqmodel:is>
          <bqmodel:isDescribedBy>
            <rdf:Bag>
              <rdf:li rdf:resource="http://identifiers.org/pubmed/10659856"/>
            </rdf:Bag>
          </bqmodel:isDescribedBy>
          <bqbiol:hasTaxon>
            <rdf:Bag>
              <rdf:li rdf:resource="http://identifiers.org/taxonomy/562"/>
            </rdf:Bag>
          </bqbiol:hasTaxon>
          <bqbiol:isVersionOf>
            <rdf:Bag>
              <rdf:li rdf:resource="http://identifiers.org/go/GO:0040029"/>
            </rdf:Bag>
          </bqbiol:isVersionOf>
          <bqbiol:hasProperty>
            <rdf:Bag>
              <rdf:li rdf:resource="http://identifiers.org/mamo/MAMO_0000046"/>
            </rdf:Bag>
          </bqbiol:hasProperty>
        </rdf:Description>
      </rdf:RDF>
    </annotation>
    <listOfUnitDefinitions>
      <unitDefinition id="volume" name="cubic microns">
        <listOfUnits>
          <unit kind="litre" exponent="1" scale="-15" multiplier="1"/>
        </listOfUnits>
      </unitDefinition>
      <unitDefinition id="substance" name="item">
        <listOfUnits>
          <unit kind="item" exponent="1" scale="0" multiplier="1"/>
        </listOfUnits>
      </unitDefinition>
      <unitDefinition id="time" name="minute">
        <listOfUnits>
          <unit kind="second" exponent="1" scale="0" multiplier="60"/>
        </listOfUnits>
      </unitDefinition>
      <unitDefinition id="substance_per_time">
        <listOfUnits>
          <unit kind="item" exponent="1" scale="0" multiplier="1"/>
          <unit kind="second" exponent="-1" scale="0" multiplier="60"/>
        </listOfUnits>
      </unitDefinition>
    </listOfUnitDefinitions>
    <listOfParameters>
      <parameter metaid="X" sboTerm="SBO:0000250" id="X" name="LacI mRNA" value="0" units="dimensionless" constant="false">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:vCard4="http://www.w3.org/2006/vcard/ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
            <rdf:Description rdf:about="#X">
              <bqbiol:isVersionOf>
                <rdf:Bag>
                  <rdf:li rdf:resource="http://identifiers.org/chebi/CHEBI:33699"/>
                  <rdf:li rdf:resource="http://identifiers.org/kegg.compound/C00046"/>
                </rdf:Bag>
              </bqbiol:isVersionOf>
              <bqbiol:encodes>
                <rdf:Bag>
                  <rdf:li rdf:resource="http://identifiers.org/uniprot/P03023"/>
                </rdf:Bag>
              </bqbiol:encodes>
            </rdf:Description>
          </rdf:RDF>
        </annotation>
      </parameter>
      <parameter metaid="Y" sboTerm="SBO:0000250" id="Y" name="TetR mRNA" value="20" units="dimensionless" constant="false">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:vCard4="http://www.w3.org/2006/vcard/ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
            <rdf:Description rdf:about="#Y">
              <bqbiol:isVersionOf>
                <rdf:Bag>
                  <rdf:li rdf:resource="http://identifiers.org/chebi/CHEBI:33699"/>
                  <rdf:li rdf:resource="http://identifiers.org/kegg.compound/C00046"/>
                </rdf:Bag>
              </bqbiol:isVersionOf>
              <bqbiol:encodes>
                <rdf:Bag>
                  <rdf:li rdf:resource="http://identifiers.org/uniprot/P04483"/>
                </rdf:Bag>
              </bqbiol:encodes>
            </rdf:Description>
          </rdf:RDF>
        </annotation>
      </parameter>
      <parameter metaid="Z" sboTerm="SBO:0000250" id="Z" name="cI mRNA" value="0" units="dimensionless" constant="false">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:vCard4="http://www.w3.org/2006/vcard/ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
            <rdf:Description rdf:about="#Z">
              <bqbiol:isVersionOf>
                <rdf:Bag>
                  <rdf:li rdf:resource="http://identifiers.org/chebi/CHEBI:33699"/>
                  <rdf:li rdf:resource="http://identifiers.org/kegg.compound/C00046"/>
                </rdf:Bag>
              </bqbiol:isVersionOf>
              <bqbiol:encodes>
                <rdf:Bag>
                  <rdf:li rdf:resource="http://identifiers.org/uniprot/P03034"/>
                </rdf:Bag>
              </bqbiol:encodes>
            </rdf:Description>
          </rdf:RDF>
        </annotation>
      </parameter>
      <parameter metaid="PX" sboTerm="SBO:0000252" id="PX" name="LacI protein" value="0" units="dimensionless" constant="false">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        lacI inhibitor</p>
        </notes>
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:vCard4="http://www.w3.org/2006/vcard/ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
            <rdf:Description rdf:about="#PX">
              <bqbiol:is>
                <rdf:Bag>
                  <rdf:li rdf:resource="http://identifiers.org/uniprot/P03023"/>
                </rdf:Bag>
              </bqbiol:is>
            </rdf:Description>
          </rdf:RDF>
        </annotation>
      </parameter>
      <parameter metaid="PY" sboTerm="SBO:0000252" id="PY" name="TetR protein" value="0" units="dimensionless" constant="false">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        Tet repressor protein</p>
        </notes>
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:vCard4="http://www.w3.org/2006/vcard/ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
            <rdf:Description rdf:about="#PY">
              <bqbiol:is>
                <rdf:Bag>
                  <rdf:li rdf:resource="http://identifiers.org/uniprot/P04483"/>
                </rdf:Bag>
              </bqbiol:is>
            </rdf:Description>
          </rdf:RDF>
        </annotation>
      </parameter>
      <parameter metaid="PZ" sboTerm="SBO:0000252" id="PZ" name="cI protein" value="0" units="dimensionless" constant="false">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        lambda repressor</p>
        </notes>
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:vCard4="http://www.w3.org/2006/vcard/ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
            <rdf:Description rdf:about="#PZ">
              <bqbiol:is>
                <rdf:Bag>
                  <rdf:li rdf:resource="http://identifiers.org/uniprot/P03034"/>
                </rdf:Bag>
              </bqbiol:is>
            </rdf:Description>
          </rdf:RDF>
        </annotation>
      </parameter>
      <parameter sboTerm="SBO:0000332" id="tau_mRNA" name="mRNA half life" value="2" units="dimensionless" constant="true"/>
      <parameter sboTerm="SBO:0000332" id="tau_prot" name="protein half life" value="10" units="dimensionless" constant="true"/>
      <parameter id="eff" name="translation efficiency" value="20" units="dimensionless" constant="true">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        Average number of proteins per transcript</p>
        </notes>
      </parameter>
      <parameter sboTerm="SBO:0000485" id="ps_0" name="tps_repr" value="0.0005" units="dimensionless" constant="true">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        Transcrition from fully repressed promotor in transcripts per second and promotor</p>
        </notes>
      </parameter>
      <parameter sboTerm="SBO:0000186" id="ps_a" name="tps_active" value="0.5" units="dimensionless" constant="true">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        Transcrition from free promotor in transcripts per second and promotor</p>
        </notes>
      </parameter>
      <parameter sboTerm="SBO:0000288" id="KM" value="40" units="dimensionless" constant="true">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        Number of repressor molecules per cell giving half maximal repression, in monomers per cell</p>
        </notes>
      </parameter>
      <parameter sboTerm="SBO:0000190" id="n" value="2" units="dimensionless" constant="true">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        Hill coefficient</p>
        </notes>
      </parameter>
      <parameter metaid="cell" sboTerm="SBO:0000290" id="cell" value="1" units="dimensionless" constant="true">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:vCard4="http://www.w3.org/2006/vcard/ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
            <rdf:Description rdf:about="#cell">
              <bqbiol:is>
                <rdf:Bag>
                  <rdf:li rdf:resource="http://identifiers.org/go/GO:0005623"/>
                </rdf:Bag>
              </bqbiol:is>
            </rdf:Description>
          </rdf:RDF>
        </annotation>
      </parameter>
      <parameter sboTerm="SBO:0000348" id="t_ave" name="average mRNA life time" units="dimensionless" constant="true"/>
      <parameter id="beta" units="dimensionless" constant="true">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        ratio of protein to mRNA decay rates</p>
        </notes>
      </parameter>
      <parameter sboTerm="SBO:0000016" id="k_tl" units="dimensionless" constant="true">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        Translation rate constant</p>
        </notes>
      </parameter>
      <parameter sboTerm="SBO:0000186" id="a_tr" units="dimensionless" constant="true">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        Transcription rate from free promotor minus a0_tr</p>
        </notes>
      </parameter>
      <parameter sboTerm="SBO:0000485" id="a0_tr" units="dimensionless" constant="true">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        Transcription rate from fully repressed promotor</p>
        </notes>
      </parameter>
      <parameter sboTerm="SBO:0000356" id="kd_prot" units="dimensionless" constant="true">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        Protein decay rate costant</p>
        </notes>
      </parameter>
      <parameter sboTerm="SBO:0000356" id="kd_mRNA" units="dimensionless" constant="true">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        mRNA decay rate constant</p>
        </notes>
      </parameter>
      <parameter sboTerm="SBO:0000186" id="alpha" units="dimensionless" constant="true">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        Protein copies per promoter and cell</p>
        </notes>
      </parameter>
      <parameter sboTerm="SBO:0000485" id="alpha0" units="dimensionless" constant="true">
        <notes>
          <p xmlns="http://www.w3.org/1999/xhtml">
        Leakiness in protein copies per promoter and cell</p>
        </notes>
      </parameter>
      <parameter metaid="Reaction10" sboTerm="SBO:0000183" id="Reaction10" name="transcription of LacI" units="dimensionless" constant="false">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:vCard4="http://www.w3.org/2006/vcard/ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
            <rdf:Description rdf:about="#Reaction10">
              <bqbiol:isVersionOf>
                <rdf:Bag>
                  <rdf:li rdf:resource="http://identifiers.org/go/GO:0006351"/>
                </rdf:Bag>
              </bqbiol:isVersionOf>
            </rdf:Description>
          </rdf:RDF>
        </annotation>
      </parameter>
      <parameter metaid="Reaction1" sboTerm="SBO:0000179" id="Reaction1" name="degradation of LacI transcripts" units="dimensionless" constant="false">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:vCard4="http://www.w3.org/2006/vcard/ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
            <rdf:Description rdf:about="#Reaction1">
              <bqbiol:isVersionOf>
                <rdf:Bag>
                  <rdf:li rdf:resource="http://identifiers.org/go/GO:0006402"/>
                </rdf:Bag>
              </bqbiol:isVersionOf>
            </rdf:Description>
          </rdf:RDF>
        </annotation>
      </parameter>
      <parameter metaid="Reaction11" sboTerm="SBO:0000183" id="Reaction11" name="transcription of TetR" units="dimensionless" constant="false">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:vCard4="http://www.w3.org/2006/vcard/ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
            <rdf:Description rdf:about="#Reaction11">
              <bqbiol:isVersionOf>
                <rdf:Bag>
                  <rdf:li rdf:resource="http://identifiers.org/go/GO:0006351"/>
                </rdf:Bag>
              </bqbiol:isVersionOf>
            </rdf:Description>
          </rdf:RDF>
        </annotation>
      </parameter>
      <parameter metaid="Reaction2" sboTerm="SBO:0000179" id="Reaction2" name="degradation of TetR transcripts" units="dimensionless" constant="false">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:vCard4="http://www.w3.org/2006/vcard/ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
            <rdf:Description rdf:about="#Reaction2">
              <bqbiol:isVersionOf>
                <rdf:Bag>
                  <rdf:li rdf:resource="http://identifiers.org/go/GO:0006402"/>
                </rdf:Bag>
              </bqbiol:isVersionOf>
            </rdf:Description>
          </rdf:RDF>
        </annotation>
      </parameter>
      <parameter metaid="Reaction12" sboTerm="SBO:0000183" id="Reaction12" name="transcription of CI" units="dimensionless" constant="false">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:vCard4="http://www.w3.org/2006/vcard/ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
            <rdf:Description rdf:about="#Reaction12">
              <bqbiol:isVersionOf>
                <rdf:Bag>
                  <rdf:li rdf:resource="http://identifiers.org/go/GO:0006351"/>
                </rdf:Bag>
              </bqbiol:isVersionOf>
            </rdf:Description>
          </rdf:RDF>
        </annotation>
      </parameter>
      <parameter metaid="Reaction3" sboTerm="SBO:0000179" id="Reaction3" name="degradation of CI transcripts" units="dimensionless" constant="false">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:vCard4="http://www.w3.org/2006/vcard/ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
            <rdf:Description rdf:about="#Reaction3">
              <bqbiol:isVersionOf>
                <rdf:Bag>
                  <rdf:li rdf:resource="http://identifiers.org/go/GO:0006402"/>
                </rdf:Bag>
              </bqbiol:isVersionOf>
            </rdf:Description>
          </rdf:RDF>
        </annotation>
      </parameter>
      <parameter metaid="Reaction7" sboTerm="SBO:0000179" id="Reaction7" name="degradation of LacI" units="dimensionless" constant="false">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:vCard4="http://www.w3.org/2006/vcard/ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
            <rdf:Description rdf:about="#Reaction7">
              <bqbiol:isVersionOf>
                <rdf:Bag>
                  <rdf:li rdf:resource="http://identifiers.org/go/GO:0030163"/>
                </rdf:Bag>
              </bqbiol:isVersionOf>
            </rdf:Description>
          </rdf:RDF>
        </annotation>
      </parameter>
      <parameter metaid="Reaction4" sboTerm="SBO:0000184" id="Reaction4" name="translation of LacI" units="dimensionless" constant="false">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:vCard4="http://www.w3.org/2006/vcard/ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
            <rdf:Description rdf:about="#Reaction4">
              <bqbiol:isVersionOf>
                <rdf:Bag>
                  <rdf:li rdf:resource="http://identifiers.org/go/GO:0006412"/>
                </rdf:Bag>
              </bqbiol:isVersionOf>
            </rdf:Description>
          </rdf:RDF>
        </annotation>
      </parameter>
      <parameter metaid="Reaction8" sboTerm="SBO:0000179" id="Reaction8" name="degradation of TetR" units="dimensionless" constant="false">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:vCard4="http://www.w3.org/2006/vcard/ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
            <rdf:Description rdf:about="#Reaction8">
              <bqbiol:isVersionOf>
                <rdf:Bag>
                  <rdf:li rdf:resource="http://identifiers.org/go/GO:0030163"/>
                </rdf:Bag>
              </bqbiol:isVersionOf>
            </rdf:Description>
          </rdf:RDF>
        </annotation>
      </parameter>
      <parameter metaid="Reaction5" sboTerm="SBO:0000184" id="Reaction5" name="translation of TetR" units="dimensionless" constant="false">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:vCard4="http://www.w3.org/2006/vcard/ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
            <rdf:Description rdf:about="#Reaction5">
              <bqbiol:isVersionOf>
                <rdf:Bag>
                  <rdf:li rdf:resource="http://identifiers.org/go/GO:0006412"/>
                </rdf:Bag>
              </bqbiol:isVersionOf>
            </rdf:Description>
          </rdf:RDF>
        </annotation>
      </parameter>
      <parameter metaid="Reaction9" sboTerm="SBO:0000179" id="Reaction9" name="degradation of CI" units="dimensionless" constant="false">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:vCard4="http://www.w3.org/2006/vcard/ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
            <rdf:Description rdf:about="#Reaction9">
              <bqbiol:isVersionOf>
                <rdf:Bag>
                  <rdf:li rdf:resource="http://identifiers.org/go/GO:0030163"/>
                </rdf:Bag>
              </bqbiol:isVersionOf>
            </rdf:Description>
          </rdf:RDF>
        </annotation>
      </parameter>
      <parameter metaid="Reaction6" sboTerm="SBO:0000184" id="Reaction6" name="translation of CI" units="dimensionless" constant="false">
        <annotation>
          <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:vCard4="http://www.w3.org/2006/vcard/ns#" xmlns:bqbiol="http://biomodels.net/biology-qualifiers/" xmlns:bqmodel="http://biomodels.net/model-qualifiers/">
            <rdf:Description rdf:about="#Reaction6">
              <bqbiol:isVersionOf>
                <rdf:Bag>
                  <rdf:li rdf:resource="http://identifiers.org/go/GO:0006412"/>
                </rdf:Bag>
              </bqbiol:isVersionOf>
            </rdf:Description>
          </rdf:RDF>
        </annotation>
      </parameter>
    </listOfParameters>
    <listOfInitialAssignments>
      <initialAssignment symbol="t_ave">
        <math xmlns="http://www.w3.org/1998/Math/MathML" xmlns:sbml="http://www.sbml.org/sbml/level3/version2/core">
          <apply>
            <divide/>
            <ci> tau_mRNA </ci>
            <apply>
              <ln/>
              <cn sbml:units="dimensionless"> 2 </cn>
            </apply>
          </apply>
        </math>
      </initialAssignment>
      <initialAssignment symbol="beta">
        <math xmlns="http://www.w3.org/1998/Math/MathML">
          <apply>
            <divide/>
            <ci> tau_mRNA </ci>
            <ci> tau_prot </ci>
          </apply>
        </math>
      </initialAssignment>
      <initialAssignment symbol="k_tl">
        <math xmlns="http://www.w3.org/1998/Math/MathML">
          <apply>
            <divide/>
            <ci> eff </ci>
            <ci> t_ave </ci>
          </apply>
        </math>
      </initialAssignment>
      <initialAssignment symbol="a_tr">
        <math xmlns="http://www.w3.org/1998/Math/MathML" xmlns:sbml="http://www.sbml.org/sbml/level3/version2/core">
          <apply>
            <times/>
            <apply>
              <minus/>
              <ci> ps_a </ci>
              <ci> ps_0 </ci>
            </apply>
            <cn sbml:units="dimensionless"> 60 </cn>
          </apply>
        </math>
      </initialAssignment>
      <initialAssignment symbol="a0_tr">
        <math xmlns="http://www.w3.org/1998/Math/MathML" xmlns:sbml="http://www.sbml.org/sbml/level3/version2/core">
          <apply>
            <times/>
            <ci> ps_0 </ci>
            <cn sbml:units="dimensionless"> 60 </cn>
          </apply>
        </math>
      </initialAssignment>
      <initialAssignment symbol="kd_prot">
        <math xmlns="http://www.w3.org/1998/Math/MathML" xmlns:sbml="http://www.sbml.org/sbml/level3/version2/core">
          <apply>
            <divide/>
            <apply>
              <ln/>
              <cn sbml:units="dimensionless"> 2 </cn>
            </apply>
            <ci> tau_prot </ci>
          </apply>
        </math>
      </initialAssignment>
      <initialAssignment symbol="kd_mRNA">
        <math xmlns="http://www.w3.org/1998/Math/MathML" xmlns:sbml="http://www.sbml.org/sbml/level3/version2/core">
          <apply>
            <divide/>
            <apply>
              <ln/>
              <cn sbml:units="dimensionless"> 2 </cn>
            </apply>
            <ci> tau_mRNA </ci>
          </apply>
        </math>
      </initialAssignment>
      <initialAssignment symbol="alpha">
        <math xmlns="http://www.w3.org/1998/Math/MathML" xmlns:sbml="http://www.sbml.org/sbml/level3/version2/core">
          <apply>
            <divide/>
            <apply>
              <times/>
              <ci> a_tr </ci>
              <ci> eff </ci>
              <ci> tau_prot </ci>
            </apply>
            <apply>
              <times/>
              <apply>
                <ln/>
                <cn sbml:units="dimensionless"> 2 </cn>
              </apply>
              <ci> KM </ci>
            </apply>
          </apply>
        </math>
      </initialAssignment>
      <initialAssignment symbol="alpha0">
        <math xmlns="http://www.w3.org/1998/Math/MathML" xmlns:sbml="http://www.sbml.org/sbml/level3/version2/core">
          <apply>
            <divide/>
            <apply>
              <times/>
              <ci> a0_tr </ci>
              <ci> eff </ci>
              <ci> tau_prot </ci>
            </apply>
            <apply>
              <times/>
              <apply>
                <ln/>
                <cn sbml:units="dimensionless"> 2 </cn>
              </apply>
              <ci> KM </ci>
            </apply>
          </apply>
        </math>
      </initialAssignment>
    </listOfInitialAssignments>
    <listOfRules>
      <rateRule variable="X">
        <math xmlns="http://www.w3.org/1998/Math/MathML">
          <apply>
            <plus/>
            <apply>
              <minus/>
              <ci> Reaction1 </ci>
            </apply>
            <ci> Reaction10 </ci>
          </apply>
        </math>
      </rateRule>
      <rateRule variable="Y">
        <math xmlns="http://www.w3.org/1998/Math/MathML">
          <apply>
            <plus/>
            <apply>
              <minus/>
              <ci> Reaction2 </ci>
            </apply>
            <ci> Reaction11 </ci>
          </apply>
        </math>
      </rateRule>
      <rateRule variable="Z">
        <math xmlns="http://www.w3.org/1998/Math/MathML">
          <apply>
            <plus/>
            <apply>
              <minus/>
              <ci> Reaction3 </ci>
            </apply>
            <ci> Reaction12 </ci>
          </apply>
        </math>
      </rateRule>
      <rateRule variable="PX">
        <math xmlns="http://www.w3.org/1998/Math/MathML">
          <apply>
            <minus/>
            <ci> Reaction4 </ci>
            <ci> Reaction7 </ci>
          </apply>
        </math>
      </rateRule>
      <rateRule variable="PY">
        <math xmlns="http://www.w3.org/1998/Math/MathML">
          <apply>
            <minus/>
            <ci> Reaction5 </ci>
            <ci> Reaction8 </ci>
          </apply>
        </math>
      </rateRule>
      <rateRule variable="PZ">
        <math xmlns="http://www.w3.org/1998/Math/MathML">
          <apply>
            <minus/>
            <ci> Reaction6 </ci>
            <ci> Reaction9 </ci>
          </apply>
        </math>
      </rateRule>
      <assignmentRule variable="Reaction1">
        <math xmlns="http://www.w3.org/1998/Math/MathML">
          <apply>
            <times/>
            <ci> kd_mRNA </ci>
            <ci> X </ci>
          </apply>
        </math>
      </assignmentRule>
      <assignmentRule variable="Reaction2">
        <math xmlns="http://www.w3.org/1998/Math/MathML">
          <apply>
            <times/>
            <ci> kd_mRNA </ci>
            <ci> Y </ci>
          </apply>
        </math>
      </assignmentRule>
      <assignmentRule variable="Reaction3">
        <math xmlns="http://www.w3.org/1998/Math/MathML">
          <apply>
            <times/>
            <ci> kd_mRNA </ci>
            <ci> Z </ci>
          </apply>
        </math>
      </assignmentRule>
      <assignmentRule variable="Reaction4">
        <math xmlns="http://www.w3.org/1998/Math/MathML">
          <apply>
            <times/>
            <ci> k_tl </ci>
            <ci> X </ci>
          </apply>
        </math>
      </assignmentRule>
      <assignmentRule variable="Reaction5">
        <math xmlns="http://www.w3.org/1998/Math/MathML">
          <apply>
            <times/>
            <ci> k_tl </ci>
            <ci> Y </ci>
          </apply>
        </math>
      </assignmentRule>
      <assignmentRule variable="Reaction6">
        <math xmlns="http://www.w3.org/1998/Math/MathML">
          <apply>
            <times/>
            <ci> k_tl </ci>
            <ci> Z </ci>
          </apply>
        </math>
      </assignmentRule>
      <assignmentRule variable="Reaction7">
        <math xmlns="http://www.w3.org/1998/Math/MathML">
          <apply>
            <times/>
            <ci> kd_prot </ci>
            <ci> PX </ci>
          </apply>
        </math>
      </assignmentRule>
      <assignmentRule variable="Reaction8">
        <math xmlns="http://www.w3.org/1998/Math/MathML">
          <apply>
            <times/>
            <ci> kd_prot </ci>
            <ci> PY </ci>
          </apply>
        </math>
      </assignmentRule>
      <assignmentRule variable="Reaction9">
        <math xmlns="http://www.w3.org/1998/Math/MathML">
          <apply>
            <times/>
            <ci> kd_prot </ci>
            <ci> PZ </ci>
          </apply>
        </math>
      </assignmentRule>
      <assignmentRule variable="Reaction10">
        <math xmlns="http://www.w3.org/1998/Math/MathML">
          <apply>
            <plus/>
            <ci> a0_tr </ci>
            <apply>
              <divide/>
              <apply>
                <times/>
                <ci> a_tr </ci>
                <apply>
                  <power/>
                  <ci> KM </ci>
                  <ci> n </ci>
                </apply>
              </apply>
              <apply>
                <plus/>
                <apply>
                  <power/>
                  <ci> KM </ci>
                  <ci> n </ci>
                </apply>
                <apply>
                  <power/>
                  <ci> PZ </ci>
                  <ci> n </ci>
                </apply>
              </apply>
            </apply>
          </apply>
        </math>
      </assignmentRule>
      <assignmentRule variable="Reaction11">
        <math xmlns="http://www.w3.org/1998/Math/MathML">
          <apply>
            <plus/>
            <ci> a0_tr </ci>
            <apply>
              <divide/>
              <apply>
                <times/>
                <ci> a_tr </ci>
                <apply>
                  <power/>
                  <ci> KM </ci>
                  <ci> n </ci>
                </apply>
              </apply>
              <apply>
                <plus/>
                <apply>
                  <power/>
                  <ci> KM </ci>
                  <ci> n </ci>
                </apply>
                <apply>
                  <power/>
                  <ci> PX </ci>
                  <ci> n </ci>
                </apply>
              </apply>
            </apply>
          </apply>
        </math>
      </assignmentRule>
      <assignmentRule variable="Reaction12">
        <math xmlns="http://www.w3.org/1998/Math/MathML">
          <apply>
            <plus/>
            <ci> a0_tr </ci>
            <apply>
              <divide/>
              <apply>
                <times/>
                <ci> a_tr </ci>
                <apply>
                  <power/>
                  <ci> KM </ci>
                  <ci> n </ci>
                </apply>
              </apply>
              <apply>
                <plus/>
                <apply>
                  <power/>
                  <ci> KM </ci>
                  <ci> n </ci>
                </apply>
                <apply>
                  <power/>
                  <ci> PY </ci>
                  <ci> n </ci>
                </apply>
              </apply>
            </apply>
          </apply>
        </math>
      </assignmentRule>
    </listOfRules>
  </model>
</sbml>

Simulate

roadrunner and libopencor cannot run in one python process, see Simulation. The example therefore simulates the SBML models with a script of its own, which writes the timecourse to a CSV file:

examples/roadrunner_timecourse.py
"""Timecourse of an SBML model with roadrunner, written as CSV.

roadrunner and libopencor bundle different LLVM versions and crash once both
have compiled a model in the same process, so the roadrunner simulations of
the examples run this script in a process of their own:

    python roadrunner_timecourse.py model.xml result.csv --end 600 --steps 600 PX PY PZ
"""

import argparse
from pathlib import Path

import pandas as pd
import roadrunner


def timecourse(
    sbml_path: Path, selections: list[str], end: float, steps: int
) -> pd.DataFrame:
    """Simulate from 0 to `end` and return `time` and the selections as columns."""
    rr = roadrunner.RoadRunner(str(sbml_path))
    rr.timeCourseSelections = ["time", *selections]
    result = rr.simulate(0.0, end, steps=steps)
    return pd.DataFrame(result, columns=result.colnames)


if __name__ == "__main__":
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument("sbml", type=Path, help="SBML file")
    parser.add_argument("csv", type=Path, help="CSV file of the result")
    parser.add_argument("selections", nargs="+", help="ids of the columns")
    parser.add_argument("--end", type=float, default=100.0, help="end time")
    parser.add_argument("--steps", type=int, default=100, help="number of steps")
    args = parser.parse_args()
    df = timecourse(args.sbml, args.selections, end=args.end, steps=args.steps)
    df.to_csv(args.csv, index=False)

The CellML model is simulated in the process of the example:

from sbml2cellml.simulate import run_timecourse

df, units = run_timecourse(cellml_path, start=0.0, end=600.0, steps=600)

The three simulations of the proteins over 600 minutes, side by side:

Timecourses of the proteins LacI, TetR and cI: SBML with roadrunner, CellML with libopencor, SBML of the roundtrip with roadrunner Timecourses of the proteins LacI, TetR and cI: SBML with roadrunner, CellML with libopencor, SBML of the roundtrip with roadrunner

The simulations agree within the tolerances of the integrators (both CVODE with the default tolerances of the simulator). The largest difference to the first simulation over all time points, with protein numbers of up to 2400 molecules per cell:

protein 2 CellML, libopencor 3 SBML, roadrunner
LacI (PX) 0.03 0.002
TetR (PY) 0.02 0.005
cI (PZ) 0.03 0.01

The SBML test suite and the BioModels check run this pipeline for every model and compare the numbers with tolerances.

The complete example

examples/repressilator_example.py
"""Roundtrip of the repressilator: SBML to CellML and back to SBML.

The model is the repressilator of Elowitz and Leibler (2000), BIOMD0000000012
of BioModels. Its names, notes and annotations go into an RDF file next to the
CellML model and come back in the SBML model of the roundtrip. The model is
simulated three times:
the SBML model with roadrunner, the converted CellML model with libopencor and
the SBML model converted back from the CellML with roadrunner again. The three
timecourses of the proteins are plotted side by side.

`python repressilator_example.py --docs` also updates the files of the
documentation page `docs/roundtrip.md`.
"""

import argparse
import io
import shutil
import subprocess
import sys
from pathlib import Path

import matplotlib as mpl
import matplotlib.pyplot as plt
import pandas as pd
from matplotlib.figure import Figure

from sbml2cellml import convert_cellml2sbml, convert_sbml2cellml, log
from sbml2cellml.console import console
from sbml2cellml.simulate import run_timecourse

EXAMPLES_DIR: Path = Path(__file__).parent
MODELS_DIR: Path = EXAMPLES_DIR / "models"
RESULTS_DIR: Path = EXAMPLES_DIR / "results"
DOCS_DIR: Path = EXAMPLES_DIR.parent / "docs"

#: the proteins of the three repressors, id and name
PROTEINS: dict[str, str] = {"PX": "LacI", "PY": "TetR", "PZ": "cI"}
#: end of the simulation in minutes and number of steps
END: float = 600.0
STEPS: int = 600

#: colors of the proteins, text and grid for light and dark backgrounds
THEMES: dict[str, dict[str, str | list[str]]] = {
    "light": {
        "series": ["#2a78d6", "#eb6834", "#1baf7a"],
        "text": "#0b0b0b",
        "text_secondary": "#52514e",
        "grid": "#d9d8d3",
    },
    "dark": {
        "series": ["#3987e5", "#d95926", "#199e70"],
        "text": "#ffffff",
        "text_secondary": "#c3c2b7",
        "grid": "#4a4a47",
    },
}


def convert(sbml_path: Path, results_dir: Path) -> tuple[Path, Path]:
    """Convert the SBML model to CellML and the CellML model back to SBML.

    The first conversion writes the metadata of the SBML model to
    `repressilator.rdf` next to the CellML model, the second one reads it.

    Returns:
        The paths of the CellML model and of the SBML model of the roundtrip.
    """
    cellml_path = results_dir / "repressilator.cellml"
    roundtrip_path = results_dir / "repressilator_roundtrip.xml"
    convert_sbml2cellml(sbml_path, cellml_path=cellml_path)
    convert_cellml2sbml(cellml_path, sbml_path=roundtrip_path)
    return cellml_path, roundtrip_path


def simulate_roadrunner(sbml_path: Path, csv_path: Path) -> pd.DataFrame:
    """Simulate an SBML model with roadrunner in a process of its own.

    roadrunner and libopencor crash in one process, see
    `roadrunner_timecourse.py`.
    """
    subprocess.run(
        [
            sys.executable,
            str(EXAMPLES_DIR / "roadrunner_timecourse.py"),
            str(sbml_path),
            str(csv_path),
            *PROTEINS,
            "--end",
            str(END),
            "--steps",
            str(STEPS),
        ],
        check=True,
    )
    return pd.read_csv(csv_path)


def simulate_libopencor(cellml_path: Path) -> pd.DataFrame:
    """Simulate a CellML model with libopencor."""
    df, _ = run_timecourse(cellml_path, start=0.0, end=END, steps=STEPS)
    return df[["time", *PROTEINS]]


def plot_roundtrip(timecourses: dict[str, pd.DataFrame], dark: bool = False) -> Figure:
    """Plot the timecourses of the proteins side by side, one panel each.

    Args:
        timecourses: timecourse with the columns `time` and the proteins by
            the title of its panel.
        dark: colors for a dark background.
    """
    theme = THEMES["dark" if dark else "light"]
    fig, axes = plt.subplots(
        ncols=len(timecourses), figsize=(8.0, 3.0), sharex=True, sharey=True
    )
    for ax, (title, df) in zip(axes, timecourses.items(), strict=True):
        for (sid, name), color in zip(PROTEINS.items(), theme["series"], strict=True):
            ax.plot(df["time"], df[sid], color=color, linewidth=1.6, label=name)
        ax.set_title(title, color=theme["text"], fontsize=10, loc="left")
        ax.set_xticks(range(0, int(END) + 1, 200))
        ax.set_xlabel("time [min]", color=theme["text_secondary"], fontsize=10)
        ax.grid(visible=True, color=theme["grid"], linewidth=0.6)
        ax.set_axisbelow(True)
        ax.tick_params(
            color=theme["grid"], labelcolor=theme["text_secondary"], labelsize=10
        )
        for side in ("top", "right"):
            ax.spines[side].set_visible(False)
        for side in ("left", "bottom"):
            ax.spines[side].set_color(theme["grid"])
        ax.patch.set_alpha(0.0)
    axes[0].set_ylabel(
        "protein [molecules per cell]", color=theme["text_secondary"], fontsize=10
    )
    fig.legend(
        *axes[0].get_legend_handles_labels(),
        loc="upper center",
        bbox_to_anchor=(0.5, 1.08),
        ncols=len(PROTEINS),
        frameon=False,
        labelcolor=theme["text_secondary"],
        fontsize=10,
    )
    fig.patch.set_alpha(0.0)
    fig.tight_layout()
    return fig


def write_svg(fig: Figure, path: Path) -> None:
    """Write a figure as SVG which only changes when the figure does.

    Text as paths, fixed ids and no date; matplotlib ends lines with spaces,
    which the pre-commit hooks of the repository would remove.
    """
    with mpl.rc_context({"svg.fonttype": "path", "svg.hashsalt": "sbml2cellml"}):
        buffer = io.StringIO()
        fig.savefig(buffer, format="svg", bbox_inches="tight", metadata={"Date": None})
    plt.close(fig)
    lines = [line.rstrip() for line in buffer.getvalue().splitlines()]
    path.write_text("\n".join(lines) + "\n", encoding="utf-8")


def largest_differences(timecourses: dict[str, pd.DataFrame]) -> pd.DataFrame:
    """Largest difference of every protein to the first timecourse, per panel."""
    reference, *others = timecourses.values()
    return pd.DataFrame(
        {
            title: (df[list(PROTEINS)] - reference[list(PROTEINS)]).abs().max()
            for title, df in zip(list(timecourses)[1:], others, strict=True)
        }
    )


def differences_table(differences: pd.DataFrame) -> str:
    """The largest differences as a markdown table, for the documentation."""
    lines = [
        f"| protein | {' | '.join(differences.columns)} |",
        f"| --- | {' | '.join('---:' for _ in differences.columns)} |",
    ]
    for sid, row in differences.iterrows():
        values = " | ".join(f"{value:.1g}" for value in row)
        lines.append(f"| {PROTEINS[str(sid)]} (`{sid}`) | {values} |")
    return "\n".join(lines) + "\n"


def main(update_docs: bool = False) -> None:
    """Convert, simulate and plot; write everything into `examples/results/`."""
    RESULTS_DIR.mkdir(exist_ok=True)
    sbml_path = MODELS_DIR / "repressilator.xml"

    console.rule("convert", style="white")
    cellml_path, roundtrip_path = convert(sbml_path, RESULTS_DIR)

    console.rule("simulate", style="white")
    timecourses = {
        "1 SBML, roadrunner": simulate_roadrunner(
            sbml_path, RESULTS_DIR / "repressilator_sbml.csv"
        ),
        "2 CellML, libopencor": simulate_libopencor(cellml_path),
        "3 SBML, roadrunner": simulate_roadrunner(
            roundtrip_path, RESULTS_DIR / "repressilator_roundtrip.csv"
        ),
    }
    differences = largest_differences(timecourses)
    console.print(differences)
    differences_path = RESULTS_DIR / "repressilator_differences.md"
    differences_path.write_text(differences_table(differences), encoding="utf-8")

    figures: dict[str, Path] = {}
    for dark in (False, True):
        name = "repressilator_dark.svg" if dark else "repressilator.svg"
        figures[name] = RESULTS_DIR / name
        write_svg(plot_roundtrip(timecourses, dark=dark), figures[name])

    if update_docs:
        (DOCS_DIR / "roundtrip").mkdir(exist_ok=True)
        rdf_path = cellml_path.with_suffix(".rdf")
        for path in (cellml_path, rdf_path, roundtrip_path, differences_path):
            shutil.copy(path, DOCS_DIR / "roundtrip" / path.name)
        for name, path in figures.items():
            shutil.copy(path, DOCS_DIR / "images" / name)
        console.print(f"documentation updated in '{DOCS_DIR}'")


if __name__ == "__main__":
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument(
        "--docs", action="store_true", help="update the files of docs/roundtrip.md"
    )
    args = parser.parse_args()
    log.enable_rich_logging()
    main(update_docs=args.docs)