<?xml version='1.0'?>
<!DOCTYPE art SYSTEM 'http://www.biomedcentral.com/xml/article.dtd'>
<art>
   <ui>1471-2105-5-175</ui>
   <ji>1471-2105</ji>
   <fm>
      <dochead>Research article</dochead>
      <bibl>
         <title>
            <p>Computation of elementary modes: a unifying framework and the new binary approach</p>
         </title>
         <aug>
            <au id="A1" ce="yes">
               <snm>Gagneur</snm>
               <fnm>Julien</fnm>
               <insr iid="I1"/>
               <email>julien.gagneur@cellzome.com</email>
            </au>
            <au id="A2" ca="yes" ce="yes">
               <snm>Klamt</snm>
               <fnm>Steffen</fnm>
               <insr iid="I2"/>
               <email>klamt@mpi-magdeburg.mpg.de</email>
            </au>
         </aug>
         <insg>
            <ins id="I1">
               <p>Cellzome AG, Meyerhofstr. 1, 69117 Heidelberg, Germany</p>
            </ins>
            <ins id="I2">
               <p>Max Planck Institute for Dynamics of Complex Technical Systems, Sandtorstr. 1, D-39106 Magdeburg, Germany</p>
            </ins>
         </insg>
         <source>BMC Bioinformatics</source>
         <issn>1471-2105</issn>
         <pubdate>2004</pubdate>
         <volume>5</volume>
         <issue>1</issue>
         <fpage>175</fpage>
         <url>http://www.biomedcentral.com/1471-2105/5/175</url>
         <xrefbib>
            <pubidlist>
               <pubid idtype="pmpid">15527509</pubid>
               <pubid idtype="doi">10.1186/1471-2105-5-175</pubid>
            </pubidlist>
         </xrefbib>
      </bibl>
      <history>
         <rec>
            <date>
               <day>28</day>
               <month>6</month>
               <year>2004</year>
            </date>
         </rec>
         <acc>
            <date>
               <day>04</day>
               <month>11</month>
               <year>2004</year>
            </date>
         </acc>
         <pub>
            <date>
               <day>04</day>
               <month>11</month>
               <year>2004</year>
            </date>
         </pub>
      </history>
      <cpyrt>
         <year>2004</year>
         <collab>Gagneur and Klamt; licensee BioMed Central Ltd.</collab>
         <note>This is an Open Access article distributed under the terms of the Creative Commons Attribution License (<url>http://creativecommons.org/licenses/by/2.0</url>), which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</note>
      </cpyrt>
      <abs>
         <sec>
            <st>
               <p>Abstract</p>
            </st>
            <sec>
               <st>
                  <p>Background</p>
               </st>
               <p>Metabolic pathway analysis has been recognized as a central approach to the structural analysis of metabolic networks. The concept of elementary (flux) modes provides a rigorous formalism to describe and assess pathways and has proven to be valuable for many applications. However, computing elementary modes is a hard computational task. In recent years we assisted in a multiplication of algorithms dedicated to it. We require a summarizing point of view and a continued improvement of the current methods.</p>
            </sec>
            <sec>
               <st>
                  <p>Results</p>
               </st>
               <p>We show that computing the set of elementary modes is equivalent to computing the set of extreme rays of a convex cone. This standard mathematical representation provides a unified framework that encompasses the most prominent algorithmic methods that compute elementary modes and allows a clear comparison between them. Taking lessons from this benchmark, we here introduce a new method, the binary approach, which computes the elementary modes as binary patterns of participating reactions from which the respective stoichiometric coefficients can be computed in a post-processing step. We implemented the binary approach in FluxAnalyzer 5.1, a software that is free for academics. The binary approach decreases the memory demand up to 96% without loss of speed giving the most efficient method available for computing elementary modes to date.</p>
            </sec>
            <sec>
               <st>
                  <p>Conclusions</p>
               </st>
               <p>The equivalence between elementary modes and extreme ray computations offers opportunities for employing tools from polyhedral computation for metabolic pathway analysis. The new binary approach introduced herein was derived from this general theoretical framework and facilitates the computation of elementary modes in considerably larger networks.</p>
            </sec>
         </sec>
      </abs>
   </fm>
   <bdy>
      <sec>
         <st>
            <p>Background</p>
         </st>
         <p>The background section presents the importance of computing elementary modes for metabolic system analysis, its computational difficulties and the existence of various known algorithms. A theoretical section brings these algorithms into a unified framework. In a following section we introduce a new approach, called the binary approach. Although relying on concepts introduced in the theoretical section, this section gives enough practical details to be stand-alone for the implementer. Results obtained from example networks and a conclusion section close the article.</p>
         <sec>
            <st>
               <p>Definition and benefits of elementary modes</p>
            </st>
            <p>We consider a metabolic network with <it>m </it>metabolites and <it>q </it>reactions. Reactions may involve further metabolites that are not considered as proper members of the system of study. The latter metabolites, considered to be buffered, are called <it>external </it>metabolites in opposition to the <it>m </it>metabolites within the boundary of the system, called <it>internal </it>metabolites. The stoichiometry matrix <b>N </b>is an <it>m </it>&#215; <it>q </it>matrix whose element <it>n</it><sub><it>ij </it></sub>is the signed stoichiometric coefficient of metabolite <it>i </it>in reaction <it>j </it>with the following sign convention: negative for educts, positive for products. Some reactions, called irreversible reactions, are thermodynamically feasible in only one direction under the normal conditions of the system. Therefore, reaction indices are split into two sets: <it>Irrev </it>(the set of irreversible reaction indices) and <it>Rev </it>(the set of reversible reaction indices). A flux vector (flux distribution), denoted <b>v</b>, is a <it>q</it>-vector of the reaction space <graphic file="1471-2105-5-175-i50.gif"/><sup><it>q</it></sup>, in which each element <it>v</it><sub><b><it>i </it></b></sub>describes the net rate of the <it>i</it><sup><b>th </b></sup>reaction. Sometimes we are interested only in the relative proportions of fluxes in a flux vector. In this sense, two flux vectors <b>v </b>and <b>v' </b>can be seen to be equivalent, denoted by <b>v </b>&#8771; <b>v'</b>, if and only if there is some <it>&#945; </it>> 0 such that <b>v </b>= <it>&#945; </it>&#183; <b>v'</b>.</p>
            <p>Metabolism involves fast reactions and high turnover of substances compared to events of gene regulation. Therefore, it is often assumed that metabolite concentrations and reaction rates are equilibrated, thus constant, in the timescale of study. The metabolic system is then considered to be in quasi steady state. This assumption implies <b>Nv </b>= <b>0</b>. Thermodynamics impose the rate of each irreversible reaction to be nonnegative. Consequently the set of feasible flux vectors is restricted to</p>
            <p><it>P </it>= {<b>v </b>&#8712; <graphic file="1471-2105-5-175-i50.gif"/><sup><it>q </it></sup>: <b>Nv </b>= <b>0 </b>and <it>v</it><sub><it>i </it></sub>&#8805; 0, <it>i </it>&#8712; <it>Irrev</it>} &#160;&#160;&#160; (1)</p>
            <p><it>P </it>is a set of <it>q</it>-vectors that obey a finite set of homogeneous linear equalities and inequalities, namely the |<it>Irrev</it>| inequalities defined by <it>v</it><sub><it>i </it></sub>&#8805; 0, <it>i </it>&#8712; <it>Irrev </it>and the <it>m </it>equalities defined by <b>Nv </b>= <b>0</b>. <it>P </it>is therefore &#8211; by definition &#8211; a convex polyhedral cone <abbrgrp><abbr bid="B1">1</abbr></abbrgrp>.</p>
            <p>Metabolic pathway analysis <abbrgrp><abbr bid="B2">2</abbr><abbr bid="B3">3</abbr><abbr bid="B4">4</abbr><abbr bid="B5">5</abbr></abbrgrp> serves to describe the (infinite) set <it>P </it>of feasible states by providing a (finite) set of vectors that allow the generation of any vectors of <it>P </it>and are of fundamental importance for the overall capabilities of the metabolic system. One of this set is the so-called set of elementary (flux) modes (EMs). For a given flux vector <b>v</b>, we note <it>R</it>(<b>v</b>) = {<it>i </it>: <it>v</it><sub><it>i </it></sub>&#8800; 0} the set of indices of the reactions participating in <b>v</b>. Hence, <it>R</it>(<b>v</b>) can be seen as the underlying pathway of <b>v</b>. By definition, a flux vector <b>e </b>is an <it>elementary mode </it>(EM) if and only if it fulfills the following three conditions <abbrgrp><abbr bid="B6">6</abbr><abbr bid="B7">7</abbr></abbrgrp>:</p>
            <p>
               <graphic file="1471-2105-5-175-i1.gif"/>
            </p>
            <p>In other words, <b>e </b>is an EM if and only if it works at quasi steady state, is thermodynamically feasible and there is no other non-null flux vector (up to a scaling) that both satisfies these constraints and involves a proper subset of its participating reactions. Note that with this convention, reversible modes are here considered as two vectors of opposite directions.</p>
            <p>The concept of elementary modes (and, with some restrictions, the very similar concept of extreme pathways <abbrgrp><abbr bid="B8">8</abbr><abbr bid="B9">9</abbr><abbr bid="B10">10</abbr></abbrgrp>) has proven useful in many ways and has become an important theoretical tool for systems biology as well as for biotechnology and metabolic engineering (see review <abbrgrp><abbr bid="B5">5</abbr></abbrgrp>). Because the metabolic network structure becomes now available at a genome-scale for an increasing number of microorganisms, this approach is well-suited to today's metabolic studies. Here, we give a short overview on the major applications and variants:</p>
            <p>(1) <it>Identification of pathways</it>: The set of EMs comprises all admissible routes through the network and thus of "pathways" in the classical sense, i.e. of routes that convert some educts into some products <abbrgrp><abbr bid="B5">5</abbr></abbrgrp>.</p>
            <p>(2) <it>Network flexibility</it>: The number of EMs is at least a rough measure of the network's flexibility (redundancy, structural robustness) to perform a certain function <abbrgrp><abbr bid="B11">11</abbr><abbr bid="B12">12</abbr><abbr bid="B13">13</abbr></abbrgrp>.</p>
            <p>(3) <it>Identification of all pathways with optimal yield</it>: Consider the linear optimization problem, where all flux vectors with optimal product yield are to be identified, i.e. where the moles of products generated per mole of educts is maximal. Then, one or several of the EMs reach this optimum and any optimal flux vector is a convex combination of these optimal EMs <abbrgrp><abbr bid="B3">3</abbr><abbr bid="B14">14</abbr></abbrgrp>.</p>
            <p>(4) <it>Importance of reactions</it>: The importance or relevance of a reaction can be assessed by its participation frequency or/and flux values in the EMs.</p>
            <p>(4a) <it>Inference of viability of mutants</it>: If a reaction is involved in all growth-related EMs its deletion can be predicted to be lethal, since all EMs would disappear <abbrgrp><abbr bid="B11">11</abbr></abbrgrp>.</p>
            <p>(4b) A more quantitative measure of the importance of a reaction has been given by "control-effective fluxes" (CEFs, <abbrgrp><abbr bid="B11">11</abbr></abbrgrp>). The CEFs take also the efficiency of each mode as well as the absolute flux values of the respective reaction in the EMs into account. CEFs have been used to predict transcript ratios <abbrgrp><abbr bid="B11">11</abbr><abbr bid="B15">15</abbr></abbrgrp>.</p>
            <p>(5) <it>Reaction correlations</it>: EMs can be used to analyze structural couplings between reactions, which might give hints for underlying regulatory circuits <abbrgrp><abbr bid="B14">14</abbr><abbr bid="B16">16</abbr><abbr bid="B17">17</abbr></abbrgrp>. An extreme case is an enzyme (or reaction) subset (set of reactions which can operate only together) or a pair of mutually excluding reactions (two reactions never occurring together in any EM <abbrgrp><abbr bid="B10">10</abbr></abbrgrp>).</p>
            <p>(6) <it>Detection of thermodynamically infeasible cycles</it>: EMs representing internal cycles (without participation of external material or energy sources) are infeasible by laws of thermodynamics and thus reflect structural inconsistencies <abbrgrp><abbr bid="B18">18</abbr><abbr bid="B19">19</abbr></abbrgrp>.</p>
            <p>(7) The framework of pathway analysis also allows us to combine and to study stoichiometric constraints together with <it>regulatory rules </it><abbrgrp><abbr bid="B20">20</abbr></abbrgrp>.</p>
            <p>(8) <it>Minimal cut sets: </it>EMs allow for a computation of minimal cut sets that represent minimal cuts (deletion sets) in the network repressing certain metabolic functions <abbrgrp><abbr bid="B21">21</abbr></abbrgrp>.</p>
            <p>(9) The <it>&#945;-spectrum </it>has been introduced to quantify the involvement of extreme pathways in a particular flux distribution (e.g. from an experiment) <abbrgrp><abbr bid="B22">22</abbr></abbrgrp>. Since the decomposition of a flux vector into extreme pathways is usually not unique, the <it>&#945;-spectrum </it>specifies a range of possible weights for each extreme pathway. The same could be defined for EMs.</p>
         </sec>
         <sec>
            <st>
               <p>Computational limitations and algorithm variants</p>
            </st>
            <p>Due to the combinatorial explosion in the number of EMs in large networks <abbrgrp><abbr bid="B23">23</abbr></abbrgrp>, computing EMs is known to be a hard computational task, so far restricting elementary-mode analysis to medium-scale networks. Several algorithms (and derivations thereof) have been developed for computing EMs. The two most prominent ones are the algorithm elaborated by Schuster et al. <abbrgrp><abbr bid="B4">4</abbr></abbrgrp> and the recently developed null-space approach by Wagner <abbrgrp><abbr bid="B24">24</abbr></abbrgrp>. The latter considerably accelerated the computation speed and thus shifted the current limitation &#8211; at least for a typical PC &#8211; from computation time to the memory requirement.</p>
            <p>Here we show that both the Schuster algorithm as well as that by Wagner can be embedded in a more general algorithmic framework stemming originally from computational geometry. These studies do not only give a summarizing point of view, they also lead to a crucial modification of the existing algorithms, decreasing the required memory for computing and storing EMs drastically.</p>
         </sec>
      </sec>
      <sec>
         <st>
            <p>Results</p>
         </st>
         <sec>
            <st>
               <p>A unified framework</p>
            </st>
            <sec>
               <st>
                  <p>Elementary modes as extreme rays in networks of irreversible reactions</p>
               </st>
               <p>In the particular case of a metabolic system with only irreversible reactions, the set of admissible reactions reads:</p>
               <p><it>P </it>= {<b>v </b>&#8712; <graphic file="1471-2105-5-175-i50.gif"/><sup><it>q </it></sup>: <b>Nv </b>= <b>0 </b>and <b>v </b>&#8805; <b>0</b>} &#160;&#160;&#160; (3)</p>
               <p>Compared with (1) <it>P </it>is in this case a particular, namely a <it>pointed </it>polyhedral cone (an example is depicted in Figure <figr fid="F1">1</figr>). This geometry can be intuitively understood, noting that there are certainly 'enough' intersecting half-spaces (given by the inequalities <b>v </b>&#8805; <b>0</b>) to have this 'pointed' effect in <b>0</b>: <it>P </it>contains no real line (otherwise there coexist <b>x </b>and <b>-x </b>not null in <it>P</it>, a contradiction with the constraint <b>v </b>&#8805; <b>0</b>). The figure even suggests that a pointed polyhedral cone can be either defined in an implicit way, by the set of constraints as we did until now, or in an explicit or generative way, by its 'edges', the so-called <it>extreme rays </it>(or <it>generating vectors</it>) that unambiguously define its boundaries. In the following, we show that elementary modes always correspond to extreme rays of a particular pointed cone as defined in (3) and that their computation therefore matches to the so-called extreme ray enumeration problem, i.e. the problem of enumerating all extreme rays of a pointed polyhedral cone defined by its constraints. An overview on general and current issues on extreme ray enumeration can be found in <abbrgrp><abbr bid="B25">25</abbr></abbrgrp>. For the sake of consistency, we use this reference as a main source and adopt the same mathematical notations.</p>
               <fig id="F1">
                  <title>
                     <p>Figure 1</p>
                  </title>
                  <caption>
                     <p>A pointed polyhedral cone</p>
                  </caption>
                  <text>
                     <p>A pointed polyhedral cone. Dashed lines represent virtual cuts of unbounded areas</p>
                  </text>
                  <graphic file="1471-2105-5-175-1"/>
               </fig>
               <p>The pointed polyhedral cone is the central mathematical object throughout this work; therefore we shall introduce more precise definitions and results surrounding it.</p>
               <p><it>P </it>is a <it>pointed polyhedral cone </it>of <graphic file="1471-2105-5-175-i50.gif"/><sup><it>d </it></sup>if and only if <it>P </it>is defined by a full rank <it>h </it>&#215; <it>d </it>matrix <b>A </b>(<it>rank</it>(<b>A</b>) = <it>d</it>) such that,</p>
               <p><it>P </it>= <it>P</it>(<b>A</b>) = {<b>x </b>&#8712; <graphic file="1471-2105-5-175-i50.gif"/><sup><it>d </it></sup>: <b>Ax </b>&#8805; <b>0</b>} &#160;&#160;&#160; (4)</p>
               <p>The <it>h </it>rows of the matrix <b>A </b>represent <it>h </it>linear inequalities, whereas the full rank mention imposes the "pointed" effect in <b>0</b>. Note that a pointed polyhedral cone is, in general, not restricted to be located completely in the positive orthant as in (3). For example, the cone considered in extreme-pathway analysis may have negative parts (namely for exchange reactions), however, by using a particular configuration it is ensured that the spanned cone is pointed <abbrgrp><abbr bid="B8">8</abbr></abbrgrp>.</p>
               <p>Now we must characterize the extreme rays. A vector <b>r </b>is said to be a <it>ray </it>of <it>P</it>(<b>A</b>) if <b>r </b>&#8800; <b>0 </b>and for all <it>&#945; </it>> 0, <it>&#945; </it>&#183; <b>r </b>&#8712; <it>P</it>(<b>A</b>). We identify two rays <b>r </b>and <b>r' </b>if there is some <it>&#945; </it>> 0 such that <b>r </b>= <it>&#945; </it>&#183; <b>r' </b>and we denote <b>r </b>&#8771; <b>r'</b>, analogous as introduced above for flux vectors. For any vector <b>x </b>in <it>P</it>(<b>A</b>), the <it>zero set </it>or active set <it>Z</it>(<b>x</b>) is the set of inequality indices satisfied by <b>x </b>with equality. Noting <b>A</b><sub><it>i</it>&#8226; </sub>the <it>i</it><sup><b>th </b></sup>row of <b>A</b>, <it>Z</it>(<b>x</b>) = {<it>i </it>: <b>A</b><sub><it>i</it>&#8226;</sub><b>x </b>= 0}. Zero sets can be used to characterize extreme rays. For simplicity, we adopt in this document the following characteristic (<abbrgrp><abbr bid="B25">25</abbr></abbrgrp> for example) as a working definition of extreme rays.</p>
               <p>
                  <it>Definition 1: Extreme ray</it>
               </p>
               <p><it>Let </it><b>r </b><it>be a ray of the pointed polyhedral cone </it>P(<b>A</b>). <it>The following statements are equivalent</it>:</p>
               <p>(<it>a</it>) <b>r </b><it>is an extreme ray of </it>P(<b>A</b>)</p>
               <p>(b) if <b>r' </b>is a ray of P(<b>A</b>) with <it>Z</it>(<b>r</b>) &#8838; <it>Z</it>(<b>r'</b>) then <b>r' </b>&#8771; <b>r</b></p>
               <p>Since <b>A </b>is full rank, <b>0 </b>is the unique vector that solves all constraints with equality. The extreme rays are those rays of <it>P</it>(<b>A</b>) that solve a maximum but not all constraints with equalities. This is expressed in (b) by requiring that no other ray in <it>P</it>(<b>A</b>) solves the same constraints plus additional ones with equalities. Note that in (b) <it>Z</it>(<b>r</b>) = <it>Z</it>(<b>r'</b>) consequently holds.</p>
               <p>An important property of the extreme rays is that they form a finite set of generating vectors of the pointed cone (<abbrgrp><abbr bid="B25">25</abbr></abbrgrp> for example): any vector of <it>P</it>(<b>A</b>) can be expressed as a non-negative linear combination of extreme rays, and the converse is true: all non-negative combinations of extreme rays lie in <it>P</it>(<b>A</b>). Moreover, the set of extreme rays is the unique minimal set of generating vectors of a pointed cone <it>P</it>(<b>A</b>) (up to positive scalings).</p>
               <p>
                  <it>Lemma 1: EMs in networks of irreversible reactions</it>
               </p>
               <p>In a metabolic system where all reactions are irreversible, the EMs are exactly the extreme rays of <it>P </it>= {<b>v </b>&#8712; <graphic file="1471-2105-5-175-i50.gif"/><sup><it>q </it></sup>: <b>Nv </b>= <b>0 </b>and <b>v </b>&#8805; <b>0</b>}.</p>
               <p><b>Proof</b>: <it>P </it>is the solution set of the linear inequalities defined by <graphic file="1471-2105-5-175-i2.gif"/> where <b>I </b>is the <it>q </it>&#215; <it>q </it>identity matrix. Since it contains <b>I</b>, <b>A </b>is full rank and therefore <it>P </it>is a pointed polyhedral cone. All <b>v </b>&#8712; <it>P </it>obey <b>Nv </b>= <b>0</b>, thus the 2<it>m </it>first inequalities defined by <b>A </b>hold with equality for all vectors in <it>P </it>and the inclusion condition of Definition 1 can be restricted to the last <it>q </it>inequalities, i.e. the inequalities corresponding to the reactions. Inclusion over the zero set can be equivalently seen as containment over the set of non-zeros in <b>v</b>, i.e. <it>R</it>(<b>v</b>). Consequently, <b>e </b>&#8712; <it>P </it>is an extreme ray of <it>P </it>if and only if: for all <b>e' </b>&#8712; <it>P </it>: <it>R</it>(<b>e'</b>) &#8838; <it>R</it>(<b>e</b>) &#8658; <b>e' </b>= <b>0 </b>or <b>e' </b>&#8771; <b>e</b>, i.e. if and only if <b>e </b>is elementary. Thus, all three conditions in (2) are fulfilled.</p>
            </sec>
            <sec>
               <st>
                  <p>The general case</p>
               </st>
               <p>In the general case, some reactions of the metabolic system can be reversible. Consequently, <b>A </b>does not contain the identity matrix and <it>P </it>(as given in (1)) is not ensured to be a pointed polyhedral cone anymore <abbrgrp><abbr bid="B7">7</abbr></abbrgrp>. Because they contain a linear subspace, non-pointed polyhedral cones cannot be represented properly by a unique set of generating vectors composed of extreme rays, albeit a set of generating vectors exists, sometimes also called convex basis <abbrgrp><abbr bid="B7">7</abbr></abbrgrp>. One way to obtain a pointed polyhedral cone from (1) is to split up each reversible reaction into two opposite irreversible ones. Note that this operation is completely analogous to a transformation step used in linear programming to obtain a linear optimization problem in canonical form: free variables v are also split into two variables v<sup>+ </sup>and v<sup>- </sup>with v = v<sup>+ </sup>- v<sup>- </sup>and v<sup>+</sup>, v<sup>- </sup>&#8805; 0 <abbrgrp><abbr bid="B26">26</abbr></abbrgrp>. It has been noticed earlier that this virtual split does not change essentially the outcome: the EMs in the reconfigured network are practically equivalent to the EMs from the original network <abbrgrp><abbr bid="B10">10</abbr></abbrgrp>. Here we prove and precisely characterize this result.</p>
               <p>We first introduce some notations. We denote the original reaction network by <it>S </it>and the reconfigured network (with all reversible reactions split up) by <it>S'</it>. The reactions of <it>S </it>are indexed from 1 to <it>q</it>. Remember that <it>Irrev </it>denotes the set of irreversible reaction indices and <it>Rev </it>the reversible ones. An irreversible reaction indexed <it>i </it>gives rise to a reaction of <it>S' </it>indexed <it>i</it>. A reversible reaction indexed <it>i </it>gives rise to two opposite reactions of <it>S' </it>indexed by the pairs (<it>i</it>,+1) and (<it>i</it>,-1) for the forward and the backward respectively. The <it>reconfiguration </it>of a flux vector <b>v </b>&#8712; <graphic file="1471-2105-5-175-i50.gif"/><sup><it>q </it></sup>of <it>S </it>is a flux vector <b>v' </b>&#8712; <graphic file="1471-2105-5-175-i50.gif"/><sup><it>Irrev </it>&#8746; <it>Rev </it>&#215; {-1;+1} </sup>of <it>S' </it>such that</p>
               <p>
                  <graphic file="1471-2105-5-175-i3.gif"/>
               </p>
               <p>Let <b>N' </b>be the stoichiometry matrix of <it>S'</it>. <b>N' </b>can be written as <b>N' </b>= [<b>N </b>- <b>N</b><sub><it>Rev</it></sub>] where <b>N</b><sub><it>Rev </it></sub>consists of all columns of <b>N </b>corresponding to reversible reactions. Note that if <b>v </b>is a flux vector of <it>S </it>and <b>v' </b>is its reconfiguration then <b>Nv </b>= <b>N'v'</b>.</p>
               <p>If possible, i.e. if <b>v' </b>&#8712; <graphic file="1471-2105-5-175-i50.gif"/><sup><it>Irrev </it>&#8746; Re<it>v </it>&#215; {-1;+1} </sup>is such that for any reversible reaction index <it>i </it>&#8712; <it>Rev </it>at least one of the two coefficients <it>v'</it><sub>(<it>i</it>,+1) </sub>or <it>v'</it><sub>(<it>i</it>,-1) </sub>equals zero, then we define the reverse operation, called <it>back-configuration </it>that maps <b>v' </b>back to a flux vector <b>v </b>such that:</p>
               <p>
                  <graphic file="1471-2105-5-175-i4.gif"/>
               </p>
               <p>
                  <it>Theorem 1: EMs in original and in reconfigured networks</it>
               </p>
               <p>
                  <it>Let S be a metabolic system and S' its reconfiguration by splitting up reversible reactions. Then the set of EMs of S' is the union of</it>
               </p>
               <p>
                  <it>a) the set of reconfigured EMs of S</it>
               </p>
               <p>b) <it>the set of two-cycles made of a forward and a backward reaction of </it>S' <it>derived from the same reversible reaction of S</it></p>
               <p><b>Proof</b>: see Methods.</p>
               <p>Thus, the set of EMs of the original network is equivalent (up to the two-cycles) to the set of EMs in the reconfigured network and therefore can be seen as a reduced set of extreme rays of the pointed convex polyhedron as defined by:</p>
               <p><it>P </it>= {<b>v' </b>&#8712; <graphic file="1471-2105-5-175-i50.gif"/><sup><it>q </it>+ |<it>Rev</it>| </sup>: <b>N'v' </b>= <b>0 </b>and <b>v' </b>&#8805; <b>0</b>} &#160;&#160;&#160; (5)</p>
               <p>Hence, EMs computation can be derived from any extreme ray enumeration algorithm applied to the reconfigured network and followed by vector back-configuration and the elimination of meaningless vectors, namely the two-cycles.</p>
               <p>Note that exactly the same procedure &#8211; splitting reversible reactions into two irreversible ones &#8211; was carried out also in the original work of Clarke <abbrgrp><abbr bid="B27">27</abbr></abbrgrp> on stability analyses in stoichiometric networks. Clarke called the extreme rays of the corresponding cone (5) <it>extreme currents</it>. Thus, extreme currents are identical to the EMs in the reconfigured network and, hence, also (up to the 2-cycles) equivalent to the EMs from the original network</p>
            </sec>
            <sec>
               <st>
                  <p>All known algorithms for computing EMs are variants of the Double Description Method</p>
               </st>
               <p>In the following we present a simple yet efficient algorithm for extreme ray enumeration, the so-called Double Description Method <abbrgrp><abbr bid="B28">28</abbr></abbrgrp>. We show that it serves as a common framework to the most prominent EM computation methods. To reach this generality, we concentrate on mathematical operations regardless to the actual data-structures used in the implementation. Therefore we manipulate objects such as matrices, vectors or inequalities and leave their implementation into tableaus, arrays and so on to the next section.</p>
               <p>A <it>generating matrix </it><b>R </b>of a pointed polyhedral cone <it>P</it>(<b>A</b>) is a matrix such that <it>P</it>(<b>A</b>) = {<b>x </b>&#8712; <graphic file="1471-2105-5-175-i50.gif"/><sup><it>d </it></sup>: <b>x </b>= <b>R&#955; </b>for some <b>&#955; </b>&#8805; 0}. The pair (<b>A</b>,<b>R</b>) is called a <it>Double Description pair</it>, or DD pair. As mentioned above, the extreme rays form the unique set of minimal generating vectors of <it>P</it>(<b>A</b>) and thus, considered as set of <it>d</it>-vectors, the extreme rays of <it>P</it>(<b>A</b>) form the columns of a generating matrix <b>R </b>that is minimal in terms of number of columns. The pair (<b>A</b>,<b>R</b>) is then called a <it>minimal DD pair</it>.</p>
               <p>The strategy of the Double Description Method is to iteratively build a minimal DD pair (<b>A</b><sub><it>k</it></sub>, <b>R</b><sub><it>k</it></sub>) from a minimal DD pair (<b>A</b><sub><it>k </it>- 1</sub>, <b>R</b><sub><it>k </it>- 1</sub>), where <b>A</b><sub><it>k </it></sub>is a submatrix of <b>A </b>made of <it>k </it>rows of <b>A</b>. At each step the columns of <b>R</b><sub><it>k </it></sub>are the extreme rays of <it>P</it>(<b>A</b><sub><it>k</it></sub>), the convex polyhedron defined by the linear inequalities <b>A</b><sub><it>k</it></sub>. The incremental step introduces a constraint of <b>A </b>that is not yet satisfied by all computed extreme rays. Some extreme rays are kept, some are discarded and new ones are generated. The generation of new extreme rays relies on the notion of <it>adjacent extreme rays</it>. Here again, for the sake of simplicity, we adopt a characteristic (<abbrgrp><abbr bid="B25">25</abbr></abbrgrp> for example) as a working definition of adjacent extreme rays.</p>
               <p>
                  <it>Definition 2: Adjacent extreme rays</it>
               </p>
               <p><it>Let </it><b>r </b><it>and </it><b>r' </b><it>be distinct rays of the pointed polyhedral cone </it>P(<b>A</b>). <it>Then the following statements are equivalent</it>:</p>
               <p>(a) <b>r </b>and <b>r' </b>are adjacent extreme rays</p>
               <p>(b) if <b>r" </b>is a ray of P(<b>A</b>) with <it>Z</it>(<b>r</b>) &#8745; <it>Z</it>(<b>r'</b>) &#8838; <it>Z</it>(<b>r"</b>) then either <b>r" </b>&#8771; <b>r </b>or <b>r" </b>&#8771; <b>r'</b></p>
               <sec>
                  <st>
                     <p>Initialization</p>
                  </st>
                  <p>The initialization of the double description method must be done with a minimal DD pair. One possibility is the following. Since <it>P </it>is pointed, <b>A </b>has full rank and contains a nonsingular submatrix of order <it>d </it>denoted by <b>A</b><sub><it>d</it></sub>. Hence, (<b>A</b><sub><it>d</it></sub>, <b>A</b><sub><it>d</it></sub><sup>-1</sup>) is a minimal DD pair which works as initialization and leads directly to step <it>k </it>= <it>d</it>. Note that there is some freedom in choosing a submatrix <b>A</b><sub><it>d </it></sub>or some alternative starting minimal DD pair.</p>
               </sec>
               <sec>
                  <st>
                     <p>Incremental step</p>
                  </st>
                  <p>Assume (<b>A</b><sub><it>k </it>- 1</sub>, <b>R</b><sub><it>k </it>- 1</sub>) is a minimal DD pair and consider a <it>k</it><sup><b>th </b></sup>constraint defined by a not yet extracted row of <b>A</b>, denoted <b>A</b><sub><it>i</it>&#8226;</sub>. Let <it>J </it>be the set of column indices of <b>R</b><sub><it>k </it>- 1 </sub>and <b>r</b><sup><it>j</it></sup>, <it>j </it>&#8712; <it>J</it>, its column vectors, i.e. the extreme rays of <it>P</it>(<b>A</b><sub><it>k </it>- 1</sub>), the polyhedral cone of the previous iteration. <b>A</b><sub><it>i</it>&#8226; </sub>splits <it>J </it>in three parts (Figure <figr fid="F2">2</figr>) whether <b>r</b><sup><it>j </it></sup>satisfies the constraint with strict inequality (<it>positive </it>ray), with equality (<it>zero </it>ray) or does not satisfy it (<it>negative </it>ray):</p>
                  <fig id="F2">
                     <title>
                        <p>Figure 2</p>
                     </title>
                     <caption>
                        <p>Double description incremental step</p>
                     </caption>
                     <text>
                        <p><b>Double description incremental step</b>. The scene is best visualized with a polytope; consider the cube pictured here as a <graphic file="1471-2105-5-175-i50.gif"/><sup>3 </sup>projection of a <graphic file="1471-2105-5-175-i50.gif"/><sup>4 </sup>polyhedral cone. Extreme rays from the previous iteration are {a,b,c,d,e,f,g,h} whose adjacencies are represented by edges. For the considered constraint, whose null space is the hyperplane depicted by the bold black border lines, b and f are positive rays, a and c are zero rays, d, e, g and h are negative rays. b, f, a and c satisfy the constraint and are kept for the next iteration. {f,e} and {f,g} are the only two pairs of adjacent positive/negative rays and only they give rise to new rays: i and j at the intersection of the hyperplane and the respective edges. The new polytope is then defined by its extreme rays: {a,b,c,f,i,j}.</p>
                     </text>
                     <graphic file="1471-2105-5-175-2"/>
                  </fig>
                  <p><it>J</it><sup>+ </sup>= {<it>j </it>&#8712; <it>J </it>: <b>A</b><sub><it>i</it>&#8226;</sub><b>r</b><sup><it>j </it></sup>> 0}</p>
                  <p><it>J</it><sup>0 </sup>= {<it>j </it>&#8712; <it>J </it>: <b>A</b><sub><it>i</it>&#8226;</sub><b>r</b><sup><it>j </it></sup>= 0} &#160;&#160;&#160; (6)</p>
                  <p><it>J</it><sup>- </sup>= {<it>j </it>&#8712; <it>J </it>: <b>A</b><sub><it>i</it>&#8226;</sub><b>r</b><sup><it>j </it></sup>&lt; 0}</p>
                  <p>Minimality of <b>R</b><sub><it>k </it></sub>is ensured in considering all positive rays, all zero rays and new rays obtained as combination of a positive and a negative ray that are adjacent to each other <abbrgrp><abbr bid="B25">25</abbr></abbrgrp>. For convenience, we denote by <it>Adj </it>the index set of the newly generated rays in which every new ray is expressed by a pair of indices corresponding to the two adjacent rays combined. Hence, <b>R</b><sub><it>k </it></sub>is defined as the set of column vectors <b>r</b><sup><it>j</it></sup>, <it>j </it>&#8712; <it>J' </it>with</p>
                  <p>
                     <graphic file="1471-2105-5-175-i6.gif"/>
                  </p>
                  <p>The incremental step is repeated until <it>k </it>= <it>h </it>i.e. having treated all rows of the matrix <b>A</b>. The columns of the final matrix <b>R</b><sub><it>m </it></sub>are the extreme rays of <it>P</it>(<b>A</b>).</p>
               </sec>
            </sec>
            <sec>
               <st>
                  <p>Computing EMs</p>
               </st>
               <p>The Double Description Method together with Theorem 1 offers a framework for computing EMs. The only steps to include are a reconfiguration step that splits reversible reactions and builds the matrix <b>A</b>, and a post-processing step that gets rid of futile two-cycles and computes the back-configuration. The dimension of the space is given by the number of reactions in the reconfigured network: <it>q</it>' = <it>q </it>+ |<it>Rev</it>|. This results in the general algorithmic scheme as given in Table <tblr tid="T1">1</tblr> (from here, all variables for the reconfigured network are written without prime):</p>
               <tbl id="T1">
                  <title>
                     <p>Table 1</p>
                  </title>
                  <caption>
                     <p>General double description method for EM computation.</p>
                  </caption>
                  <tblbdy cols="2">
                     <r>
                        <c ca="left">
                           <p><b>N </b>&#8592; reconfigured stoichiometry matrix [<b>N </b>- <b>N</b><sub><it>Rev</it></sub>]</p>
                           <p><b>A </b>&#8592; [<b>N</b><sup><it>T </it></sup>-<b>N</b><sup><it>T </it></sup><b>I</b>]<sup><it>T</it></sup></p>
                        </c>
                        <c ca="center">
                           <p>
                              <b>Reconfiguration</b>
                           </p>
                        </c>
                     </r>
                     <r>
                        <c ca="left">
                           <p><b>A</b><sub><it>q </it></sub>&#8592; <it>q </it>independent rows of <b>A</b></p>
                           <p><b>R </b>&#8592; <b>A</b><sub><it>q</it></sub><sup>-1</sup></p>
                        </c>
                        <c ca="center">
                           <p>
                              <b>Initialization</b>
                           </p>
                        </c>
                     </r>
                     <r>
                        <c ca="left">
                           <p>for each unprocessed row <b>A</b><sub><it>i</it>&#8226; </sub>of <b>A </b>do</p>
                           <p><it>&#160;&#160;J</it><sup>+ </sup>&#8592; {<it>j </it>&#8712; <it>J </it>: <b>A</b><sub><it>i</it>&#8226;</sub><b>r</b><sup><it>j </it></sup>> 0}</p>
                           <p><it>&#160;&#160;J</it><sup>0 </sup>&#8592; {<it>j </it>&#8712; <it>J </it>: <b>A</b><sub><it>i</it>&#8226;</sub><b>r</b><sup><it>j </it></sup>= 0}<it>&#160;&#160;&#160;</it></p>
                           <p><it>&#160;J</it><sup>- </sup>&#8592; {<it>j </it>&#8712; <it>J </it>: <b>A</b><sub><it>i</it>&#8226;</sub><b>r</b><sup><it>j </it></sup>&lt; 0}<it>&#160;</it></p>
                           <p><b><it>&#160;&#160;</it>R' </b>&#8592; {<b>r</b><sup><it>j </it></sup>: <it>j </it>&#8712; <it>J</it><sup>0 </sup>&#8746; <it>J</it><sup>+</sup>}<it>&#160;&#160;&#160;</it><it>&#160;</it></p>
                           <p>For (<it>j</it><sup>+</sup>, <it>j</it><sup>-</sup>) &#8712; <it>J</it><sup>+ </sup>&#215; <it>J</it><sup>- </sup>do</p>
                        </c>
                        <c ca="center">
                           <p>
                              <b>Processing of constraints in a given order</b>
                           </p>
                        </c>
                     </r>
                     <r>
                        <c indent="1" ca="left">
                           <p>If <graphic file="1471-2105-5-175-i7.gif"/> and <graphic file="1471-2105-5-175-i8.gif"/> adjacent in <b>R </b>then</p>
                        </c>
                        <c ca="center">
                           <p>
                              <b>Adjacency test</b>
                           </p>
                        </c>
                     </r>
                     <r>
                        <c ca="left">
                           <p>
                              <graphic file="1471-2105-5-175-i9.gif"/>
                           </p>
                           <p><it>&#160;&#160;&#160;&#160;&#160;</it><it>&#160;&#160;&#160;</it>end if</p>
                           <p><it>&#160;</it>end for</p>
                           <p><b><it>&#160;</it>R </b>&#8592; <b>R'</b></p>
                           <p>End for</p>
                        </c>
                        <c ca="center">
                           <p>
                              <b>Gaussian combination step</b>
                           </p>
                        </c>
                     </r>
                     <r>
                        <c ca="left">
                           <p><b>R </b>&#8592; <b>R \ </b>{ futile two-cycles }</p>
                           <p><b>R </b>&#8592; back-configuration of <b>R</b></p>
                        </c>
                        <c ca="center">
                           <p>
                              <b>Back-configuration</b>
                           </p>
                        </c>
                     </r>
                  </tblbdy>
               </tbl>
               <p>As mentioned in the introduction section, the two most efficient algorithms for computing EMs available are the recently introduced null-space approach <abbrgrp><abbr bid="B24">24</abbr></abbrgrp> and the Schuster algorithm <abbrgrp><abbr bid="B6">6</abbr></abbrgrp>, that we call "canonical basis approach" (implemented, for example, in METATOOL <abbrgrp><abbr bid="B29">29</abbr></abbrgrp> version 4.3 and <it>FluxAnalyzer </it>version 5.0 <abbrgrp><abbr bid="B30">30</abbr></abbrgrp>). Both algorithms handle reversible reactions directly. A direct handling of reversible reactions, meaning without network reconfiguration, is feasible in each setting and has been described in the respective original articles. This requires adapted adjacency tests. However, it does not affect the overall strategy. For simplicity, we describe these algorithms with networks of irreversible reactions only (the issue of reversible reactions is discussed below). We are now able to see that the algorithms of Schuster and Wagner differ basically only in the chosen initialization for <b>R</b>.</p>
               <sec>
                  <st>
                     <p>The canonical basis approach (Schuster approach; CBA)</p>
                  </st>
                  <p>The matrix <b>I </b>represents <it>q </it>independent rows extracted from <b>A </b>= [<b>N</b><sup><it>T </it></sup>-<b>N</b><sup><it>T </it></sup><b>I</b>]<sup><it>T </it></sup>and can thus be used for <b>A</b><sub><it>q</it></sub>. The matrix <b>A</b><sub><it>q</it></sub><sup>-1 </sup>= <b>I</b><sup>-1 </sup>= <b>I </b>gives the <it>q </it>extreme rays that obey to these <it>q </it>independent constraints and works as initialization of <b>R</b>.</p>
                  <p>The remaining constraints are 2<it>m </it>linear inequalities defined by <b>Nr </b>&#8805; <b>0 </b>and -<b>Nr </b>&#8805; <b>0</b>, i.e. <it>m </it>equalities: <b>Nr </b>= <b>0</b>. The processing of an equality constraint is done in a single pass by only keeping rays of <it>J</it><sup>0 </sup>instead of <it>J</it><sup>+ </sup>&#8746; <it>J</it><sup>0</sup>. This is achieved by replacing the line <b>R' </b>&#8592; {<b>r</b><sup><it>j </it></sup>: <it>j </it>&#8712; <it>J</it><sup>+ </sup>&#8746; <it>J</it><sup>0</sup>} with <b>R' </b>&#8592; {<b>r</b><sup><it>j </it></sup>: <it>j </it>&#8712; <it>J</it><sup>0</sup>} in the part "Processing of constraints in a given order" in Table <tblr tid="T1">1</tblr>. Note that in the original Schuster algorithm the values of <b>Ar</b><sup><it>j </it></sup>(required for the Gaussian combination step) are explicitly stored throughout the algorithm (in the left-hand side of the tableau <abbrgrp><abbr bid="B4">4</abbr></abbrgrp>) and adapted after each iteration.</p>
               </sec>
               <sec>
                  <st>
                     <p>The null space approach (Wagner approach; NSA)</p>
                  </st>
                  <p>The idea there is to initialize <b>R </b>by a well-defined kernel (or null-space) matrix <b>K </b>of <b>N </b>with a particular structure (the transposed <b>K</b><sup><it>T </it></sup>is in (reduced) row-echelon form):</p>
                  <p>
                     <graphic file="1471-2105-5-175-i10.gif"/>
                  </p>
                  <p>which can be computed, for example, by the MATLAB command <it>null</it>(<it>N</it>,'<it>r</it>'). One can assume <b>N </b>to be of rank <it>m</it>, the opposite case being discussed below ("On redundancies and network compression"). This implies <graphic file="1471-2105-5-175-i11.gif"/> to be of size <it>m </it>&#215; (<it>q </it>- <it>m</it>) and the identity of size <it>q </it>- <it>m</it>. This structure is obtained by allowing a reordering of the rows of <b>K</b>, i.e. of the reaction indices. Without losing generality, one can assume that the reactions corresponding to the block <b>I </b>are indexed from 1 to <it>q </it>- <it>m</it>. Consider the (<it>q </it>+ <it>m</it>) &#215; <it>q </it>matrix <graphic file="1471-2105-5-175-i12.gif"/>. For all <b>x </b>in <it>P</it>(<b>A</b><sub><it>q </it>+ <it>m</it></sub>), there is some vector <b>&#955; </b>&#8805; <b>0 </b><graphic file="1471-2105-5-175-i13.gif"/> such that <b>x </b>= <b>K&#955;</b>. Reciprocally, for all <b>&#955; </b>&#8805; <b>0</b>, the vector <b>x </b>= <b>K&#955; </b>lies in <it>P</it>(<b>A</b><sub><it>q </it>+ <it>m</it></sub>). Thus (<b>A</b><sub><it>q </it>+ <it>m</it></sub>, <b>K</b>) is a DD pair. Since <b>K </b>is a kernel matrix, its columns are independent vectors therefore (<b>A</b><sub><it>q </it>+ <it>m</it></sub>, <b>K</b>) is a minimal DD pair. <b>K </b>as defined in (8) works as initial value for <b>R</b>. Hence, the initialization in this setup delivers directly <it>k </it>= <it>q </it>+ <it>m </it>solved constraints.</p>
                  <p>The remaining constraints are <it>m </it>linear inequalities defined by <it>r</it><sub><it>i </it></sub>&#8805; 0, <it>i </it>= <it>q </it>- <it>m </it>+ 1...<it>q</it>. The Gaussian elimination step simplifies too</p>
                  <p>
                     <graphic file="1471-2105-5-175-i14.gif"/>
                  </p>
                  <p>The right hand-side is practically a positive combination of the two vectors <graphic file="1471-2105-5-175-i7.gif"/> and <graphic file="1471-2105-5-175-i8.gif"/>, because <graphic file="1471-2105-5-175-i15.gif"/> is positive and <graphic file="1471-2105-5-175-i16.gif"/> negative due to the definitions of <it>J</it><sup>+ </sup>and <it>J</it><sup>-</sup>.</p>
               </sec>
               <sec>
                  <st>
                     <p>Adjacency tests</p>
                  </st>
                  <p>Here we give explicitly the adjacency test in the case of reconfigured networks for each setup. Variants handling reversible reactions directly were introduced for CBA and NSA. They lead in general to more complex algorithmic steps for a little (at most 2-fold) memory gain.</p>
                  <p>The test is used when processing the constraint <it>k </it>+ 1 to check whether two extreme rays <b>r </b>and <b>r' </b>of the cone <it>P</it>(<b>A</b><sub><it>k</it></sub>) are adjacent. The adjacency test is based on Definition 2(b). Note that for a given extreme ray <b>r </b>of the cone <it>P</it>(<b>A</b><sub><it>k</it></sub>), the considered zero set <it>Z</it>(<b>r</b>) is defined over the <it>k </it>constraints <b>A</b><sub><it>k</it></sub>.</p>
                  <p><it>CBA</it>: As mentioned above, in a CBA setup, equality constraints are solved within a single iteration. After the <it>l</it>-th iteration step, <it>k </it>= <it>q </it>+ 2<it>l </it>constraints are processed, therefore <graphic file="1471-2105-5-175-i17.gif"/>. The last 2<it>l </it>constraints are satisfied with equality for all computed rays. We denote by <it>Z</it><sub><it>u</it></sub>(<b>v</b>) the Zero set of a vector <b>v </b>over the <it>u </it>first constraints. Here, with <it>u </it>= <it>q </it>it matches to the set of non-participating reactions in <b>v</b>. The adjacency test is then equivalent to the search of a third extreme ray <b>r" </b>such that <it>Z</it><sub><it>q</it></sub>(<b>r</b>) &#8745; <it>Z</it><sub><it>q</it></sub>(<b>r'</b>) &#8838; <it>Z</it><sub><it>q</it></sub>(<b>r"</b>). If such an <b>r" </b>exists, then <b>r </b>and <b>r' </b>are not adjacent.</p>
                  <p><it>NSA</it>: After the <it>l</it>-th iteration step in an NSA setup, <it>k </it>= <it>q </it>+ <it>m </it>+ <it>l </it>constraints including <it>p </it>= <it>q </it>- <it>m </it>+ <it>l </it>sign constraints are processed. Thus <graphic file="1471-2105-5-175-i18.gif"/>. The last 2<it>m </it>constraints are satisfied with equality for all computed rays. Therefore, the adjacency test is then equivalent to the search of a third extreme ray <b>r" </b>such that</p>
                  <p><it>Z</it><sub><it>p</it></sub>(<b>r</b>) &#8745; <it>Z</it><sub><it>p</it></sub>(<b>r'</b>) &#8838; <it>Z</it><sub><it>p</it></sub>(<b>r"</b>) &#160;&#160;&#160; (10).</p>
                  <p>Thus, for NSA we only have to check the first <it>p</it>(<it>q </it>- <it>m </it>&#8804; <it>p </it>&#8804; <it>q</it>) elements of the rays, in contrast to all <it>q </it>elements for CBA. This is one reason behind the relative velocity of NSA compared to CBA.</p>
               </sec>
            </sec>
            <sec>
               <st>
                  <p>On redundancies and network compression</p>
               </st>
               <p>It is common practice to reduce the problem of extreme ray enumeration by restricting the input set to the set of irredundant constraints <abbrgrp><abbr bid="B25">25</abbr></abbrgrp>. Although the general problem of extreme ray enumeration is non-polynomial, the reduction into irredundant constraints is equivalent to linear programming and therefore of polynomial complexity. To our best knowledge, this important pre-processing has never been spelled out explicitly in the context of EM computation. However some network simplification steps have been proposed earlier <abbrgrp><abbr bid="B4">4</abbr><abbr bid="B30">30</abbr></abbrgrp> that deeply relate to the notion of redundancy removal. These simplifications include three heuristics that reduce the size of the original stoichiometric matrix <b>N </b>and thus the input size of the problem: the detection of conservation relations, of strictly detailed balanced reactions and of enzyme subsets.</p>
               <p>Conservation relations of metabolites are captured as linear dependencies between rows of the stoichiometry matrix <b>N </b>(thus, in the left null-space of <b>N</b>; <abbrgrp><abbr bid="B31">31</abbr></abbrgrp>). This implies that some of the equality constraints in <b>Nr </b>= <b>0 </b>are linearly dependent. Satisfying a maximal linearly independent subset of these equations suffices to satisfy all equations. Therefore the problem can be reduced to <graphic file="1471-2105-5-175-i19.gif"/>, where <graphic file="1471-2105-5-175-i20.gif"/> is the reduced stoichiometry matrix. For example, in Figure <figr fid="F3">3a</figr>, metabolites B and C build up one conservation relation and thus one of these metabolites can be removed. Note that conservation relations need not to be considered explicitly in the null-space approach since their removal does not affect the computed null-space matrix.</p>
               <fig id="F3">
                  <title>
                     <p>Figure 3</p>
                  </title>
                  <caption>
                     <p>Small example networks illustrating redundancies</p>
                  </caption>
                  <text>
                     <p><b>Small example networks illustrating redundancies. </b>For explanations see text.</p>
                  </text>
                  <graphic file="1471-2105-5-175-3"/>
               </fig>
               <p>Conservation relations only consider redundancies among the equalities. The general approach handles also inequality constraints. Strictly detailed balanced reactions <abbrgrp><abbr bid="B32">32</abbr></abbrgrp> and enzyme subsets <abbrgrp><abbr bid="B29">29</abbr></abbrgrp> are particular cases of such redundancies. Strictly detailed balanced reactions are reactions with null flux at any steady-state. Many of them can be identified as null row vectors of <b>K</b>, the kernel matrix of <b>N</b>, and can be eliminated from the system. A non-trivial example is shown in Figure <figr fid="F3">3b</figr>, where R1 is strictly detailed balanced and would be detected by using the kernel matrix. However, there may be further reactions with a fixed zero-flux in steady state that cannot be identified by <b>K</b>. Some of those can be found by a simple analysis of <b>N</b>. For example, all the uni-directional reactions pointing into an internal sink (or emanating from a source) are certainly not participating in any steady-state flux (Figure <figr fid="F3">3c</figr>).</p>
               <p>An enzyme subsets is defined as a group of reactions with relative constant flux ratio at steady state. Many of them can be identified as row vectors of <b>K </b>differing only in a scalar factor <it>&#945;</it>. Reactions R1, R2 and R5 in Figure <figr fid="F3">3d</figr> would represent one enzyme subset. Assume one works on the reconfigured network and reactions R1 and R2 are members of the same enzyme subset. Thus, at steady state, we have for the respective rates <it>r</it><sub>1 </sub>= <it>&#945; </it>&#183; <it>r</it><sub>2</sub>. If <it>&#945; </it>> 0, the constraints <it>r</it><sub>1 </sub>&#8805; 0 and <it>r</it><sub>2 </sub>&#8805; 0 are redundant, <it>r</it><sub>1 </sub>&#8805; 0 being sufficient. In that case the practice is to lump both reactions into one lowering the number of reactions (and often also of the metabolites). If <it>&#945; </it>&lt; 0, the constraints <it>r</it><sub>1 </sub>&#8805; 0 and <it>r</it><sub>2 </sub>&#8805; 0 imply <it>r</it><sub>1 </sub>= <it>r</it><sub>2 </sub>= 0, hence, a special case of strictly detailed balanced reactions. In this case we say that the reactions contradict each other. Both reactions are not used and can be eliminated from the system as reactions R1 and R4 in Figure <figr fid="F3">3e</figr>.</p>
               <p>We identified another kind of redundancies. We call a metabolite M <it>uniquely produced </it>(respectively <it>consumed</it>) if only one single reaction, say <it>i</it>, can produce (respectively consume) M for several consuming (respectively producing) it (see Figure <figr fid="F3">3f</figr>). In that case, balancing metabolite M at steady-state implies that <it>r</it><sub><it>i </it></sub>is always non-zero whenever the other reactions connected to M are active. We can therefore lump each reaction consuming (respectively producing) M with reaction <it>i </it>and remove metabolite M, decreasing the dimension of the problem further (see also the example in Figure <figr fid="F5">5</figr> which is discussed below). Note that some enzyme subsets and strictly detailed balanced reactions can be seen as special cases of this type of redundancy.</p>
               <fig id="F5">
                  <title>
                     <p>Figure 5</p>
                  </title>
                  <caption>
                     <p>Example network</p>
                  </caption>
                  <text>
                     <p><b>Example network</b>. Full structure (a), compressed structure (b) and compressed structure with split reversible reaction R4c (c).</p>
                  </text>
                  <graphic file="1471-2105-5-175-5"/>
               </fig>
               <p>Elimination of redundancies and network compression should be done in a pre-processing step leading to a compressed network structure. Thereby, it is important to detect and remove such redundancies <it>iteratively </it>until no further redundancy can be found. A MATLAB function <it>compressSMat </it>which removes all redundancies discussed above in an iterative fashion can be obtained from the corresponding author. After the computation of EMs, lumped reactions can be expanded to their single components.</p>
               <p>There is a general approach for identifying redundancies in a set of linear constraints that uses linear programming, for example with the software <it>redund </it>distributed together with the software <it>lrs </it><abbrgrp><abbr bid="B33">33</abbr></abbrgrp>. This approach does not require any iterative process, but only identify redundant inequalities. Rows of <b>A </b>can be eliminated but no consequent column-wise reduction is done. Therefore, a simple redundancy removal is not as powerful as the accompanying network compressions presented above. The method however has the advantage to be systematic and might lead in the future to further network simplifications not yet identified.</p>
            </sec>
         </sec>
         <sec>
            <st>
               <p>The binary approach</p>
            </st>
            <sec>
               <st>
                  <p>General idea</p>
               </st>
               <p>Using the reconfigured network with only irreversible reactions we have shown that the most important algorithms for EM computation belong to the same general framework. However, the original algorithms from Schuster and Wagner operate directly on the original network without splitting reversible reactions. At a first look, this seems to be more efficient since the dimension (number of reactions) is lower, decreasing seemingly also the memory requirement and the costs for adjacency tests. However, using the reconfigured network <it>S' </it>offers great simplifications. First, as already mentioned in an earlier section, the adjacency tests are easier to handle. The most important advantage, however, is the following. For the CBA in <it>S' </it>it follows that all non-zero elements of a ray <b>r</b><sup><it>k </it></sup>will be retained if a new ray is obtained by combining <b>r</b><sup><it>k </it></sup>with another (adjacent) ray because only positive combinations of rays are performed. The same holds for the NSA with respect to the <it>p </it>already processed inequality (irreversibility) constraints. This is of great importance since the adjacency test requires the information on zero/non-zero places in the rays only.</p>
               <p>We illustrate this idea for NSA because this approach turned out to be more efficient than CBA. We assume that <b>N </b>has full rank <it>m</it>, i.e. there is no conservation relation. In this section, all variables correspond again to the network with split reversible reactions.</p>
               <p>As described above, for an initialization of <b>R </b>we use a kernel matrix <b>K </b>of <b>N </b>having form (8):</p>
               <p>
                  <graphic file="1471-2105-5-175-i21.gif"/>
               </p>
               <p>Note that we use here the transposed representation of the tableau compared to Wagner's original article <abbrgrp><abbr bid="B24">24</abbr></abbrgrp>. Since by eq. (9) only positive column combinations are performed during the algorithm, no negative number can show up in the upper part (consisting of <it>q </it>- <it>m </it>rows (reactions)) during the next iterations. The first row to be processed now is <it>p </it>= <it>q </it>- <it>m </it>+ 1. Using the general algorithmic scheme provided above all rays with non-negative entries at row <it>p </it>are retained and all negative entries can be combined with positive ones that are adjacent to them to obtain a zero at position <it>p</it>.</p>
               <p>Assuming that the procession of the <it>p</it>-th row leads to a collection of <it>t </it>rays, we have:</p>
               <p>
                  <graphic file="1471-2105-5-175-i22.gif"/>
               </p>
               <p>The upper part, <b>R</b><sub>1</sub>, contains the <it>p </it>processed rows which only contain non-negative values. Again, positive combinations of rays performed during the next iterations lead in the upper part to sums of non-negative numbers. Hence, it is easy to keep track of the zeroes in the upper part <b>R</b><sub>1 </sub>by the use of bit masks. After the procession of the <it>p</it>-th inequality constraint the <it>p</it>-th row (i.e. the first row of <b>R</b><sub>2</sub>) can be transformed to its binary representation and moved from <b>R</b><sub>2 </sub>to <b>R</b><sub>1</sub>. Using a binary representation for <b>R</b><sub>1 </sub>has many advantages:</p>
               <p>(i) For the next row <it>p </it>+ 1 to be processed we have to perform the adjacency test for pairs of vectors <graphic file="1471-2105-5-175-i7.gif"/>, <graphic file="1471-2105-5-175-i8.gif"/>. This test only requires the first <it>p </it>elements of these rays (see (10)), hence, exactly the columns of <b>R</b><sub>1</sub>. Test (10) can then be written as a simple (and fast) bit operation. Two distinct vectors <graphic file="1471-2105-5-175-i7.gif"/>, <graphic file="1471-2105-5-175-i8.gif"/> are adjacent if and only if for all vectors <b>r</b><sup><it>k </it></sup>distinct from <graphic file="1471-2105-5-175-i7.gif"/> and <graphic file="1471-2105-5-175-i8.gif"/>, it holds:</p>
               <p>
                  <graphic file="1471-2105-5-175-i23.gif"/>
               </p>
               <p>(<graphic file="1471-2105-5-175-i24.gif"/> taken from <b>R</b><sub>1</sub>; <b>r</b><sub>1...<it>p </it></sub>denotes the first <it>p </it>elements of <b>r</b>). Of course, the identical terms in the parentheses are computed only once.</p>
               <p>(ii) Combination step of two adjacent rays (eq. (9)) reduces for the part in <b>R</b><sub>1 </sub>to a simple OR operation, which is already computed for (13). The other (real number) components of the two rays (contained in <b>R</b><sub>2</sub>) are combined as usual by eq. (9).</p>
               <p>(iii) Bit operations as applied in <b>R</b><sub>1 </sub>are not only fast, they are numerically exact in contrast to operations on real numbers.</p>
               <p>(iv) The binary representation requires much less memory. Taking a typical 64-bit floating-point variable, storing <b>R</b><sub>1 </sub>binary takes only 1.6 % of the memory needed for real numbers. Taking into account that in the worst case (all reactions reversible) the number of reactions in the reconfigured network is twice of that from the original one we still have a reduction in memory requirements of more than 96%. Note that <b>R</b><sub>2 </sub>is empty at the end of the algorithm, hence, all EMs are then stored binary.</p>
               <p>Bitmap representations of EMs have already been used in earlier implementations for accelerating the adjacency (elementarity) tests. However, binary tableaus had then been stored and updated <it>in parallel </it>to the full (real number) tableau of EMs which is not necessary here.</p>
               <p>After the whole processing, EMs (extreme rays) are obtained for the reconfigured network <it>S' </it>as binary vectors. Binary patterns of EMs are completely sufficient for many applications of EMs (see discussion). However, a well-known lemma (<abbrgrp><abbr bid="B25">25</abbr></abbrgrp> for example) ensures that this information is also sufficient to retrieve the real values up to a positive scalar:</p>
               <p>
                  <it>Lemma 2</it>
               </p>
               <p><it>In a d-dimensional Euclidean space, let </it><b>r </b><it>be a ray of the pointed polyhedral cone </it>P(<b>A</b>). <it>The following statements are equivalent</it>:</p>
               <p>(a) <b>r </b><it>is an extreme ray of </it>P(<b>A</b>)</p>
               <p>(b) <it>rank</it>(<b>A</b><sub><it>Z</it>(<it>r</it>)</sub>) = <it>d </it>- 1</p>
               <p>Each obtained binary vector provides the zero set <it>Z</it><sub><b><it>q</it></b></sub>(<b>e</b>) and its complement the reaction set <it>R</it>(<b>e</b>) of an EM <b>e </b>in the reconfigured network <it>S'</it>. Lemma 2 says that the equation <graphic file="1471-2105-5-175-i25.gif"/> and therefore</p>
               <p><b>N</b><sub><it>R</it>(<b>e</b>)</sub><b>e</b><sub><it>R</it>(<b>e</b>) </sub>= <b>0 </b>&#160;&#160;&#160; (14)</p>
               <p>admit a one-dimensional solution space, i.e. the dimension of the null space of N<sub><it>R</it>(<b>e</b>) </sub>is 1. <b>N</b><sub><it>R</it>(<b>e</b>) </sub>denotes the <it>m </it>&#215; |<it>R</it>(<b>e</b>)| sub-matrix of <b>N </b>containing all those reactions (columns) of <b>N </b>which are involved in <b>e</b>. Solving the homogeneous linear system (14) gives a vector that can be normalized and properly oriented for example by dividing it by the value on its first participating reaction (see the example below). The reconstruction process reflects the fact that an EM is &#8211; up to a scalar &#8211; determined by its participating reactions.</p>
               <p>In a second post-processing step, we transform the (real number) EMs of <it>S' </it>back into their representation in the original network <it>S </it>by using the rules given before Theorem 1. Note that it is also possible to transform first the binary EMs from <it>S' </it>into the binary EMs of <it>S </it>and then to reconstruct the real numbers (by using eq. (14) for the stoichiometric matrix of the non-reconfigured network <it>S</it>; see pseudo-code). In both cases, if the original network had been compressed during pre-processing, the EMs can finally be expanded to their corresponding modes in the uncompressed network.</p>
            </sec>
            <sec>
               <st>
                  <p>Pseudo-code of the binary (null-space) approach</p>
               </st>
               <p>Using the results of the previous sections we are now able to give a pseudo-code of the binary (null-space) approach (Figure <figr fid="F4">4</figr>). The code follows MATLAB style, which provides a convenient and comprehensible notation for operations on vectors and matrices. We use several native MATLAB routines (written in bold). For concision, we also make the use of some other routines (indicated in italic). The code of the latter routines is not given here explicitly but their names and accompanying comments should allow the reader to implement them. For readers not familiar with MATLAB notation we give in the Methods section some basic explanations which should suffice for understanding the pseudo-code.</p>
               <fig id="F4">
                  <title>
                     <p>Figure 4</p>
                  </title>
                  <caption>
                     <p>Pseudo-code: Core algorithm for computing elementary modes with the binary approach</p>
                  </caption>
                  <text>
                     <p>Pseudo-code: Core algorithm for computing elementary modes with the binary approach.</p>
                  </text>
                  <graphic file="1471-2105-5-175-4"/>
               </fig>
               <p>Note that the pseudo-code in Figure <figr fid="F4">4</figr> is not given in its computationally most efficient form. It should just present the basic structure of the algorithm. There are two important issues in the algorithm we still have to discuss.</p>
               <sec>
                  <st>
                     <p>Minimal number of zeros in extreme rays (maximal pathway length)</p>
                  </st>
                  <p>In the null-space approach, the <it>m </it>equality constraints are always solved for each ray during the procession of sign constraints. Since any ray satisfies by Lemma 2 at least a total of <it>q </it>- 1 constraints, this implies that at least <it>q</it>-1-<it>m </it>sign restrictions are solved by equality. Hence each ray contains at least <it>q</it>-1-<it>m </it>zero-places. This fact can be used as a shortcut when checking the adjacency of two rays (see pseudo-code). At the end of the algorithm, it follows that the maximal pathway length |<it>R</it>(<b>e</b>)|<sub>max</sub>, that is the maximal number of involved reactions in an EM, reads (cf. <abbrgrp><abbr bid="B7">7</abbr></abbrgrp>):</p>
                  <p>|<it>R</it>(<b>e</b>)|<sub>max </sub>= <it>q </it>- (<it>q </it>- <it>m </it>- 1) = <it>m </it>+ 1 &#160;&#160;&#160; (15)</p>
               </sec>
               <sec>
                  <st>
                     <p>Initialization of R</p>
                  </st>
                  <p>As for the non-reconfigured network, the initialization of <b>R </b>for the reconfigured network can be done with a null space matrix <b>K' </b>of <b>N' </b>having the special structure (8). Several of such kernel matrices may exist. We are interested in such a one that contains as many zeros as possible because the number of zeros in the starting tableau <b>R </b>has great impact on the number of ray combinations to be performed. For this purpose, it can be exploited that very sparse vectors of the null space of <b>N' </b>(not contained in the null space of <b>N</b>) are known, namely the two-cycles emerging by splitting up reversible reactions. We detail in Method section a technique that incorporates as many two-cycles as possible into <b>K </b>to construct <b>K'</b>.</p>
               </sec>
            </sec>
            <sec>
               <st>
                  <p>Simple example</p>
               </st>
               <p>This section is devoted to illustrate our binary approach for computing elementary modes. Figure <figr fid="F5">5(a)</figr> shows a simple example network consisting of four metabolites (A,B,C,D) and 7 reactions (R1...R7), whereof R5 is reversible. The stoichiometric matrix <b>N </b>of this network reads accordingly:</p>
               <p>
                  <graphic file="1471-2105-5-175-i26.gif"/>
               </p>
               <p>Using our rules for removing redundancies, this network can be compressed as depicted in Figure <figr fid="F5">5(b)</figr>. Metabolite A is uniquely produced, hence, R1 and R2 can be combined to R1c and reactions R1 and R3 are lumped into R2c. R3c and R4c correspond to the original reactions R4 and R5, respectively. Finally, R6 and R7 are enzyme subsets and are combined to R5c. Metabolites A and D can be removed, since they do not occur in any reaction anymore. Thus, the network dimension could be reduced by two metabolites and two reactions. The stoichiometric matrix <b>N</b><sub><it>C </it></sub>of the compressed system reads:</p>
               <p>
                  <graphic file="1471-2105-5-175-i27.gif"/>
               </p>
               <p>From this compressed network, we can compute a null space matrix having structure (8), here even without permuting rows (reactions):</p>
               <p>
                  <graphic file="1471-2105-5-175-i28.gif"/>
               </p>
               <p><b>K</b><sub><it>C </it></sub>would be the starting tableau in the original null-space approach. Applying our binary approach we have now to split the (only) reversible reaction R4c in the compressed network (Figure <figr fid="F5">5(c)</figr>). This results in the stoichiometric matrix <b>N</b><sub><b>C</b></sub>', where R4c<sub>b </sub>denotes the additionally introduced column of the backward direction of R4c:</p>
               <p>
                  <graphic file="1471-2105-5-175-i29.gif"/>
               </p>
               <p>Now we need to determine a null space matrix <b>K</b><sub><it>C</it></sub>' of <b>N</b><sub><it>C</it></sub>', if possible in the sparse form as in eq. (M1) (Methods section). <b>K</b><sub><it>C </it></sub>&#8211; as given in (18) &#8211; contains only irreversible reactions in the identity sub-matrix. Therefore, without further rearrangements, we can already use it to construct <b>K</b><sub><it>C</it></sub>' as described in the Methods section. We introduce an additional row in the identity sub-matrix of <b>K</b><sub><it>C </it></sub>(corresponding to R4c<sub>b</sub>) and an additional column representing the two-cycle from the split reversible reaction R4c:</p>
               <p>
                  <graphic file="1471-2105-5-175-i30.gif"/>
               </p>
               <p><b>K</b><sub><it>C</it></sub>' is now a proper initialization for the <b>R </b>tableau according to (11). The first four rows (in the identity sub-matrix) can be seen as already completed, we therefore denote the starting tableau as <b>R</b><sup>4</sup>. According to (12) we can divide <b>R</b><sup>4 </sup>into a binary (a non-zero entry is demarked by "&#215;") and unprocessed real number part:</p>
               <p>
                  <graphic file="1471-2105-5-175-i31.gif"/>
               </p>
               <p>We proceed now with the 5-th row (R4c). All columns with non-negative entries in R4c are retained (columns 1 and 4). Columns 2 and 3 have a negative entry at position R4c and are therefore combined with 1 and 4 to obtain a zero at position R4c. In the binary sub-tableau, the combination step is a simple OR operation. Thereby, using the obtained binary patterns, the adjacency test (13) must be performed for each pair of combined columns. Here, all 4 possible pairs are adjacent. Accordingly, after completing row 5, tableau <b>R</b><sup>5 </sup>has 6 columns and reads:</p>
               <p>
                  <graphic file="1471-2105-5-175-i32.gif"/>
               </p>
               <p>Now we have already reached the last iteration step where R5c &#8211; the last row in real number format &#8211; is processed. Columns 1&#8211;5 are retained and column 6 is combined with columns 1,3 and 5. However, the column pairs (1,6) and (3,6) are not pairs of adjacent rays. This can be detected in two alternative ways. The usual way is that both column pairs violate condition (13) because of column 4. The second and quicker way is to observe that the minimal number of zeros in this network is 3 (<it>q'</it>-<it>m</it>-1 = 6-2-1) and that their respective combinations would give columns with only 2 zeros. These combinations are therefore not included in the tableau. We obtain:</p>
               <p>
                  <graphic file="1471-2105-5-175-i33.gif"/>
               </p>
               <p>Tableau <b>R</b><sup>6 </sup>is the binary representation of the EMs (extreme rays) from the split compressed network. Now, the post-processing begins. First, we remove the spurious 2-cycle (second column in <b>R</b><sup>6</sup>) raised by splitting R4c. Then, rows R4c and R4c<sub>b </sub>are combined by an OR operation and row R4c<sub>b </sub>is dropped. Note, if a completely reversible elementary mode exists in the non-split network, it would lead to two EMs &#8211; one for each direction &#8211; in the split network. In such a case, either both are kept or only one, then marked as reversible EM. We have now obtained the 5 EMs of the compressed network as binary vectors:</p>
               <p>
                  <graphic file="1471-2105-5-175-i34.gif"/>
               </p>
               <p>Here, it is easy to reconstruct the real numbers of the EMs from their binary patterns. For illustrating the general case, we reconstruct the first mode <b>e</b><sup>1 </sup>using eq. (14):</p>
               <p>
                  <graphic file="1471-2105-5-175-i35.gif"/>
               </p>
               <p>The dimension of the null space of <graphic file="1471-2105-5-175-i36.gif"/>, hence of the solution space of eq. (25) is 1 (as it is for all EMs). A scalable solution vector is (2,1,1)<sup>T</sup>, normalizing to the first component yields the unique solution (1,0.5,0.5)<sup>T</sup>. Thus, the first EM in the compressed network is <b>e</b><sup>1 </sup>= (1,0,0,0.5,0.5)<sup><it>T</it></sup>. Reminding that we lumped the original reactions R1 and R2 into R1c and R6 and R7 into R5c, we can finally reconstruct the original elementary mode from the uncompressed network, that is <it>R</it>1 + <it>R</it>2 + 0.5 &#215; <it>R</it>5 + 0.5 &#215; <it>R</it>6 + 0.5 &#215; <it>R</it>7.</p>
            </sec>
            <sec>
               <st>
                  <p>Results from real networks</p>
               </st>
               <p>We implemented the binary null-space approach (binary NSA) in MATLAB (Mathworks Inc.) and incorporated it into the <it>FluxAnalyzer </it><abbrgrp><abbr bid="B30">30</abbr><abbr bid="B34">34</abbr></abbrgrp>. The function includes a pre-processing step where the network is compressed as described. Some sub-routines of the algorithm are performed by compiled C-code (via MATLAB MEX interface), since this proved to accelerate the implementation drastically. In order to check the capabilities of our algorithm we computed the elementary modes in realistic and large metabolic networks. The three networks (S1-S3) considered here are variants from a model of the central metabolism of <it>Escherichia coli </it>investigated originally in <abbrgrp><abbr bid="B11">11</abbr><abbr bid="B23">23</abbr></abbrgrp>. For considering networks with different complexities we inserted an increasing number of substrate uptake or/and product excretion (pseudo) reactions, which increase the number of EMs much faster than the insertion of internal reactions. For a (rough) comparison with the original NSA we used the program <it>coverN </it>(developed by Clemens Wagner and co-workers; available upon request from <email>clemens.wagner@pki.unibe.ch</email>, which is also implemented in MATLAB and uses external C-files for some sub-routines. The original as well as the binary CBA algorithm proved to be slower than both methods of NSA (not shown).</p>
               <p>Table <tblr tid="T2">2</tblr> summarizes the computations. As a first result, it can be noted that redundancy removal and network compression during pre-processing results in much smaller networks. Note that the dimensions of the compressed networks of S1 and S2 are even lower than given in <abbrgrp><abbr bid="B23">23</abbr></abbrgrp> due to the additional removal of uniquely produced/consumed metabolites. A lower number of reactions reduces the dimension of the null-space (hence, the number of iterations) and, in particular, the effort for adjacency tests. Generally, the proportion of the pre-processing on the overall computation time is negligible.</p>
               <tbl id="T2">
                  <title>
                     <p>Table 2</p>
                  </title>
                  <caption>
                     <p>Computations of elementary modes in a realistic metabolic network (central metabolism of <it>Escherichia coli</it>). Computations were performed on a typical PC with AMD Athlon XP 3000 + CPU and 1 GB RAM. Abbreviations: Form = formiate, Ac = acetate, Glc = glucose, Succ = succinate, Asp = aspartate, Glyc = glycerol, Eth = ethanol, Lac = lactate, CO2 = carbon dioxide.</p>
                  </caption>
                  <tblbdy cols="7">
                     <r>
                        <c>
                           <p/>
                        </c>
                        <c cspan="2" ca="center">
                           <p>
                              <b>S1</b>
                           </p>
                        </c>
                        <c cspan="2" ca="center">
                           <p>
                              <b>S2</b>
                           </p>
                        </c>
                        <c cspan="2" ca="center">
                           <p>
                              <b>S3</b>
                           </p>
                        </c>
                     </r>
                     <r>
                        <c cspan="7">
                           <hr/>
                        </c>
                     </r>
                     <r>
                        <c ca="left">
                           <p>
                              <b>substrates</b>
                           </p>
                        </c>
                        <c cspan="2" ca="left">
                           <p>Glc</p>
                        </c>
                        <c cspan="2" ca="left">
                           <p>Glc, <b>Succ</b>, <b>Glyc</b>, <b>Ac</b></p>
                        </c>
                        <c cspan="2" ca="left">
                           <p>Glc, Succ, Glyc, Ac, <b>Asp</b></p>
                        </c>
                     </r>
                     <r>
                        <c ca="left">
                           <p>
                              <b>products</b>
                           </p>
                        </c>
                        <c cspan="2" ca="left">
                           <p>Ac, Form, Eth, Lac, CO2</p>
                        </c>
                        <c cspan="2" ca="left">
                           <p>Ac, Form, Eth, Lac, CO2</p>
                        </c>
                        <c cspan="2" ca="left">
                           <p>Ac, Form, Eth, Lac, CO2, <b>Succ</b></p>
                        </c>
                     </r>
                     <r>
                        <c ca="left">
                           <p>
                              <b>#reactions (q)</b>
                           </p>
                           <p>
                              <b># metabolites (m)</b>
                           </p>
                        </c>
                        <c cspan="2" ca="left">
                           <p>106 (28 reversible) </p>
                           <p>89</p>
                        </c>
                        <c cspan="2" ca="left">
                           <p>110 (28 reversible) 89</p>
                        </c>
                        <c cspan="2" ca="left">
                           <p>112 (28 reversible) </p>
                           <p>89</p>
                        </c>
                     </r>
                     <r>
                        <c ca="left">
                           <p>
                              <b>compressed network:</b>
                           </p>
                           <p>
                              <b># reactions </b>
                           </p>
                           <p>
                              <b># metabolites</b>
                           </p>
                        </c>
                        <c cspan="2" ca="left">
                           <p/>
                           <p>42 (17 reversible)</p>
                           <p>25</p>
                        </c>
                        <c cspan="2" ca="left">
                           <p/>
                           <p>47 (17 reversible)</p>
                           <p>26</p>
                        </c>
                        <c cspan="2" ca="left">
                           <p/>
                           <p>51 (17 reversible)</p>
                           <p>28</p>
                        </c>
                     </r>
                     <r>
                        <c ca="left">
                           <p>
                              <b>final number of elementary modes</b>
                           </p>
                        </c>
                        <c cspan="2" ca="left">
                           <p>27,100</p>
                        </c>
                        <c cspan="2" ca="left">
                           <p>507,632</p>
                        </c>
                        <c cspan="2" ca="left">
                           <p>2,450,787</p>
                        </c>
                     </r>
                     <r>
                        <c>
                           <p/>
                        </c>
                        <c ca="left">
                           <p>
                              <b>binary NSA</b>
                           </p>
                        </c>
                        <c ca="left">
                           <p>
                              <b>NSA</b>
                           </p>
                        </c>
                        <c ca="left">
                           <p>
                              <b>binary NSA</b>
                           </p>
                        </c>
                        <c ca="left">
                           <p>
                              <b>NSA</b>
                           </p>
                        </c>
                        <c ca="left">
                           <p>
                              <b>binary NSA</b>
                           </p>
                        </c>
                        <c ca="left">
                           <p>
                              <b>NSA</b>
                           </p>
                        </c>
                     </r>
                     <r>
                        <c ca="left">
                           <p>
                              <b>computation time</b>
                           </p>
                        </c>
                        <c ca="left">
                           <p>0.16 min (9.63 sec)</p>
                        </c>
                        <c ca="left">
                           <p>0.54 min (32.20 sec)</p>
                        </c>
                        <c ca="left">
                           <p>51.20 min</p>
                        </c>
                        <c ca="left">
                           <p>116.77 min</p>
                        </c>
                        <c ca="left">
                           <p>1546 min (25.78 h)</p>
                        </c>
                        <c ca="left">
                           <p>not finished</p>
                        </c>
                     </r>
                     <r>
                        <c ca="left">
                           <p>
                              <b>back transformation</b>
                           </p>
                        </c>
                        <c ca="left">
                           <p>0.13 min (7.97 sec)</p>
                        </c>
                        <c>
                           <p/>
                        </c>
                        <c ca="left">
                           <p>2.57 min</p>
                        </c>
                        <c>
                           <p/>
                        </c>
                        <c ca="left">
                           <p>13 min</p>
                        </c>
                        <c>
                           <p/>
                        </c>
                     </r>
                     <r>
                        <c ca="left">
                           <p>
                              <b>total computation time</b>
                           </p>
                        </c>
                        <c ca="left">
                           <p>0.29 min (17.60 sec)</p>
                        </c>
                        <c ca="left">
                           <p>0.54 min (32.20 sec)</p>
                        </c>
                        <c ca="left">
                           <p>53.77 min</p>
                        </c>
                        <c ca="left">
                           <p>116.77 min</p>
                        </c>
                        <c ca="left">
                           <p>1559 min (25.98 h)</p>
                        </c>
                        <c>
                           <p/>
                        </c>
                     </r>
                  </tblbdy>
               </tbl>
               <p>Comparing the required computation times, the binary NSA seems to be slightly faster than the original NSA. This observation should not be considered as a general result, since we cannot exclude that there are different potentials in optimizing the source code of <it>coverN </it>and in <it>FluxAnalyzer</it>, respectively. Besides, different row orders in the starting tableau can generally result in different computation times. However, it seems that the original and the binary NSA are comparable with respect to computation time. The adjacency tests in the binary null-space approach need to consider more elements (due to the split of reversible reactions) but are simpler to perform because preliminary modes from a previous iteration cannot lose their elementary property. Note also that implementing the full algorithm in C (and not only parts of it as in <it>coverN </it>and <it>FluxAnalyzer</it>) might further accelerate the computation considerably.</p>
               <p>Using a special null space matrix <b>K' </b>as initialization of <b>R </b>(as explained in the Methods section) contributes considerably to a reduced computational effort. We can estimate this by the total sum <graphic file="1471-2105-5-175-i37.gif"/> over the number of candidates <it>P</it><sub><it>i </it></sub>occurring in the tableau before iteration <it>i</it>. In S1, for example, <graphic file="1471-2105-5-175-i38.gif"/>. Computing instead an arbitrary null-space matrix <b>K' </b>for <b>N' </b>(e.g. via MATLAB <it>null </it>command) results in a more dense initialization for <b>R </b>and the naive initialization would lead to <graphic file="1471-2105-5-175-i39.gif"/>. The larger numbers of candidates increase the costs for adjacency tests and accordingly the running time drastically. This underlines that the success of the null-space approach (in its original or binary form) depends strongly on the initially chosen null space matrix.</p>
               <p>Generally, computing the stoichiometric coefficients of the EMs from their binary patterns is in larger networks in low proportion to the overall computation time (S3: ca. 0.8%).</p>
               <p>Whereas the computational demands seem to be comparable for both null-space approaches, the memory requirements for the binary NSA are much lower, in particular during the last iterations. For this reason, the 2.45 millions of EMs from network S3 could be computed on a typical PC, whereas the original NSA ends in the 26-th iteration step (from a total of 28) due to memory overflow.</p>
            </sec>
         </sec>
      </sec>
      <sec>
         <st>
            <p>Discussion</p>
         </st>
         <p>Elementary modes are smallest functional sub-networks, which can be interpreted geometrically as extreme rays from a pointed convex cone (corresponding to the network with split reversible reactions). The computation of extreme rays has been intensively studied by the polyhedral computation community and we think that the metabolic community can benefit from it. We shall also mention another abstraction of elementary modes within the framework of <it>matroid </it>theory <abbrgrp><abbr bid="B35">35</abbr></abbrgrp>. In an <it>oriented vector matroid</it>, the elementary modes correspond to the <it>positive circuits </it>(or <it>positive cycles</it>), which are minimal dependent sets. In fact, an elementary mode is a minimal linearly dependent set of the column vectors of the stoichiometric matrix (in the reconfigured network with only non-negative coefficients). This has been mentioned only rarely so far <abbrgrp><abbr bid="B36">36</abbr></abbrgrp>. Matroid theory could be a source for new theoretical investigations on elementary modes and could lead to further improvements in the computation procedure as well as to new applications in the sense of metabolic pathway analysis.</p>
         <p>Adjacent extreme rays can also be detected by an algebraic characterization that completes Definition 2 <abbrgrp><abbr bid="B25">25</abbr></abbrgrp>:</p>
         <p>(<it>c</it>) <b>r </b><it>and </it><b>r' </b><it>are extreme rays and the rank of the matrix </it>A<sub><it>Z</it>(<b>r</b>) &#8745; <it>Z</it>(<b>r'</b>) </sub><it>is </it>d-2</p>
         <p>In practical cases the characterization of adjacency is mostly computed in its combinatorial form than its algebraic one <abbrgrp><abbr bid="B25">25</abbr></abbrgrp>. However, improvements could be done by using both characterizations. In fact, the test on EM length done before the actual adjacency test in our MATLAB pseudo-code is a consequence of the algebraic test. A striking feature of the algebraic test is that it only requires access to the two rays tested for adjacency (<b>r </b>and <b>r'</b>) and to the fixed size matrix <b>A</b>, in practice to the stoichiometry matrix. In comparison, the combinatorial test implies a loop over all other rays (<b>r"</b>). Therefore, the algebraic test could be suited for distributed computing.</p>
         <p>Some theoretical issues of the combinatorial complexity of EMs were discussed in <abbrgrp><abbr bid="B23">23</abbr></abbrgrp>. An upper bound <it>B </it>for the number of EMs is (reversible modes are counted only once):</p>
         <p>
            <graphic file="1471-2105-5-175-i40.gif"/>
         </p>
         <p>Assuming that no conservation relations occur in the stoichiometric matrix, we obtain:</p>
         <p>
            <graphic file="1471-2105-5-175-i41.gif"/>
         </p>
         <p>Note that <it>q </it>and <it>m </it>should be taken from the non-split, compressed network to obtain the lowest upper bound. In larger, realistic networks, even if compressed, the values for <it>B </it>explode quickly. Fortunately, the actual number of modes in real networks proved to be much smaller than the boundary (cf. <it>B </it>&#8776; 2.54 &#183; 10<sup>11 </sup>for S1 in Table <tblr tid="T2">2</tblr>), although it grows also exponentially. One reason is that many routes are not admissible due to violation of the sign restrictions. Another reason is the low connectivity of many metabolites leading to sparse stoichiometric matrices.</p>
         <p>A third reason is related to short pathway length. The upper bound reflects the case where all EMs have maximal pathway length |<it>R</it>(<b>e</b>)|<sub>max </sub>which is, by eq. (15), <it>m </it>+ 1. However, many EMs, if not all, have a lower length immediately reducing the possible number of modes <abbrgrp><abbr bid="B23">23</abbr></abbrgrp>. The pathway length distribution of the <it>E. coli </it>modes on glucose (network S1) is shown in Figure <figr fid="F6">6</figr>. The maximal length of an EM in the uncompressed network is <it>m </it>+ 1 = 89 + 1 = 90. Modes that are not involved in biomass synthesis, in particular, are much smaller. In terms of linear algebra this means that there exist vector sets <it>W </it>containing fewer than <it>m </it>+ 1 column vectors of <b>N </b>that are linearly dependent. In polyhedral computation this phenomenon is known as <it>degeneracy</it>. Generally, degenerate systems may cause annoying difficulties and must be handled often differently to non-degenerate systems, albeit they reduce here the number of modes. The algorithms related to EM computation may be, in general, especially suited for computing extreme rays in such strongly degenerate systems, whereas other programs may be better suited for only weakly degenerate problems. For example, the software <it>lrs </it><abbrgrp><abbr bid="B33">33</abbr></abbrgrp> implements the so-called reverse search enumeration algorithm <abbrgrp><abbr bid="B37">37</abbr></abbrgrp> that is polynomial for non-degenerate cases. Note that the new binary approach as introduced herein can easily be adapted for computing extreme rays of any pointed cone as given in eq. (4) and may therefore improve the performance of extreme ray computation in many other applications.</p>
         <fig id="F6">
            <title>
               <p>Figure 6</p>
            </title>
            <caption>
               <p>Pathway length distribution in elementary modes of <it>E. coli</it></p>
            </caption>
            <text>
               <p><b>Pathway length distribution in elementary modes of <it>E. coli. </it></b>(Substrate: glucose; network S1 in Table 2).</p>
            </text>
            <graphic file="1471-2105-5-175-6"/>
         </fig>
         <p>Albeit the general framework was formulated long time ago, the explicit introduction of the null-space approach was an important mile-stone in accelerating the computation of EMs. The binary null-space approach as introduced herein increases the efficiency of this approach also with respect to the memory requirements and enables now to compute EMs in networks significant larger as those investigated before. A simple computation gives the number of about 85 millions of EMs in a network of 100 (compressed) reactions that can be stored in 1 GB RAM (cf. compressed and reconfigured S3: <it>q' </it>= 51 + 17 = 68). Of course, only a fraction of this amount can be stored during the algorithm due to other (partially large) temporary variables. Besides, reactions that are not yet processed are still stored as real numbers. The amount <it>M </it>of memory required for storing <it>E </it>modes after the procession of <it>p </it>reactions (stored binary) is (assuming 64-bit real numbers)</p>
         <p><it>M </it>= <it>E </it>&#183; (<it>p </it>+ 64 &#183; (<it>q </it>- <it>p</it>)). &#160;&#160;&#160; (28)</p>
         <p>It depends on the evolution of the number of EMs during the algorithm where the maximal memory demand occurs. Generally, much larger networks can now be treated.</p>
      </sec>
      <sec>
         <st>
            <p>Conclusions</p>
         </st>
         <p>The four main results of this work are: (i) showing the equivalence between extreme rays and elementary modes, (ii) showing that algorithms for computing elementary modes can be seen as variants of the double description method for computing extreme rays in pointed polyhedral cones, (iii) introduction of a general framework and of new methods for redundancy removal and network compression, (iv) introduction of the new binary approach for computing extreme rays and elementary modes.</p>
         <p>The binary approach computes elementary modes as binary patterns of participating reactions that are sufficient to compute the respective stoichiometric coefficients in a post-processing step. For many applications &#8211; following the computation &#8211; it is even sufficient to operate on the binary patterns of EMs. Among all applications of EMs presented in the introduction section, only the identification of all pathways with optimal yield, the "control-effective fluxes", and the <it>&#945;</it>-spectrum need the explicit (real number) coefficients, i.e. the reaction rates, in the EMs. Whenever needed, the explicit representation of an EM can be determined (possibly temporarily) from its binary pattern.</p>
         <p>The binary approach decreases the memory demand up to 96% without loss of speed and without loss of information giving the most efficient method available for computing elementary modes to date. The limiting step in computing elementary modes has thus been shifted back to the computation time. Parallelization &#8211; as investigated within the traditional, not-binary, schema in <abbrgrp><abbr bid="B38">38</abbr></abbrgrp> &#8211; might lead to a further acceleration bringing us again a step closer to the complete set of EMs in genome-scale metabolic networks.</p>
      </sec>
      <sec>
         <st>
            <p>Methods</p>
         </st>
         <sec>
            <st>
               <p>Proof of Theorem 1</p>
            </st>
            <p>We prove first that each case a) and b) defines EMs of <it>S'</it>. Let <b>e' </b>be a flux vector defined by either case a) or b). Clearly <b>N'e' </b>= <b>0 </b>and <b>e' </b>&#8805; <b>0</b>. In case b) <b>e' </b>is not elementary only if the single forward or backward reaction balances all internal metabolites, i.e. if the reaction includes not any internal species. We can safely exclude this pathologic case by considering that <b>N </b>does not contain a null column. Therefore, <b>e' </b>is elementary. In case a), assume <b>e' </b>is not elementary, i.e. there exists a non-null flux vector <b>x' </b>of <it>S' </it>not equivalent to <b>e' </b>such that <b>x' </b>&#8805; <b>0</b>, <b>N'x' </b>= <b>0 </b>and <it>R</it>(<b>x'</b>) &#8838; <it>R</it>(<b>e'</b>). By definition of the reconfiguration, for each <it>i </it>&#8712; <it>Rev</it>, at least one among <it>e'</it><sub>(<it>i</it>,+1) </sub>or <it>e'</it><sub>(<it>i</it>,-1) </sub>equals zero and this holds consequently also for <b>x'</b>. Thus one can define <b>e </b>and <b>x</b>, the back-configurations of <b>e' </b>and <b>x'</b>. Now, by definition, <b>e </b>is an EM of S and is not equivalent to <b>x</b>, <b>Nx </b>= <b>0</b>, <it>x</it><sub><it>i </it></sub>&#8805; 0<sub><it>i </it></sub>for <it>i </it>&#8712; <it>Irrev </it>and <it>R</it>(<b>x</b>) &#8838; <it>R</it>(<b>e</b>), a contradiction.</p>
            <p>Hence each case a) and b) defines EMs of S'. We prove now that there is no other case. Assume there exists <b>e' </b>neither defined by a) nor b), such that <b>e' </b>&#8805; <b>0</b>, <b>N'e' </b>= <b>0 </b>and <b>e' </b>elementary. For each <it>i </it>&#8712; <it>Rev </it>at least one among <it>e'</it><sub>(<it>i</it>,+1) </sub>and <it>e'</it><sub>(<it>i</it>,-1) </sub>equals zero (otherwise the two-cycle defined on reaction <it>i </it>would satisfy the constraints and involve only a subset of the reactions of <b>e'</b>). Thus the back-configuration <b>e </b>of <b>e' </b>can be defined. By definition, <b>e </b>is not an EM of S. There exists <b>x </b>not equivalent to <b>e </b>such that <b>Nx </b>= <b>0</b>, <it>x</it><sub><it>i </it></sub>&#8805; 0<sub><it>i </it></sub>for <it>i </it>&#8712; <it>Irrev </it>and <it>R</it>(<b>x</b>) &#8838; <it>R</it>(<b>e</b>). The reconfiguration <b>x' </b>of <b>x </b>is such that <b>x' </b>is not equivalent to <b>e'</b>, <b>x' </b>&#8805; <b>0</b>, <b>N'x' </b>= <b>0 </b>and <it>R</it>(<b>x'</b>) &#8838; <it>R</it>(<b>e'</b>), a contradiction.</p>
         </sec>
         <sec>
            <st>
               <p>Initialization of the <b>R </b>tableau in reconfigured networks</p>
            </st>
            <p>As in the case of non-reconfigured networks, we must initialize <b>R </b>in reconfigured networks as a null space matrix <b>K' </b>of <b>N' </b>having the special structure (8), i.e. <graphic file="1471-2105-5-175-i43.gif"/>. Several kernel matrices having this form can exist. Here we are interested in such a one that contains as many zeros as possible because the number of zeros in the starting tableau <b>R </b>has a great impact on the number of ray combinations to be performed. For this purpose, we can exploit the fact that we already know |<it>Rev</it>| many very sparse vectors of the null space of <b>N</b>', namely the two-cycles emerging by splitting up reversible reactions. Our goal is therefore to incorporate many (if possible all) of these vectors into <b>K </b>to obtain <b>K'</b>. For this purpose, we first compute the kernel matrix <b>K </b>of <b>N</b>. Then, by simple linear combinations of columns (analogous to the well-known computation of a row-echelon form of a matrix) and possibly by permutation of rows in <b>K</b>, we try to obtain <graphic file="1471-2105-5-175-i44.gif"/>, where only irreversible reactions (rows) are contained in the identity matrix <b>I</b>. If this is possible then we can easily include the backward directions of reversible reactions (as rows) and the two-cycles (as columns) into <b>K </b>yielding <b>K'</b>:</p>
            <p>
               <graphic file="1471-2105-5-175-i45.gif"/>
            </p>
            <p>The first <it>q </it>- <it>m </it>columns in <b>K' </b>correspond to the original columns in <b>K</b>, but contain additionally zeros for the inserted backward reaction of originally reversible reactions. These columns are obviously linearly independent and are contained in the null space of <b>N'</b>. Sub-matrix <graphic file="1471-2105-5-175-i46.gif"/> is a |<it>Rev</it>| &#215; |<it>Rev</it>| identity matrix whose rows correspond to the backward directions of split reactions. Finally, <b>C </b>is a |<it>Rev</it>| &#215; <it>m </it>sub-matrix which complements <graphic file="1471-2105-5-175-i46.gif"/> in such a way that they represent together the two-cycles of the split reactions. (Thus, each column <it>c</it><sub><it>i </it></sub>in <b>C </b>contains only zeros, except a unity at that row, which corresponds to the forward direction of the split reversible reaction <it>i</it>. See also the example network.) <b>I </b>and <graphic file="1471-2105-5-175-i46.gif"/> yield together the new <b>I'</b>, whereas <graphic file="1471-2105-5-175-i11.gif"/> and <b>C </b>represent together <graphic file="1471-2105-5-175-i47.gif"/> of <b>K'</b>. Thus, <b>K' </b>contains <it>q </it>- <it>m </it>+ |<it>Rev</it>| linearly independent (basis) vectors of the null space of <b>N' </b>and is in form (8).</p>
            <p>To our experience, in most realistic networks, a matrix <b>K' </b>as in (M1) can be found. Using instead an arbitrary <b>K' </b>can lead to a much larger computation effort because much more candidates are computed at an early state (see real network examples).</p>
            <p>A further simple strategy avoiding that many rays are computed early is to sort the rows in <graphic file="1471-2105-5-175-i47.gif"/> ascending with respect to the number of their non-zero entries.</p>
            <p>In case it is not possible to arrange only irreversible reactions into the sub-matrix <b>I </b>of <b>K</b>, we can nevertheless find a matrix <b>K' </b>with the same basic structure as in (M1). However, for some originally reversible reactions, the forward (in <b>I</b>) <it>and </it>backward (in <graphic file="1471-2105-5-175-i46.gif"/>) direction will then be contained in <b>I'</b>. For each of those, the two-cycle cannot be represented by <b>C </b>and <graphic file="1471-2105-5-175-i46.gif"/> (because the row of the forward direction is contained in <b>I' </b>and not in <b>K'</b>) and another corresponding column in <b>C </b>has to be constructed. Assume a reversible reaction is contained as <it>j</it>-th row in <b>I</b>. Assume further that the inserted backward direction of this reaction corresponds to the <it>k</it>-th row of <graphic file="1471-2105-5-175-i46.gif"/>. For the <it>k</it>-th column <b>c</b><sub><it>k </it></sub>of <b>C </b>we can then chose the <it>j</it>-th column <graphic file="1471-2105-5-175-i48.gif"/> of <graphic file="1471-2105-5-175-i11.gif"/> multiplied by -1, i.e. <graphic file="1471-2105-5-175-i49.gif"/>. Together with the <it>k</it>-th column in <graphic file="1471-2105-5-175-i46.gif"/>, this gives a null space vector of <b>N'</b>, which is linearly independent of the others and can therefore serve as basis vector in <b>K'</b>. The vector <b>c</b><sub><it>k </it></sub>is now probably not that sparse. However, it enables us to retain the 2-cycles at least for those split reactions whose forward direction is not contained in <b>I</b>.</p>
            <p>A MATLAB function <it>initializeR </it>that provides a proper initialization of <b>R </b>as described above (starting with the stoichiometric matrix <b>N </b>and the indices of the reversible reactions) can be obtained from the corresponding author.</p>
         </sec>
         <sec>
            <st>
               <p>Short introduction into MATLAB notation</p>
            </st>
            <p>Numeric variables in MATLAB can be scalars, vectors or two-dimensional arrays (i.e. matrices). To be more precise, a scalar in MATLAB is actually a 1 &#215; 1 array and a vector is a 1 &#215; n or n &#215; 1 array. Size and type of a variable are automatically declared (or changed) by assignments to it. The following examples illustrate how to assign or access values of variables:</p>
            <p>&#8226; scalar: a = 1;</p>
            <p>&#8226; b(3) = 5; the value 5 is assigned to the third element of (vector) <it>b</it>.</p>
            <p>&#8226; c(1:3) = [5,8,9]; here, "1:3" expresses "from 1 to 3", thus, 5, 8 and 9 are assigned to the first three elements of vector <it>c</it>. It is also possible to use an array of integers to access the elements of a vector, e.g. a = [2,3,4]; b = [1,3]; c = a(b). Vector c reads then [2,4].</p>
            <p>&#8226; mat(2,5) = 3; value 3 is assigned to the element in the second row and fifth column of matrix <it>mat</it>.</p>
            <p>&#8226; mat1(3,:) = mat2(5,:); the values of the fifth row of matrix <it>mat1 </it>is copied into the third row of matrix <it>mat2</it>. Here, the colon operator ":" expresses "all elements of the respective dimension" (here: columns). Of course, it must be ensured that <it>mat1 </it>and <it>mat2 </it>have the same number of columns.</p>
            <p>&#8226; a = mat(7,1:3); the first three elements of the seventh row of matrix <it>mat </it>are assigned to <it>a </it>which is now a 3-element vector.</p>
            <p>&#8226; a= [17,34,39]; a(2)= []; deletes the second element of <it>a </it>and shifts all elements behind one position back, i.e. vector <it>a </it>reads now [17,39].</p>
            <p>The pseudo-code given in Figure <figr fid="F4">4</figr> in the main text uses several basic routines pre-defined in MATLAB (written in bold) :</p>
            <p>&#8226; c = <b>length</b>(a); if <it>a </it>is a vector (as in all cases in the pseudo-code) then <b>length </b>returns the number of elements in <it>a</it>.</p>
            <p>&#8226; c = <b>find</b>(a); if <it>a </it>is a vector (as in all cases in the pseudo-code) then <b>find </b>returns all positions in <it>a </it>which are not zero. Example: <b>find</b>([23,0,5,9,0]) returns (1, 3, 4).</p>
            <p>&#8226; c = <b>or</b>(a,b) returns the result of the logical OR operation applied element-wise to <it>a </it>and <it>b</it>. <it>a </it>and <it>b </it>can be scalars, vectors or matrices and must have the same size. Example: if <it>a </it>= [1,0,29], <it>b </it>= [1,0,0] then <b>or</b>(<it>a</it>,<it>b</it>) returns [1,0,1]. In the pseudo-code, we use this routine exclusively for OR-operations of bit masks (arrays with only "ones" and "zeros").</p>
            <p>&#8226; c = <b>zeros</b>(m,n) returns a matrix of size m &#215; n filled with zeros.</p>
            <p>&#8226; c = <b>null</b>(a) returns a null-space matrix of matrix a.</p>
            <p>&#8226; c = <b>intersect</b>(a,b) returns the intersection of elements in vectors <it>a </it>and <it>b</it>.</p>
            <p>&#8226; c = <b>all</b>(b) returns "1" if all entries in vector b are not zero and "0" otherwise.</p>
         </sec>
      </sec>
      <sec>
         <st>
            <p>List of abbreviations</p>
         </st>
         <p>EM(s): Elementary Mode(s) also known as Elementary Flux Mode(s).</p>
      </sec>
      <sec>
         <st>
            <p>Authors' contributions</p>
         </st>
         <p>Both authors contributed equally to this work, the starting idea of the binary approach coming from a discussion between them. JG mainly established the relationships between extreme ray and elementary modes computation. SK mainly devised and implemented the binary null-space algorithm. Both authors prepared the manuscript jointly.</p>
      </sec>
   </bdy>
   <bm>
      <ack>
         <sec>
            <st>
               <p>Acknowledgements</p>
            </st>
            <p>We thank Clemens Wagner for providing us with the software <it>coverN </it>and Axel von Kamp for helpful discussions. We are grateful to Georg Casari and Toby Mathieson for reading the manuscript.</p>
         </sec>
      </ack>
      <refgrp>
         <bibl id="B1">
            <aug>
               <au>
                  <snm>Rockafellar</snm>
                  <fnm>RT</fnm>
               </au>
            </aug>
            <source>Convex analysis</source>
            <publisher>Princeton: Princeton University Press</publisher>
            <pubdate>1970</pubdate>
         </bibl>
         <bibl id="B2">
            <title>
               <p>Metabolic pathway analysis: basic concepts and scientific applications in the post-genomic era</p>
            </title>
            <aug>
               <au>
                  <snm>Schilling</snm>
                  <fnm>CH</fnm>
               </au>
               <au>
                  <snm>Schuster</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Palsson</snm>
                  <fnm>BO</fnm>
               </au>
               <au>
                  <snm>Heinrich</snm>
                  <fnm>R</fnm>
               </au>
            </aug>
            <source>Biotechnol Prog</source>
            <pubdate>1999</pubdate>
            <volume>15</volume>
            <fpage>296</fpage>
            <lpage>303</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1021/bp990048k</pubid>
                  <pubid idtype="pmpid" link="fulltext">10356246</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B3">
            <title>
               <p>Detection of elementary flux modes in biochemical networks: a promising tool for pathway analysis and metabolic engineering</p>
            </title>
            <aug>
               <au>
                  <snm>Schuster</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Dandekar</snm>
                  <fnm>T</fnm>
               </au>
               <au>
                  <snm>Fell</snm>
                  <fnm>DA</fnm>
               </au>
            </aug>
            <source>Trends Biotechnol</source>
            <pubdate>1999</pubdate>
            <volume>17</volume>
            <fpage>53</fpage>
            <lpage>60</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1016/S0167-7799(98)01290-6</pubid>
                  <pubid idtype="pmpid" link="fulltext">10087604</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B4">
            <title>
               <p>A general definition of metabolic pathways useful for systematic organization and analysis of complex metabolic networks</p>
            </title>
            <aug>
               <au>
                  <snm>Schuster</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Fell</snm>
                  <fnm>DA</fnm>
               </au>
               <au>
                  <snm>Dandekar</snm>
                  <fnm>T</fnm>
               </au>
            </aug>
            <source>Nat Biotechnol</source>
            <pubdate>2000</pubdate>
            <volume>18</volume>
            <fpage>326</fpage>
            <lpage>332</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1038/73786</pubid>
                  <pubid idtype="pmpid" link="fulltext">10700151</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B5">
            <title>
               <p>Metabolic pathways in the post-genome era</p>
            </title>
            <aug>
               <au>
                  <snm>Papin</snm>
                  <fnm>JA</fnm>
               </au>
               <au>
                  <snm>Price</snm>
                  <fnm>ND</fnm>
               </au>
               <au>
                  <snm>Wiback</snm>
                  <fnm>SJ</fnm>
               </au>
               <au>
                  <snm>Fell</snm>
                  <fnm>DA</fnm>
               </au>
               <au>
                  <snm>Palsson</snm>
                  <fnm>BO</fnm>
               </au>
            </aug>
            <source>Trends Biochem Sci</source>
            <pubdate>2003</pubdate>
            <volume>28</volume>
            <fpage>250</fpage>
            <lpage>258</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1016/S0968-0004(03)00064-1</pubid>
                  <pubid idtype="pmpid" link="fulltext">12765837</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B6">
            <title>
               <p>On elementary flux modes in biochemical reaction systems at steady tate</p>
            </title>
            <aug>
               <au>
                  <snm>Schuster</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Hilgetag</snm>
                  <fnm>C</fnm>
               </au>
            </aug>
            <source>J Biol Syst</source>
            <pubdate>1994</pubdate>
            <volume>2</volume>
            <fpage>165</fpage>
            <lpage>182</lpage>
            <xrefbib>
               <pubid idtype="doi">10.1142/S0218339094000131</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B7">
            <title>
               <p>Reaction routes in biochemical reaction systems: algebraic properties, validated calculation procedure and example from nucleotide metabolism</p>
            </title>
            <aug>
               <au>
                  <snm>Schuster</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Hilgetag</snm>
                  <fnm>C</fnm>
               </au>
               <au>
                  <snm>Woods</snm>
                  <fnm>JH</fnm>
               </au>
               <au>
                  <snm>Fell</snm>
                  <fnm>DA</fnm>
               </au>
            </aug>
            <source>J Math Biol</source>
            <pubdate>2002</pubdate>
            <volume>45</volume>
            <fpage>153</fpage>
            <lpage>181</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1007/s002850200143</pubid>
                  <pubid idtype="pmpid" link="fulltext">12181603</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B8">
            <title>
               <p>Theory for the systemic definition of metabolic pathways and their use in interpreting metabolic function from a pathway-oriented perspective</p>
            </title>
            <aug>
               <au>
                  <snm>Schilling</snm>
                  <fnm>CH</fnm>
               </au>
               <au>
                  <snm>Letscher</snm>
                  <fnm>D</fnm>
               </au>
               <au>
                  <snm>Palsson</snm>
                  <fnm>BO</fnm>
               </au>
            </aug>
            <source>J Theor Biol</source>
            <pubdate>2000</pubdate>
            <volume>203</volume>
            <fpage>229</fpage>
            <lpage>248</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1006/jtbi.2000.1073</pubid>
                  <pubid idtype="pmpid" link="fulltext">10716907</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B9">
            <title>
               <p>Comparison of network-based pathway analysis methods</p>
            </title>
            <aug>
               <au>
                  <snm>Papin</snm>
                  <fnm>JA</fnm>
               </au>
               <au>
                  <snm>Stelling</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Price</snm>
                  <fnm>ND</fnm>
               </au>
               <au>
                  <snm>Klamt</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Schuster</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Palsson</snm>
                  <fnm>BO</fnm>
               </au>
            </aug>
            <source>Trends Biotechnol</source>
            <pubdate>2004</pubdate>
            <volume>22</volume>
            <fpage>400</fpage>
            <lpage>405</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1016/j.tibtech.2004.06.010</pubid>
                  <pubid idtype="pmpid" link="fulltext">15283984</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B10">
            <title>
               <p>Two approaches for metabolic pathway analysis?</p>
            </title>
            <aug>
               <au>
                  <snm>Klamt</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Stelling</snm>
                  <fnm>J</fnm>
               </au>
            </aug>
            <source>Trends Biotechnol</source>
            <pubdate>2003</pubdate>
            <volume>21</volume>
            <fpage>64</fpage>
            <lpage>69</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1016/S0167-7799(02)00034-3</pubid>
                  <pubid idtype="pmpid" link="fulltext">12573854</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B11">
            <title>
               <p>Metabolic network structure determines key aspects of functionality and regulation</p>
            </title>
            <aug>
               <au>
                  <snm>Stelling</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Klamt</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Bettenbrock</snm>
                  <fnm>K</fnm>
               </au>
               <au>
                  <snm>Schuster</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Gilles</snm>
                  <fnm>ED</fnm>
               </au>
            </aug>
            <source>Nature</source>
            <pubdate>2002</pubdate>
            <volume>420</volume>
            <fpage>190</fpage>
            <lpage>193</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1038/nature01166</pubid>
                  <pubid idtype="pmpid" link="fulltext">12432396</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B12">
            <title>
               <p>Determination of redundancy and systems properties of the metabolic network of Helicobacter pylori using genome-scale extreme pathway analysis</p>
            </title>
            <aug>
               <au>
                  <snm>Price</snm>
                  <fnm>ND</fnm>
               </au>
               <au>
                  <snm>Papin</snm>
                  <fnm>JA</fnm>
               </au>
               <au>
                  <snm>Palsson</snm>
                  <fnm>BO</fnm>
               </au>
            </aug>
            <source>Genome Res</source>
            <pubdate>2002</pubdate>
            <volume>12</volume>
            <fpage>760</fpage>
            <lpage>769</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="pmcid">186586</pubid>
                  <pubid idtype="pmpid" link="fulltext">11997342</pubid>
                  <pubid idtype="doi">10.1101/gr.218002. Article published online before print in April 2002</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B13">
            <title>
               <p>The genome-scale metabolic extreme pathway structure in Haemophilus influenzae shows significant network redundancy</p>
            </title>
            <aug>
               <au>
                  <snm>Papin</snm>
                  <fnm>JA</fnm>
               </au>
               <au>
                  <snm>Price</snm>
                  <fnm>ND</fnm>
               </au>
               <au>
                  <snm>Edwards</snm>
                  <fnm>JS</fnm>
               </au>
               <au>
                  <snm>Palsson</snm>
                  <fnm>BB</fnm>
               </au>
            </aug>
            <source>J Theor Biol</source>
            <pubdate>2002</pubdate>
            <volume>215</volume>
            <fpage>67</fpage>
            <lpage>82</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1006/jtbi.2001.2499</pubid>
                  <pubid idtype="pmpid" link="fulltext">12051985</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B14">
            <title>
               <p>Use of network analysis of metabolic systems in Bioengineering</p>
            </title>
            <aug>
               <au>
                  <snm>Schuster</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Klamt</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Weckwerth</snm>
                  <fnm>W</fnm>
               </au>
               <au>
                  <snm>Moldenhauer</snm>
                  <fnm>F</fnm>
               </au>
               <au>
                  <snm>Pfeiffer</snm>
                  <fnm>T</fnm>
               </au>
            </aug>
            <source>Bioproc Biosyst Eng</source>
            <pubdate>2002</pubdate>
            <volume>24</volume>
            <fpage>363</fpage>
            <lpage>372</lpage>
            <xrefbib>
               <pubid idtype="doi">10.1007/s004490100253</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B15">
            <title>
               <p>Metabolic pathway analysis of yeast strengthens the bridge between transcriptomics and metabolic networks</p>
            </title>
            <aug>
               <au>
                  <snm>Cakir</snm>
                  <fnm>T</fnm>
               </au>
               <au>
                  <snm>Kirdar</snm>
                  <fnm>B</fnm>
               </au>
               <au>
                  <snm>Ulgen</snm>
                  <fnm>KO</fnm>
               </au>
            </aug>
            <source>Biotechnol Bioeng</source>
            <pubdate>2004</pubdate>
            <volume>86</volume>
            <fpage>251</fpage>
            <lpage>260</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1002/bit.20020</pubid>
                  <pubid idtype="pmpid" link="fulltext">15083505</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B16">
            <title>
               <p>Extreme pathway lengths and reaction participation in genome-scale metabolic networks</p>
            </title>
            <aug>
               <au>
                  <snm>Papin</snm>
                  <fnm>JA</fnm>
               </au>
               <au>
                  <snm>Price</snm>
                  <fnm>ND</fnm>
               </au>
               <au>
                  <snm>Palsson</snm>
                  <fnm>BO</fnm>
               </au>
            </aug>
            <source>Genome Res</source>
            <pubdate>2002</pubdate>
            <volume>12</volume>
            <fpage>1889</fpage>
            <lpage>1900</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="pmcid">187577</pubid>
                  <pubid idtype="pmpid" link="fulltext">12466293</pubid>
                  <pubid idtype="doi">10.1101/gr.327702</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B17">
            <title>
               <p>Flux coupling analysis of genome-scale metabolic network reconstructions</p>
            </title>
            <aug>
               <au>
                  <snm>Burgard</snm>
                  <fnm>AP</fnm>
               </au>
               <au>
                  <snm>Nikolaev</snm>
                  <fnm>EV</fnm>
               </au>
               <au>
                  <snm>Schilling</snm>
                  <fnm>CH</fnm>
               </au>
               <au>
                  <snm>Maranas</snm>
                  <fnm>CD</fnm>
               </au>
            </aug>
            <source>Genome Res</source>
            <pubdate>2004</pubdate>
            <volume>14</volume>
            <fpage>301</fpage>
            <lpage>312</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1101/gr.1926504</pubid>
                  <pubid idtype="pmpid" link="fulltext">14718379</pubid>
                  <pubid idtype="pmcid">327106</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B18">
            <title>
               <p>Extreme pathways and Kirchhoff's second law</p>
            </title>
            <aug>
               <au>
                  <snm>Price</snm>
                  <fnm>ND</fnm>
               </au>
               <au>
                  <snm>Famili</snm>
                  <fnm>I</fnm>
               </au>
               <au>
                  <snm>Beard</snm>
                  <fnm>DA</fnm>
               </au>
               <au>
                  <snm>Palsson</snm>
                  <fnm>BO</fnm>
               </au>
            </aug>
            <source>Biophys J</source>
            <pubdate>2002</pubdate>
            <volume>83</volume>
            <fpage>2879</fpage>
            <lpage>2882</lpage>
            <xrefbib>
               <pubid idtype="pmpid" link="fulltext">12425318</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B19">
            <title>
               <p>Energy balance for analysis of complex metabolic networks</p>
            </title>
            <aug>
               <au>
                  <snm>Beard</snm>
                  <fnm>DA</fnm>
               </au>
               <au>
                  <snm>Liang</snm>
                  <fnm>SD</fnm>
               </au>
               <au>
                  <snm>Qian</snm>
                  <fnm>H</fnm>
               </au>
            </aug>
            <source>Biophys J</source>
            <pubdate>2002</pubdate>
            <volume>83</volume>
            <fpage>79</fpage>
            <lpage>86</lpage>
            <xrefbib>
               <pubid idtype="pmpid" link="fulltext">12080101</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B20">
            <title>
               <p>Constraints-based models: regulation of gene expression reduces the steady-state solution space</p>
            </title>
            <aug>
               <au>
                  <snm>Covert</snm>
                  <fnm>MW</fnm>
               </au>
               <au>
                  <snm>Palsson</snm>
                  <fnm>BO</fnm>
               </au>
            </aug>
            <source>J Theor Biol</source>
            <pubdate>2003</pubdate>
            <volume>221</volume>
            <fpage>309</fpage>
            <lpage>325</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1006/jtbi.2003.3071</pubid>
                  <pubid idtype="pmpid" link="fulltext">12642111</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B21">
            <title>
               <p>Minimal cut sets in biochemical reaction networks</p>
            </title>
            <aug>
               <au>
                  <snm>Klamt</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Gilles</snm>
                  <fnm>ED</fnm>
               </au>
            </aug>
            <source>Bioinformatics</source>
            <pubdate>2004</pubdate>
            <volume>20</volume>
            <fpage>226</fpage>
            <lpage>234</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1093/bioinformatics/btg395</pubid>
                  <pubid idtype="pmpid" link="fulltext">14734314</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B22">
            <title>
               <p>Reconstructing metabolic flux vectors from extreme pathways: defining the alpha-spectrum</p>
            </title>
            <aug>
               <au>
                  <snm>Wiback</snm>
                  <fnm>SJ</fnm>
               </au>
               <au>
                  <snm>Mahadevan</snm>
                  <fnm>R</fnm>
               </au>
               <au>
                  <snm>Palsson</snm>
                  <fnm>BO</fnm>
               </au>
            </aug>
            <source>J Theor Biol</source>
            <pubdate>2003</pubdate>
            <volume>224</volume>
            <fpage>313</fpage>
            <lpage>324</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1016/S0022-5193(03)00168-1</pubid>
                  <pubid idtype="pmpid" link="fulltext">12941590</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B23">
            <title>
               <p>Combinatorial complexity of pathway analysis in metabolic networks</p>
            </title>
            <aug>
               <au>
                  <snm>Klamt</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Stelling</snm>
                  <fnm>J</fnm>
               </au>
            </aug>
            <source>Mol Biol Rep</source>
            <pubdate>2002</pubdate>
            <volume>29</volume>
            <fpage>233</fpage>
            <lpage>236</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1023/A:1020390132244</pubid>
                  <pubid idtype="pmpid">12241063</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B24">
            <title>
               <p>Nullspace Approach to Determine the Elementary Modes of Chemical Reaction Systems</p>
            </title>
            <aug>
               <au>
                  <snm>Wagner</snm>
                  <fnm>C</fnm>
               </au>
            </aug>
            <source>J Phys Chem B</source>
            <pubdate>2004</pubdate>
            <volume>108</volume>
            <fpage>2425</fpage>
            <lpage>2431</lpage>
            <xrefbib>
               <pubid idtype="doi">10.1021/jp034523f</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B25">
            <title>
               <p>Double Description method revisited</p>
            </title>
            <aug>
               <au>
                  <snm>Fukuda</snm>
                  <fnm>K</fnm>
               </au>
               <au>
                  <snm>Prodon</snm>
                  <fnm>A</fnm>
               </au>
            </aug>
            <source>In Combinatorics and Computer Science</source>
            <publisher>Springer-Verlag</publisher>
            <editor>Deza M, Euler R, Manoussakis I</editor>
            <pubdate>1996</pubdate>
            <volume>1120</volume>
            <fpage>91</fpage>
            <lpage>111</lpage>
         </bibl>
         <bibl id="B26">
            <aug>
               <au>
                  <snm>Franklin</snm>
                  <fnm>J</fnm>
               </au>
            </aug>
            <source>Methods of Mathematical Economics</source>
            <publisher>New York: Springer Verlag</publisher>
            <pubdate>1980</pubdate>
         </bibl>
         <bibl id="B27">
            <title>
               <p>Stoichiometric network analysis</p>
            </title>
            <aug>
               <au>
                  <snm>Clarke</snm>
                  <fnm>BL</fnm>
               </au>
            </aug>
            <source>Cell Biophys</source>
            <pubdate>1988</pubdate>
            <volume>12</volume>
            <fpage>237</fpage>
            <lpage>253</lpage>
            <xrefbib>
               <pubid idtype="pmpid">2453282</pubid>
            </xrefbib>
         </bibl>
         <bibl id="B28">
            <title>
               <p>The Double Description Method</p>
            </title>
            <aug>
               <au>
                  <snm>Motzkin</snm>
                  <fnm>TS</fnm>
               </au>
               <au>
                  <snm>Raiffa</snm>
                  <fnm>H</fnm>
               </au>
               <au>
                  <snm>Thompson</snm>
                  <fnm>GL</fnm>
               </au>
               <au>
                  <snm>Thrall</snm>
                  <fnm>RM</fnm>
               </au>
            </aug>
            <source>In: Annals of Math Studies</source>
            <publisher>Princeton University Press</publisher>
            <pubdate>1953</pubdate>
            <volume>8</volume>
            <fpage>51</fpage>
            <lpage>73</lpage>
         </bibl>
         <bibl id="B29">
            <title>
               <p>METATOOL: for studying metabolic networks</p>
            </title>
            <aug>
               <au>
                  <snm>Pfeiffer</snm>
                  <fnm>T</fnm>
               </au>
               <au>
                  <snm>Sanchez-Valdenebro</snm>
                  <fnm>I</fnm>
               </au>
               <au>
                  <snm>Nuno</snm>
                  <fnm>JC</fnm>
               </au>
               <au>
                  <snm>Montero</snm>
                  <fnm>F</fnm>
               </au>
               <au>
                  <snm>Schuster</snm>
                  <fnm>S</fnm>
               </au>
            </aug>
            <source>Bioinformatics</source>
            <pubdate>1999</pubdate>
            <volume>15</volume>
            <fpage>251</fpage>
            <lpage>257</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1093/bioinformatics/15.3.251</pubid>
                  <pubid idtype="pmpid" link="fulltext">10222413</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B30">
            <title>
               <p>FluxAnalyzer: exploring structure, pathways, and flux distributions in metabolic networks on interactive flux maps</p>
            </title>
            <aug>
               <au>
                  <snm>Klamt</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Stelling</snm>
                  <fnm>J</fnm>
               </au>
               <au>
                  <snm>Ginkel</snm>
                  <fnm>M</fnm>
               </au>
               <au>
                  <snm>Gilles</snm>
                  <fnm>ED</fnm>
               </au>
            </aug>
            <source>Bioinformatics</source>
            <pubdate>2003</pubdate>
            <volume>19</volume>
            <fpage>261</fpage>
            <lpage>269</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1093/bioinformatics/19.2.261</pubid>
                  <pubid idtype="pmpid" link="fulltext">12538248</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B31">
            <aug>
               <au>
                  <snm>Heinrich</snm>
                  <fnm>R</fnm>
               </au>
               <au>
                  <snm>Schuster</snm>
                  <fnm>S</fnm>
               </au>
            </aug>
            <source>The Regulation of Cellular Systems</source>
            <publisher>New York: Chapman &amp; Hall</publisher>
            <pubdate>1996</pubdate>
         </bibl>
         <bibl id="B32">
            <title>
               <p>Detecting strictly detailed balanced subnetwroks in open chemical reaction networks</p>
            </title>
            <aug>
               <au>
                  <snm>Schuster</snm>
                  <fnm>S</fnm>
               </au>
               <au>
                  <snm>Schuster</snm>
                  <fnm>R</fnm>
               </au>
            </aug>
            <source>J Math Chem</source>
            <pubdate>1991</pubdate>
            <volume>6</volume>
            <fpage>17</fpage>
            <lpage>40</lpage>
         </bibl>
         <bibl id="B33">
            <title>
               <p>lrs homepage</p>
            </title>
            <url>http://cgm.cs.mcgill.ca/~avis/C/lrs.html</url>
         </bibl>
         <bibl id="B34">
            <title>
               <p>FluxAnalyzer homepage</p>
            </title>
            <url>http://www.mpi-magdeburg.mpg.de/projects/fluxanalyzer</url>
         </bibl>
         <bibl id="B35">
            <aug>
               <au>
                  <snm>Bj&#246;rner</snm>
                  <fnm>A</fnm>
               </au>
               <au>
                  <snm>Vergnas</snm>
                  <fnm>ML</fnm>
               </au>
               <au>
                  <snm>Sturmfels</snm>
                  <fnm>B</fnm>
               </au>
               <au>
                  <snm>White</snm>
                  <fnm>N</fnm>
               </au>
               <au>
                  <snm>Ziegler</snm>
                  <fnm>GM</fnm>
               </au>
            </aug>
            <source>Oriented matroids</source>
            <publisher>Cambridge: University Press</publisher>
            <pubdate>1999</pubdate>
         </bibl>
         <bibl id="B36">
            <title>
               <p>Thermodynamic constraints for biochemical networks</p>
            </title>
            <aug>
               <au>
                  <snm>Beard</snm>
                  <fnm>DA</fnm>
               </au>
               <au>
                  <snm>Babson</snm>
                  <fnm>E</fnm>
               </au>
               <au>
                  <snm>Curtis</snm>
                  <fnm>E</fnm>
               </au>
               <au>
                  <snm>Qian</snm>
                  <fnm>H</fnm>
               </au>
            </aug>
            <source>J Theor Biol</source>
            <pubdate>2004</pubdate>
            <volume>228</volume>
            <fpage>327</fpage>
            <lpage>333</lpage>
            <xrefbib>
               <pubidlist>
                  <pubid idtype="doi">10.1016/j.jtbi.2004.01.008</pubid>
                  <pubid idtype="pmpid" link="fulltext">15135031</pubid>
               </pubidlist>
            </xrefbib>
         </bibl>
         <bibl id="B37">
            <title>
               <p>A pivoting algorithm for convex hulls and vertex enumeration of arrangements and polyhedra</p>
            </title>
            <aug>
               <au>
                  <snm>Avis</snm>
                  <fnm>D</fnm>
               </au>
               <au>
                  <snm>Fukuda</snm>
                  <fnm>K</fnm>
               </au>
            </aug>
            <source>Discrete Comput Geom</source>
            <pubdate>1992</pubdate>
            <volume>8</volume>
            <fpage>295</fpage>
            <lpage>313</lpage>
         </bibl>
         <bibl id="B38">
            <title>
               <p>Parallel Out-of-core Algorithm for Genome-scale Enumeration of Metabolic Systemic Pathways</p>
            </title>
            <aug>
               <au>
                  <snm>Samatova</snm>
                  <fnm>NF</fnm>
               </au>
               <au>
                  <snm>Geist</snm>
                  <fnm>A</fnm>
               </au>
               <au>
                  <snm>Ostrouchov</snm>
                  <fnm>G</fnm>
               </au>
               <au>
                  <snm>Melechko</snm>
                  <fnm>A</fnm>
               </au>
            </aug>
            <source>In HiCOMB 2002 Fort Lauderdale, FL, USA</source>
            <pubdate>2002</pubdate>
         </bibl>
      </refgrp>
   </bm>
</art>
