BACKGROUND: Integrating and analyzing heterogeneous genome-scale data is a huge 
algorithmic challenge for modern systems biology. Bipartite graphs can be useful 
for representing relationships across pairs of disparate data types, with the 
interpretation of these relationships accomplished through an enumeration of 
maximal bicliques. Most previously-known techniques are generally ill-suited to 
this foundational task, because they are relatively inefficient and without 
effective scaling. In this paper, a powerful new algorithm is described that 
produces all maximal bicliques in a bipartite graph. Unlike most previous 
approaches, the new method neither places undue restrictions on its input nor 
inflates the problem size. Efficiency is achieved through an innovative 
exploitation of bipartite graph structure, and through computational reductions 
that rapidly eliminate non-maximal candidates from the search space. An 
iterative selection of vertices for consideration based on non-decreasing common 
neighborhood sizes boosts efficiency and leads to more balanced recursion trees.
RESULTS: The new technique is implemented and compared to previously published 
approaches from graph theory and data mining. Formal time and space bounds are 
derived. Experiments are performed on both random graphs and graphs constructed 
from functional genomics data. It is shown that the new method substantially 
outperforms the best previous alternatives.
CONCLUSIONS: The new method is streamlined, efficient, and particularly 
well-suited to the study of huge and diverse biological data. A robust 
implementation has been incorporated into GeneWeaver, an online tool for 
integrating and analyzing functional genomics experiments, available at 
http://geneweaver.org. The enormous increase in scalability it provides empowers 
users to study complex and previously unassailable gene-set associations between 
genes and their biological functions in a hierarchical fashion and on a 
genome-wide scale. This practical computational resource is adaptable to almost 
any applications environment in which bipartite graphs can be used to model 
relationships between pairs of heterogeneous entities.