Steady state analysis of Boolean molecular network models via model reduction and computational algebra

Background A key problem in the analysis of mathematical models of molecular networks is the determination of their steady states. The present paper addresses this problem for Boolean network models, an increasingly popular modeling paradigm for networks lacking detailed kinetic information. For small models, the problem can be solved by exhaustive enumeration of all state transitions. But for larger models this is not feasible, since the size of the phase space grows exponentially with the dimension of the network. The dimension of published models is growing to over 100, so that efficient methods for steady state determination are essential. Several methods have been proposed for large networks, some of them heuristic. While these methods represent a substantial improvement in scalability over exhaustive enumeration, the problem for large networks is still unsolved in general. Results This paper presents an algorithm that consists of two main parts. The first is a graph theoretic reduction of the wiring diagram of the network, while preserving all information about steady states. The second part formulates the determination of all steady states of a Boolean network as a problem of finding all solutions to a system of polynomial equations over the finite number system with two elements. This problem can be solved with existing computer algebra software. This algorithm compares favorably with several existing algorithms for steady state determination. One advantage is that it is not heuristic or reliant on sampling, but rather determines algorithmically and exactly all steady states of a Boolean network. The code for the algorithm, as well as the test suite of benchmark networks, is available upon request from the corresponding author. Conclusions The algorithm presented in this paper reliably determines all steady states of sparse Boolean networks with up to 1000 nodes. The algorithm is effective at analyzing virtually all published models even those of moderate connectivity. The problem for large Boolean networks with high average connectivity remains an open problem.

Several methods have been proposed in the literature for dealing with this problem, including exact as well as heuristic methods. We provide a brief review of the different types here. For this purpose, we represent a Boolean network as follows. Let K = {0, 1}, and assume that the network has n nodes x 1 , . . . , x n . Each node x i has associated to it a Boolean function f i : K n −→ K. Thus, we can represent the Boolean network as a function f = ( f 1 , . . . , f n ) : K n −→ K n .
One can represent the variable dependencies through the dependency graph of the network, whose nodes are the variables x 1 , . . . , x n . There is an edge x i → x j if x i appears in the function f j , that is, the state of x j depends on the state of x i . The problem of finding steady states is then formulated as finding all states x ∈ K n such that f (x) = x.
One approach to the problem is model reduction. Some existing reduction methods use a "steady-state approximation" [25][26][27][28] to reduce the number of variables. Intuitively, if a function depends on a variable, e.g., f i = f i (x j , x k , x l ), then we can remove variable x j from the network by replacing f i (x j , x k , x l ) with the new function f i (f j (x 1 , . . . , x n ), x k , x l ). By repeating this process, one obtains a reduced network that in practice is much smaller than the original network. The stopping criteria for reduction methods is that variables can be removed only if the steady state information is preserved. The steady states of the reduced network are in algorithmic one-to-one correspondence with the steady states of the original network. More precisely, the reduction algorithm decomposes a large system into a smaller system and a set of equations in triangular form, so that when the steady states of the reduced system are found, the steady states of the original systems can be found simply by backwards substitution. That is, the existence of the one-to-one correspondence is not just theoretical.
Another method uses the fact that one can represent a Boolean function as a polynomial function in the variables x 1 , . . . , x n , with coefficients in the finite number system K = {0, 1} (with integer addition and multiplication modulo 2). The problem of finding the steady states of a Boolean network in n variables, as above, can then be reformulated as the problem of finding the solutions to a system of polynomial equations [29][30][31]. Then, the roots of the system of polynomial equations is encoded by the set {p 1 , . . . , p n }. Using tools from computational algebra it is possible to find another set that has the same roots (a Gröbner basis), such that it is possible to do a generalized version of Gaussian elimination. These computations can be done using several different software packages developed for this purpose.
A graph-theoretic method, Minimal Feedback Vertex Sets, consists of finding a set of vertices in the dependency graph of the network that "generate" all steady states. More precisely, one finds a set S ⊂ {1, . . . , n} such that knowing the coordinates x i , for all i ∈ S, of a steady state completely and algorithmically determines the other coordinates of the steady state. It turns out that so-called feedback vertex sets have this property. In practice, by finding a minimal feedback vertex set, one reduces the problem from checking 2 n states to the problem of checking 2 |S| states, where |S| is typically much smaller than n [23]. A feedback vertex set can be found by removing vertices from the graph until the graph has no directed cycles. A minimal feedback vertex set can be found by finding the smallest number of vertices that we need to remove from the graph so that it does not have directed cycles.
SAT methods have also been used for the purpose of finding steady states of Boolean networks, which are used to determine whether a Boolean expression in several variables has a variable assignment that makes the expression true; see [32][33][34][35]. In essence, the system of Boolean equations, f i = x i , is rewritten as a single equation G(x) = 1, and then the problem of finding the steady states becomes the problem of finding when the equation G(x) = 1 is satisfied. For example, Melkman, Tamura, and Akutsu [33,35] used SAT algorithms to find steady states of AND/OR Boolean networks, i.e., Boolean networks in which the f i contain only the AND and OR operators, with a time complexity of O(1.587 n ) (where n is the number of nodes). Dubrova and Teslenko [34] also developed a SATbased algorithm to find all attractors of a Boolean network with very good performance characteristics. The methodology was tested on Boolean networks with sizes ranging from 12 to 52. It was also tested using random networks with up to 7000 nodes and average in-degree less than 2. For a fixed in-degree of 2 the maximum size networks tested have 2000 nodes.
Integer programming-based method have also been used to find the steady states of Boolean networks, Tamura, Hayashida, and Akutsu [36]. In essence, the system of Boolean equations is rewritten as a set of inequalities Ax ≤ b, x ≥ 0 and the goal is to maximize a linear function of the form c T x.
Strategic Sampling, (Zhang, Hayashida, Akutsu, Ching, and Ng, [37]) is a recursive search approach to identify all steady states of a random Boolean network with maximum in-degree 2, with an average time complexity of O(1.19 n ) (where n is the number of nodes). The idea is that the equations are solved recursively: First one considers the solutions of the equation f 1 = x 1 . Since the f i 's depend on few variables in practice, one only has to keep http://www.biomedcentral.com/1471-2105/15/221 track of the variables that appear in f 1 . Then, one finds the solutions of f 2 = x 2 that are compatible with the solutions previously found. The process continues until one finds solutions of all equations. In the worst case, however, algorithm complexity can be O(n2 n ) [31].
Finally, the problem of finding attractors has also been studied by using Binary Decision Diagrams (BDD) [38][39][40][41]. The idea is to represent the Boolean functions as a directed graph that efficiently encodes the functions by allowing fast evaluation. Then, by combining the BDD representation of all the Boolean functions, the problem of finding steady states becomes a search problem in the larger BDD. Many of these methods were tested on some biologically relevant networks with fewer than 100 nodes.
In this paper, we present a new method for computing steady states of a Boolean network, combining a graph theoretic reduction/transformation method with an approach using computational algebra. We show that the method performs favorably on some types of networks in comparison with other methods on a collection of benchmark networks, consisting of both published models and random networks with certain properties, namely Kauffman networks and networks whose in-degree distribution satisfies a power law.

