<title>Background</title> <p>Cellular metabolism is a complex biological problem. It can be viewed as a chemical engine that transforms available raw materials into energy or into the building blocks needed for the biological function of the cells. In more specific terms a metabolic network is indeed a processing system transforming <italic>input </italic>metabolites (nutrients), into output metabolites (amino acids, lipids, sugars etc.) according to very strict molecular proportions, often referred as stoichiometric coefficients of the reactions.</p> <p>Although the general topological properties of these networks are well characterized [##REF##11034217##1##, ####REF##11062388##2##, ##UREF##0##3####0##3##], and non-trivial pathways are well known for many species [##REF##16381885##4##] the cooperative role of these pathways is hard to comprehend. In fact, the large sizes of these networks, usually containing hundreds of metabolites and even more reactions, makes the comprehension of the principles that govern their global function a challenging task. Therefore, a necessary step to achieve this goal is the use of mathematical models and the development of novel statistical techniques to characterize and simulate these networks.</p> <p>It is well known that under evolutionary pressure, prokaryote cells like <italic>E. coli </italic>behave optimizing their growth performance [##REF##12432395##5##]. Flux Balance Analysis (FBA) provides a powerful tool to predict the optimal growth and production fluxes, but is not reliable about phenotypic state the cell will acquire. This is mainly due to the fact that among the infinitely many potential network states compatible with the stoichiometric constraints, FBA chooses a single one whose biological meaning is at least questionable under generic external conditions. FBA maximizes a linear function (usually the growth rate of the cell) subject to biochemical and thermodynamic constraints [##UREF##1##6##]. On the other hand, cells with genetically engineered knockouts or bacterial strains that were not exposed to evolution pressures, need not to optimize their growth. In fact, the method of minimization metabolic adjustment [##REF##12415116##7##] has shown that knockout metabolic fluxes undergo a minimal redistribution with respect to the flux configuration of the wild type. Yet, in more general situations, the results are unpredictable, therefore, a tool to characterize the shape and volume of the whole space of possible phenotypic solutions must be welcome.</p> <p>So far, apart from exact algorithms evaluating the volume of the space of possible solutions, that are unsuitable for analyzing metabolic networks larger than some dozens metabolites [##UREF##2##8##,##UREF##3##9##], the best technique allowing for such a characterization is based on Monte Carlo sampling (MCS) of the steady-state flux space [##REF##15178193##10##, ####REF##15454420##11##, ##REF##15572364##12##, ##REF##16533855##13##, ##REF##14985762##14####14985762##14##]. This method is known to perform very well on intermediate size metabolic networks (up to a hundred of metabolites) [##REF##15178193##10##,##REF##15454420##11##] where different strategies of MCS have been implemented giving comparable results. Some improved variant of MCS seems to perform well also on organism-wide where the number of variables is in the range order of a thousand [##REF##16533855##13##,##REF##14985762##14##]. Although MCS has in general some intrinsically associated problems, mainly due to the fact that the convergence (or mixing) time is hard to assess and often is exponential, in the case of polytope volume estimations it turns out that sampling strategies such as <italic>hit and run </italic>have mixing times that scale only polynomially with system size [##UREF##4##15##]. However in many concrete cases a practical problem is to give a precise condition for convergence therefore we believe that an alternative independent technique could be more than welcome even in the cases where MCS is applicable.</p> <p>As a concrete step toward an efficient characterization of the set of fluxes compatible with the stoichiometric constraints, we propose a novel message-passing technique derived from the field of statistical physics and information theory.</p> <title>Mathematical Model</title> <p>As already mentioned, a metabolic network is an engine that converts metabolites into other metabolites through a series of intra-cellular intermediate steps. The fundamental equation characterizing all functional states of a reconstructed biochemical reaction network is a mass conservation law that imposes simple linear constraints between the incoming and outcoming fluxes at any chemical reaction:</p> <p></p> <p>where <italic>ρ </italic>is the vector of the <italic>M </italic>metabolite concentrations in the network. <bold>i </bold>(<bold>o</bold>) is the input (output) vector of fluxes, and <bold><italic>ν </italic></bold>are the reaction fluxes governed by the <italic>M </italic>× <italic>N </italic>stoichiometric linear operator  (usually named stoichiometric matrix) encoding the coefficient of the <italic>M </italic>intra-cellular relations among the <italic>N </italic>fluxes.</p> <p>As long as just steady-state cellular properties are concerned one can assume that a variation in the concentration of metabolites in a cell can be ignored and considered as constant. Therefore in case of fixed external conditions one can assume metabolites (quasi) stationarity and consequently the <italic>lhs </italic>of 1 can be set to zero. Under these hypotheses the problem of finding the metabolic fluxes compatible with flux-balance is mathematically described by the linear system of equations</p> <p></p> <p>where <bold>b </bold>is the net metabolite uptake by the cell. Without loss of generality we can assume that the stoichiometric matrix  has full rows rank, <italic>i.e</italic>. that rank() = <italic>M</italic>, since linearly dependent equations can be easily identified and removed. Given that the number of metabolites <italic>M </italic>is lower than the number of fluxes <italic>N </italic>the subspace of solutions is a (<italic>N-M</italic>)-dimensional manifold embedded in the <italic>N</italic>-dimensional space of fluxes. In addition, the positivity of fluxes, together with the experimentally accessible values for the maximal fluxes, limit further the space of feasible solutions. This fact may be expressed by the following inequalities:</p> <p></p> <p>in such a way that together, 2 and 3, define the convex set of all the allowed time-independent phenotipic states of a given metabolic network.</p> <title>Sub-dimensional volumes</title> <p>Mathematically speaking, the space of feasible solutions consistent with the Equations 2 is an affine space <italic>V </italic>⊂ ℝ<sup><italic>N </italic></sup>of dimension <italic>N </italic>- <italic>M</italic>. The set of inequalities 3 then defines a convex polytope Π ⊂ <italic>V </italic>that, from the metabolic point of view, may be considered as the allowed configuration space for the cell states. The main goal of this work is computation of the volume of this space of solutions and of certain subspaces of it. Although conceptually simple, the notion of sub-dimensional volume like that of Π requires some new definitions.</p> <p>Consider any linear parameterization <italic>ϕ </italic>: ℝ<sup><italic>N</italic>-<italic>M </italic></sup>→ <italic>V </italic>⊂ ℝ<sup><italic>N </italic></sup>(see explicative scheme in Figure ##FIG##0##1##). A popular choice for <italic>ϕ </italic>is, for instance, the inverse of the so called <italic>lexicographical </italic>projection <italic>i.e</italic>., the projection over the first <italic>N-M </italic>coordinates such that its restriction to <italic>V </italic>has an inverse. Being <italic>ϕ </italic>linear, the (<italic>N - M</italic>) × <italic>N </italic>Jacobian matrix  is constant and coincides with the matrix of <italic>ϕ </italic>in the canonical bases. Denoting <italic>λ </italic>= det , the Euclidean metric in ℝ<sup><italic>N </italic></sup>induces a measure on <italic>V </italic>(which does not depend on <italic>ϕ</italic>):</p> <p></p> <p>allowing to compute the volume of our polytope</p> <p></p> <p>where <bold>1</bold><sub>Π </sub>(·) is the indicator function of the set Π. It is worth pointing out that given the linear structure of the metabolic equations, the determinant of the mapping is a (scalar) constant. Although the coefficient <italic>λ </italic>could be explicitly calculated, it turns out that as far as only relative volume quantities are concerned, as in the case of the <italic>in silico </italic>flux knock-outs introduced below, this term factors out and therefore we will drop it from the rest of the computation.</p> <title>Probabilistic framework</title> <p>The problem of describing the polytope Π can be cast into a probabilistic framework. We define the probability density  as:</p> <p></p> <p>Marginal flux probabilities over a given set of fluxes are obtained by integrating out all remaining degrees of freedom. In particular we can define single flux marginal probability densities as integrals on the affine subspace <italic>W </italic>= <italic>V </italic>∩ {<italic>ν</italic><sub><italic>i </italic></sub>= }</p> <p></p> <p>where the normalization term <bold>vol</bold><sub><italic>W </italic></sub>(Π ∩ <italic>W</italic>) is the (sub dimensional) volume of the intersection between the polytope Π and the hyperplane {<italic>ν</italic><sub><italic>i </italic></sub>= } as displayed schematically in Figure ##FIG##1##2## where the marginal probability at point <italic>ν</italic><sub><italic>i </italic></sub>=  is proportional to length of the blue segment which is the intersection between the polytope Π and the plane <italic>ν</italic><sub><italic>i </italic></sub>= </p> <title>Approximate volume computation</title> <p>¿From a computational point of view, the problem of the exact computation of the volume of a polytope with current methods requires the enumeration of all its vertexes. The vertex enumeration problem is #<italic>P</italic>-hard [##UREF##5##16##,##UREF##6##17##], but even the problem of computing the volume, given the set of all vertexes is a big computational challenge. Various algorithms exist for calculating the exact volume of a polytope from its vertexes (for a review see [##UREF##7##18##]), and many software packages are available in the Internet. Computational limitations restrict however exact algorithmic strategies to cope with polytopes in relatively few dimensions (<italic>e.g. N - M </italic>around 10 or so). To overcome such severe limitations we will introduce a very efficient approximate computational strategy that will allow us to compute the volume and the shape of the space of solutions for real-world metabolic networks.</p> <p>We will adopt the following three steps strategy:</p> <p>• We discretize the problem <italic>a la Riemann </italic>considering an a <italic>N</italic>-dimensional square lattice whose elementary cell is of size <italic>ε</italic><sup><italic>N</italic></sup>. The approximated volume is then proportional to the number of cells intersecting the polytope Π. Of course the smaller <italic>ε </italic>the better is the approximation.</p> <p>• We consider an integer constraint satisfaction problem where each of the mass-balance equations set a hard constraint over the involved discretized fluxes.</p> <p>• We solve the constraint satisfaction problem using a message-passing algorithm called Belief Propagation.</p> <title>Discretization</title> <p>Consider the regular orthogonal grid Λ<sub><italic>ε </italic></sub>of side <italic>ε </italic>partitioning ℝ<sup><italic>N </italic></sup>as in the simple sketch of Figure ##FIG##2##3##. This grid maps via <italic>ϕ</italic><sup>-1 </sup>into a partition Γ<sub><italic>ε </italic></sub>of <italic>ϕ</italic><sup>-1</sup>(Π). The number of cells <sub><italic>ε </italic></sub>of Λ<sub><italic>ε </italic></sub>intersecting Π is proportional to the numbers of cells of Γ<sub><italic>ε </italic></sub>intersecting <italic>ϕ</italic><sup>-1</sup>(Π). Finally, the volume in Eq. 5 is proportional to lim<sub><italic>ε </italic>→ 0</sub><italic>ε</italic><sup><italic>N</italic>-<italic>M</italic></sup><sub><italic>ε </italic></sub>. For any given <italic>ε </italic>one we have then defined discrete variables <italic>ν</italic><sub><italic>i </italic></sub>∈ {0,1,..., }, for  equal to the integer part of , where the integer <italic>q</italic><sup>max </sup>is the granularity of the approximation.</p> <title>The constraint satisfaction problem</title> <p>When dealing with integer coefficients <italic>s</italic><sub><italic>i, a</italic></sub>, as the ones appearing in <italic>normal </italic>stoichiometric relations, the discrete version of Eqs. 2 close in the set of positive integers defining a constraint satisfaction problem. The <italic>ε</italic>-approximation of the volume is then the number of elementary cells that are solution to the discretized mass-balance equations. It is interesting to note that in the case of fractional stoichiometric relations one can multiply all terms for the minimum common multiple of all denominators, getting an equivalent mass-balance equation with integer coefficients.</p> <title>Belief Propagation</title> <p>The integer constraint satisfaction is solved using Belief Propagation (BP), a local iterative algorithm that allows for the computations of marginal probability distributions. BP is exact on trees, and perform reasonably well on locally tree-like structures [##UREF##8##19##, ####UREF##9##20##, ##UREF##10##21##, ##UREF##11##22####11##22##]. This approximation scheme allows for the computation of the logarithm of the number of solutions via the entropy that can be expressed in terms of flux marginals. We will give a detailed derivation of the equations in section Methods.</p>
<title>Methods</title> <title>Belief Propagation</title> <p>In the previous section we have seen how the metabolic problem can be cast into a constraint satisfaction framework where each of <italic>M </italic>mass-balance equations imposes a constraint onto a subset of the metabolic fluxes. Let <italic>A </italic>be the set of equations and <italic>I </italic>the set of fluxes. Consider the <italic>a</italic>-<italic>th </italic>row of , and let {<italic>i </italic>∈ <italic>a</italic>} ≡ {<italic>i</italic><sub>1</sub>, ..., } ⊂ <italic>I </italic>be the labels of the fluxes involved in the considered equation having stoichiometric coefficients different from zero. Let also {<italic>a </italic>∈ <italic>i</italic>} ≡ {<italic>a</italic><sub>1</sub>, ..., } ⊂ <italic>A </italic>be the labels of the equations in which flux <italic>i </italic>participates. The emerging structure is a bipartite graph, with two types of nodes: <italic>variable </italic>nodes representing the fluxes of the reactions and <italic>factor </italic>nodes imposing mass conservation. In this case marginals become <italic>q</italic>-modal probability densities that for large values of  will approximate better and better the continuous set of probabilities.</p> <p>Under the hypothesis that the factor graph is a tree it can be shown [##UREF##8##19##,##UREF##14##27##] that a given flux vector <bold><italic>ν </italic></bold>satisfying all flux-balance constraints can be expressed as a product of flux and reaction marginals [##UREF##8##19##, ####UREF##9##20##, ##UREF##10##21####10##21##]:</p> <p></p> <p>where <italic>d</italic><sub><italic>i </italic></sub>is the number of equations in which flux <italic>ν</italic><sub><italic>i </italic></sub>participates (i.e. the degree of site <italic>i</italic>). The marginal probabilities are defined as:</p> <p></p> <p>One can then define an entropy in terms of the marginal probability distributions which amounts to the logarithm of the number of solutions of the associated constraint satisfaction problem. From a more geometrical point of view, this entropy is a count of the (logarithm of) the number of elementary <italic>ε</italic>-cells intersecting the polytope Π (see Figure ##FIG##2##3##).</p> <p></p> <p>One may wonder how such an approach could be useful in a <italic>real-world </italic>situation where the graph is not a tree. One can hope that typical loop length are large enough to ensure weak statistical dependence of neighboring sites which lay at the heart of the Bethe approximation [##UREF##15##28##,##UREF##16##29##]. It is interesting to note that the Bethe approximation is successfully used in many different problems with loopy graph topologies. This is for instance the case for LDPC error correcting codes in Information Theory [##UREF##17##30##] used in wireless Internet transmission technologies such as WiMAX, or in many inference problems such as graphical models [##UREF##18##31##], binary perceptron learning [##REF##17581884##32##], and in constraint satisfaction problems such as Satisfiability or Coloring [##REF##12089451##33##,##REF##12484862##34##]. In all these cases although there is no mathematically rigorous proof about the quality of the solution, whenever the algorithm converges, the result generally provides a good estimate of marginal probability distributions.</p> <p>The algorithm is based on two type of messages exchanged from variable nodes to functional nodes, and vice versa:</p> <p>• <italic>μ</italic><sub><italic>i </italic>→ <italic>a</italic></sub>(<italic>ν</italic>): the probability that flux <italic>i </italic>takes value <italic>ν </italic>in the absence of reaction <italic>a</italic>.</p> <p>• <italic>m</italic><sub><italic>a </italic>→ <italic>i</italic></sub>(<italic>ν</italic>): the non-normalized probability that the balance in reaction <italic>a </italic>is fulfilled given that flux <italic>i </italic>takes value <italic>ν</italic>.</p> <p>The two quantities satisfy the following set of functional equations:</p> <p></p> <p>where  means the sum over all values of fluxes around metabolite <italic>a </italic>but <italic>i</italic>, <italic>b </italic>∈ <italic>i</italic>\<italic>a</italic>, is the set of metabolites in reaction <italic>i </italic>but <italic>a</italic>, <italic>C</italic><sub><italic>i </italic>→ <italic>a </italic></sub>is a constant enforcing the normalization of the probability <italic>μ</italic><sub><italic>i </italic>→ <italic>a</italic></sub>(<italic>ν</italic>), and <italic>δ </italic>(·; ·) is the Kronecker delta function (<italic>δ </italic>(<italic>a</italic>; <italic>b</italic>) is 1 if <italic>a </italic>= <italic>b </italic>and 0 otherwise). The set of Equations 11 can be solved iteratively and upon convergence of the algorithm one can compute the marginal flux distributions as:</p> <p></p> <p>A brute force integration of the discrete set of equation would be much too inefficient for analyzing large networks, due to the multiple dimensional sum over  in the previous equation. The first of Equations 11 includes the computation of the convolution of all <italic>μ</italic><sub><italic>j </italic>→ <italic>a </italic></sub>messages except one, an expression of the form  (where ⊗ denotes convolution) and requires normally <italic>n</italic><sub><italic>a </italic></sub>- 1 convolutions for each outputting message, i.e. <italic>n</italic><sub><italic>a </italic></sub>(<italic>n</italic><sub><italic>a </italic></sub>- 1) convolutions in total for constraint <italic>a</italic>. In the case of the complete <italic>E. coli </italic>network we have mass-balance equations with <italic>n</italic><sub><italic>a </italic></sub>as large as 500, then reducing the computational complexity of the iteration has a cogent practical implication on the performance of the proposed algorithm. There is a way to reduce this quadratic load to just <italic>O </italic>(<italic>n</italic><sub><italic>a</italic></sub>) convolutions. The method we propose is not confined to convolutions and works generally for any associative operation. Note that for operations that are efficiently invertible and commutative, one could just operate all <italic>n</italic><sub><italic>a </italic></sub>terms (<italic>n</italic><sub><italic>a </italic></sub>initial operations) and then for each outputting message operate with the inverse of the undesired element (just one more operation for each message, totalizing just 2<italic>n</italic><sub><italic>a </italic></sub>operations for constraint a plus invertions) i.e. . When elements are not invertible, nor conmutative or are just difficult to invert, the following more general scheme can be applied. Let us concentrate for instance on metabolite <italic>a </italic>and let us assume that <italic>n</italic><sub><italic>a </italic></sub>is a power of two, say 2<sup><italic>n </italic></sup>(this assumption can be easily relaxed). We will iteratively build a <italic>n </italic>× <italic>n</italic><sub><italic>a </italic></sub>auxiliary matrix  setting as initial condition  and then building the following sequence:  for <italic>d </italic>= 1, ..., <italic>n </italic>- 1. This is equivalent to operate consecutive pairs of fluxes over metabolite <italic>a</italic>, then consecutive quadruples and so on. One needs just 2<italic>n</italic><sub><italic>a </italic></sub>operations for computing the full matrix at this stage.</p> <p>To compute <italic>C</italic><sub><italic>a </italic>→ <italic>i </italic></sub>one needs additionally <italic>n </italic>= log<sub>2 </sub><italic>n</italic><sub><italic>a </italic></sub>operations: we just have to operate the complement of <italic>i </italic>in its pair with the complement of this pair in its quartet and so on on all levels, i.e. in a compact form  (See Figure ##FIG##12##13##). The total number of operations for all out messages becomes then 2<italic>n</italic><sub><italic>a </italic></sub>+ <italic>n</italic><sub><italic>a</italic></sub>log<sub>2 </sub><italic>n</italic><sub><italic>a</italic></sub>. Moreover, if all messages are to be computed sequentially this number can be further reduced to <italic>O </italic>(<italic>n</italic><sub><italic>a</italic></sub>).</p>
<title>Results and Discussion</title> <title>Performance on low dimensional systems</title> <p>In this section we will analyze the performance of our algorithm against an exact algorithm on low dimensional polytopes. Among the different packages available in the Internet, we have chosen LRS [##UREF##2##8##], a program based on the <italic>reverse search </italic>algorithm presented by Avis and Fukuda in [##UREF##3##9##] that can compute the volume of non-full dimensional polytopes. Actually, it computes the volume of the lexicographically smallest representation of the polytope, that for the benchmark used below, coincides with the conventional volume estimated by our algorithm.</p> <p>We have devised a specific benchmark generating random diluted stoichiometric matrices at a given ratio <italic>α </italic>= <italic>M/N </italic>and fixed number of terms different from zero <italic>K </italic>in each of the reactions. All fluxes were constrained inside the hypercube 0 ≤ <italic>ν</italic><sub><italic>i </italic></sub>≤ 1. As a general strategy we have calculated several random instances of the problem and measured the volume (entropy) of the polytope using the LRS and BP algorithm. In particular, we have first generated 1000 realizations of random stoichiometric matrices with <italic>N </italic>= 12, <italic>M </italic>= 4. Note that <italic>N </italic>= 12 is around the maximum that allows simulations with LRS in reasonable time (around one hour per instance). For each polytope then we have computed the two entropies <italic>S</italic><sub><italic>LRS </italic></sub>and <italic>S</italic><sub><italic>BP </italic></sub>with both algorithms, fixing the same maximum value for the discretization <italic>q</italic><sup>max </sup>= 1024 for all fluxes.</p> <p>In Figure ##FIG##3##4## we show how the quality of the BP measure is affected by the discretization, by displaying the histogram of the relative differences  with an increasing number of bins per variable <italic>q</italic><sup>max </sup>= 16 , 64, 256, 1024. One can see how a finer binning of messages improves the quality of the approximation, seemingly converging to a single distribution of errors. It is expected that for larger <italic>N </italic>the histograms would peak around the true value: upon increasing the number of fluxes, loops become larger and the overall topology of the graph becomes more locally tree-like, validating the hypothesis behind the Bethe approximation. Unfortunately, the huge increase of computer time experimented in the calculation of the volumes using LRS made impossible to test systems large enough to make any reasonable scaling analysis.</p> <p>Finally we address the issue of the computational complexity of the algorithm which is a crucial one if one is interested in approaching real world metabolic networks whose size typically is at least 50 times the size of the largest network that can be analyzed with exact algorithms. In Figure ##FIG##4##5## we display the running time of both LRS and BP as a function of the number of fluxes N. Interesting, LRS outperforms BP up to sizes <italic>N </italic>~12 where the running time of LRS explodes exponentially while BP maintains a modest almost-linear behavior.</p> <title>Distribution of fluxes in Red Blood Cell</title> <p>We used our BP algorithm and MCS [##REF##15454420##11##] to obtain the marginal flux distributions for each of the reactions in the Red Blood Cell (RBC) metabolism taking the same stoichiometric matrix presented in [##REF##15178193##10##,##REF##15454420##11##] (see Additional file ##SUPPL##0##1##). The network contains 46 reactions and 34 metabolites. The first comparison of MCS with our BP algorithm is done setting all  to 1 (the resulting marginal probability distribution for the fluxes are displayed in Figure ##FIG##5##6##). The second comparison is done by setting all  to the values used in [##REF##15178193##10##] (results are displayed in Figure ##FIG##6##7##). In both settings we compared BP with a set of 5000 feasible solutions generated by MCS, while for the BP algorithm we used a <italic>q</italic><sup>max </sup>= 2048. As it can be seen in the two cases, the predictions of both methods compare rather well. Assuming the accuracy of MCS, differences are probably due to small loops structures in the graph. We leave for a future work the issue of a more detailed comparison of both methods. However we really think that the emerging scenario of RBC metabolism captured by BP is analogous to that obtained by MCS both quantitatively and qualitatively.</p> <p>The MCS method appears to be quite efficient (the authors of [##REF##15454420##11##] reported in a similar network less then 30 seconds of computer computation in a Dell Dimension 8200 to obtain their distributions) while our algorithm converged to the same result in less than 3 seconds on a similar machine (Intel CPU 6600 2.40 <italic>GHz</italic>). Of course, no stringent statement can be done at this level about the comparative performance of the two algorithms. This positive result encourages us to face the problem of metabolism at organism-wide scale.</p> <title>Analysis of gene knock-out in <italic>E. coli </italic>central metabolism</title> <p>In this section we study the influence of partial flux knock-out on the volume of the solution space. We concentrate on <italic>E. coli central </italic>metabolism [##REF##12952533##23##]. The network has 62 metabolites, 104 reactions (75 internal reactions and 29 exchange fluxes). All reactions were considered irreversible following their nominal directions, and maximum flux rates were set to 1.</p> <p>In this numerical experiment we first run BP on the unperturbed system measuring the volume of the space of solution <italic>S</italic><sub>0</sub>. Then the maximum flux values are kept constant and equal to 1 for all the reactions but one (say reaction <italic>ν</italic><sub><italic>i</italic></sub>). The partial knock-out effect on flux <italic>i </italic>is then obtained reducing repeatedly  and computing again the volume <italic>S</italic><sub><italic>KO</italic></sub>() at each time until  = 0. In principle at each reduction step of  one should converge again the BP equations. In practice for most of the fluxes convergence is very fast since at each reduction of  the new stationary point will be in general close enough to the old one. However we have experimentally noted that the larger is the impact of a given flux on the volume of the space of solutions, the longer is the convergence time at each reduction step. Let us point out that doing so we are tacitly assuming that each knock-out is independent from the others although it is known that some reactions might be associated with the same enzyme. However there is no computational restriction to analyze multiple knock-outs. An analogous technique was presented in [##REF##15454420##11##], where maximal fluxes were reduced to the value of 75% of their original maximal allowed flux to mimic enzymopathies.</p> <p>In Figure ##FIG##7##8## we display the whole set of <italic>S</italic><sub>0 </sub>- <italic>S</italic><sub>KO</sub>() vs. knock-out percentage curves. We can observe how heterogeneous is the impact of the different fluxes on the volume. Moreover one can observe how different curves may cross depending on the knock-out percentage displaying thus an intriguing scenario of differential flux-reduction impacts. Let us now concentrate on the 20 fluxes having larger impact on the space of solutions: in Figure ##FIG##8##9## we display complete knock-outs values <italic>S</italic><sub>0 </sub><italic>-S</italic><sub><italic>KO</italic></sub>( = 0). Focusing only on internal fluxes (the first two fluxes are indeed exchange fluxes of water and protons), one can observe that the first half of them basically compose the backbone of glycolysis showing little pathway redundancy in the network, while reactions like FUM, ACONT, SUC and SUCCD1i appear in the Krebs cycle and again show little pathway redundancy in the network (see Additional file ##SUPPL##1##2##).</p> <p>Finally in Figure ##FIG##9##10## we display the correlations between the changes in the entropy for different reaction knock-outs and the average flux ⟨<italic>ν</italic><sub><italic>i</italic></sub>⟩ = ∫P<sub><italic>i </italic></sub>(<italic>ν</italic>)<italic>ν</italic>d<italic>ν </italic>in the unperturbed network. At 75% knock-out, two kinds of regimes are divided by a clear threshold at <italic>ν </italic>~ 0.6: (i) for ⟨<italic>ν</italic><sub><italic>i</italic></sub>⟩ &lt; 0.6, S<sub>0 </sub>- S<sub><italic>KO</italic></sub>() has a small positive correlation with ⟨<italic>ν</italic>⟩, (ii) at larger average fluxes, correlations increase rapidly but with larger fluctuations. The presence of this threshold can be understood noting that reactions belonging to the linear (glycolysis) an circular (Krebs cycle) pathways are, in the wild cell, fast flux reactions, with average flux values larger than 0.5. An analogous scenario emerges in the case of a 100% knock-outs, but now fluctuation are wider, and also fluxes with intermediate average value start becoming important. This is the case for instance of the 6 large impact fluxes having average flux around 0.3. A closer inspection reveals that among them there is an exchange fluxes (glycogen) and 5 internal fluxes (G1PP, GLCP, HEX1, CS, PDH). The first three (G1PP, GLCP, HEX1) are the first steps of glycolysis, while PDH is the input of the Krebs cycle, and CS is a segment of the cycle strictly related to PDH. It is interesting that this peculiar behavior (large impact and relatively small average flux) are related to key check-points of central metabolism.</p> <title><italic>E. coli </italic>metabolism at organism-wide scale</title> <p>Finally we analyze the average fluxes distribution function in the metabolic network of <italic>E. coli</italic>. The network used contains, in its original format, 1035 reactions and 626 metabolites [##REF##12952533##23##]. The network has been preprocessed using Gaussian elimination procedure: when a trivial mass-balance equation of the type <italic>ν</italic><sub><italic>i </italic></sub>= <italic>ν</italic><sub><italic>j </italic></sub>is present we eliminate variable <italic>ν</italic><sub><italic>i </italic></sub>using elementary row operations. Doing so new trivial mass balance equations appear, an then we iterate the eliminations until all trivial mass-balance equations disappear. During Gaussian elimination, some mass balance equations become effective <italic>dead-end </italic>metabolite (<italic>i.e </italic>metabolites that are only consumed or produced). Fluxes participating to dead-end metabolites are set to zero at the beginning and removed from the system. The new set of equations is equivalent to the original one but with a lower number of fluxes. Reversible reactions have been considered using bidirectional signed fluxes. Using BP we are able to compute the marginal flux distributions in around 40 minutes, using <italic>q</italic><sup>max </sup>= 64.</p> <p>We ran our algorithm on this network and computed the average fluxes in each reaction. We have performed a statistical analysis of these averages in the spirit of [##REF##14985762##14##,##UREF##12##24##,##UREF##13##25##]. The probability distribution function (pdf) of these average values is displayed in Figure ##FIG##10##11##. As can be clearly seen the distribution is large and may be fitted with a power law distribution of <italic>P</italic>(<italic>ν</italic>) ∠ (<italic>ν </italic>+ <italic>ν</italic><sub>0</sub>)<sup>-<italic>γ</italic></sup>. The fit gives an exponent <italic>γ </italic>around 1.5, a result that compares very well with previous simulations found in: (i) [##REF##14985762##14##] where FBA optimal fluxes were averaged over many different external condition, (ii) [##UREF##12##24##] where a maximal local-output strategy is used, and (iii) [##UREF##13##25##] where a Gaussian approximation for the marginal flux distributions is used. It is claimed in [##REF##14985762##14##] that the robustness of this value <italic>γ </italic>is a signature of universality in cell's metabolism.</p> <p>A more careful analysis of the data may reveals however that the distribution of averages fluxes has a richer structure. In Figure ##FIG##11##12## we present the cumulative distribution function  of theaverage fluxes of the reactions and a clear jump appears for <italic>ν </italic>≈ 0.5, and smaller ones for <italic>ν </italic>≈ 0.4 and <italic>μ </italic>≈ 0.6. At present we do not know whether these jumps are just due to statistical fluctuations (and are correctly smeared out in the usual binning process done to plot the pdf in double logarithmic scale) or they reflect relevant biological or structural information about the network.</p>
<title>Results and Discussion</title> <title>Performance on low dimensional systems</title> <p>In this section we will analyze the performance of our algorithm against an exact algorithm on low dimensional polytopes. Among the different packages available in the Internet, we have chosen LRS [##UREF##2##8##], a program based on the <italic>reverse search </italic>algorithm presented by Avis and Fukuda in [##UREF##3##9##] that can compute the volume of non-full dimensional polytopes. Actually, it computes the volume of the lexicographically smallest representation of the polytope, that for the benchmark used below, coincides with the conventional volume estimated by our algorithm.</p> <p>We have devised a specific benchmark generating random diluted stoichiometric matrices at a given ratio <italic>α </italic>= <italic>M/N </italic>and fixed number of terms different from zero <italic>K </italic>in each of the reactions. All fluxes were constrained inside the hypercube 0 ≤ <italic>ν</italic><sub><italic>i </italic></sub>≤ 1. As a general strategy we have calculated several random instances of the problem and measured the volume (entropy) of the polytope using the LRS and BP algorithm. In particular, we have first generated 1000 realizations of random stoichiometric matrices with <italic>N </italic>= 12, <italic>M </italic>= 4. Note that <italic>N </italic>= 12 is around the maximum that allows simulations with LRS in reasonable time (around one hour per instance). For each polytope then we have computed the two entropies <italic>S</italic><sub><italic>LRS </italic></sub>and <italic>S</italic><sub><italic>BP </italic></sub>with both algorithms, fixing the same maximum value for the discretization <italic>q</italic><sup>max </sup>= 1024 for all fluxes.</p> <p>In Figure ##FIG##3##4## we show how the quality of the BP measure is affected by the discretization, by displaying the histogram of the relative differences  with an increasing number of bins per variable <italic>q</italic><sup>max </sup>= 16 , 64, 256, 1024. One can see how a finer binning of messages improves the quality of the approximation, seemingly converging to a single distribution of errors. It is expected that for larger <italic>N </italic>the histograms would peak around the true value: upon increasing the number of fluxes, loops become larger and the overall topology of the graph becomes more locally tree-like, validating the hypothesis behind the Bethe approximation. Unfortunately, the huge increase of computer time experimented in the calculation of the volumes using LRS made impossible to test systems large enough to make any reasonable scaling analysis.</p> <p>Finally we address the issue of the computational complexity of the algorithm which is a crucial one if one is interested in approaching real world metabolic networks whose size typically is at least 50 times the size of the largest network that can be analyzed with exact algorithms. In Figure ##FIG##4##5## we display the running time of both LRS and BP as a function of the number of fluxes N. Interesting, LRS outperforms BP up to sizes <italic>N </italic>~12 where the running time of LRS explodes exponentially while BP maintains a modest almost-linear behavior.</p> <title>Distribution of fluxes in Red Blood Cell</title> <p>We used our BP algorithm and MCS [##REF##15454420##11##] to obtain the marginal flux distributions for each of the reactions in the Red Blood Cell (RBC) metabolism taking the same stoichiometric matrix presented in [##REF##15178193##10##,##REF##15454420##11##] (see Additional file ##SUPPL##0##1##). The network contains 46 reactions and 34 metabolites. The first comparison of MCS with our BP algorithm is done setting all  to 1 (the resulting marginal probability distribution for the fluxes are displayed in Figure ##FIG##5##6##). The second comparison is done by setting all  to the values used in [##REF##15178193##10##] (results are displayed in Figure ##FIG##6##7##). In both settings we compared BP with a set of 5000 feasible solutions generated by MCS, while for the BP algorithm we used a <italic>q</italic><sup>max </sup>= 2048. As it can be seen in the two cases, the predictions of both methods compare rather well. Assuming the accuracy of MCS, differences are probably due to small loops structures in the graph. We leave for a future work the issue of a more detailed comparison of both methods. However we really think that the emerging scenario of RBC metabolism captured by BP is analogous to that obtained by MCS both quantitatively and qualitatively.</p> <p>The MCS method appears to be quite efficient (the authors of [##REF##15454420##11##] reported in a similar network less then 30 seconds of computer computation in a Dell Dimension 8200 to obtain their distributions) while our algorithm converged to the same result in less than 3 seconds on a similar machine (Intel CPU 6600 2.40 <italic>GHz</italic>). Of course, no stringent statement can be done at this level about the comparative performance of the two algorithms. This positive result encourages us to face the problem of metabolism at organism-wide scale.</p> <title>Analysis of gene knock-out in <italic>E. coli </italic>central metabolism</title> <p>In this section we study the influence of partial flux knock-out on the volume of the solution space. We concentrate on <italic>E. coli central </italic>metabolism [##REF##12952533##23##]. The network has 62 metabolites, 104 reactions (75 internal reactions and 29 exchange fluxes). All reactions were considered irreversible following their nominal directions, and maximum flux rates were set to 1.</p> <p>In this numerical experiment we first run BP on the unperturbed system measuring the volume of the space of solution <italic>S</italic><sub>0</sub>. Then the maximum flux values are kept constant and equal to 1 for all the reactions but one (say reaction <italic>ν</italic><sub><italic>i</italic></sub>). The partial knock-out effect on flux <italic>i </italic>is then obtained reducing repeatedly  and computing again the volume <italic>S</italic><sub><italic>KO</italic></sub>() at each time until  = 0. In principle at each reduction step of  one should converge again the BP equations. In practice for most of the fluxes convergence is very fast since at each reduction of  the new stationary point will be in general close enough to the old one. However we have experimentally noted that the larger is the impact of a given flux on the volume of the space of solutions, the longer is the convergence time at each reduction step. Let us point out that doing so we are tacitly assuming that each knock-out is independent from the others although it is known that some reactions might be associated with the same enzyme. However there is no computational restriction to analyze multiple knock-outs. An analogous technique was presented in [##REF##15454420##11##], where maximal fluxes were reduced to the value of 75% of their original maximal allowed flux to mimic enzymopathies.</p> <p>In Figure ##FIG##7##8## we display the whole set of <italic>S</italic><sub>0 </sub>- <italic>S</italic><sub>KO</sub>() vs. knock-out percentage curves. We can observe how heterogeneous is the impact of the different fluxes on the volume. Moreover one can observe how different curves may cross depending on the knock-out percentage displaying thus an intriguing scenario of differential flux-reduction impacts. Let us now concentrate on the 20 fluxes having larger impact on the space of solutions: in Figure ##FIG##8##9## we display complete knock-outs values <italic>S</italic><sub>0 </sub><italic>-S</italic><sub><italic>KO</italic></sub>( = 0). Focusing only on internal fluxes (the first two fluxes are indeed exchange fluxes of water and protons), one can observe that the first half of them basically compose the backbone of glycolysis showing little pathway redundancy in the network, while reactions like FUM, ACONT, SUC and SUCCD1i appear in the Krebs cycle and again show little pathway redundancy in the network (see Additional file ##SUPPL##1##2##).</p> <p>Finally in Figure ##FIG##9##10## we display the correlations between the changes in the entropy for different reaction knock-outs and the average flux ⟨<italic>ν</italic><sub><italic>i</italic></sub>⟩ = ∫P<sub><italic>i </italic></sub>(<italic>ν</italic>)<italic>ν</italic>d<italic>ν </italic>in the unperturbed network. At 75% knock-out, two kinds of regimes are divided by a clear threshold at <italic>ν </italic>~ 0.6: (i) for ⟨<italic>ν</italic><sub><italic>i</italic></sub>⟩ &lt; 0.6, S<sub>0 </sub>- S<sub><italic>KO</italic></sub>() has a small positive correlation with ⟨<italic>ν</italic>⟩, (ii) at larger average fluxes, correlations increase rapidly but with larger fluctuations. The presence of this threshold can be understood noting that reactions belonging to the linear (glycolysis) an circular (Krebs cycle) pathways are, in the wild cell, fast flux reactions, with average flux values larger than 0.5. An analogous scenario emerges in the case of a 100% knock-outs, but now fluctuation are wider, and also fluxes with intermediate average value start becoming important. This is the case for instance of the 6 large impact fluxes having average flux around 0.3. A closer inspection reveals that among them there is an exchange fluxes (glycogen) and 5 internal fluxes (G1PP, GLCP, HEX1, CS, PDH). The first three (G1PP, GLCP, HEX1) are the first steps of glycolysis, while PDH is the input of the Krebs cycle, and CS is a segment of the cycle strictly related to PDH. It is interesting that this peculiar behavior (large impact and relatively small average flux) are related to key check-points of central metabolism.</p> <title><italic>E. coli </italic>metabolism at organism-wide scale</title> <p>Finally we analyze the average fluxes distribution function in the metabolic network of <italic>E. coli</italic>. The network used contains, in its original format, 1035 reactions and 626 metabolites [##REF##12952533##23##]. The network has been preprocessed using Gaussian elimination procedure: when a trivial mass-balance equation of the type <italic>ν</italic><sub><italic>i </italic></sub>= <italic>ν</italic><sub><italic>j </italic></sub>is present we eliminate variable <italic>ν</italic><sub><italic>i </italic></sub>using elementary row operations. Doing so new trivial mass balance equations appear, an then we iterate the eliminations until all trivial mass-balance equations disappear. During Gaussian elimination, some mass balance equations become effective <italic>dead-end </italic>metabolite (<italic>i.e </italic>metabolites that are only consumed or produced). Fluxes participating to dead-end metabolites are set to zero at the beginning and removed from the system. The new set of equations is equivalent to the original one but with a lower number of fluxes. Reversible reactions have been considered using bidirectional signed fluxes. Using BP we are able to compute the marginal flux distributions in around 40 minutes, using <italic>q</italic><sup>max </sup>= 64.</p> <p>We ran our algorithm on this network and computed the average fluxes in each reaction. We have performed a statistical analysis of these averages in the spirit of [##REF##14985762##14##,##UREF##12##24##,##UREF##13##25##]. The probability distribution function (pdf) of these average values is displayed in Figure ##FIG##10##11##. As can be clearly seen the distribution is large and may be fitted with a power law distribution of <italic>P</italic>(<italic>ν</italic>) ∠ (<italic>ν </italic>+ <italic>ν</italic><sub>0</sub>)<sup>-<italic>γ</italic></sup>. The fit gives an exponent <italic>γ </italic>around 1.5, a result that compares very well with previous simulations found in: (i) [##REF##14985762##14##] where FBA optimal fluxes were averaged over many different external condition, (ii) [##UREF##12##24##] where a maximal local-output strategy is used, and (iii) [##UREF##13##25##] where a Gaussian approximation for the marginal flux distributions is used. It is claimed in [##REF##14985762##14##] that the robustness of this value <italic>γ </italic>is a signature of universality in cell's metabolism.</p> <p>A more careful analysis of the data may reveals however that the distribution of averages fluxes has a richer structure. In Figure ##FIG##11##12## we present the cumulative distribution function  of theaverage fluxes of the reactions and a clear jump appears for <italic>ν </italic>≈ 0.5, and smaller ones for <italic>ν </italic>≈ 0.4 and <italic>μ </italic>≈ 0.6. At present we do not know whether these jumps are just due to statistical fluctuations (and are correctly smeared out in the usual binning process done to plot the pdf in double logarithmic scale) or they reflect relevant biological or structural information about the network.</p>
<title>Conclusion</title> <p>We proposed a novel algorithm to estimate the size and shape of the affine space of a non full-dimensional convex polytope in high dimensions. The algorithm was tested in specific benchmark, i.e. random diluted stoichiometric matrices at a given ratio <italic>α </italic>= <italic>M/N </italic>and fixed number of terms different from zero <italic>K</italic>, in each of the reactions, with results that compare very well with those of exact algorithms. Moreover, we show that while the running time of exact algorithms increases more than exponentially for already moderate sizes, our algorithm is polynomial. The program was run on the Red Blood Cell metabolism producing with shorter computational time results that are in both quantitatively and qualitatively in good agreement with those obtained by MCS presented in [##REF##15178193##10##,##REF##15454420##11##].</p> <p>Then, our program was used to study the <italic>E. coli </italic>central metabolism, and as expected, reactions with little redundancy turned out to be the ones with larger impact in the size of the space of the metabolic solutions. Specifically, most of the reactions associated with the transformation of glucose in pyruvate, belong to this set, as well as some reactions in the citric cycle. In addition we show strong correlations between the characteristics of the flux distributions of the wild type network and the changes in size of the space of solutions after reaction knock-outs. Finally, we calculate the distribution of the average values of the fluxes in the metabolism of the <italic>E. coli </italic>and present results that are consistent with those of the literature. In the present approach we have mainly followed a discretization strategy that although polynomial, becomes computationally rather heavy for mass balance equation containing a large number of fluxes. We are currently investigating other representation schemes for the messages. The final hope is to obtain an algorithm that allows for on-line analysis of organism-wide metabolic networks.</p> <p>Let us conclude by noting that in principle the presented approach can be extended to deal with constraints whose functional form is more general than linear, provided that the number of variables involved in each of the constraints remains small, as in the case of inequalities enforcing the second law of thermodynamics for the considered reactions [##REF##15135031##26##]. Work is in progress also in this direction.</p>
<p>This is an Open Access article distributed under the terms of the Creative Commons Attribution License (<ext-link ext-link-type="uri" xlink:href="http://creativecommons.org/licenses/by/2.0"/>), which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</p> <title>Background</title> <p>Cellular metabolism is one of the most investigated system of biological interactions. While the topological nature of individual reactions and pathways in the network is quite well understood there is still a lack of comprehension regarding the global functional behavior of the system. In the last few years flux-balance analysis (FBA) has been the most successful and widely used technique for studying metabolism at system level. This method strongly relies on the hypothesis that the organism maximizes an objective function. However only under very specific biological conditions (<italic>e.g</italic>. maximization of biomass for <italic>E. coli </italic>in reach nutrient medium) the cell seems to obey such optimization law. A more refined analysis not assuming extremization remains an elusive task for large metabolic systems due to algorithmic limitations.</p> <title>Results</title> <p>In this work we propose a novel algorithmic strategy that provides an efficient characterization of the whole set of stable fluxes compatible with the metabolic constraints. Using a technique derived from the fields of statistical physics and information theory we designed a message-passing algorithm to estimate the size of the affine space containing all possible steady-state flux distributions of metabolic networks. The algorithm, based on the well known Bethe approximation, can be used to approximately compute the volume of a non full-dimensional convex polytope in high dimensions. We first compare the accuracy of the predictions with an exact algorithm on small random metabolic networks. We also verify that the predictions of the algorithm match closely those of Monte Carlo based methods in the case of the Red Blood Cell metabolic network. Then we test the effect of gene knock-outs on the size of the solution space in the case of <italic>E. coli </italic>central metabolism. Finally we analyze the statistical properties of the average fluxes of the reactions in the <italic>E. coli </italic>metabolic network.</p> <title>Conclusion</title> <p>We propose a novel efficient distributed algorithmic strategy to estimate the size and shape of the affine space of a non full-dimensional convex polytope in high dimensions. The method is shown to obtain, quantitatively and qualitatively compatible results with the ones of standard algorithms (where this comparison is possible) being still efficient on the analysis of large biological systems, where exact deterministic methods experience an explosion in algorithmic time. The algorithm we propose can be considered as an alternative to Monte Carlo sampling methods.</p>
<title>Authors' contributions</title> <p>Authors equally contributed to this work. All authors read and approved the final manuscript.</p> <title>Supplementary Material</title>
<title>Acknowledgements</title> <p>AB was supported by Microsoft TCI grant. RM wants to thank the International Center for Theoretical Physics in Trieste and the Center for Molecular Immunology of La Habana, for their cordial hospitality during the completion of this work. We are also very grateful to Ginestra Bianconi, Michele Leone, Martin Weigt, and Riccardo Zecchina, for very interesting discussions, and in particular to Carlotta Martelli for sharing with us a human readable <italic>E. coli </italic>data set. We are really grateful to Jan Schellenberger for providing us the MCS data used in Figure ##FIG##5##6## and ##FIG##6##7##.</p>
<fig position="float" id="F1"><label>Figure 1</label><caption><p><bold>Embedding</bold>. Sketch of the the parameterization <italic>ϕ </italic>= <italic>ℝ</italic><sup><italic>N - M </italic></sup>→ <italic>V </italic>⊂ <italic>ℝ</italic><sup><italic>N</italic></sup>, in a simple case where <italic>N </italic>= 3 and <italic>M </italic>= 1. The mass balance equations defined in Equation 2 define the hyperplane <italic>V </italic>and the set of inequalities defined in Equation 3 restrict <italic>V </italic>to polytope Π indicated as the grey triangle in the left part of the figure. The application <italic>ϕ </italic>map the <italic>full-dimensional </italic>counter-image of Π (the grey triangle on the right indicate with <italic>U</italic>) onto Π.</p></caption></fig> <fig position="float" id="F2"><label>Figure 2</label><caption><p><bold>Marginal probability</bold>. Geometrical interpretation of the marginal probability distributions: the marginal probability at point <italic>ν</italic><sub><italic>i </italic></sub>=  is proportional to length of the blue segment which is the intersection between the polytope Π (the grey triangle) and the plane <italic>ν</italic><sub><italic>i </italic></sub>= .</p></caption></fig> <fig position="float" id="F3"><label>Figure 3</label><caption><p><bold>Tiling</bold>. Discretization of the volume: in the left part of the figure we display the the regular orthogonal grid Λ<sub><italic>ε </italic></sub>of side <italic>ε </italic>partitioning ℝ<sup><italic>N</italic></sup>. The counter-image of Λ<sub><italic>ε </italic></sub>via <italic>ϕ </italic>is given by the the grid Γ<sub><italic>ε </italic></sub>. Let number of Γ<sub><italic>ε </italic></sub>squares intersecting <italic>ϕ</italic><sup>-1</sup>(Π) is proportional to the number of Λ<sub><italic>ε </italic></sub>cubes intersecting Π. The smaller the <italic>ε </italic>the better the intersection of the grid Λ<sub><italic>ε </italic></sub>with the polytope Π will approximate Π.</p></caption></fig> <fig position="float" id="F4"><label>Figure 4</label><caption><p><bold>Discrepance histogram</bold>. Histograms of <italic>δS </italic>= (S<sub><italic>BP </italic></sub>- S<sub><italic>LRS</italic></sub>)/S<sub><italic>LRS</italic></sub>, where S<sub><italic>LRS </italic></sub>and S<sub><italic>BP </italic></sub>are the estimates of the logarithm of the volume computed using respectively the program LRS [8], and our message-passing algorithm. The measurement if <italic>δS </italic>are taken over a set of 1000 random realizations of a <italic>N </italic>= 12 and <italic>M </italic>= 4 stoichiometric matrix where each of the metabolites participates to <italic>K </italic>= 3 different reactions. The four histograms represent the distribution of the experimental frequencies of the measured <italic>δS</italic>. Measurements were taken at different values of of the discretization parameter <italic>q</italic><sup>max </sup>= 16, 64, 256, 1024. For larger values of <italic>q </italic>the distributions of the measured <italic>δ</italic><sub><italic>S </italic></sub>peak around zero.</p></caption></fig> <fig position="float" id="F5"><label>Figure 5</label><caption><p><bold>Running time</bold>. Logarithm of the running time <italic>τ </italic>expressed in seconds vs. <italic>N </italic>for LRS algorithm, and BP algorithm. Averages are taken over 5000 realizations of random stoichiometric matrices at each value of <italic>N </italic>except in the <italic>N </italic>= 12 case where we analyzed 500 realizations. LRS outperforms BP up to sizes <italic>N </italic>~12 where the running time of LRS explodes exponentially while BP maintains a modest almost-linear behavior.</p></caption></fig> <fig position="float" id="F6"><label>Figure 6</label><caption><p><bold>Distribution of fluxes in Blood Cells</bold>. Marginal probability distributions of the flux values for each of the 46 reaction in the red blood cell network computed using our message-passing algorithm (filled area) and the MC method (lines). Panels are arranged following the same sequence of figure 5 in [10]. The maximum values of the fluxes are all identical,  = 1.</p></caption></fig> <fig position="float" id="F7"><label>Figure 7</label><caption><p><bold>Distribution of fluxes in Blood Cells</bold>. Marginal probability distributions of the flux values for each of the 46 reaction in the red blood cell network computed using our message-passing algorithm (filled area) and the MC method (lines). Panels are arranged following the same sequence of figure 5 in [10]. The maximum values of the fluxes were taken from [10].</p></caption></fig> <fig position="float" id="F8"><label>Figure 8</label><caption><p><bold>Flux knock-out curves</bold>. Flux knock-out impact on the volume of the space of solutions in <italic>E. coli </italic>central metabolism. On the x-axis we display the percentage of reduction of any given flux, and on the y-axis the relative volume difference with respect to the unperturbed system. We use upper-case keys for internal fluxes, and lower-case to exchange fluxes. We indicate keys only for the 20 fluxes having larger impact on the volume (dots) and we display the rest fluxes with thin scattered lines.</p></caption></fig> <fig position="float" id="F9"><label>Figure 9</label><caption><p><bold>Top impact flux knock-outs</bold>. Impact of the 20 fluxes which have a larger impact on the volume of the space of solution. Here <italic>S</italic><sub><italic>KO </italic></sub>= <italic>S</italic><sub>0 </sub>- <italic>S</italic><sub><italic>KO </italic></sub>( = 0)measures the difference of the volume of the unperturbed system and that modified by setting  = 0. In the x-axis we indicate the relative flux name using upper-case keys for internal fluxes, and lower-case to exchange fluxes.</p></caption></fig> <fig position="float" id="F10"><label>Figure 10</label><caption><p><bold>Correlation of impact and value</bold>. Change in entropy <italic>S</italic><sub>0 </sub>- <italic>S</italic><sub><italic>KO </italic></sub>after reaction knockouts and the average as a function of the average flux value ⟨<italic>ν</italic>⟩ of the unperturbed system. Red dots are relative to 75% knock-out and blue one to complete knock-out. The six red dots with average flux ~0.3 and entropy change larger than 0.15 are G1PP, GLCP, HEX1, CS, PDH, glycogen which are key check-points of central metabolism.</p></caption></fig> <fig position="float" id="F11"><label>Figure 11</label><caption><p><bold>Distribution of average fluxes</bold>. Distribution of average fluxes (⟨<italic>ν</italic>⟩) of the reactions for the <italic>E. coli </italic>metabolism (points) obtained from the marginal probability distributions computed using our message-passing algorithm. We also display a power-law fit function <italic>P</italic><sub>fit</sub><italic>(ν) </italic>= <italic>A</italic>/(<italic>ν </italic>+ <italic>ν </italic>0)<italic>γ </italic>(solid line) with <italic>ν</italic><sub>0 </sub>= 0.0002 and <italic>γ </italic>= 1.48.</p></caption></fig> <fig position="float" id="F12"><label>Figure 12</label><caption><p><bold>Integrated distribution of average fluxes</bold>.Integrated distribution <italic>P</italic><sub>&lt;</sub>of average fluxes ⟨<italic>ν</italic>⟩ of reactions in <italic>E. coli </italic>metabolism obtained from the marginal probability distributions computed using our message-passing algorithm. Note the jumps for ⟨<italic>ν</italic>⟩ = 0.4, ⟨<italic>ν</italic>⟩ = 0.5 and ⟨<italic>ν</italic>⟩ = 0.6.</p></caption></fig> <fig position="float" id="F13"><label>Figure 13</label><caption><p><bold>Linear cavity summation</bold>. An example showing the summation strategy for a metabolite with 8 fluxes. Once all elements of the table are computed (6 convolutions are needed), one needs only 3 more convolutions to compute each one of the 8 cavity messages. In the figure the table elements that are needed to compute ⊗<sub><italic>j </italic>≠ 5 </sub><italic>h</italic><sub><italic>j </italic></sub>= (<italic>h</italic><sub>1 </sub>⊗ <italic>h</italic><sub>2 </sub>⊗ <italic>h</italic><sub>3 </sub>⊗ <italic>h</italic><sub>4</sub>)⊗ (<italic>h</italic><sub>7 </sub>⊗ <italic>h</italic><sub>8</sub>) ⊗ <italic>h</italic><sub>6 </sub>are colored in blue.</p></caption></fig>
<disp-formula id="bmcM1"><label>(1)</label><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M1" name="1471-2105-9-240-i1" overflow="scroll"><mml:semantics><mml:mrow><mml:mfrac><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="bold">ρ</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mi mathvariant="bold">i</mml:mi><mml:mo>+</mml:mo><mml:mover accent="true"><mml:mi>S</mml:mi><mml:mo>‸</mml:mo></mml:mover><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold">ν</mml:mi><mml:mo mathvariant="bold">−</mml:mo><mml:mi mathvariant="bold">o</mml:mi></mml:mrow></mml:semantics></mml:math></disp-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M2" name="1471-2105-9-240-i2" overflow="scroll"><mml:semantics><mml:mover accent="true"><mml:mi>S</mml:mi><mml:mo>‸</mml:mo></mml:mover></mml:semantics></mml:math></inline-formula> <disp-formula id="bmcM2"><label>(2)</label><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M3" name="1471-2105-9-240-i3" overflow="scroll"><mml:semantics><mml:mrow><mml:mover accent="true"><mml:mi>S</mml:mi><mml:mo>‸</mml:mo></mml:mover><mml:mo>⋅</mml:mo><mml:mi mathvariant="bold">ν</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="bold">o</mml:mi><mml:mo>−</mml:mo><mml:mi mathvariant="bold">i</mml:mi><mml:mo>≡</mml:mo><mml:mi mathvariant="bold">b</mml:mi></mml:mrow></mml:semantics></mml:math></disp-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M4" name="1471-2105-9-240-i2" overflow="scroll"><mml:semantics><mml:mover accent="true"><mml:mi>S</mml:mi><mml:mo>‸</mml:mo></mml:mover></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M5" name="1471-2105-9-240-i2" overflow="scroll"><mml:semantics><mml:mover accent="true"><mml:mi>S</mml:mi><mml:mo>‸</mml:mo></mml:mover></mml:semantics></mml:math></inline-formula> <disp-formula id="bmcM3"><label>(3)</label><bold>0 </bold>≤ <bold><italic>ν </italic></bold>≤ <bold><italic>ν</italic></bold><sup>max</sup></disp-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M6" name="1471-2105-9-240-i4" overflow="scroll"><mml:semantics><mml:mover accent="true"><mml:mi>λ</mml:mi><mml:mo>‸</mml:mo></mml:mover></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M7" name="1471-2105-9-240-i5" overflow="scroll"><mml:semantics><mml:mrow><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msup><mml:mover accent="true"><mml:mi>λ</mml:mi><mml:mo>‸</mml:mo></mml:mover><mml:mtext>†</mml:mtext></mml:msup><mml:mover accent="true"><mml:mi>λ</mml:mi><mml:mo>‸</mml:mo></mml:mover><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac></mml:mrow></mml:msup></mml:mrow></mml:semantics></mml:math></inline-formula> <disp-formula id="bmcM4"><label>(4)</label><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M8" name="1471-2105-9-240-i6" overflow="scroll"><mml:semantics><mml:mrow><mml:mstyle displaystyle="true"><mml:mrow><mml:msub><mml:mo mathvariant="bold">∫</mml:mo><mml:mi>V</mml:mi></mml:msub><mml:mrow><mml:mi>f</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi mathvariant="bold">ν</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mi>d</mml:mi><mml:mi mathvariant="bold">ν</mml:mi><mml:mo>≡</mml:mo></mml:mrow></mml:mrow></mml:mstyle><mml:mi>λ</mml:mi><mml:mstyle displaystyle="true"><mml:mrow><mml:mo mathvariant="bold">∫</mml:mo><mml:mrow><mml:mi>f</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>φ</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi mathvariant="bold">u</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo stretchy="false">)</mml:mo><mml:mi>d</mml:mi><mml:mi mathvariant="bold">u</mml:mi></mml:mrow></mml:mrow></mml:mstyle></mml:mrow></mml:semantics></mml:math></disp-formula> <disp-formula id="bmcM5"><label>(5)</label><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M9" name="1471-2105-9-240-i7" overflow="scroll"><mml:semantics><mml:mrow><mml:mi mathvariant="bold">v</mml:mi><mml:mi mathvariant="bold">o</mml:mi><mml:msub><mml:mi mathvariant="bold">l</mml:mi><mml:mi>V</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>Π</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>≡</mml:mo><mml:mstyle displaystyle="true"><mml:mrow><mml:msub><mml:mo mathvariant="bold">∫</mml:mo><mml:mi>V</mml:mi></mml:msub><mml:mrow><mml:msub><mml:mn mathvariant="bold">1</mml:mn><mml:mi>Π</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi mathvariant="bold">ν</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mi>d</mml:mi><mml:mi mathvariant="bold">ν</mml:mi></mml:mrow></mml:mrow></mml:mstyle><mml:mo>=</mml:mo><mml:mi>λ</mml:mi><mml:mstyle displaystyle="true"><mml:mrow><mml:mo mathvariant="bold">∫</mml:mo><mml:mrow><mml:msub><mml:mn mathvariant="bold">1</mml:mn><mml:mrow><mml:msup><mml:mi>φ</mml:mi><mml:mrow><mml:mo>−</mml:mo><mml:mn mathvariant="bold">1</mml:mn></mml:mrow></mml:msup><mml:mo stretchy="false">(</mml:mo><mml:mi>Π</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi mathvariant="bold">u</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mi>d</mml:mi><mml:mi mathvariant="bold">u</mml:mi></mml:mrow></mml:mrow></mml:mstyle></mml:mrow></mml:semantics></mml:math></disp-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M10" name="1471-2105-9-240-i8" overflow="scroll"><mml:semantics><mml:mi mathvariant="script">P</mml:mi></mml:semantics></mml:math></inline-formula> <disp-formula id="bmcM6"><label>(6)</label><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M11" name="1471-2105-9-240-i9" overflow="scroll"><mml:semantics><mml:mrow><mml:mi mathvariant="script">P</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>ν</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mi>v</mml:mi><mml:mi>o</mml:mi><mml:msub><mml:mi>l</mml:mi><mml:mi>V</mml:mi></mml:msub><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mi>Π</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msub><mml:mn>1</mml:mn><mml:mi>Π</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>ν</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:semantics></mml:math></disp-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M12" name="1471-2105-9-240-i10" overflow="scroll"><mml:semantics><mml:mover accent="true"><mml:mi>ν</mml:mi><mml:mo>¯</mml:mo></mml:mover></mml:semantics></mml:math></inline-formula> <disp-formula id="bmcM7"><label>(7)</label><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M13" name="1471-2105-9-240-i11" overflow="scroll"><mml:semantics><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>ν</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mrow><mml:msub><mml:mo>∫</mml:mo><mml:mi>W</mml:mi></mml:msub><mml:mrow><mml:mi mathvariant="script">P</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>ν</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mstyle displaystyle="true"><mml:munder><mml:mo>∏</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>≠</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:munder><mml:mrow><mml:mi>d</mml:mi><mml:msub><mml:mi>ν</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>v</mml:mi><mml:mi>o</mml:mi><mml:msub><mml:mi>l</mml:mi><mml:mi>W</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>Π</mml:mi><mml:mo>∩</mml:mo><mml:mi>W</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mi>v</mml:mi><mml:mi>o</mml:mi><mml:msub><mml:mi>l</mml:mi><mml:mi>V</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>Π</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac></mml:mrow></mml:mstyle></mml:mrow></mml:mrow></mml:mstyle></mml:mrow></mml:semantics></mml:math></disp-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M14" name="1471-2105-9-240-i10" overflow="scroll"><mml:semantics><mml:mover accent="true"><mml:mi>ν</mml:mi><mml:mo>¯</mml:mo></mml:mover></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M15" name="1471-2105-9-240-i10" overflow="scroll"><mml:semantics><mml:mover accent="true"><mml:mi>ν</mml:mi><mml:mo>¯</mml:mo></mml:mover></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M16" name="1471-2105-9-240-i10" overflow="scroll"><mml:semantics><mml:mover accent="true"><mml:mi>ν</mml:mi><mml:mo>¯</mml:mo></mml:mover></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M17" name="1471-2105-9-240-i10" overflow="scroll"><mml:semantics><mml:mover accent="true"><mml:mi>ν</mml:mi><mml:mo>¯</mml:mo></mml:mover></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M18" name="1471-2105-9-240-i10" overflow="scroll"><mml:semantics><mml:mover accent="true"><mml:mi>ν</mml:mi><mml:mo>¯</mml:mo></mml:mover></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M19" name="1471-2105-9-240-i12" overflow="scroll"><mml:semantics><mml:mrow><mml:msub><mml:mi mathvariant="script">N</mml:mi><mml:mi>ε</mml:mi></mml:msub></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M20" name="1471-2105-9-240-i12" overflow="scroll"><mml:semantics><mml:mrow><mml:msub><mml:mi mathvariant="script">N</mml:mi><mml:mi>ε</mml:mi></mml:msub></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M21" name="1471-2105-9-240-i13" overflow="scroll"><mml:semantics><mml:mrow><mml:msubsup><mml:mi>q</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mi>max</mml:mi><mml:mo>⁡</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M22" name="1471-2105-9-240-i13" overflow="scroll"><mml:semantics><mml:mrow><mml:msubsup><mml:mi>q</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mi>max</mml:mi><mml:mo>⁡</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M23" name="1471-2105-9-240-i14" overflow="scroll"><mml:semantics><mml:mrow><mml:msup><mml:mi>q</mml:mi><mml:mrow><mml:mi>max</mml:mi><mml:mo>⁡</mml:mo></mml:mrow></mml:msup><mml:mo>×</mml:mo><mml:msubsup><mml:mi>ν</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mi>max</mml:mi><mml:mo>⁡</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M24" name="1471-2105-9-240-i15" overflow="scroll"><mml:semantics><mml:mrow><mml:mi>δ</mml:mi><mml:mi>S</mml:mi><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mrow><mml:mi>B</mml:mi><mml:mi>P</mml:mi></mml:mrow></mml:msub><mml:mo>−</mml:mo><mml:msub><mml:mi>S</mml:mi><mml:mrow><mml:mi>L</mml:mi><mml:mi>R</mml:mi><mml:mi>S</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mrow><mml:mi>L</mml:mi><mml:mi>R</mml:mi><mml:mi>S</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M25" name="1471-2105-9-240-i16" overflow="scroll"><mml:semantics><mml:mrow><mml:msubsup><mml:mi>ν</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mi>max</mml:mi><mml:mo>⁡</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M26" name="1471-2105-9-240-i16" overflow="scroll"><mml:semantics><mml:mrow><mml:msubsup><mml:mi>ν</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mi>max</mml:mi><mml:mo>⁡</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M27" name="1471-2105-9-240-i16" overflow="scroll"><mml:semantics><mml:mrow><mml:msubsup><mml:mi>ν</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mi>max</mml:mi><mml:mo>⁡</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M28" name="1471-2105-9-240-i16" overflow="scroll"><mml:semantics><mml:mrow><mml:msubsup><mml:mi>ν</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mi>max</mml:mi><mml:mo>⁡</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M29" name="1471-2105-9-240-i16" overflow="scroll"><mml:semantics><mml:mrow><mml:msubsup><mml:mi>ν</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mi>max</mml:mi><mml:mo>⁡</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M30" name="1471-2105-9-240-i16" overflow="scroll"><mml:semantics><mml:mrow><mml:msubsup><mml:mi>ν</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mi>max</mml:mi><mml:mo>⁡</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M31" name="1471-2105-9-240-i16" overflow="scroll"><mml:semantics><mml:mrow><mml:msubsup><mml:mi>ν</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mi>max</mml:mi><mml:mo>⁡</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M32" name="1471-2105-9-240-i16" overflow="scroll"><mml:semantics><mml:mrow><mml:msubsup><mml:mi>ν</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mi>max</mml:mi><mml:mo>⁡</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M33" name="1471-2105-9-240-i16" overflow="scroll"><mml:semantics><mml:mrow><mml:msubsup><mml:mi>ν</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mi>max</mml:mi><mml:mo>⁡</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M34" name="1471-2105-9-240-i16" overflow="scroll"><mml:semantics><mml:mrow><mml:msubsup><mml:mi>ν</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mi>max</mml:mi><mml:mo>⁡</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M35" name="1471-2105-9-240-i16" overflow="scroll"><mml:semantics><mml:mrow><mml:msubsup><mml:mi>ν</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mi>max</mml:mi><mml:mo>⁡</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M36" name="1471-2105-9-240-i16" overflow="scroll"><mml:semantics><mml:mrow><mml:msubsup><mml:mi>ν</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mi>max</mml:mi><mml:mo>⁡</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M37" name="1471-2105-9-240-i16" overflow="scroll"><mml:semantics><mml:mrow><mml:msubsup><mml:mi>ν</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mi>max</mml:mi><mml:mo>⁡</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M38" name="1471-2105-9-240-i17" overflow="scroll"><mml:semantics><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mo>&lt;</mml:mo></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>ν</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>≡</mml:mo><mml:mstyle displaystyle="true"><mml:mrow><mml:msubsup><mml:mo>∫</mml:mo><mml:mrow><mml:mo>−</mml:mo><mml:mi>∞</mml:mi></mml:mrow><mml:mi>ν</mml:mi></mml:msubsup><mml:mrow><mml:mi>P</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>y</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mi>d</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:mrow></mml:mstyle></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M39" name="1471-2105-9-240-i2" overflow="scroll"><mml:semantics><mml:mover accent="true"><mml:mi>S</mml:mi><mml:mo>‸</mml:mo></mml:mover></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M40" name="1471-2105-9-240-i18" overflow="scroll"><mml:semantics><mml:mrow><mml:msub><mml:mi>i</mml:mi><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:mrow></mml:msub></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M41" name="1471-2105-9-240-i19" overflow="scroll"><mml:semantics><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M42" name="1471-2105-9-240-i13" overflow="scroll"><mml:semantics><mml:mrow><mml:msubsup><mml:mi>q</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mi>max</mml:mi><mml:mo>⁡</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> <disp-formula id="bmcM8"><label>(8)</label><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M43" name="1471-2105-9-240-i20" overflow="scroll"><mml:semantics><mml:mrow><mml:mi mathvariant="script">P</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>ν</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:munder><mml:mo>∏</mml:mo><mml:mrow><mml:mi>a</mml:mi><mml:mo>∈</mml:mo><mml:mi>A</mml:mi></mml:mrow></mml:munder><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mo>{</mml:mo><mml:msub><mml:mi>ν</mml:mi><mml:mi>l</mml:mi></mml:msub><mml:mo>}</mml:mo></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo>∈</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mstyle><mml:mstyle displaystyle="true"><mml:munder><mml:mo>∏</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mi>I</mml:mi></mml:mrow></mml:munder><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>ν</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mo>−</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msup></mml:mrow></mml:mstyle></mml:mrow></mml:semantics></mml:math></disp-formula> <disp-formula id="bmcM9"><label>(9)</label><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M44" name="1471-2105-9-240-i21" overflow="scroll"><mml:semantics><mml:mrow><mml:mtable><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>ν</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:munder><mml:mo>∑</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mo>{</mml:mo><mml:msub><mml:mi>ν</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>}</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>≠</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munder><mml:mrow><mml:mi mathvariant="script">P</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>ν</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mstyle></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mo>{</mml:mo><mml:msub><mml:mi>ν</mml:mi><mml:mi>l</mml:mi></mml:msub><mml:mo>}</mml:mo></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo>∈</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:munder><mml:mo>∑</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mo>{</mml:mo><mml:msub><mml:mi>ν</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>}</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>≠</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munder><mml:mrow><mml:mi mathvariant="script">P</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>ν</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mstyle><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:semantics></mml:math></disp-formula> <disp-formula id="bmcM10"><label>(10)</label><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M45" name="1471-2105-9-240-i22" overflow="scroll"><mml:semantics><mml:mrow><mml:mtable><mml:mtr><mml:mtd><mml:mrow><mml:maligngroup/><mml:mi>S</mml:mi><mml:mo>≡</mml:mo><mml:mo>−</mml:mo><mml:mstyle displaystyle="true"><mml:munder><mml:mo>∑</mml:mo><mml:mi>ν</mml:mi></mml:munder><mml:mrow><mml:mi mathvariant="script">P</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>ν</mml:mi><mml:mo stretchy="false">)</mml:mo><mml:mi>ln</mml:mi><mml:mo>⁡</mml:mo><mml:mi>P</mml:mi><mml:mo stretchy="false">(</mml:mo><mml:mi>ν</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mstyle></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:maligngroup/><mml:mrow><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:munder><mml:mo>∑</mml:mo><mml:mrow><mml:mi>a</mml:mi><mml:mo>∈</mml:mo><mml:mi>A</mml:mi></mml:mrow></mml:munder><mml:mrow><mml:mstyle displaystyle="true"><mml:munder><mml:mo>∑</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mo>{</mml:mo><mml:msub><mml:mi>ν</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>}</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>∈</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munder><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mo>{</mml:mo><mml:msub><mml:mi>ν</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>}</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>∈</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mi>log</mml:mi><mml:mo>⁡</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mo>{</mml:mo><mml:msub><mml:mi>ν</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>}</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>∈</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mo>−</mml:mo><mml:mstyle displaystyle="true"><mml:munder><mml:mo>∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mi>I</mml:mi></mml:mrow></mml:munder><mml:mrow><mml:mstyle displaystyle="true"><mml:munder><mml:mo>∑</mml:mo><mml:mrow><mml:msub><mml:mi>ν</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:munder><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>−</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy="false">)</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>ν</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo><mml:mi>log</mml:mi><mml:mo>⁡</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>ν</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mstyle></mml:mrow></mml:mstyle></mml:mrow></mml:mstyle></mml:mrow></mml:mstyle></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:semantics></mml:math></disp-formula> <disp-formula id="bmcM11"><label>(11)</label><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M46" name="1471-2105-9-240-i23" overflow="scroll"><mml:semantics><mml:mrow><mml:mtable><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>m</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mo>→</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>ν</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mo>=</mml:mo></mml:mtd><mml:mtd><mml:maligngroup/><mml:mrow><mml:mstyle displaystyle="true"><mml:munder><mml:mo>∑</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mo>{</mml:mo><mml:msub><mml:mi>ν</mml:mi><mml:mi>l</mml:mi></mml:msub><mml:mo>}</mml:mo></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo>∈</mml:mo><mml:mi>a</mml:mi><mml:mo>\</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munder><mml:mrow><mml:mi>δ</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mstyle displaystyle="true"><mml:munder><mml:mo>∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>∈</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:munder><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mi>l</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi>ν</mml:mi><mml:mi>l</mml:mi></mml:msub><mml:mo>;</mml:mo><mml:msub><mml:mi>b</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:mrow></mml:mstyle></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mstyle><mml:mstyle displaystyle="true"><mml:munder><mml:mo>∏</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>∈</mml:mo><mml:mi>a</mml:mi><mml:mo>\</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:munder><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mo>→</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>ν</mml:mi><mml:mi>l</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mstyle></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>μ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>→</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>ν</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mo>=</mml:mo></mml:mtd><mml:mtd><mml:maligngroup/><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>→</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mstyle displaystyle="true"><mml:munder><mml:mo>∏</mml:mo><mml:mrow><mml:mi>b</mml:mi><mml:mo>∈</mml:mo><mml:mi>i</mml:mi><mml:mo>\</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:munder><mml:mrow><mml:msub><mml:mi>m</mml:mi><mml:mrow><mml:mi>b</mml:mi><mml:mo>→</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>ν</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mstyle></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:semantics></mml:math></disp-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M47" name="1471-2105-9-240-i24" overflow="scroll"><mml:semantics><mml:mrow><mml:mstyle displaystyle="true"><mml:msub><mml:mo>∑</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mo>{</mml:mo><mml:msub><mml:mi>ν</mml:mi><mml:mi>l</mml:mi></mml:msub><mml:mo>}</mml:mo></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo>∈</mml:mo><mml:mi>a</mml:mi><mml:mo>\</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:msub><mml:mrow/></mml:mstyle></mml:mrow></mml:semantics></mml:math></inline-formula> <disp-formula id="bmcM12"><label>(12)</label><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M48" name="1471-2105-9-240-i25" overflow="scroll"><mml:semantics><mml:mrow><mml:mtable><mml:mtr><mml:mtd><mml:maligngroup/><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mrow><mml:mo>{</mml:mo><mml:msub><mml:mi>ν</mml:mi><mml:mi>l</mml:mi></mml:msub><mml:mo>}</mml:mo></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo>∈</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mo>=</mml:mo></mml:mtd><mml:mtd><mml:maligngroup/><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:munder><mml:mo>∑</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mo>{</mml:mo><mml:msub><mml:mi>ν</mml:mi><mml:mi>l</mml:mi></mml:msub><mml:mo>}</mml:mo></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo>∈</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munder><mml:mrow><mml:mi>δ</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mstyle displaystyle="true"><mml:munder><mml:mo>∑</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>∈</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:munder><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mi>l</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi>ν</mml:mi><mml:mi>l</mml:mi></mml:msub><mml:mo>;</mml:mo><mml:msub><mml:mi>b</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:mrow></mml:mstyle></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mstyle><mml:mstyle displaystyle="true"><mml:munder><mml:mo>∏</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>∈</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:munder><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mo>→</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:msub><mml:mi>ν</mml:mi><mml:mi>l</mml:mi></mml:msub><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mstyle></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:maligngroup/><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>ν</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mo>=</mml:mo></mml:mtd><mml:mtd><mml:maligngroup/><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:munder><mml:mo>∏</mml:mo><mml:mrow><mml:mi>l</mml:mi><mml:mo>∈</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:munder><mml:mrow><mml:msub><mml:mi>m</mml:mi><mml:mrow><mml:mi>l</mml:mi><mml:mo>→</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo stretchy="false">(</mml:mo><mml:mi>ν</mml:mi><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mstyle></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:semantics></mml:math></disp-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M49" name="1471-2105-9-240-i26" overflow="scroll"><mml:semantics><mml:mrow><mml:msub><mml:mrow><mml:mo>{</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>...</mml:mn><mml:mo>,</mml:mo><mml:msubsup><mml:mi>q</mml:mi><mml:mi>l</mml:mi><mml:mrow><mml:mi>max</mml:mi><mml:mo>⁡</mml:mo></mml:mrow></mml:msubsup><mml:mo>}</mml:mo></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo>∈</mml:mo><mml:mi>a</mml:mi><mml:mo>\</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M50" name="1471-2105-9-240-i27" overflow="scroll"><mml:semantics><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mo>→</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mo>⊗</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>∈</mml:mo><mml:mi>a</mml:mi><mml:mo>\</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi>μ</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>→</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M51" name="1471-2105-9-240-i28" overflow="scroll"><mml:semantics><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mo>→</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msub><mml:mo>⊗</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>∈</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi>μ</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mo>→</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>⊗</mml:mo><mml:msubsup><mml:mi>μ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>→</mml:mo><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M52" name="1471-2105-9-240-i29" overflow="scroll"><mml:semantics><mml:mrow><mml:msubsup><mml:mi>h</mml:mi><mml:mi>i</mml:mi><mml:mi>l</mml:mi></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M53" name="1471-2105-9-240-i30" overflow="scroll"><mml:semantics><mml:mrow><mml:msubsup><mml:mi>h</mml:mi><mml:mi>i</mml:mi><mml:mn>0</mml:mn></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>μ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>→</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M54" name="1471-2105-9-240-i31" overflow="scroll"><mml:semantics><mml:mrow><mml:msubsup><mml:mi>h</mml:mi><mml:mi>i</mml:mi><mml:mi>d</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>h</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>⊗</mml:mo><mml:msubsup><mml:mi>h</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mi>i</mml:mi><mml:mo>+</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mo>−</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M55" name="1471-2105-9-240-i32" overflow="scroll"><mml:semantics><mml:mrow><mml:msubsup><mml:mo>⊗</mml:mo><mml:mrow><mml:mi>d</mml:mi><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:mrow><mml:mi>n</mml:mi></mml:msubsup><mml:msubsup><mml:mi>h</mml:mi><mml:mrow><mml:mo stretchy="false">[</mml:mo><mml:mi>i</mml:mi><mml:mo>/</mml:mo><mml:msup><mml:mn>2</mml:mn><mml:mi>d</mml:mi></mml:msup><mml:mo stretchy="false">]</mml:mo><mml:mtext>xor </mml:mtext><mml:mn>1</mml:mn></mml:mrow><mml:mi>d</mml:mi></mml:msubsup></mml:mrow></mml:semantics></mml:math></inline-formula>
<supplementary-material content-type="local-data" id="S1"><caption><title>Additional file 1</title><p>Human red blood cell metabolism supplementary files. The archive contains 4 text files: rbc.sto (stoichiometric matrix where each column is a reaction and each line is a metabolite), rbc.flu (one column, contains the sign of exchange fluxes: negative are incoming positive outcoming, zero free), rbc.names (contains the name of both reactions and metabolites), and rbc.max (contains maximum flux values of the reactions).</p></caption></supplementary-material> <supplementary-material content-type="local-data" id="S2"><caption><title>Additional file 2</title><p><italic>E. coli </italic>central metabolism supplementary files. The archive contains 3 text files: central.sto (stoichiometric matrix where each column is a reaction and each line is a metabolite), central.flu (one column, contains the sign of exchange fluxes: negative are incoming, positive outcoming, zero free), central.names (contains the name of both reactions and metabolites).</p></caption></supplementary-material>
<graphic xlink:href="1471-2105-9-240-1"/> <graphic xlink:href="1471-2105-9-240-2"/> <graphic xlink:href="1471-2105-9-240-3"/> <graphic xlink:href="1471-2105-9-240-4"/> <graphic xlink:href="1471-2105-9-240-5"/> <graphic xlink:href="1471-2105-9-240-6"/> <graphic xlink:href="1471-2105-9-240-7"/> <graphic xlink:href="1471-2105-9-240-8"/> <graphic xlink:href="1471-2105-9-240-9"/> <graphic xlink:href="1471-2105-9-240-10"/> <graphic xlink:href="1471-2105-9-240-11"/> <graphic xlink:href="1471-2105-9-240-12"/> <graphic xlink:href="1471-2105-9-240-13"/>
<media xlink:href="1471-2105-9-240-S1.tgz" mimetype="application" mime-subtype="x-zip-compressed"><caption><p>Click here for file</p></caption></media> <media xlink:href="1471-2105-9-240-S2.tgz" mimetype="application" mime-subtype="x-zip-compressed"><caption><p>Click here for file</p></caption></media>
[{"surname": ["Z", "Qin"], "given-names": ["D", "ZS"], "article-title": ["Structural comparison of metabolic networks in selected single cell organisms"], "source": ["BMC Bioinformatics"], "year": ["2005"], "volume": ["6"]}, {"surname": ["Varma", "Palsson"], "given-names": ["A", "B"], "article-title": ["Metabolic Capabilities of Escherichia coli: I.Synthesis of biosynthetic precursors and cofactors"], "source": ["J theor Biol"], "year": ["1993"], "volume": ["165"], "fpage": ["477"], "lpage": ["502"], "pub-id": ["10.1006/jtbi.1993.1202"]}, {"article-title": ["LRS package"]}, {"surname": ["Avis", "Fukuda"], "given-names": ["D", "K"], "article-title": ["A pivoting algorithm for convex hulls and vertex enumeration of arrangements and polyhedra"], "source": ["Discrete Comput Geom"], "year": ["1992"], "volume": ["8"], "fpage": ["295"], "lpage": ["313"], "pub-id": ["10.1007/BF02293050"]}, {"surname": ["Simonovits"], "given-names": ["M"], "article-title": ["How to compute the volume in high dimension?"], "source": ["Math Progr"], "year": ["2003"], "volume": ["97"], "fpage": ["337"], "lpage": ["374"]}, {"surname": ["Dyer", "Frieze"], "given-names": ["M", "A"], "article-title": ["On the complexity of computing the volume of a polyhedron"], "source": ["SIAM J Comput"], "year": ["1988"], "volume": ["17"], "fpage": ["967"], "lpage": ["97"], "pub-id": ["10.1137/0217060"]}, {"surname": ["Khachiyan", "Pach J"], "given-names": ["L"], "article-title": ["Complexity of volume computation"], "source": ["New trends in discrete and computational geometry, Springer-Verlag"], "year": ["1993"], "fpage": ["91"], "lpage": ["101"]}, {"surname": ["B\u00ebuler", "Enge", "Fukuda", "Ziegler GM, Kalai G"], "given-names": ["B", "A", "K"], "article-title": ["Exact volume computation for convex polytopes: A practical study"], "source": ["Polytopes-combinatorics and computation, Birkhauser"], "year": ["2000"], "fpage": ["131"], "lpage": ["154"]}, {"surname": ["Yedidia", "Freeman", "Weiss", "press M"], "given-names": ["J", "W", "Y"], "article-title": ["Generalized belief propagation"], "source": ["Advances in Neural Information Processing Systems (NIPS) 13, Denver, CO"], "year": ["2001"], "fpage": ["772"], "lpage": ["778"]}, {"surname": ["Kschischang", "Frey", "Loeliger"], "given-names": ["FR", "BJ", "HA"], "article-title": ["Factor graphs and the sum-product algorithm"], "source": ["Information Theory, IEEE Transactions on"], "year": ["2001"], "volume": ["47"], "fpage": ["498"], "lpage": ["519"], "pub-id": ["10.1109/18.910572"]}, {"surname": ["Braunstein", "Mezard", "Zecchina"], "given-names": ["A", "M", "R"], "article-title": ["Survey propagation: An algorithm for satisfiability"], "source": ["Random Struct Algorithms"], "year": ["2005"], "volume": ["27"], "fpage": ["201"], "lpage": ["226"], "pub-id": ["10.1002/rsa.20057"]}, {"surname": ["MacKay"], "given-names": ["DJC"], "source": ["Information Theory, Inference, and Learning Algorithms"], "year": ["2003"], "publisher-name": ["Cambridge University Press"]}, {"surname": ["De Martino", "Martelli", "Castillo"], "given-names": ["A", "RMC", "IP"], "article-title": ["Von Neumann expanding model on random graphs"], "source": ["Journal of Statistical Mechanics: Theory and Experiment"], "year": ["2007"], "volume": ["2007"], "fpage": ["P05012"], "pub-id": ["10.1088/1742-5468/2007/05/P05012"]}, {"surname": ["Bianconi", "Zecchina"], "given-names": ["G", "R"], "article-title": ["Viable flux distribution in metabolic networks"], "source": ["Technical report"], "year": ["2007"], "comment": ["ArXiv:cond-mat/0705.2816"]}, {"surname": ["Baxter"], "given-names": ["B"], "source": ["Exactly Solved Models in Statistical Mechanics"], "year": ["1989"], "publisher-name": ["London: Academic Press Inc"]}, {"surname": ["Mezard", "Parisi"], "given-names": ["M", "G"], "article-title": ["The Bethe lattice spin glass revisited"], "source": ["The European Physical Journal B"], "year": ["2001"], "volume": ["20"], "fpage": ["217"], "pub-id": ["10.1007/PL00011099"]}, {"surname": ["Mezard", "Parisi"], "given-names": ["M", "G"], "article-title": ["The cavity method at zero temperature"], "source": ["J Stat Phys"], "year": ["2003"], "volume": ["111"], "fpage": ["1"], "pub-id": ["10.1023/A:1022221005097"]}, {"surname": ["Richardson", "Urbanke"], "given-names": ["T", "R"], "article-title": ["The capacity of low-density parity check codes under message passing decoding"], "source": ["IEEE, Trans Info Theory"], "year": ["2001"], "volume": ["47"], "fpage": ["599"], "lpage": ["618"], "pub-id": ["10.1109/18.910577"]}, {"surname": ["Weiss", "Freeman"], "given-names": ["Y", "WT"], "article-title": ["Correctness of Belief Propagation in Gaussian Graphical Models of Arbitrary Topology"], "source": ["Neural Comp"], "year": ["2001"], "volume": ["13"], "fpage": ["2173"], "lpage": ["2200"], "pub-id": ["10.1162/089976601750541769"]}]
BMC Bioinformatics. 2008 May 19; 9:240