This section describes the functionalities of BiGGEsTS from a biology/medical researcher's perspective, providing further insight into the underlying methods [see Additional file 1] [see Additional file 2] [see Additional file 3]. The graphical user interface (GUI) includes a set of tabs and three panels (Figure 1). Main functionalities are directly selected in the tabs and guide the researcher through a complete process of analysis: 1) input and preprocessing of expression data, 2) identification of coexpressed genes in specific subsets of time points using biclustering (biclusters), 3) post-processing of biclusters in order to rank the results, 4) usage of exploratory analysis tools (visualization options, GO annotations and functional enrichment of GO terms).
Input and preprocessing of time series gene expression data
The input of expression time series is straightforward (Figure 1(a)) and is usually followed by a set of preprocessing steps (Figure 1(b)). These handle occasional and systematic errors, reduce noise, and prepare data to be analyzed.
Occasional errors may occur when measuring the abundance of mRNA in cells, leading to missing values, not always supported by biclustering algorithms. This can be addressed by filtering all genes with missing values, thus eliminating all rows with at least one missing value, and may be regarded as a good strategy to reduce noise. However, when analyzing a small number of genes, removing some of them can lead to a significant reduction in the dimension of the dataset, potentially compromising further analysis. The tradeoff between the elimination of missing values and the dimension of the dataset is usually mitigated by establishing an upper bound for the percentage of missing values allowed per gene. Genes with percentages higher than a user-defined threshold are filtered. The remaining missing values must be filled.
Systematic errors, on the other hand, affect every measurement action and are associated with the differences between the experimental settings of each trial. Sources of this kind of errors include the different incorporation efficiency of dyes, and the different scanning and processing parameters of distinct experiments. Normalization is a widely used technique, which attempts to compensate for these systematical differences between time points and highlight the similarities and differences in the expression profiles. Additionally, a smoothing algorithm acts as a low-pass filter, attenuating the effect of outliers. Depending on the biclustering algorithm, it may be necessary to discretize data, reducing the range of expression values to an adequate set of discrete values.
Biclustering
Three biclustering algorithms are available: CCC-Biclustering [6], e-CCC-Biclustering [7] and CC-TSB [5] (Figure 2(a)). The first two process discretized matrices, while the third uses real-valued data. CCC-Biclustering uses a generalized suffix tree to identify, in time linear on the size of the expression matrix, all maximal biclusters with contiguous columns that exhibit coherent expression evolutions over time. In a CCC-Bicluster, all genes have exactly the same discretized expression pattern.
e-CCC-Biclustering extracts all maximal CCC-Biclusters with approximate expression patterns in time polynomial on the size of the expression matrix. The expression patterns in an e-CCC-Bicluster may vary from one gene to another, as long as the number of errors between each pattern and the pattern profile does not exceed a predefined value. Two kinds of errors are supported: general and restricted. General errors identify measurement errors and allow symbols to be substituted by any other symbol in the discretization alphabet. Restricted errors identify discretization errors and only consider as valid the substitutions of symbols by a predefined number of neighbors in the discretization alphabet.
Both CCC-Biclustering and e-CCC-Biclustering are provided with three additional extensions that identify biclusters with shifted/scaled, anti-correlated and time-lagged patterns [23]. Sometimes, distinct genes exhibit similar expression evolutions at different expression levels, thus not reflecting a similar pattern after discretization. This problem is addressed by identifying biclusters with shifted patterns. Anti-correlation allows genes with opposite expression patterns, in a set of consecutive time points, to be included in the same bicluster. The time-lagged approach identifies genes that exhibit similar expression patterns starting at different time points, enabling the identification of activation/inhibition delays.
CC-TSB is an adaptation of the biclustering algorithm proposed by Cheng and Church [2]. This heuristic approach uses the mean squared residue (MSR) as merit function and iteratively alternates the addition/removal of genes/time points, forcing the MSR to reduce. The addition/removal of time points is restricted to discover only biclusters with contiguous columns.
Post-processing
Applying biclustering to expression data often yields a large number of biclusters. Since analyzing all is usually prohibitive, post-processing techniques are performed in order to rank biclusters according to their relevance. Several methods are available to filter and sort biclusters based on numerical and statistical criteria (Figure 2(b)).
Biological analysis
Biclustering groups genes and conditions based on relations inferred from data, relying strictly on computational methods. Researchers are usually interested in analyzing the results looking for statistically significant biological phenomena. This significance can be assessed using Ontologizer's term-for-term analysis [24], which computes the functional enrichment of the genes in the biclusters by identifying the overrepresented GO terms. In a first step, GO annotations are extracted requiring two distinct files (downloadable from the GO repository if not available) containing the complete ontology and organism-dependent annotations. Term-for-term analysis is then applied to compute a p-value for each GO term. Such p-value is calculated with respect to the null hypothesis that the inclusion of genes follows a hypergeometric distribution, and measures the statistical significance of each term by computing the ratio of the frequencies of annotated genes in the bicluster and in the complete dataset. The Bonferroni correction for multiple testing is applied. The lower the p-value, the more significant the term is. According to standard statistical practice, terms with a corrected p-value lower than 0.05 and 0.01 are considered significant and highly significant, respectively.
Visualization
A visualization module provides different graphical representations of expression time series, enhancing their most important features: tables of values, colors and symbols; dendrograms; expression charts; pattern charts; tables of GO terms and functional enrichment; and graphs of enriched terms.
Expression matrices and heatmaps
Expression matrices are displayed as tables of values (Figure 3(a)). Tables of colors are commonly known as heatmaps. They resemble tables of values, although each cell is given a different color according to the expression value it contains (Figure 3(b)). Tables of symbols are heatmaps for expression matrices with discrete values. Each cell is given a different color depending on the discretization symbol (Figure 3(c)). Expression tables share additional functionalities. They can be sorted by the values of a given column by clicking on the corresponding table header, provide access to the GO terms that annotate each gene by clicking on its row, and be exported as PNG or JPEG image files by clicking the right button of the mouse over the table and selecting the "Export as image" menu item. GO terms annotating a given gene are displayed in a popup (Figure 3(d)). Since this information is automatically parsed from the GO files (using Ontologizer), no annotations are shown if the GO files are not available. In the latter case, GO files can be downloaded from the GO repository when an Internet connection is available.
Dendrograms
Dendrograms are branching tree-like diagrams used for representing similarity relationships between the genes/time points in the expression data (Figure 3(e)). The similarity hierarchy is obtained using agglomerative hierarchical clustering to group genes and/or time points. At each step, the cluster pairwise similarity is used to decide which clusters to merge. For single element clusters, this similarity is computed using a distance measure (Euclidean or cityblock) or a correlation coefficient (uncentered, Pearson's, absolute uncentered, absolute Pearson's, Spearman's or Kendall's correlation). Otherwise, a single-linkage, complete-linkage, average-linkage or centroid-linkage approach is used. Java TreeView [25] is used to interpret hierarchical clustering results and display the dendrograms.
Expression and pattern charts
Expression and pattern charts show the evolution of the expression level of the genes in the biclusters over time, using the corresponding submatrices. Expression charts are obtained using real-valued matrices, while pattern charts are generated from discretized matrices (Figure 4).
Expression charts can be displayed using either the subset of time points in the bicluster, or all the time points in the dataset. The latter are particularly suitable for highlighting the coherent behavior of the genes in the bicluster time points as opposed to the uncorrelated behavior in the remaining time points. Both expression and pattern charts provide a context menu with extra functionalities, including displaying and modifying chart properties, saving chart to an image file, printing, and zooming in or out.
Go terms and functional enrichment
The GO terms that annotate the genes in the dataset can be displayed in a table, where each row corresponds to a GO term and contains: the GO term ID, the term name, and the total number of genes annotated with it. In the case of a bicluster (Figure 5(a)), each row in the table further includes the number of genes in the bicluster annotated with the term, the p-value computed using the term-for-term analysis, and its Bonferroni corrected p-value. Enriched terms, given a threshold (default value is 0.01), are highlighted. Additionally, the list of genes annotated with each term is displayed in a popup window by clicking the corresponding row using the left button of the mouse.
Graphs of enriched terms
Term-for-term results can be used to generate tree structured graphs highlighting the enriched terms in each of the three GO ontologies (Figure 5(b)). Graphs of enriched terms are generated using Ontologizer [24], which outputs the structure of the graph into a text file. Graphviz [26] is used to convert the text file into an SVG file describing the same graphical structure using the XML standard. Finally, the Batik SVG Toolkit [27] is used to interpret the SVG file and display the corresponding image. The graph with the enriched terms can be zoomed in or out and saved as a raster (PNG) or vector (SVG) image file.