Methods
The method we propose for steady state analysis is a combination of network reduction/transformation and computational algebra (see Figure 1). The reduction technique we use is based on results in [42,43]. In [42] it was shown that any Boolean network can be "transformed" into an AND-NOT network, namely a network whose Boolean functions are all of the form y 1 ∧ y 2 ∧ . . ., where y i ∈ {x i , ¬x i }. The AND-NOT network has the property that its steady states are in one-to-one correspondence with the steady states of the original network. Furthermore, the one-to-one correspondence between steady states is algorithmic. In [43], the authors proposed a method to reduce an AND-NOT network to another, smaller AND-NOT network in polynomial time, in such a way that the steady states of the original and the reduced network are in one-to-one correspondence, in a constructive way. This reduction algorithm looks for motifs (e.g. feed-forward loops) in the wiring diagram and removes nodes in such motifs; the reduction stops when there are no more motifs to be reduced (attempting to do further reductions would destroy the 1-1 correspondence of steady states). Once the reduced network is constructed, one can compute its steady states by converting the Boolean functions into polynomial functions and then solving a system of polynomial equations, as explained above. The computational algebra technique is based on [29,30]. The idea is that by computing a Gröbner basis (a special set of polynomials with the same roots as the original equations), it is possible to find the roots of the system of polynomial equations using a generalized version of Gaussian elimination.
The correspondence between Boolean and polynomial functions is accomplished via the "dictionary" x ∧ y ↔ x · y, x ∨ y ↔ x + y + xy, ¬x ↔ x + 1. The correspondence is unique if we limit the degree with which each variable appears in the polynomial function to 1, since any function K n −→ K can be represented uniquely as a polynomial function that is square-free, that is, in which every variable appears with exponent 1.
The algorithm is summarized in the following pseudocode and a more detailed description follows. The source code can be found at github.com/PlantSimLab/ ADAM.

