Steiner tree methods for optimal subnetwork identification: an empirical study
 Afshin Sadeghi^{1}Email author and
 Holger Fröhlich^{1}
DOI: 10.1186/1471210514144
© Sadeghi and Fröhlich; licensee BioMed Central Ltd. 2013
Received: 24 July 2012
Accepted: 27 March 2013
Published: 30 April 2013
Abstract
Background
Analysis and interpretation of biological networks is one of the primary goals of systems biology. In this context identification of subnetworks connecting sets of seed proteins or seed genes plays a crucial role. Given that no natural node and edge weighting scheme is available retrieval of a minimum size subgraph leads to the classical Steiner tree problem, which is known to be NPcomplete. Many approximate solutions have been published and theoretically analyzed in the computer science literature, but far less is known about their practical performance in the bioinformatics field.
Results
Here we conducted a systematic simulation study of four different approximate and one exact algorithms on a large human proteinprotein interaction network with ~14,000 nodes and ~400,000 edges. Moreover, we devised an own algorithm to retrieve a subgraph of merged Steiner trees. The application of our algorithms was demonstrated for two breast cancer signatures and a subnetwork playing a role in male pattern baldness.
Conclusion
We found a modified version of the shortest paths based approximation algorithm by Takahashi and Matsuyama to lead to accurate solutions, while at the same time being several orders of magnitude faster than the exact approach. Our devised algorithm for merged Steiner trees, which is a further development of the Takahashi and Matsuyama algorithm, proved to be useful for small seed lists. All our implemented methods are available in the Rpackage SteinerNet on CRAN (http://www.rproject.org) and as a supplement to this paper.
Background
Analysis of biological networks is one of the primary goals of systems biology [1]. Databases, like KEGG [2], HPRD [3] and PathwayCommons [4] nowadays store tens of thousands of literature reported molecular interactions and thus facilitate the interpretation of biological data. One particular aspect within this context is the construction of subnetworks connecting specified seed genes or proteins of biological interest. Whereas an obvious way to address this problem is to enumerate and join all possible shortest paths between the molecules of interest [5, 6], this solution is not guaranteed to produce minimal subnetworks. Inclusion of large numbers of auxiliary nodes and edges in addition to the ones of primary interest, however, can greatly complicate the visualization and interpretation of the constructed subnetworks.
The task of identifying an optimal subnetwork for a given set of seed genes or proteins can be viewed as an instance of the Steiner tree [7] or the Prize Collecting Steiner tree problem [8], depending on whether or not additional weights for nodes (seen as profits) and edges (seen as costs) are available. Briefly, a Steiner tree is a subgraph connecting all seed nodes (called terminals) within the original molecular interaction network. The Steiner tree problem is to find a Steiner tree of minimal size, i.e. minimal number of edges. This problem is known to be NPcomplete [9]. The same holds true for the Prize Collecting Steiner tree (PCST) problem, where the task is to find a Steiner tree with maximal profit at minimal cost.
Several authors have noticed the relationship between optimal subnetwork identification in molecular networks and the (Prize Collecting) Steiner tree problem [1015]. Most of these authors focused on weighted networks, leading to the PCST problem: Scott et al. [10] showed that an approximate PCST algorithm could recover known regulatory interaction networks responding to heat shock in yeast with high accuracy. Dittrich et al. employed an exact approach using integer linear programming to identify disease related subnetworks in cancer [12]. The method has been made publicly available in the Bioconductor Rpackage BioNet [16]. Tuncbag et al. [17] recently also published a web service for biological network analysis using an exact algorithm for the PCST problem. BaillyBechet al. [15] proposed to approximate the PCST problem via belief propagation and applied it successfully to identify subnetworks responding to drug perturbations in yeast. Huang and Fraenkel [11] used an exact PCST algorithm to determine a protein interaction network playing a role in yeast pheromone response.
In this paper we focus on the classical Steiner tree problem in unweighted graphs. This problem appears, if people want to query molecular interaction databases with a list of seed proteins in order to get some understanding about their possible interplay, but there is no reasonable node weighting scheme available, because there is no experimental data, which can be mapped on the network, or because the interaction database does not contain edge confidence scores. Most currently available interaction databases (e.g. PathwayCommons, HPRD, KEGG) do not contain edge confidence values. An important difference of the classical to the PCST problem is that in a PCST solution there is no guarantee that all seed nodes are included. In contrast, in the classical Steiner tree problem that is the case. The classical Steiner tree problem is hence more natural for subnetwork identification in the lack of any suitable node weighting scheme.
 1.
How accurate are our tested heuristic methods compared to an exact solution?
 2.
How do these heuristics compare to each other in terms of the solution quality and run time?
 3.
How can we determine several solutions of equal quality/size in an efficient way?
The last questions attributes the fact that the solution to the Steiner tree problem is not necessarily unique (see Methods part for an example). That means there can principally exist several Steiner trees of equal size, and without any further knowledge there is absolutely no reason to prefer one over another solution. To our best knowledge the problem of multiple solutions is not well studied. Besides an exact solution we here propose a straight forward extension of the shortest paths heuristic by Takahashi and Matsuyama [18] for this purpose.
After extensive simulation studies we investigated three real life scenarios: First, the interplay between androgen receptor (AR) and HDAC9 in the context of male pattern baldness [19]. Second, the wellknown 70gene signature for breast cancer prognosis by van't Veer et al. [20], and third, the 286gene invasive breast cancer signature by Wang et al. [21]. We show that the (extended) shortest paths heuristic provides clearly interpretable results in all three cases.
Methods
Proteinprotein interaction network
A protein interaction network was compiled from a merger of all nonmetabolic KEGG pathways [2]. Only gene nodes were considered together with the Pathway Commons database [4], which was downloaded in tabdelimited format (May 2010). The purpose was to obtain an as much as possible comprehensive network of known protein interactions. For the Pathway Commons database the SIF interactions INTERACTS WITH and STATE CHANGE were taken into account^{a} and any self loops removed. For retrieval and merger of KEGG pathways, we employed the Rpackage KEGGgraph [22]. All edge directions were ignored, resulting in a network graph of 13,840 nodes and 397,454 edges. Nodes in this network were identified via Entrez gene IDs. The largest connected component of this graph, which we considered for the following had 13,340 nodes and 397,366 edges.
Problem formulation
 1.
S ⊆ V′ ⊆ V and E′ ⊆ E
 2.
There exists a path between every pair of terminals in G′.
The set of auxiliary nodes N := V′ \ S is called nonterminals. A Steiner tree is called minimal if E′ is minimal.
Exact algorithm
Multiple approaches have been devised to retrieve exact solutions for the Steiner tree problem. All these algorithms have a run time, which is scaling exponentially with the number of nodes in the graph and are hence difficult to scale up to larger biological networks. They investigate all possible Steiner trees in order to find a minimal one. Examples of exact algorithms include the one by Lawler [23], which works on distance networks, the one by Balakrishnan and Patel [24], which is formulated as a degree constrained subgraph problem, and the dynamic programming approaches by Dreyfus [25] and Levin [26]. Also branch and bound approaches [2730] and linear programming solutions have been devised [31].
Here, we implemented a minimal spanning tree based algorithm, which has been described by Hakimi [32]. Briefly, the idea is to investigate all possible subsets of nodes, which include all S terminals. If there exists a minimum spanning tree between these nodes, then this tree is a candidate solution for the Steiner tree problem. By exhaustively searching through all possible subsets we are guaranteed to find the optimal solution. There are ${\sum}_{i=o}^{\leftS\right2}\left(\begin{array}{l}V\leftS\right\\ \phantom{\rule{0.6em}{0ex}}i\end{array}\right)}\phantom{\rule{0.6em}{0ex}}\le \phantom{\rule{0.6em}{0ex}}{2}^{V\leftS\right$ minimum spanning trees to be determined in this approach. It has to be noted here that in case of an unweighted graph every spanning tree is also a minimum spanning tree. Every spanning tree over n nodes contains exactly n1 edges. Hence it is sufficient to test for each candidate subset A of nodes, whether they form a connected subgraph of G of size n  1. Testing, whether nodes A form a connected subgraph can be done in linear time via a depth first or a breadth first search [7].
Shortest paths based approximation (SP)
The result of the shortest path method depends on the selected start node. Winter and Smith [35] thus suggested to repetitively construct Steiner trees with different randomly chosen start nodes (here: 10). The whole algorithm is shown in pseudocode 1. The computationally bottleneck is the computation of pairwise shortest path distances in an unweighted graph (line 7). Using a depth first search this step has a complexity of O(V + E) [7], because we can look for all terminals not in G′ at once. Hence the whole loop is of O(rS(V + E)). The number r of repeats was set to 10 here.
Minimum spanning tree based approximation (KB)
A second heuristic approach, which we tested here, has a certain similarity to Kruskal's minimum spanning tree algorithm [36] and is described by Wang [37]. The algorithm starts by initially considering each terminal as a separate graph. Then sequentially those subgraphs are merged, which are closest to each other. The distance of two subgraphs ${f}_{{}_{i}},{f}_{{}_{j}}$ is measured by the minimal shortest path distance between any pair of nodes in f_{ i } and f_{ j }. Pseudocode 2 shows the algorithm called KruskalBased heuristic here. In our implementation we added the two optimization steps by Rayward et al. [34] described previously for the shortest path heuristic. The size of the KB constructed Steiner tree is at most 22/l times the size of the minimal Steiner tree, where l is the number of leaves in the minimal Steiner tree [38, 39]. The computational bottleneck is line 5. Using again a depth or breadth first search strategy the necessary shortest path computations can be done in O(V + E) per individual f_{ i }. Hence line 5 takes O(S(V + E)). Furthermore, in the worst case the loop has to be executed S times until all terminals appear in one subgraph f_{ i }. Therefore, the whole algorithm has time complexity O(S^{2}(V + E)), which is inferior to the SP method, if r < S.
Algorithm 1 Shortest path heuristic with additional steps by ReywardSmith and Claire in lines 12 and 13
Randomized all shortest paths approximation (RSP)
In addition to the afore mentioned two heuristic methods we experimented with an own approach, which is a randomized algorithm. The idea is to start with the subgraph G* consisting of all nodes and edges appearing on shortest paths between terminals. A minimum spanning tree T is constructed on G*. Afterwards randomly a nonterminal node ν ∈ G* is selected and removed from G*, unless G* would fall into two connected components. Then a minimum spanning tree over the remaining subgraph G* \ {v} is constructed. If this spanning tree has a smaller size than T, the removal of the node is accepted, otherwise rejected. Similarly the algorithm tests, whether the insertion of randomly picked nonterminals from the complement graph G \ G* would decrease the size of the minimum spanning tree. The whole procedure is repeated r times (here: 70) and shown in pseudocode 3. We also tried larger values of r without observing significant differences to the results presented here.
In each loop the algorithm has to construct a minimum spanning tree, which can be done in O(E log V) time via Kruskal's algorithm [7]. Determination of all terminals within max_len distance can be performed in O(V + E) time via a breadth first search. Hence, the loop costs O(E log V + V + E) time.
Precomputation of the all shortest paths between terminals (line 3) is doable in O(S(V + E)) (see above). Therefore, the overall computational cost of the algorithm is O((r + S)(V + E) + rE log(V)).
Algorithm 2 Kruskal — Based Huerisric with additional stepsby Rayward et al. inlines 9 and 10
All shortest paths between terminals (ASP)
For comparison reasons we also included a trivial method, in which a subgraph consisting of pairwise shortest paths between terminals was computed. The run time complexity for finding all pairwise shortest paths is O(S(V + E)), as described above. Merging all paths (lists of node sequences for each terminal) into one graph additionally requires O(S^{2}V) edge insertions. Such a step can be circumvented in the implementation of the other algorithms.
Subgraph of merged minimal steiner trees
Algorithm 3 Pseudo code of randomized all shortest paths approximation
Hence, we should consider all possible solutions of the same size as equally relevant.
Taking this into account we here implemented a modification of the exact algorithm, in which all Steiner trees of minimal size are returned. Obviously the worsttime run time complexity is unaffected by this modification. Afterwards all Steiner trees are merged to one subgraph, which is then further considered.
Subgraph of merged steiner trees (STM)
Since the exact algorithm has an exponential run time complexity and is therefore limited in its practical applicability we also implemented a straight forward modification of the shortest path heuristic (Pseudocode 1) for computing a subgraph containing several Steiner trees of possibly same size: Instead of arbitrarily picking one of the terminals with equal shortest path distance to all nodes in subgraph G′ we select all (line 7). Then we join all possible shortest paths to these nodes to G′ (line 8). The subgraph G′ at the end will thus contain a merger of several Steiner trees.
Performance measures
Let G′ = (V, E) be the Steiner tree subgraph constructed by one of our tested algorithms and S the set of terminal nodes. We evaluated the quality of a solution based on the following two criteria:

Number of edges, E of the Steiner tree

Terminal frequency, defined as$\frac{\leftS\right}{\leftV\right}$
In addition we looked at the raw computation time, which was determined on an 8 core Intel Xeon system with 2.8 GHz and 90GB RAM.
Results
Simulations
Experimental setup
To simulate the behavior of each of our tested algorithms (4 heuristic, one exact) we compiled a large proteinprotein interaction for human comprising ~13,000 nodes and ~400,000 edges (see Methods). In order to generate seed lists of proteins within this network, we randomly picked a start node and then conducted a random walk, in which with a given probability θ = 0.5 each visited node was declared to be a terminal. The random walk was terminated once a predefined number of terminals had been collected. This process was repeated 50 times, and each time our tested algorithms were asked to construct the Steiner tree.
Shortest paths based approximation outperforms other heuristics
We first addressed the question, which of our four tested heuristics (SP, KB, RSP, ASP) performed best with respect to the size and the terminal frequency of reconstructed Steiner trees (see Methods part for definitions). This was done for terminal sets with 5, 8, 20, 50, 70 and 150 proteins.
The ASP algorithm empirically showed the worst time scaling behavior among all approximate approaches, which can be explained by the high number of edge insertions (see above). For S = 50 it became so slow that we had to exclude it from our comparison.
Taken together our SP algorithm lead to the highest quality solutions. In our implementation the KB algorithm was faster than SP, but at the cost of a worse quality of solutions for higher number of terminals. In summary the SP algorithm was our overall preferred heuristic due its good compromise between solution quality and computational speed.
Comparison to an exact and approximate PCST algorithm
We compared the performances of our approximate Steiner tree methods to an exact as well as to an approximate algorithm for the PCST problem. In contrast to the algorithms tested in the last subsection, the PCST problem deals with weighted graphs, which yields a different algorithmic problem. As an exact PCST algorithm we employed the implementation provided in the Rpackage BioNet [16], which is based on Integer Linear Programming (ILP) and uses the IBM CPLEX solver. The Rpackage BioNet contains a wrapper for a C++−code, which compiles the ILP in the format required by CPLEX and returns the solution to the R interface. As an approximate PCST method we used the belief propagation algorithm (BP) by BaillyBechet et al. [15], which can be downloaded as a C++ code from their homepage. As a node weighting scheme we used +1 for terminals and −1 for nonterminals in both cases.
Comparison to exact steiner tree algorithm
We next investigated the accuracy of the best of our tested Steiner tree heuristics, namely the shortest paths based algorithm, in comparison to the exact Steiner tree algorithm. Since the exact algorithm becomes infeasible slow for networks with more than ~50 nodes we sampled subgraphs with at most 30 nodes from our complete network. This was done via our above described random walk. Visited nodes, including all their incident edges and neighbors were joined into one subgraph. The process was continued until at least 30 nodes were contained in the subgraph. At the same time terminals were selected as described before. We investigated terminal sets with 5 and 8 proteins. Figure 7 shows the size distributions of sampled subgraphs for both cases.
Merged steiner trees
Compared to the ASP algorithm, which joins all shortest paths between terminals, the STM method produced significantly smaller subgraphs with higher terminal frequency (Figures 11 and 12).
Dependency of simulation results on terminal selection probability
We investigated, in how far our shown simulation results were dependent on the terminal selection probability, which affects, how close terminals are to each other. The larger the smaller the distance between terminals. We repeated the whole set of simulations presented here with θ = 0.2 and θ = 0.8 (see Additional file 1). In both cases SP was statistically significant outperforming the KB algorithm for S ≥ 50. Only in one case (S = 8 and θ = 0.2) the SP algorithm was leading to significantly worse solutions than the exact algorithm, otherwise no major differences could be detected. Moreover, our STM method was always leading to solutions at comparable quality to the exact algorithm.
Male pattern baldness
In a recent GWAS study HDAC9 was found to be associated with male pattern baldness [19]. Mining known proteinprotein interactions via PathwayCommons [4] and with the help of the commercial software MetaCore^{TM} the authors established an indirect connection of HDAC9 to the androgen receptor (AR). We used both, our approximate STM as well as the exact algorithm to construct a subgraph of merged Steiner trees between HDAC9 and the AR (Figure 2). Both algorithms produced exactly the same result, which highlights multiple indirect interactions on protein level between both molecules.
70Gene prognostic breast cancer signature
286Gene invasive breast cancer signature
Discussion and conclusion
Identification of an optimal subnetwork connecting a list of seed proteins provides valuable insights for the interpretation of experimental data, setting up system biological models, planning novel experiments as well as generating prior knowledge for advanced statistical learning methods. Steiner tree algorithms provide a theoretically well founded approach to address this task. Whereas in the computer science literature Steiner tree methods have been theoretically well studied, their practical application to large molecular interaction networks has not been investigated systematically. This is specifically relevant in the light of the NP completeness of the Steiner tree problem, which makes exact algorithms in many cases impractical. Here we tried to fill this gap via an empirical study comparing different approximate Steiner tree algorithms with each other as well as to an exact algorithm. We specifically focused on the subnetwork identification problem in unweighted graphs. Our systematic simulations revealed that a modified version of the shortest paths based heuristic by Takahashi and Matsuyama yielded satisfactory solutions at a reasonable computational effort, which was several orders of magnitude below that of an exact solution. Compared to using the belief propagation method by BaillyBechet al. or other algorithms solving the PCST problem this has the advantage that the inclusion of all terminal nodes in the solution can be guaranteed. There is no need to define a node weighting scheme, which in the absence of any clear information always becomes rather arbitrary. Of course, this situation changes, if experimental data allows the specification of a weighted graph in an obvious manner. In such a case application of PCST methods becomes much more natural and has proven to be useful in several papers [10, 15]. Nonetheless, one should even then still be aware of the fact that the solution does not necessarily contain all terminal nodes.
We demonstrated the usefulness of approximate Steiner tree methods in two breast cancer studies. Application of the shortest path algorithm here lead to compact and at least in case of the 286 gene signature also to clearly biologically interpretable networks.
In contrast to most other authors we also payed attention to the fact that Steiner trees of a given size are not necessarily unique. This was demonstrated via an example from a GWAS study regarding male pattern baldness here. We proposed an own heuristic algorithm, which was a further modification of the shortest path based heuristic, for this purpose. Our method was found to be highly accurate and significantly faster than an exact approach. It should be noted, however, that our STM algorithm is typically an order of magnitude slower than the SP method, which only finds one Steiner tree. It is thus only recommended for small seed lists.
We have implemented all of our methods in an Rpackage SteinerTree, which is freely available from the CRAN repository (http://www.rproject.org) and as a supplement to this paper (Additional file 2).
Endnotes
Declarations
Acknowledgements
This work was partially supported by the BIT research school.
Authors’ Affiliations
References
 Alon U: Introduction into Systems Biology: Design Principles of Biological Circuits. 2006, Chapman and Hall/CRCGoogle Scholar
 Kanehisa M: Kegg for linking genomes to life and the environment. Nucleic Acids Res. 2008, 36: 480484.View ArticleGoogle Scholar
 Mishra GR, Suresh M, Kumaran K, Kannabiran N, Suresh S, Bala P, Shivakumar K, Anuradha N, Reddy R, Raghavan TM, Menon S, Hanumanthu G, Gupta M, Upendran S, Gupta S, Mahesh M, Jacob B, Mathew P, Chatterjee P, Arun KS, Sharma S, Chandrika KN, Deshpande N, Palvankar K, Raghavnath R, Krishnakanth R, Karathia H, Rekha B, Nayak R, Vishnupriya G, Kumar HGM, Nagini M, Kumar GSS, Jose R, Deepthi P, Mohan SS, Gandhi TKB, Harsha HC, Deshpande KS, Sarker M, Prasad TSK, Pandey A: Human protein reference database 2006 update. Nucleic Acids Res. 2006, 34: 411414. 10.1093/nar/gkj141. [http://dx.doi.org/10.1093/nar/gkj141]View ArticleGoogle Scholar
 Cerami EG, Gross BE, Demir E, Rodchenkov I, Babur O, Anwar N, Schultz N, Bader GD, Sander C: Pathway Commons, a web resource for biological pathway data. Nucleic Acids Res. 2011, 39: 685690. 10.1093/nar/gkq1039. [http://dx.doi.org/10.1093/nar/gkq1039]View ArticleGoogle Scholar
 Przulj N, Wigle D, Jurisica I: Functional topology in a network of protein interactions. Bioinformatics. 2004, 20 (3): 340348. 10.1093/bioinformatics/btg415. [http://bioinformatics.oxfordjournals.org/content/20/3/340.abstract]View ArticlePubMedGoogle Scholar
 Ekins S, Bugrim A, Brovold L, Kirillov E, Nikolsky Y, Rakhmatulin E, Sorokina S, Ryabov A, Serebryiskaya T, Melnikov A, Metz J, Nikolskaya T: Algorithms for network analysis in systemsADME/Tox using the MetaCore and MetaDrug platforms. Xenobiotica. 2006, 36 (1011): 877901. [http://dx.doi.org/10.1080/00498250600861660]View ArticlePubMedGoogle Scholar
 Kleinberg J, Tardos E: Algorithm Design. 2006, Boston, MA: PearsonGoogle Scholar
 Bienstock D, Goemans MX, SimchiLevi D, Williamson D: A note on the prizecollecting traveling salesman problem. Mathematical Programming. 1993, 59: 413420. 10.1007/BF01581256.View ArticleGoogle Scholar
 Karp RM: Reducibility among combinatorial problems. Complexity of Computer Computations. Edited by: Miller T. 1972, New York: Plenum Press, 85103.View ArticleGoogle Scholar
 Scott MS, Perkins T, Bunnell S, Pepin F, Thomas DY, Hallett M: Identifying Regulatory Subnetworks for a Set of Genes. Molecular & Cellular Proteomics. 2005, 4 (5): 683692. 10.1074/mcp.M400110MCP200. [http://www.mcponline.org/content/4/5/683.abstract]View ArticleGoogle Scholar
 Huang SSC, Fraenkel E: Integrating proteomic, transcriptional, and interactome data reveals hidden components of signaling and regulatory networks. Sci Signal. 2009, 2 (81): 40[http://dx.doi.org/10.1126/scisignal.2000350]View ArticleGoogle Scholar
 Dittrich MT, Klau GW, Rosenwald A, Dandekar T, Maller T: Identifying functional modules in protein  protein interaction networks: an integrated exact approach. Bioinformatics. 2008, 24 (13): 223231. 10.1093/bioinformatics/btn161. [http://bioinformatics.oxfordjournals.org/content/24/13/i223.abstract]View ArticleGoogle Scholar
 Ma'ayan A: Network integration and graph analysis in mammalian molecular systems biology. Systems Biology, IET. 2008, 2 (5): 206221. 10.1049/ietsyb:20070075.View ArticleGoogle Scholar
 Yosef N, Ungar L, Zalckvar E, Kimchi A, Kupiec M, Ruppin E, Sharan R: Toward accurate reconstruction of functional protein networks. Mol Syst Biol. 2009, 5: 248[http://dx.doi.org/10.1038/msb.2009.3]PubMed CentralView ArticlePubMedGoogle Scholar
 BaillyBechet M, Borgs C, Braunstein A, Chayes J, Dagkessamanskaia A, Francois JM, Zecchina R: Finding undetected protein associations in cell signaling by belief propagation. Proc Natl Acad Sci U S A. 2011, 108 (2): 882887. 10.1073/pnas.1004751108. [http://dx.doi.org/10.1073/pnas.1004751108]PubMed CentralView ArticlePubMedGoogle Scholar
 Beisser D, Klau GW, Dandekar T, Muller T, Dittrich MT: BioNet: an RPackage for the functional analysis of biological networks. Bioinformatics. 2010, 26 (8): 11291130. 10.1093/bioinformatics/btq089.View ArticlePubMedGoogle Scholar
 Tuncbag N, McCallum S, Huang SSC, Fraenkel E: SteinerNet: a web server for integrating 'omic' data to discover hidden components of response pathways. Nucleic Acids Res. 2012, [http://dx.doi.org/10.1093/nar/gks445]Google Scholar
 Takahashi H, Matsuyama A: An approximate solution for the Steiner problem in graphs. Math. Jap. 1980, 24: 573577.Google Scholar
 Brockschmidt FF, Heilmann S, Ellis JA, Eigelshoven S, Hanneken S, Herold C, Moebus S, Alblas MA, Lippke B, Kluck N, Priebe L, Degenhardt FA, Jamra RA, Meesters C, Joeckel KH, Erbel R, Harrap S, Schumacher J, Froehlich H, Kruse R, Hillmer AM, Becker T, Noethen MM: Susceptibility variants on chromosome 7p21.1 suggest HDAC9 as a new candidate gene for malepattern baldness. Br J Dermatol. 2011, 165 (6): 12931302. 10.1111/j.13652133.2011.10708.x. [http://dx.doi.org/10.1111/j.13652133.2011.10708.x]View ArticlePubMedGoogle Scholar
 Veer LJ V't, Dai H, van de Vijver MJ, He YD, Hart AA, Mao M, Peterse HL, van der Kooy K, Marton MJ, Witteveen AT, Schreiber GJ, Kerkhoven RM, Roberts C, Linsley PS, Bernards R, Friend SH: Gene expression profiling predicts clinical outcome of breast cancer. Nature. 2002, 415 (6871): 530536. 10.1038/415530a.View ArticleGoogle Scholar
 Wang Y, Klijn JG, Zhang Y, Sieuwerts AM, Look MP, Yang F, Talantov D, Timmermans M, Meijervan Gelder ME, Yu J, Jatkoe T, Berns EM, Atkins D, Foekens JA: Geneexpression pro les to predict distant metastasis of lymphnodenegative primary breast cancer. Lancet. 2005, 365 (9460): 671679. [http://dx.doi.org/10.1016/S01406736(05)179471]View ArticlePubMedGoogle Scholar
 Zhang JD, Wiemann S: KEGGgraph: a graph approach to KEGG PATHWAY in R and bioconductor. Bioinformatics. 2009, 25 (11): 14701471. 10.1093/bioinformatics/btp167. [http://bioinformatics.oxfordjournals.org/content/25/11/1470.abstract]PubMed CentralView ArticlePubMedGoogle Scholar
 Lawler EL: Combinatorial Optimization: Networks and Matroids. 2001, Mineloa, New York: Dover PublicationsGoogle Scholar
 Balakrishnan A, Patel NR: Problem reduction methods and a tree generation algorithm for the Steiner network problem. Networks. 1987, 17: 6585. 10.1002/net.3230170107.View ArticleGoogle Scholar
 Dreyfus RA SE: The Steiner problem in graphs. Networks. 1971, 1: 195207. 10.1002/net.3230010302.View ArticleGoogle Scholar
 Levin AY: Algorithm for the shortest connection of a group of graph vertices. Sov. Math. Dokl. 1971, 12: 14771481.Google Scholar
 Yang YY, Wing O: An algorithm for the wiring problem. Digest of the IEEE Int Symp on Electrical Networks. 1971, 14: 15Google Scholar
 Shore LRF ML, Gibbons PB: An algorithm for the Steiner problem in graphs. Networks. 1982, 12: 323333. 10.1002/net.3230120309.View ArticleGoogle Scholar
 Beasley JE: An algorithm for the Steiner problem in graphs. Networks. 1984, 14: 147159. 10.1002/net.3230140112.View ArticleGoogle Scholar
 Beasley JE: An SSTbased algorithm for the Steiner problem in graphs. Networks. 1989, 19: 116. 10.1002/net.3230190102.View ArticleGoogle Scholar
 Frank Hwang PW Dana R: Chapter 3 Exact Algorithms. The Steiner Tree Problem, Volume 53 of Annals of Discrete Mathematics. Edited by: Hwang DSR FK, Winter P. 1992, Elsevier, 125149. [http://www.sciencedirect.com/science/article/pii/S0167506008702000],Google Scholar
 Hakimi SL: Steiner's problem in graphs and its implications. Networks. 1971, 1 (2): 113133. 10.1002/net.3230010203. [http://dx.doi.org/10.1002/net.3230010203]View ArticleGoogle Scholar
 Voss S: Steiner 's problem in graphs: heuristic methods. Discrete Applied Mathematics. 1992, 40: 4572. 10.1016/0166218X(92)900212.View ArticleGoogle Scholar
 RaywardSmith VJ, Clare A: On finding Steiner vertices. Networks. 1986, 16: 283294. 10.1002/net.3230160305.View ArticleGoogle Scholar
 Winter P, Smith JM: Pathdistance heuristics for the Steiner problem in undirected networks. Algorithmica. 1992, 7: 309327. 10.1007/BF01758765.View ArticleGoogle Scholar
 Kruskal JB: On the Shortest Spanning Subtree of a Graph and the Traveling Salesman Problem. Proceedings of the American Mathematical Society, Volume 7. 1956, 4850.Google Scholar
 Wang S: A multiple source algorithm for suboptimum Steiner trees in graphs. Proc. Int. Workshop on GraphTheoretic Concepts in Computer Science. Edited by: Noltemeier H. 1985, Wurzburg, 387396.Google Scholar
 Widmayer P: Fast approximation algorithms for Steiner's problem in graphs. Master's thesis, (Habilitation Thesis, Inst, fur Angewandte Informatik und Formale Beschreibungsverfahren. 1986, Karlsruhe: Univ, 1987Google Scholar
 Plesnik J: Worstcase relative performances of heuristics for the Steiner problem in graphs. Acta Math. Univ Comenianae. 1991, 60: 269284.Google Scholar
 Culhane AC, Schroeder MS, Sultana R, Picard SC, Martinelli EN, Kelly C, HaibeKains B, Kapushesky M, Pierre AAS, Flahive W, Picard KC, Gusenleitner D, Papenhausen G, O'Connor N, Correll M, Quackenbush J: GeneSigDB: a manually curated database and resource for analysis of gene expression signatures. Nucleic Acids Res. 2012, 40: 10601066. 10.1093/nar/gkr901. [http://dx.doi.org/10.1093/nar/gkr901]View ArticleGoogle Scholar
 The Gene Ontology Consortium: The Gene Ontology (GO) database and informatics resource. Nucleic Acids Research. 2004, 32: 58261. 10.1093/nar/gnh063.View ArticleGoogle Scholar
 Falcon S, Gentleman R: Using GOstats to test gene lists for GO term association. Bioinformatics. 2007, 23 (2): 257258. 10.1093/bioinformatics/btl567. [http://dx.doi.org/10.1093/bioinformatics/btl567]View ArticlePubMedGoogle Scholar
 Moscow JA, Townsend AJ, Cowan KH: Elevation of pi class glutathione Stransferase activity in human breast cancer cells by transfection of the GST pi gene and its effect on sensitivity to toxins. Mol Pharmacol. 1989, 36: 2228.PubMedGoogle Scholar
 DeCensi A, Gennari A: Insulin breast cancer connection: confirmatory data set the stage for better care. J Clin Oncol. 2011, 29: 710.1200/JCO.2010.32.3022.View ArticlePubMedGoogle Scholar
Copyright
This article is published under license to BioMed Central Ltd. This is an Open Access article distributed under the terms of the Creative Commons Attribution License (http://creativecommons.org/licenses/by/2.0), which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.