Algorithm 1 Steady state computation.
Input: Compute p =polynomial representation of h 6. Solve the equations h i = x i , using computational algebra (i.e. compute the Gröbner basis to perform a generalized version of Gaussian elimination) and let L = {s 1 , . . . , s r } be the set of solutions 7. Use backtracking to compute the steady states of g: L = {s 1 , . . . , s r } 8. Project each s j to its first n coordinates to obtain s j The input of our algorithm is an n−dimensional Boolean network f = (f 1 , . . . , f n ). In Step 1, we use the formulas from [42] to compute an AND-NOT network g = (g 1 , . . . , g m ), with m ≥ n, which has the same number of steady states as f . The idea is to introduce variables to rewrite the Boolean operations using only the operators AND and NOT; for example, can be written as f 1 = ¬x 2 ∧ ¬x 5 , where f 5 = ¬x 3 ∧ ¬x 4 . Furthermore, the steady states of f are given by projecting the steady states of g to their first n coordinates. In Step 2, we simply consider the wiring diagram of g, which is a signed directed graph that encodes which variable depends on which others and whether the interactions are activating or inhibiting. In Step 3, we use the algorithm from [43] to reduce the wiring diagram of g to another signed directed graph, W . Then, in Step 4, we construct the AND-NOT network that has W as its wiring diagram, h = (h 1 , . . . , h l ); the steady states of g can be computed from the steady states of h by backtracking [43]. In Step http://www.biomedcentral.com/1471-2105/15/221 5, we compute the polynomial representation of h. This is done by replacing ¬x i with 1 + x i , and x i ∧ x j with x i x j , as explained earlier. In Step 6 we solve the system of polynomial equations h i = x i , i = 1, . . . , l; this is done using tools from computational algebra as done in [29,30]. The solutions of the system, L = {s 1 , . . . , s r }, will also be solutions of h. In Step 7, we use backtracking to compute the steady states of g, L = {s 1 , . . . , s r }. And finally, in Step 8, we project each s j to its first n coordinates and obtain the steady states of f (See Additional file 1 for an example and Additional files 2 and 3 for the code version used for this publication).

Results and discussion
We first tested the software implementation of our algorithm on 1,000,000 Boolean networks with 50 nodes each, for which we also computed all steady states by a custommade algorithm based on minimal feedback vertex sets. For each graph we found the minimal number of vertices that had to be removed so that the graph had no directed cycles; call this set S. Then, for each element in {0, 1} |S| , the values of the other variables are completely determined. This gave us 2 |S| candidates for steady states which we then checked by exhaustive search. In all cases our algorithm computed correctly all steady states. We are therefore confident that our implementation is errorfree. This extends to the relevant functionalities of other software packages we used for intermediate computations (Macaulay2 [44], Boost Library [45], BoolStuff Library [46]).
Then we used over 100,000 Boolean networks to benchmark our method against others. The methods we used for comparison were those with published benchmarks or those for which the code was readily available. As we will see later, for Kauffman networks with K = 2, the timing of our method grows linearly with the number of nodes; thus, it was not necessary to include in our benchmarks methods that were reported to grow exponentially for such networks (e.g. [34,37]). We selected three methods with good computational efficiency for K = 2: Zanudo and Albert [26]; Devloo, Hansen, and Labbé [32]; and Tamura, Hayashida, and Akutsu [36]. For the most recent algorithm, Zañudo and Albert [26] use a method that identifies motifs (subsets of nodes) that stabilize in one or a small number of states. The steady states from these motifs are used to reduce the network to find the attractors. It is important to mention that this method can find not only the steady states of Boolean networks, but also information about all the attractors of the network, which our method is not currently designed to do.
We used random biologically meaningful Boolean networks [47][48][49] and published networks [13][14][15][16][17][18][19][20][21][22] (the Boolean representation of these models was obtained from The Cell Collective [50]). The results for Zañudo and Albert and our algorithm were generated by us and the other results are reported from published benchmarks [32,36]. The computations for our algorithm and that of [26] were done on a 3.4 GHz Linux machine. The computations for Tamura's and Devloo's algorithms were done on a Linux system with 3GHz and a Sun SPARC Ultra 10 machine, respectively, as reported in [32,36]. Considering that the different computers described above have processors with similar speed and that the computations were done in a single processor, the use of results from different machines will not affect the main conclusions of our comparison. Moreover, some methods did not have reported results for certain network sizes; in that case, we computed an approximate timing using interpolation/extrapolation of the reported values; we linear and exponential fits for the timings that grew linearly and exponentially, respectively.
First, we compare the performance of different methods on Kauffman networks with connectivity K = 2 and K = 3. For our and the Zañudo algorithm, each reported number is the average or standard deviation of 1000 Boolean networks. In Table 1 we report the timings for Kauffman networks with K = 2. We can see that the algorithm in [36] performs best, followed by our algorithm. Note http://www.biomedcentral.com/1471-2105/15/221 that all timings grow linearly with the number of nodes. As mentioned in [36], the good results with Tamura's algorithm may be due to the fact that the authors optimized the computations for Boolean functions that have 2 inputs. The results for Kauffman networks with K = 3 in Table 2, however, show that our method performs better by an order of magnitude. These results show that, while our algorithm is not optimized for very low in-degree networks, it is more scalable for networks with higher connectivity. Not all molecular networks have properties similar to Kauffman networks, but can exhibit power law properties for their degree distribution. Thus, we supplemented the results from Tables 1 and 2 with benchmark networks whose connectivity follows a power law distribution [51]. We considered power-law networks with average connectivity k = 2 and k = 3. That is, the average number of edges is the same, but the connectivity distribution is more biologically realistic. There were no bechmarks for these types of networks for Tamura's and Devloo's algorithms, so we only report Zañudo's and our algorithm. In Table 3, we see that our algorithm can handle networks with k = 2 with up to 1000 nodes in under 7 seconds on average. It is important to mention that these timings differ considerably from the timings for K = 2 (Table 1).   Table 4 shows the results for networks with connectivity k = 3. Not surprisingly, increasing the average connectivity has a dramatic effect on the size of networks that can be studied; for example, the network sizes that can be dealt with in under 7 seconds decreases from 1000 to about 140 when we increase k from 2 to 3. Further increasing the average connectivity will have a much more dramatic effect.
Finally, our results on published networks are shown in Table 5, sorted by average connectivity. Since all models have external parameters corresponding to environmental conditions (i.e. we have one BN for each parameter set), we sampled the parameter space and computed the average timing of each algorithm. The numbers we report are the averages of 10000 simulations for each model. As expected, for all networks with small average connectivity (less than 3) our algorithm performed very well and finished in less than half a second, consistent with the timings from Tables 3 and 4. Four models have average connectivity greater than 3 and our algorithm performed very well on three of them. However, for the largest network (225 nodes and k = 5.16), there were parameter sets (51% of the sampled parameters) which could not be analyzed.  DF=did not finish in a day. *=49% of simulations reported, 51% of simulations were stopped because they did not finish in a day or had a large memory consumption.
The computational complexity of our algorithm depends on the type of networks used as well as the connectivity. The algorithm seems to run in polynomial time for Kauffman networks with K = 2 (Table 1), but slower for power-law networks with the same connectivity (Table 3). For other types of networks the complexity is much harder to infer, but Table 2 suggests that the complexity is exponential. Also, the complexity of the mathematical tools we use is not well understood in the context of Boolean models. For example, the algebraic step of our algorithm can be doubly exponential, but it has been shown to work much faster in practice and, as our work shows, it runs much faster for sparse Boolean models.

Conclusions
The capability to analyze the attractors of discrete dynamic models of biological networks is a key technology in any systems biology toolkit that incorporates this popular type of model. This capability needs to include steady state analysis as well as the determination of periodic points of larger periods. And it needs to apply to models that allow an arbitrary (finite) number of states for its variables, such as logical models. In this paper, we have focused on Boolean networks as the model type most commonly used currently. And we have focused only on steady state analysis, at the exclusion of periodic limit cycles. As is the case in many situations, algorithms available for this purpose, some of which we used here for comparison, perform well on some types of models and not so well on others. For instance, for Kaufmann networks with connectivity 2, the method in [36] outperforms all other methods, including ours. The method in [26] is generally slower than our method in computing steady states, but has the added capability that it also finds limit cycles of larger lengths, which our method is not currently equipped to do.
We have used three types of networks for benchmarking: Kauffman networks, power law networks, and published networks. Kauffman networks are commonly used for this purpose, but they don't capture all properties of molecular networks, which include a power law distribution of node connectivities. Our analysis of published networks shows that some of them have high average connectivity, not generally considered in theoretical studies. These pose serious challenges to computational methods, as we demonstrate. As more large published networks become available, they will represent the most important suite of benchmark models to be used, in our opinion.
We believe that this study also holds another important lesson. Our method is a combination of two methods, neither one of which performs particularly well when applied on its own (see Additional file 1). In combination, however, they are quite powerful: model reduction plus polynomial algebra. This might point towards a general strategy for other algorithms of this type. Nonetheless, as our calculations show, the challenge of finding steady states is far from solved in general, even for existing published models. Thus, much work remains to be done.