<title>Introduction</title> <p>The vast amount and increasing variety of genomic and proteomic data generated for model organisms creates an opportunity for <italic>in silico </italic>prediction of gene function through extrapolation of the functional properties of known genes. Genes with similar patterns of expression [##REF##12934013##1##], synthetic lethality [##REF##15982408##2##], or chemical sensitivity [##REF##10080179##3##] often have similar functions. Additionally, function tends to be shared among genes whose gene products interact physically [##REF##10688190##4##], are part of the same complex [##REF##12000970##5##], or have similar three-dimensional structures [##REF##16410325##6##]. Computational analyses have also revealed shared function among genes with similar phylogenetic profiles [##REF##10200254##7##] or with shared protein domains [##REF##10329133##8##]. More accurate predictions can be made by combining multiple heterogeneous sources of genomic and proteomic data [##REF##14992512##9##]. Collectively, these observations have led to functional categorization of a number of previously uncharacterized genes using the so-called 'guilt-by-association' principle [##REF##10613842##10##, ####REF##12089522##11##, ##REF##15588312##12####15588312##12##].</p> <p>Algorithms that predict gene function using the guilt-by-association principle do so by extending a 'seed list' of genes known to have the given function by adding other genes highly associated with the seed list in one or more genomic and proteomic data sources. These algorithms typically compute a 'functional association network' to represent each dataset; in this network the nodes correspond to genes or proteins and the undirected links (or edges) are weighted according to evidence of co-functionality implied by the data source. Types of functional association networks include kernels used by support vector machines (SVMs) [##REF##14992512##9##], functional linkage networks [##REF##10573421##13##], and protein-protein linkage maps [##REF##16420673##14##]. Individual functional association networks are often combined to generate a composite functional association network that summarizes all of the evidence of co-functionality. This network is then used as input to an algorithm that scores each gene based on its proximity to the genes in the seed list. When employed on multiple complementary data sources, these algorithms can accurately predict previously annotated gene functions in blind tests [##UREF##0##15##], suggesting that their predictions for unannotated genes are also quite accurate.</p> <p>Despite these successes, guilt-by-association algorithms have yet to achieve widespread use in gene annotation or as sources of new hypotheses about gene function; to do so, their predictions need to become more accessible, more accurate, and more regularly updated. In principle, all available data should be used when generating hypotheses about gene function; however, compiling a large number of heterogeneous data sources, generating functional association networks to represent these sources, and then mapping gene identifiers among the networks is a complex and onerous task that is best handled by specialists. Centrally managed web-based 'prediction servers' are an efficient strategy to ensure that casual users have access to the best available predictions.</p> <p>However, maintaining accurate and up-to-date prediction servers can be computationally prohibitive. Though a large number of algorithms have been developed to predict the function of unannotated genes by combining heterogeneous data sources (see [##REF##17353930##16##] for a recent review), the most accurate of these algorithms have long running times, which can range from minutes [##REF##16204126##17##] to hours [##REF##14992512##9##] on yeast. Larger mammalian genomes increase the run time of these algorithms even more. As such, these algorithms cannot feasibly be run online and instead their predictions are made offline based on sets of pre-defined seed lists derived, for example, from Gene Ontology (GO) annotations [##REF##10802651##18##]. However, because new data and annotations are being generated at a rapid rate, maintaining an up-to-date database of the best available predictions for all possible functions requires substantial and potentially unavailable computational resources.</p> <p>Due to this limitation, most prediction servers sacrifice accuracy for speed by relying on a single, or a small number of, pre-computed composite functional association networks and using simple heuristics to score genes based on a given seed list (for example, see [##REF##10573421##13##,##REF##16420673##14##,##REF##17098935##19##]). While the scoring heuristics are fast enough to provide online predictions for arbitrary seed lists, we will show that their predictions are much less accurate than more advanced methods. Furthermore, by using a single pre-computed network, these servers do not take advantage of the fact that different data sources are more relevant for different categories of gene function [##REF##15982408##2##,##REF##14992512##9##] and are not extensible to new or user-supplied data sources.</p> <p>Here we demonstrate that it is not necessary to surrender either accuracy nor flexibility when building a prediction server by showing that GeneMANIA (Multiple Association Network Integration Algorithm) can, in seconds, generate genome-wide predictions that achieve state-of-the-art accuracy on arbitrary seed gene lists without relying on a pre-specified association network. We have achieved this goal through a series of algorithmic and technical advances that we have encapsulated in a new software package. With GeneMANIA, it is no longer necessary to maintain lists of <italic>in silico </italic>predictions of gene function because they can be recomputed as needed.</p>
<title>Materials and methods</title> <title>Software</title> <p>The GeneMANIA prototype webserver is available at [##UREF##6##34##].</p> <title>Yeast benchmark datasets</title> <p>To perform function prediction in yeast with the GeneMANIA algorithm, we used five yeast functional association networks (used in [##REF##14992512##9##] and [##REF##16204126##17##] and available from [##UREF##5##33##]), constructed an extended yeast benchmark consisting of 15 association networks and 400 GO functional classes, and used the bioPIXIE network (obtained from [##UREF##8##36##]).</p> <p>We constructed 15 yeast association networks from various genomics data sources (supplementary Table 1 in Additional data file ##SUPPL##1##2##). In addition, we also downloaded the GO association file from the <italic>Saccharomyces </italic>Genome Database on (1 June 2006) and obtained a set of 400 functional classes that we grouped according to their specificity level and GO branch. In particular, we randomly selected 100 functional classes from each specificity level (3 to 10, 11 to 30, 31 to 100, and 101 to 300) and organized them based on their GO branch. In addition, the 5 yeast network benchmark consists of 13 Munich Information Center for Protein Sequences (MIPS) functional classes. We have included the prediction performance on these functional classes in supplementary Figures 3 and 5 in Additional data file ##SUPPL##0##1##.</p> <p>In addition to the above, we investigated the prediction performance of GeneMANIA using the bioPIXIE [##REF##16420673##14##] network (we refer to this method as GeneMANAI<sup>bioPIXIE</sup>). bioPIXIE is a composite association network that has been constructed from 925 referenced data sources. It contains 15,551,081 functional associations between 7,034 yeast genes.</p> <title>Zhang and coworkers mouse benchmark data</title> <p>We obtained the mouse tissue expression benchmark data from [##UREF##9##37##]. For comparison of GeneMANIA with the benchmark data from [##REF##15588312##12##], following their experimental framework, we considered 9,499 genes and 992 GO categories.</p> <title>MouseFunc I benchmark data</title> <p>We constructed ten association networks from the MouseFunc I benchmark data (as detailed below). We used minor variations of GeneMANIA for our evaluations: GeneMANIA<sup>Entry-1</sup>, GeneMANIA<sup>Entry-1</sup>, and GeneMANIA<sup>WS</sup>.</p> <p>In GeneMANIA<sup>Entry-1 </sup>we used unregularized linear regression to combine association networks, and we used all genes with any GO annotations that are not annotated to the functional class of interest as negative examples.</p> <p>In GeneMANIA<sup>Entry-2 </sup>we used ridge regression to combine association networks, and we set the prior weight vector <underline><italic>α</italic></underline><sub><italic>h </italic></sub>for network <italic>h </italic>to the average weight that network <italic>h </italic>obtained when using ordinary linear regression in all predictions from the same GO branch. We define negative examples for each class of interest <italic>g </italic>as those genes that have annotations to any class that shares a parent with <italic>g</italic>. In addition, we included three GO networks that were constructed from three GO ontologies.</p> <p>GeneMANIA<sup>WS </sup>is the same as GeneMANIA<sup>Entry-1 </sup>except that we used ridge regression, setting all of the elements of the mean prior weight vector to <italic>1</italic>/<italic>d </italic>where <italic>d </italic>is the number of interaction networks.</p> <title>Building functional association networks</title> <p>When constructing association networks, we distinguish two types of data: binary and continuous valued. In binary datasets, for a given feature, all zeros were replaced with <italic>log</italic>(1 - <italic>β</italic>) and ones were replaced with, -<italic>log</italic>(<italic>β</italic>), where <italic>β </italic>is the proportion of examples for which the given feature has a value of 1. This allows for the emphasis of similarities between genes that share 'uncommon' features. Subsequently, for both types of data, we constructed similarity matrices using the Pearson correlation coefficient to measure pair-wise similarities. To keep our association networks sparse, for each gene we set all of its links (association weights), except for its top 50 links, to zero.</p> <title>Mouse GO networks</title> <p>For predicting gene function on the MouseFunc I benchmark, in addition to the ten association networks that we constructed from the genomics and proteomics data, we constructed three GO networks. We represented a gene's annotations to a given branch of GO as a binary vector whose <italic>g</italic><sup><italic>th </italic></sup>element is set to '1' if the gene was annotated in GO category <italic>g</italic>, or any of the descendants of <italic>g </italic>in the GO hierarchy, and is set to '0' otherwise. We constructed one GO network for each branch of the hierarchy. However, when predicting GO category <italic>g </italic>in ontology BP (CC, or MF), we would construct the BP GO network by not including any annotations in <italic>g </italic>or its descendents.</p> <title>Network normalization</title> <p>We normalize all our functional association networks and the composite process-specific network by dividing each entry <italic>W</italic><sub><italic>ij</italic></sub>, the association between node <italic>i </italic>and node <italic>j</italic>, by the square root of the product of the sum of the elements of row <italic>i </italic>and the sum of the elements in column <italic>j </italic>of the unnormalized network.</p> <title>Figure of merit for accuracy</title> <p>We evaluated the performance of GeneMANIA using the AUC.</p> <p>ROC is a graphical plot of true positive rate (sensitivity) as a function of false positive rate (1 - specificity) for a binary classifier system as its discrimination threshold is varied; a perfect classifier would yield an AUC of 1 and a random classifier yields an AUC of 0.5 [##REF##16718863##38##]. 1 - AUC is a more appropriate measure because it corresponds to the expected portion of the negatives that are higher than a random positive - while a gain of 0.90 to 0.95 AUC seems negligible, it corresponds to a two-fold reduction in the expected portion of negatives scoring higher than a random positive (1 - AUC).</p> <title>GeneMANIA label propagation algorithm</title> <p>Here we denote the vector of discriminant values by <bold><italic>f</italic></bold>, the bias vector by <bold><italic>y</italic></bold>, and the matrix derived from the association network by W. We can represent an association network over <italic>n </italic>genes by a symmetric matrix W whose non-zero entries indicate the associations in the network. In particular, the (<italic>i</italic>, <italic>j</italic>)<sup>th </sup>element of W, <italic>W</italic><sub><italic>ij</italic></sub>, is the association between genes <italic>i </italic>and <italic>j</italic>, with <italic>W</italic><sub><italic>ij </italic></sub>= 0 indicating no edge between genes <italic>i </italic>and <italic>j</italic>. To ensure that all associations are non-negative, we set any negative associations to zero. For each binary classification task, we have <italic>l </italic>labeled genes and <italic>u </italic>unlabeled genes (<italic>n </italic>= l + <italic>u</italic>). We use these labels to specify a bias vector <bold><italic>y</italic></bold>, where <italic>y </italic>∈ {+1, <italic>k</italic>, -1}, indicating that gene <italic>i </italic>is positive, unlabeled, or negative, respectively. In the GeneMANIA label propagation algorithm:</p> <p></p> <p>where <italic>n</italic><sup>+ </sup>and <italic>n</italic><sup>- </sup>are the numbers of positive and negative genes, respectively. The discriminant values are computed by solving the following objective function:</p> <p></p> <p>which ensures that the discriminant values of positive and negative genes remain close to their label bias (first term in the summation) and the discriminant values of genes that are associated (genes that have positive <italic>w</italic><sub><italic>ij</italic></sub>) are not too different from each other (second term in the summation). Equation 1 can be written in matrix notation as:</p> <p></p> <p>where <italic>L </italic>= <italic>D </italic>- <italic>W </italic>is called the graph Laplacian matrix and <italic>D = diag</italic>(<italic>d</italic><sub><italic>i</italic></sub>) (that is, D is a diagonal matrix with <italic>D</italic><sub><italic>ii </italic></sub>= <italic>d</italic><sub><italic>i </italic></sub>and <italic>D</italic><sub><italic>ij </italic></sub>= 0 if <italic>i </italic>≠ <italic>j</italic>) and <italic>d</italic><sub><italic>i </italic></sub>= Σ<sub><italic>j</italic></sub><italic>w</italic><sub><italic>ij</italic></sub>. Since the association matrix is symmetric, by definition, <italic>L </italic>is symmetric and semi-definite positive and equation 2 is a quadratic optimization problem with a global minimum. In fact, the solution to equation 2 can be obtained by solving a sparse linear system <italic>y </italic>= (<bold><italic>I </italic></bold>- <italic>L</italic>)<bold><italic>f</italic></bold>.</p> <title>GeneMANIA network combination</title> <p>Given <italic>d </italic>association networks encoded as matrices <italic>W</italic><sub>1</sub>,.., <italic>W</italic><sub><italic>d</italic></sub>, we form a composite network as:</p> <p></p> <p>where the vector of network weights, <bold><italic>α </italic></bold>= [<italic>α</italic><sub>1</sub>, <italic>α</italic><sub>2</sub>,..., <italic>α</italic><sub><italic>d</italic></sub>], is customized to a particular prediction task by choosing it to maximize a form of kernel-target alignment [##UREF##10##39##] between the composite network and a 'target' network constructed from the class label vector <bold><italic>y</italic></bold>.</p> <p>Specifically, to obtain the weight vector <bold><italic>α</italic></bold>, we solve the ridge regression problem:</p> <p></p> <p>where each column Ω<sub><italic>h </italic></sub>of Ω constructed from the matrix <italic>W</italic><sub><italic>h </italic></sub>by collecting its elements <italic>W</italic><sub><italic>ij </italic></sub>for which either: one of the genes <italic>i </italic>or <italic>j </italic>is labeled positive and the other negative; or both are labeled positives. Each element of the vector <bold><italic>t </italic></bold>also corresponds to either a pair of negatively and positively labeled genes or two positively labeled genes. Elements of <bold><italic>t </italic></bold>corresponding to a positive and a negative are set to -<italic>n</italic><sup>+ </sup>× <italic>n</italic><sup>- </sup>and those corresponding to two positives are set to <italic>n</italic><sup>- </sup>× <italic>n</italic><sup>-</sup>, where <italic>n</italic><sup>+ </sup>and <italic>n</italic><sup>- </sup>are the numbers of positively and negatively labeled genes, respectively. The same row ordering is used for all Ω<sub><italic>h </italic></sub>and <bold><italic>t</italic></bold>, so that each row corresponds to a single <italic>i</italic>, <italic>j </italic>gene pair. When solving equation 3, we also include a bias term, <italic>α</italic><sub>0</sub>, by adding a column of '1's, Ω<sub>0</sub>, to Ω and discard this bias term when constructing the composite association network. Intuitively, we are attempting to choose network weights such that pairs of positively labeled genes have high similarity, pairs containing a positive and negative gene have low similarity, and pairs of negatively labeled genes have no influence in determining the weights.</p> <p>Given the prior mean vector <underline><bold><italic>α</italic></bold></underline> and precision matrix <underline><italic>S</italic></underline>, the solution to equation 3 is:</p> <p></p> <p>where Ω<sup><italic>t </italic></sup>indicates the transpose of Ω In the text, we describe two different methods to set <underline><bold><italic>α</italic></bold></underline>, and we specify <underline><italic>S</italic></underline> by setting all its elements to zero, except for its diagonal elements, which we specify by setting <underline><italic>S</italic></underline><sub><italic>hh </italic></sub>= trace(<italic>W</italic><sub><italic>h</italic></sub><sup><italic>t</italic></sup><italic>W</italic><sub><italic>h</italic></sub>). If we are solving the unregularized version of this problem, we simply set all of the elements of <underline><italic>S</italic></underline> to zero.</p> <p>To avoid negative network weights, if after solving for <bold><italic>α</italic></bold>, <italic>α</italic><sub><italic>h </italic></sub>&lt; 0 for any <italic>h </italic>&gt; <italic>0</italic>, then we set <italic>α</italic><sub><italic>h </italic></sub>= 0, remove Ω<sub><italic>h </italic></sub>from Ω, and redo the ridge regression. If through this procedure, <italic>α</italic><sub><italic>h </italic></sub>= 0 for all <italic>h </italic>&gt; 0, we set <italic>α</italic><sub><italic>h </italic></sub>= 1/<italic>d </italic>for all <italic>h </italic>&gt; 0.</p> <p>The time complexity of this algorithm scales at worst quadratically in <italic>n</italic>. Computing equation 3 requires O(<italic>n </italic>× <italic>n</italic><sup>+ </sup>× <italic>d</italic>) time to calculate Ω<sup><italic>t</italic></sup>Ω and the matrix inversion can be done in O(<italic>d</italic><sup>3</sup>) time.</p> <title>The TSS algorithm</title> <p>We downloaded the TSS algorithm from [##UREF##5##33##]. There are three parameters to be set: <italic>C </italic>is the constraint that enforces an upper-bound on the sum of the network weights (that is, ), <italic>C</italic><sub>0 </sub>enforces and upper-bound on individual network weights (that is, 0 ≤ <italic>α</italic><sub><italic>k </italic></sub>≤ <italic>C</italic><sub>0</sub>), and <italic>const </italic>is a parameter to adjust for the class imbalances. In the code provided by [##UREF##5##33##], the parameters <italic>C </italic>and <italic>C</italic><sub>0 </sub>have been previously optimized for function prediction in the 13 MIPS categories for the five yeast network input. For the 400 GO category yeast benchmark, we set these parameters to their default values (that is, <italic>C</italic><sub>0 </sub>= 0.4).</p> <title>bioPIXIE probabilistic graph search algorithm</title> <p>Given a seed list of positive genes, the probabilistic graph search algorithm adds two sets of genes to it. The first set contains the <italic>n</italic><sub>1 </sub>genes with the highest total association weight to the seed list and the second set contains the <italic>n</italic><sub>2 </sub>genes with highest total association weights to the first set. In [##REF##16420673##14##], the authors set <italic>n</italic><sub>1 </sub>to be between 10 and 20 and <italic>n</italic><sub>2 </sub>to be 40 - <italic>n</italic><sub>1</sub>. In our implementation of [##REF##16420673##14##], we set both <italic>n</italic><sub>1 </sub>and <italic>n</italic><sub>2 </sub>to 20. We chose these two parameters empirically, by comparing several settings in the suggested range. Our reported results are robust to slight variation of these two parameters.</p>
<title>Results</title> <p>The GeneMANIA algorithm consists of two parts: an algorithm, based on linear regression, for calculating a single, composite functional association network from multiple networks derived from different genomic or proteomic data sources; and a label propagation algorithm for predicting gene function given this composite network. Below we describe the two parts of the GeneMANIA algorithm individually. We evaluate GeneMANIA on yeast benchmarks as well as the MouseFunc I benchmark.</p> <title>GeneMANIA label propagation</title> <p>Gaussian field label propagation algorithms for binary classification take as input an association network, a list of nodes with positive labels, possibly a list of nodes with negative labels, and initial label bias values. For gene function prediction, each gene is associated with a single node and nodes representing genes in the seed list (that is, positive genes) are assigned an initial label bias value of +1, and those representing genes that are deemed negative examples are assigned an initial bias value of -1. In the Results section, we explore a couple of strategies to defining negative examples; here we will assume that these examples are provided. GeneMANIA label propagation differs from [##UREF##1##22##] in how we assign the label bias to unlabeled genes, which are those that appear neither on the seed list nor among the negative examples.</p> <p>Given this input, label propagation algorithms assign a discriminant value to each node. These discriminant values are determined by letting the initial label bias of nodes propagate through the association network to nearby nodes. To account for potential noise in the initial labelings, GeneMANIA label propagation, like [##UREF##1##22##], allows the discriminant values assigned to positively and negatively labeled nodes to deviate from their initial biases.</p> <p>Our label propagation algorithm assigns discriminant values by finding those that minimize a cost function that penalizes both differences between the discriminant values of neighboring nodes in the network as well as differences between the discriminant values of nodes and their label bias (see Materials and methods for details). This cost function allows information about the node labels to propagate through the network to affect the discriminant values of genes that are not directly connected to the seed list. As such, the initial bias values of labeled and unlabeled nodes are important in determining their discriminant values and those of their neighbors; to account for the fact that only a small portion of the genes are expected to be labeled as positive, in the GeneMANIA algorithm we set the initial bias of unlabeled nodes to be the average bias of the labeled nodes: , where <italic>n</italic><sup>+ </sup>is the number of positive and <italic>n</italic><sup>- </sup>is the number of negative examples.</p> <p>When the number of positively and negatively labeled genes is equal, the GeneMANIA label propagation algorithm is identical to that of Zhou and coworkers [##UREF##1##22##] (hereafter ZBLWS), and similar to the original Gaussian fields label propagation algorithm [##UREF##2##23##], since they both assign an initial label bias of 0 to the unlabeled nodes. However, in gene function prediction problems, the number of positives is almost always only a very small proportion of the total number of genes and our method of setting these label biases makes a dramatic improvement in prediction accuracy in these cases (Figure ##FIG##0##1##).</p> <title>Efficient implementation of GeneMANIA label propagation for large genomes</title> <p>In GeneMANIA, label propagation on the composite association network is the most time-consuming step. Here we describe how we implemented this algorithm in order make it more efficient.</p> <p>The discriminant values resulting from GeneMANIA label propagation can be calculated by solving a system of linear equations, <bold><italic>y </italic></bold>= <italic>A</italic><bold><italic>f</italic></bold>, for <bold><italic>f</italic></bold>, the vector of discriminant values, given <italic>A</italic>, the coefficient matrix (whose derivation from the association network weights is described in Materials and methods) and <bold><italic>y</italic></bold>, the vector of node label biases. While in principle this system can be easily solved by multiplying the inverse of the coefficient matrix by <bold><italic>y</italic></bold>, we employ a conjugate gradient (CG) method to solve this system that makes efficient use of CPU processing time and computer memory resources, especially for large genomes.</p> <p>To show why the CG method is well-suited for this problem, we will briefly describe the algorithm. The CG method iteratively improves an estimate, <bold><italic>f</italic></bold><sup><bold><italic>t</italic></bold></sup>, of a solution to the linear system as follows: at each iteration <italic>t</italic>, the current estimate, <bold><italic>f</italic></bold><sup><bold><italic>t</italic></bold></sup>, is multiplied by the matrix <italic>A</italic>. If the result of this matrix multiplication <bold><italic>y</italic></bold><sup><bold><italic>t </italic></bold></sup>= <italic>A</italic><bold><italic>f</italic></bold><sup><bold><italic>t </italic></bold></sup>is equal to <bold><italic>y </italic></bold>then <bold><italic>f</italic></bold><sup><bold><italic>t </italic></bold></sup>is a correct solution. On the other hand, if <bold><italic>y</italic></bold><sup><bold><italic>t </italic></bold></sup>does not equal <bold><italic>y </italic></bold>then the CG method calculates a new estimate, <bold><italic>f</italic></bold><sup><bold><italic>t</italic>+1</bold></sup>, based on the difference between <bold><italic>y</italic></bold><sup><bold><italic>t </italic></bold></sup>and <bold><italic>y</italic></bold>. Calculating <bold><italic>f</italic></bold><sup><bold><italic>t</italic>+1 </bold></sup>requires performing another matrix multiplication between <italic>A </italic>and a vector with the same number of elements as <bold><italic>f</italic></bold><sup><bold><italic>t</italic></bold></sup>. The new estimate, <bold><italic>f</italic></bold><sup><bold><italic>t</italic>+1</bold></sup>, is guaranteed to be more accurate than <bold><italic>f</italic></bold><sup><bold><italic>t </italic></bold></sup>[##UREF##3##29##] and, starting from a random estimate of <bold><italic>f</italic></bold>, the CG method is guaranteed to converge to a correct solution after <italic>n </italic>iterations, where <italic>n </italic>is the number of nodes in the network. In practice, however, the CG method can converge in many fewer iterations.</p> <p>By reducing the number, <italic>m</italic>, of non-zero elements in <italic>A</italic>, we can reduce the runtime of the CG method for label propagation. The runtime of each CG iteration is proportional to <italic>m</italic>, which is equal to the number of edges plus the number of nodes in the functional association network that <italic>A </italic>represents. Many types of functional association networks are sparsely connected, and those that are not, such as networks derived from molecular profiling data, can be made sparse with little resulting impact on the performance of GeneMANIA (Figure ##FIG##1##2##). In contrast to the CG method, the run times of standard methods for solving linear systems, like Gaussian elimination, depend on the number of potential connections, which can be orders of magnitude larger than the number of actual ones.</p> <p>Using the CG method for label propagation leads to further time reductions because it is possible to get very close to the exact solution with only a fraction of the full number of required iterations. Indeed, we found that for networks with sizes ranging from 1,000 nodes to 20,000 nodes, on average less than 20 CG iterations were needed to derive a solution that is within the computer round-off error of the exact solution (Figure ##FIG##2##3##). Because there does not appear to be any relationship between network size and number of CG iterations required to reach a solution in our application, in practice, the running time of our label propagation algorithm depends only upon <italic>m</italic>, in contrast to other methods for solving linear systems whose runtime in the worst case would depend on the product of <italic>m </italic>and <italic>n</italic>.</p> <p>In summary, to make our algorithm efficient for large genomes, we use a conjugate gradient-based procedure to solve for the discriminant values and we sparsify functional association networks so that only the most informative associations are retained. These two changes speed up the label propagation algorithm by orders of magnitude for large genomes.</p> <title>GeneMANIA network integration</title> <p>Like two recent methods for combining multiple functional association networks [##REF##14992512##9##,##REF##16204126##17##], GeneMANIA builds a composite functional association network by taking a weighted average of the individual functional association networks. However, unlike these two methods, GeneMANIA optimizes the network weights and calculates the discriminant values separately. The advantage of this approach is that unlike the algorithm described in Tsuda and coworkers [##REF##16204126##17##] (hereafter TSS), which also uses Gaussian field label propagation, GeneMANIA needs to run the computationally intensive label propagation only once, whereas TSS runs it multiple times on different networks while computing the network weights. For example, on our five network yeast benchmark (described in Materials and methods) across 400 GO functional categories, the TSS runs label propagation, on average, 68.8 times per category.</p> <p>Our approach to computing network weights was inspired by recent work showing that when all available functional association networks are relevant for predicting gene function, a composite network generated by weighting each data source equally supports predictions as accurate as those derived using a composite network generated by an optimal choice of weights [##REF##16204126##17##,##REF##16966363##30##], but when some of the association networks are irrelevant, the prediction performance of equal weighting scheme is degraded [##REF##16966363##30##]. These observations suggest that heuristics network-weighting methods that can identify and down-weight irrelevant networks may be as accurate as optimal network weightings. As we show later, it is also important to be able to identify and down-weight redundant functional association networks.</p> <p>The regularized linear regression algorithm that GeneMANIA uses is, by design, robust to the inclusion of irrelevant and redundant networks. This property is especially important when the data sources cannot be carefully controlled - for example, in a webserver that automatically downloads new data from web repositories or allows users to contribute their own data.</p> <p>To set the network weights, we use ridge regression [##UREF##4##31##], which corresponds to finding a vector of network weights, <bold><italic>α </italic></bold>= [<italic>α</italic><sub>1</sub>,..., <italic>α</italic><sub><italic>d</italic></sub>]<sup><italic>t</italic></sup>, that minimizes the cost function: (<bold><italic>t </italic></bold>- Ω<bold><italic>α</italic></bold>)<sup><italic>t</italic></sup>(<bold><italic>t </italic></bold>- Ω<bold><italic>α</italic></bold>) + (<bold><italic>α </italic></bold>- <bold><italic><underline>α</underline></italic></bold>)<sup><italic>t</italic></sup><underline><italic>S</italic></underline>(<bold><italic>α </italic></bold>- <bold><underline><italic>α</italic></underline></bold>). Here <italic>α</italic><sub><italic>i </italic></sub>is the weight of the i<sup>th </sup>network, <bold><italic>t </italic></bold>is a vector derived from the initial label of the labeled nodes, Ω is a matrix with columns corresponding to individual association networks, <underline><bold><italic>α </italic></bold></underline>is the mean prior weight vector, and <underline><bold><italic>S </italic></bold></underline>is a diagonal precision matrix. When all the diagonal entries of <underline><bold><italic>S </italic></bold></underline>are set to zero, we say that the cost function is unregularized and solving for <italic>α </italic>becomes equivalent to unregularized linear regression. For versions of the GeneMANIA algorithm designed to be deployed on a webserver, we have limited prior information about the networks and we set the mean prior weight of all networks to be equal. We call this the 'equal-weight' prior. However, when predicting membership in a GO functional category, we can improve prediction accuracies if we set the mean prior weight of each network to be the average of all the weight vectors calculated using unregularized linear regression on a large number of functional classes in the same branch of GO. We call this the 'branch-specific' weight prior (see Materials and methods for details).</p> <title>Gene function prediction in mouse</title> <p>To evaluate GeneMANIA, we performed function prediction using the MouseFunc I benchmark data. To do so, we constructed ten association networks from the ten datasets (see Materials and methods for details) and used the GeneMANIA network integration and label propagation algorithm to predict gene function for each function class separately. When constructing individual association networks, we set the sparsity level to S = 50, that is, we kept only the top 50 association weights (links) for each gene and set the rest to zero. Setting S = 100 results in better performance on most specific GO biological process (BP) classes while it has minimal effect in other evaluation categories (supplementary Figure 2 in Additional data file ##SUPPL##0##1##).</p> <p>We follow the same procedure as [##UREF##0##15##] and compare prediction accuracies using average area under the receiver operating characteristic (ROC) curve (AUC) in twelve MouseFunc I evaluation categories. Briefly, the evaluation classes are created by grouping GO categories corresponding to all pairwise combinations of the three GO branches (BP, cellular component [CC], and molecular function [MF]) and four specificity levels, that is, number of annotations ([3 to 10], [11 to 30], [31 to 100], and [101 to 300]). We report prediction performance on both the 'test' and the 'novel' benchmarks (see [##UREF##0##15##] for details).</p> <p>We compare GeneMANIA's predictions in the first and second rounds of MouseFunc I (GeneMANIA<sup>Entry-1 </sup>and GeneMANIA<sup>Entry-2</sup>, respectively) and the version of GeneMANIA designed to be implemented on a webserver (GeneMANIA<sup>WS</sup>) against the best performing methods in MouseFunc I. For GeneMANIA<sup>WS</sup>, we assume no knowledge about the source of the gene list whereas in MouseFunc I the competing methods were provided with the name of GO category from which each gene list was derived. Below we discuss the outcome of our evaluation on the 'test' benchmark and then on the 'novel' benchmark.</p> <p>Figure ##FIG##3##4## shows the prediction performance of three versions of GeneMANIA as well as the best performance that was achieved on the test benchmark; GeneMANIA<sup>Entry-1 </sup>achieved the highest prediction performance on all evaluation classes containing GO categories with more than ten annotated genes, and GeneMANIA<sup>Entry-2 </sup>achieved the highest prediction performance on the categories with ten or fewer annotated genes. We measure performance by using one minus the AUC (1 - AUC), so lower values indicate better performance. GeneMANIA<sup>Entry-2 </sup>had significantly lower median 1 - AUC than all other methods in predicting BP and MF categories with 3 to 10 annotations (<italic>p </italic>&lt; 0.05, Wilcoxon-Mann-Whitney) while GeneMANIA<sup>Entry1 </sup>and GeneMANIA<sup>WS </sup>had significantly lower median 1 - AUC compared with GeneMANIA<sup>Entry-2 </sup>in predicting BP categories with 31 to 100 and 101 to 300 annotations, CC categories with 101 to 300 annotations, and MF categories with 31 to 100 annotations.</p> <p>The reduced performance of GeneMANIA<sup>Entry-1 </sup>in the categories with the fewest annotations is likely due to overfitting, because we used unregularized linear regression to set the network weights. In GeneMANIA<sup>Entry-2</sup>, we switched to ridge regression with the branch-specific weight prior, which is less prone to overfitting. Note also that GeneMANIA<sup>WS</sup>, which uses an equal-weight prior, also has improved performance on the smaller GO categories.</p> <p>We suspect that one reason for the drop in prediction performance of GeneMANIA<sup>Entry-2 </sup>compared with GeneMANIA<sup>Entry-1 </sup>on the larger GO categories in the test benchmark is because of our definition of negative examples. In our first entry, we defined as negative examples all genes with any GO annotation but not one in the category being predicted. In our second entry, we refined this definition so that the negative examples for a given category were only those annotated to a sibling category, that is, one that shared a parent in the GO hierarchy. Although choosing the genes annotated to sibling categories of interest as negatives improved prediction performance on novel tasks (Figure ##FIG##4##5##), it degraded the prediction performance on the test set. This may due to the reduction in the number of negative examples. One way to alleviate this effect is to define a range of label biases between [-1, 0] for genes that have GO annotations but are not annotated to the function of interest.</p> <p>On the novel benchmark, in addition to the ten association networks, eight month out-of-date annotations for test genes were also made available. Annotations in other categories of gene function can be informative for predicting new annotations in a given category (for example [##REF##12695322##32##]); in our second entry to MouseFunc I, we investigated two ways in which old annotations may be helpful in predicting new annotations on the novel benchmark. First, we reasoned that genes previously annotated in parent categories but not sibling categories should be considered as potential new positive examples and as such, as described earlier, we used only genes annotated to sibling categories as negatives. Second, often annotations in one branch of the GO imply annotations in a different branch. For example, transcription factors (MF annotation) are located in the nucleus at least some of the time (CC annotation) and a number of transcription factors are involved in cell cycle regulation (BP category). To include this information, we constructed association networks from each branch of GO (see Materials and methods).</p> <p>Figure ##FIG##4##5## shows the prediction accuracies of three versions of GeneMANIA as well as the best accuracy obtained for each evaluation set on the 'novel' MouseFunc I benchmark. For the evaluation classes containing the GO categories with 3 to 10 or 11 to 30 annotations, GeneMANIA entries still had the lowest error on the MouseFunc I benchmark, with GeneMANIA<sup>Entry-2 </sup>having significantly smaller median error in five of the six 'small-sized' evaluation categories (<italic>p </italic>&lt; 0.05, Wilcoxon-Mann-Whitney). GeneMANIA did less well in the larger GO categories, possibly suggesting that we are not making full use of the older annotations. In contrast to the test benchmark, here, GeneMANIA<sup>Entry-2 </sup>improved performance can be mostly attributed to the choice of negative examples (data not shown), although the inclusion of the GO networks also slightly improves the prediction performance (data not shown).</p> <p>In summary, we observed that employing regularization when using linear regression to combine multiple networks results in a drastic improvement in prediction accuracies in most specific functional classes. This is because with only a few positive examples, identifying relevant networks is a challenging task and prone to over-fitting. One way of alleviating this effect is to estimate the relevancy of each network based on its average weight on a large number of similar prediction tasks (for example, prediction of functional classes in the same branch of GO). Second, we have demonstrated that in the binary classification of genes according to GO classes, the genes that are used as negative examples have a large impact on the prediction outcome with label propagation.</p> <title>Performance of GeneMANIA on the yeast benchmark</title> <p>Inspired by the performance of GeneMANIA on the MouseFunc I benchmark, we compare GeneMANIA's performance to that of the TSS algorithm and bioPIXIE [##REF##16420673##14##] on yeast data. To compare GeneMANIA with the TSS algorithm, we used five yeast functional association networks (from [##REF##14992512##9##]) and 400 yeast GO functional classes that we derived from a 2006 version of GO annotations (see Materials and methods for details). We compare GeneMANIA with the TSS algorithm, which had previously been shown to be as accurate as an SVM with optimized network weights while requiring orders of magnitude less computation time [##REF##16204126##17##], enabling us to run much more extensive comparisons. We compared GeneMANIA with the bioPIXIE network because it is currently deployed on a popular website that provides gene function predictions. For bioPIXIE, we evaluate both the network and the probabilistic graph search algorithm published with the bioPIXIE network in comparison with GeneMANIA. Note that the bioPIXIE network was built using different data sources, which are not included in the five yeast network benchmark, so the reported performance is with regard to the specific published network, not the Bayesian network algorithm used to derive the network. In addition, to illustrate the attainable accuracies with additional datasets, we performed function prediction with GeneMANIA using a 15 yeast benchmark data set (GeneMANIA<sup>15</sup>) that we derived from recent genomics and proteomics data sources (see Materials and methods). However, we were unable to use these networks as input to the TSS algorithm due to the memory requirements of the algorithm.</p> <p>Figure ##FIG##5##6## shows the prediction performance on the yeast benchmark on BP and CC evaluation classes (see supplementary Figure 4 in Additional data file ##SUPPL##0##1## for results on MF functional classes) for the TSS algorithm, bioPIXIE and GeneMANIA on a variety of input collections of functional association networks. The comparative performance of GeneMANIA<sup>15 </sup>(GM-15<sup>WS</sup>) to GeneMANIA label propagation applied to the bioPIXIE network (GM-biPx) and to the bioPIXIE probabilistic graph search (PGS) algorithm applied on the same network (PGS-biPx) underlines the value of the GeneMANIA algorithm for a webserver. Given the bioPIXIE network as input, GeneMANIA has a significantly (<italic>p </italic>&lt; 0.05, Wilcoxon-Mann-Whitney) lower median 1 - AUC than PGS-biPx in all evaluation classes, showing that using simple heuristics to assign discriminant values leads to a considerable loss in accuracy. The value of being able to tailor the composite functional association network to the input seed list is shown by the comparative performance of GM-biPx and GM-15; while GM-biPx performs well compared with GM-15 in predicting the smaller GO-BP categories, for which the bioPIXIE network was optimized, GM-biPx has much higher error, and significantly lower performance (<italic>p </italic>&lt; 0.05, Wilcoxon-Mann-Whitney) for the largest GO-BP categories and GO categories from other branches of the hierarchy that the bioPIXIE network was not designed to predict. In our tests, GM-biPx outperforms GM-15 on the smaller GO-BP categories; however, the performance of GM-biPx is likely overestimated because the test sets used for evaluating GM-biPx are not independent from the training sets used to build the bioPIXIE network since we were not able to recover the cross-validation folds used in [##REF##16420673##14##].</p> <p>We were not able to compare GeneMANIA with the TSS algorithm on the 15 yeast network benchmark; the TSS algorithm (as obtained from [##UREF##5##33##]) run on the 15 yeast networks resulted in an out of memory error when solving the system of linear equations when running MATLAB (version 7.4) on a quad-core MAC desktop with Intel Xeon 2.66 GHz processors and 4 GB of memory. However, when comparing GeneMANIA on the five yeast networks from [##REF##16204126##17##] (TSS-5 versus GM-5), we see that GeneMANIA performs as well as or better than TSS; among the evaluation categories shown in Figure ##FIG##5##6##, GM-5 has a significant lower median 1 - AUC than TSS-5 on BP and CC categories with 31 to 100 and 101 to 300 annotations (<italic>p </italic>&lt; 0.05, Wilcoxon-Mann-Whitney).</p> <title>Running time and prediction accuracy</title> <p>Figure ##FIG##6##7## demonstrates the trade-off between computation time and mean error of GeneMANIA, the TSS algorithm, and the bioPIXIE graph search algorithm on the yeast benchmark. GeneMANIA with 15 networks and branch-specific weight prior achieves the lowest error in yeast and we use it as a benchmark for comparing the error of other methods. While PGS-biPx was faster than GM-biPx, its median error (1 - AUC) was three times higher. We also note that the TSS-5 algorithm was both slower and, on average, less accurate than GM-5. The primary cause of this slow down is that the TSS algorithm runs label propagation more than 50 times more than GeneMANIA in order to optimize the network weights.</p> <title>The effect of redundancy and random networks on equal weighting</title> <p>To ensure that the GeneMANIA network integration scheme is robust to irrelevant and redundant networks, we evaluated GeneMANIA in the presence of redundant and noisy networks. To do so, we constructed 20 redundant yeast networks by adding a slight amount of noise to the PfamA network (Gaussian noise with mean zero and standard deviation of 0.025). We also constructed two irrelevant networks by assigning association weights between 0 and 1, drawn from a uniform distribution, to a random set of 0.01% of the association weights and setting the rest of the associations to zero. We conducted function prediction with the GeneMANIA network integration scheme and weight scheme in which all the networks are assigned an equal weight. Figure ##FIG##7##8## shows the results of function prediction with these two strategies on 300 yeast GO categories with 11 to 300 annotations. In the presence of irrelevant and redundant networks, the performance of the equal weight scheme is drastically degraded. The multiple network integration scheme of GeneMANIA detects these redundant and irrelevant networks and, as a result, GeneMANIA's performance is not affected.</p>
<title>Discussion and conclusion</title> <p>We have shown that GeneMANIA is as accurate as, or more so than, leading gene function prediction algorithms on yeast and mouse despite requiring, in some cases, orders of magnitude less computation time. We achieve the highest accuracy using a version of our algorithm that requires between 10 and 15 seconds computation time on a modern desktop computer with slightly optimized MATLAB code. With more careful optimization, we expect that GeneMANIA will be even faster. Consequently, we have demonstrated that it is possible to design a gene function prediction algorithm that performs on-demand function prediction with most up-to-date annotation list and data sources while achieving the same or better accuracy as the leading algorithms.</p> <p>Our algorithm automatically combines multiple input data sources fast enough to be employed on a web server. With the availability of such an algorithm, it is no longer necessary to maintain static databases of gene function predictions that can quickly become out of date and are restricted to predicting function in pre-defined categories. As proof of this principle, we have generated a website [##UREF##6##34##] where users can define their own function categories by providing a gene list, and receive predictions in seconds.</p> <p>Additionally, we have demonstrated that sparsifying data sources can result in increased prediction accuracy as well as decreased computation time. This suggests that, in the context of gene function prediction, many of the derived associations may be uninformative and only a small selection of a gene's top neighbors are sufficient for accurate function determination.</p> <p>Here we have not investigated the possibility of using a gene's prior annotations to predict new ones; this type of information can be useful [##REF##12695322##32##], although it can easily be incorporated by using it to generate a functional association network, as we did in our MouseFunc I entry. We have also noticed that, in some cases, a network representation is not the most efficient encoding of input data; for example, our yeast gene localization dataset has a sparse feature-based representation and a dense network-based representation. This can be addressed using techniques proposed in [##UREF##7##35##], which allows the propagation of label information on networks where each node is also associated with a feature vector.</p>
<title>Discussion and conclusion</title> <p>We have shown that GeneMANIA is as accurate as, or more so than, leading gene function prediction algorithms on yeast and mouse despite requiring, in some cases, orders of magnitude less computation time. We achieve the highest accuracy using a version of our algorithm that requires between 10 and 15 seconds computation time on a modern desktop computer with slightly optimized MATLAB code. With more careful optimization, we expect that GeneMANIA will be even faster. Consequently, we have demonstrated that it is possible to design a gene function prediction algorithm that performs on-demand function prediction with most up-to-date annotation list and data sources while achieving the same or better accuracy as the leading algorithms.</p> <p>Our algorithm automatically combines multiple input data sources fast enough to be employed on a web server. With the availability of such an algorithm, it is no longer necessary to maintain static databases of gene function predictions that can quickly become out of date and are restricted to predicting function in pre-defined categories. As proof of this principle, we have generated a website [##UREF##6##34##] where users can define their own function categories by providing a gene list, and receive predictions in seconds.</p> <p>Additionally, we have demonstrated that sparsifying data sources can result in increased prediction accuracy as well as decreased computation time. This suggests that, in the context of gene function prediction, many of the derived associations may be uninformative and only a small selection of a gene's top neighbors are sufficient for accurate function determination.</p> <p>Here we have not investigated the possibility of using a gene's prior annotations to predict new ones; this type of information can be useful [##REF##12695322##32##], although it can easily be incorporated by using it to generate a functional association network, as we did in our MouseFunc I entry. We have also noticed that, in some cases, a network representation is not the most efficient encoding of input data; for example, our yeast gene localization dataset has a sparse feature-based representation and a dense network-based representation. This can be addressed using techniques proposed in [##UREF##7##35##], which allows the propagation of label information on networks where each node is also associated with a feature vector.</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>Most successful computational approaches for protein function prediction integrate multiple genomics and proteomics data sources to make inferences about the function of unknown proteins. The most accurate of these algorithms have long running times, making them unsuitable for real-time protein function prediction in large genomes. As a result, the predictions of these algorithms are stored in static databases that can easily become outdated. We propose a new algorithm, GeneMANIA, that is as accurate as the leading methods, while capable of predicting protein function in real-time.</p> <title>Results:</title> <p>We use a fast heuristic algorithm, derived from ridge regression, to integrate multiple functional association networks and predict gene function from a single process-specific network using label propagation. Our algorithm is efficient enough to be deployed on a modern webserver and is as accurate as, or more so than, the leading methods on the MouseFunc I benchmark and a new yeast function prediction benchmark; it is robust to redundant and irrelevant data and requires, on average, less than ten seconds of computation time on tasks from these benchmarks.</p> <title>Conclusion:</title> <p>GeneMANIA is fast enough to predict gene function on-the-fly while achieving state-of-the-art accuracy. A prototype version of a GeneMANIA-based webserver is available at <ext-link ext-link-type="uri" xlink:href="http://morrislab.med.utoronto.ca/prototype"/>.</p>
<title>Background</title> <title>Automated methods for predicting gene and protein function</title> <p>Many algorithms for predicting gene function use a functional association network as a common representation of evidence of co-functionality for heterogeneous datasets. In this representation, nodes represent genes or proteins and the undirected edges (or links) between these nodes are weighted according to the evidence for co-functionality of the genes implied by the particular datasets. There are various techniques for deriving these weights depending on the source of data and it is still unclear how best to extract evidence of co-functionality (see, for example, [##REF##16595558##20##,##REF##15982781##21##]); as such we here use a single method to calculate these weights (see Materials and methods for details). Here, we assume that all of the association weights are positive.</p> <title>Predicting gene function from functional association networks</title> <p>Following Lanckriet and coworkers [##REF##14992512##9##], we pose the problem of predicting gene function as a binary classification problem and attempt to solve the problem of integrating multiple heterogeneous input data sources by assigning each functional association network derived from these data sources a positive weight that reflects its usefulness in predicting a given function of interest. Once these weights are calculated, we construct a function-specific association network by taking the weighted average of the individual association networks. In contrast to prior work [##REF##14992512##9##,##REF##16204126##17##] in which the weights and discriminant values were optimized simultaneously using the same objective function, we use a separate objective function to fit the weights, leading to a simpler optimization problem and a substantial reduction in run time.</p> <p>We predict gene function from the composite network using a variation of the Gaussian field label propagation algorithm [##UREF##1##22##,##UREF##2##23##] that we adopted to be more suitable for unbalanced classification problems like gene function prediction. Label propagation algorithms, like most function prediction algorithms, assign a score to each node in the network, called the 'discriminant value', that reflects the computed degree of association that the node has to the seed list defining the given function. This value can be thresholded to make predictions. While there are a large variety of label propagation algorithms (for example, those based on functional flow [##REF##12740586##24##,##REF##15961472##25##] or Markov random fields [##REF##15285902##26##]), our interest in the Gaussian field algorithm stems from the fact that it has a well-defined solution, it is derived from a principled framework, and it has recently been shown to perform as well as SVMs on gene function prediction tasks [##REF##16204126##17##]. SVMs had previously been shown to be among the best algorithms for predicting gene function [##REF##10618406##27##,##REF##12015889##28##].</p> <title>Abbreviations</title> <p>AUC, area under the ROC curve; BP, biological process; CC, cellular component; CG, conjugate gradient; GO, Gene Ontology; MF, molecular function; MIPS, Munich Information Center for Protein Sequences; PGS, probabilistic graph search; ROC, receiver operating characteristic; SVM, support vector machine; TSS, Tsuda and coworkers [##REF##16204126##17##] algorithm; ZBLWS, Zhou and coworkers [##UREF##1##22##] algorithm.</p> <title>Competing interests</title> <p>The authors declare that they have no competing interests.</p> <title>Authors' contributions</title> <p>QM conceived of the project. QM, DR, and SM designed the GeneMANIA algorithm. SM and DWF implemented the GeneMANIA algorithm. DWF implemented the GeneMANIA webserver. SM collected the data, designed the association networks, and performed the experiments. CG contributed code to create association networks. SM and QM wrote the manuscript. QM supervised the project and provided feedback.</p> <title>Additional data files</title> <p>The following additional data are available with the online version of this paper. Additional data file ##SUPPL##0##1## includes supplementary Figures 1 to 5. Additional data file ##SUPPL##1##2## includes supplementary Table 1.</p> <title>Supplementary Material</title>
<title>Acknowledgements</title> <p>SM, DWF, and DR gratefully acknowledge the support from NSERC USRAs and an operating grant assigned to QM. CG and SM were partially supported by a Genome Canada grant administered by the Ontario Genomics Institute.</p> <p>This article has been published as part of <italic>Genome Biology </italic>Volume 9 Supplement 1, 2008: Quantitative inference of gene function from diverse large-scale datasets. The full contents of the supplement are available online at <ext-link ext-link-type="uri" xlink:href="http://genomebiology.com/supplements/9/S1"/></p>
<fig position="float" id="F1"><label>Figure 1</label><caption><p>Effect of label bias on ROC scores. Bars show the prediction error measured using 1 - area under the receiver operating characteristic (ROC) curve (1 - AUC) of GeneMANIA where the label bias of unlabeled genes is set to zero or average label (that is, k = 0 or k = mean label). The experiments were run on 400 Gene Ontology (GO) functional classes using 15 yeast association networks that we created from various genomics and proteomics data sources (see Materials and methods). The functional classes are grouped by specificity (defined by number of annotated genes: 3 to 10, 11 to 30, 31 to 100, 101 to 300). Error bars depict the standard error on 100 different predictions in each evaluation category.</p></caption></fig> <fig position="float" id="F2"><label>Figure 2</label><caption><p>Effect of network sparsification on ROC scores. For various sparsity levels of GeneMANIA and for the support vector machine (SVM), boxplot shows the following features of the distribution of the prediction errors as measured with 1 - area under the receiver operating characteristic (ROC) curve (1 - AUC): the median (red line), 25% and 75% percentile (blue box), and outliers of prediction errors more than 1.5 times the interquartile range away from the median (blue stars). The evaluations are based on 3-fold cross-validation on 992 GO categories with the Zhang and coworkers [12] mouse tissue expression data as input. The GeneMANIA experiments were run by creating an association network from the mouse tissue expression data where the number of neighbors for each gene is restricted to N. For example, when the number of neighbors = 5, each gene is associated with only five other genes. The settings for the SVM experiments are as described in [12].</p></caption></fig> <fig position="float" id="F3"><label>Figure 3</label><caption><p>The number of CG iterations and computation time of the GeneMANIA algorithm as a function of number of genes. Left axis: the number of conjugate gradient (CG) iterations until convergence as a function of number of genes in the association networks. Right axis: computation time of GeneMANIA as a function of number of genes in the association networks. Experiments were run using ten association networks from the MouseFunc I benchmark data. The final point on the plot used the full mouse gene complement (for which data are available), and the other gene numbers were derived by taking random subsets of the full gene complement. Distribution is over 100 randomly selected Gene Ontology (GO) categories. The maximum number of CG iterations observed in any test was 20 and the maximum computation time was 15 seconds. The quadratic dependence of computation time on gene number is due to the quadratic growth in number of non-zero association links in the networks as a function of gene number (data not shown).</p></caption></fig> <fig position="float" id="F4"><label>Figure 4</label><caption><p>Prediction performance of GeneMANIA on the MouseFunc I test benchmark. Prediction performance of the first and second submissions to MouseFunc I (GeneMANIA<sup>Entry-1 </sup>and GeneMANIA<sup>Entry-2</sup>, respectively) as well as the version of the GeneMANIA algorithm we have implemented on the GeneMANIA webserver (GeneMANIA<sup>WS</sup>) and the best achieved performance on the MouseFunc I test benchmark. Prediction performance is indicated by mean 1 - area under the receiver operating characteristic curve (1 - AUC) in the class, error bars show one standard error of the mean. Stars mark the evaluation classes in which a GeneMANIA entry achieved lowest error on the test benchmark.</p></caption></fig> <fig position="float" id="F5"><label>Figure 5</label><caption><p>Prediction performance of GeneMANIA on the MouseFunc I novel benchmark. Prediction performance of the first and second submissions to MouseFunc I (GeneMANIA<sup>Entry-1 </sup>and GeneMANIA<sup>Entry-2</sup>, respectively) as well as the version of the GeneMANIA algorithm we have implemented on the GeneMANIA webserver (GeneMANIA<sup>WS</sup>) and the best achieved performance on the MouseFunc I novel benchmark. Stars mark the evaluation categories in which GeneMANIA entries had the best achieved performance on the test benchmark. Bars show mean error (measured as 1 - area under the receiver operating characteristic curve [1 - AUC]), error bars indicate one standard error.</p></caption></fig> <fig position="float" id="F6"><label>Figure 6</label><caption><p>Prediction performance of GeneMANIA on the extended yeast benchmark. Prediction performance of GeneMANIA with five yeast networks with equal weight prior (GM-5<sup>WS</sup>), 15 yeast networks with equal weight prior (GM-15<sup>WS</sup>), GeneMANIA with the bioPIXIE network (GM-biPx), and the TSS algorithm with five yeast networks (TSS-5). Bars show mean error (measured as 1 - area under the receiver operating characteristic curve [1 - AUC]) on 12 evaluation classes based on ontologies (biological process [BP] and cellular component [CC]) and specificity levels of 3 to 10, 11 to 30, 31 to 100, and 101 to 300 annotations. Error bars indicate the standard error in the mean.</p></caption></fig> <fig position="float" id="F7"><label>Figure 7</label><caption><p>Computation time and prediction accuracy. Bars to the left of the solid vertical lines show fold increase in error relative to the mean error (as measured by 1 - area under the receiver operating characteristic curve [1 - AUC]) for the evaluation classes defined in Figure 6 of GeneMANIA with 15 yeast networks using the branch-specific weight priors in Figure 6. Bars to the right of the solid vertical lines show mean CPU time required to run each algorithm. The performance of GeneMANIA (GM), TSS, and bioPIXIE (biPx) are directly compared on the same input. The bars marked as GM-biPx and PGS-biPx depict the prediction performance of GeneMANIA label propagation and bioPIXIE probabilistic graph based search algorithm, respectively, using the bioPIXIE network as input. TSS and GeneMANIA are compared using the five yeast network benchmark.</p></caption></fig> <fig position="float" id="F8"><label>Figure 8</label><caption><p>Prediction performance of GeneMANIA in the presence of irrelevant and redundant networks. Cumulative distribution of 1 - area under the receiver operating characteristic curve (1 - AUC) scores on 300 yeast Gene Ontology (GO) categories using GeneMANIA optimized weights and equal weights in the presence of redundant and irrelevant networks.</p></caption></fig>
<inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M1" name="gb-2008-9-S1-S4-i1" overflow="scroll"><mml:semantics><mml:mrow><mml:mfrac><mml:mrow><mml:msup><mml:mi>n</mml:mi><mml:mo>+</mml:mo></mml:msup><mml:mo>−</mml:mo><mml:msup><mml:mi>n</mml:mi><mml:mo>−</mml:mo></mml:msup></mml:mrow><mml:mrow><mml:msup><mml:mi>n</mml:mi><mml:mo>+</mml:mo></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi>n</mml:mi><mml:mo>−</mml:mo></mml:msup></mml:mrow></mml:mfrac></mml:mrow></mml:semantics></mml:math></inline-formula> <disp-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M2" name="gb-2008-9-S1-S4-i2" overflow="scroll">
                     <mml:semantics>
                        <mml:mrow>
                           <mml:mi>k</mml:mi>
                           <mml:mo>=</mml:mo>
                           <mml:mfrac>
                              <mml:mrow>
                                 <mml:msup>
                                    <mml:mi>n</mml:mi>
                                    <mml:mo>+</mml:mo>
                                 </mml:msup>
                                 <mml:mo>−</mml:mo>
                                 <mml:msup>
                                    <mml:mi>n</mml:mi>
                                    <mml:mo>−</mml:mo>
                                 </mml:msup>
                              </mml:mrow>
                              <mml:mi>n</mml:mi>
                           </mml:mfrac>
                        </mml:mrow>
                        
                     </mml:semantics>
                  </mml:math></disp-formula> <disp-formula id="bmcM1"><label>(1)</label><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M3" name="gb-2008-9-S1-S4-i3" overflow="scroll">
                     <mml:semantics>
                        <mml:mrow>
                           <mml:mstyle mathvariant="bold" mathsize="normal">
                              <mml:mi>f</mml:mi>
                           </mml:mstyle>
                           <mml:mo>=</mml:mo>
                           <mml:msub>
                              <mml:mrow>
                                 <mml:mtext>argmin</mml:mtext>
                              </mml:mrow>
                              <mml:mstyle mathvariant="bold" mathsize="normal">
                                 <mml:mi>f</mml:mi>
                              </mml:mstyle>
                           </mml:msub>
                           <mml:mtext> </mml:mtext>
                           <mml:mstyle displaystyle="true">
                              <mml:munder>
                                 <mml:mo>∑</mml:mo>
                                 <mml:mi>i</mml:mi>
                              </mml:munder>
                              <mml:mrow>
                                 <mml:msup>
                                    <mml:mrow>
                                       <mml:mo stretchy="false">(</mml:mo>
                                       <mml:msub>
                                          <mml:mi>f</mml:mi>
                                          <mml:mi>i</mml:mi>
                                       </mml:msub>
                                       <mml:mo>−</mml:mo>
                                       <mml:msub>
                                          <mml:mi>y</mml:mi>
                                          <mml:mi>i</mml:mi>
                                       </mml:msub>
                                       <mml:mo stretchy="false">)</mml:mo>
                                    </mml:mrow>
                                    <mml:mn>2</mml:mn>
                                 </mml:msup>
                                 <mml:mo>+</mml:mo>
                                 <mml:mstyle displaystyle="true">
                                    <mml:munder>
                                       <mml:mo>∑</mml:mo>
                                       <mml:mi>i</mml:mi>
                                    </mml:munder>
                                    <mml:mrow>
                                       <mml:mstyle displaystyle="true">
                                          <mml:munder>
                                             <mml:mo>∑</mml:mo>
                                             <mml:mi>j</mml:mi>
                                          </mml:munder>
                                          <mml:mrow>
                                             <mml:msub>
                                                <mml:mi>w</mml:mi>
                                                <mml:mrow>
                                                   <mml:mi>i</mml:mi>
                                                   <mml:mi>j</mml:mi>
                                                </mml:mrow>
                                             </mml:msub>
                                             <mml:msup>
                                                <mml:mrow>
                                                   <mml:mo stretchy="false">(</mml:mo>
                                                   <mml:msub>
                                                      <mml:mi>f</mml:mi>
                                                      <mml:mi>i</mml:mi>
                                                   </mml:msub>
                                                   <mml:mo>−</mml:mo>
                                                   <mml:msub>
                                                      <mml:mi>f</mml:mi>
                                                      <mml:mi>j</mml:mi>
                                                   </mml:msub>
                                                   <mml:mo stretchy="false">)</mml:mo>
                                                </mml:mrow>
                                                <mml:mn>2</mml:mn>
                                             </mml:msup>
                                          </mml:mrow>
                                       </mml:mstyle>
                                    </mml:mrow>
                                 </mml:mstyle>
                              </mml:mrow>
                           </mml:mstyle>
                        </mml:mrow>
                        
                     </mml:semantics>
                  </mml:math></disp-formula> <disp-formula><bold><italic>f</italic></bold>* = argmin<sub><italic>f </italic></sub>(<bold><italic>f </italic></bold>- <bold><italic>y</italic></bold>)<sup><italic>t </italic></sup>(<bold><italic>f </italic></bold>- <bold><italic>y</italic></bold>) + <bold><italic>f</italic></bold><sup><italic>t </italic></sup><italic>L</italic><bold><italic>f</italic></bold></disp-formula> <disp-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M4" name="gb-2008-9-S1-S4-i4" overflow="scroll">
                     <mml:semantics>
                        <mml:mrow>
                           <mml:msup>
                              <mml:mi>W</mml:mi>
                              <mml:mrow>
                                 <mml:mi>c</mml:mi>
                                 <mml:mi>o</mml:mi>
                                 <mml:mi>m</mml:mi>
                                 <mml:mi>b</mml:mi>
                              </mml:mrow>
                           </mml:msup>
                           <mml:mo>=</mml:mo>
                           <mml:mstyle displaystyle="true">
                              <mml:munder>
                                 <mml:mo>∑</mml:mo>
                                 <mml:mi>h</mml:mi>
                              </mml:munder>
                              <mml:mrow>
                                 <mml:msub>
                                    <mml:mi>α</mml:mi>
                                    <mml:mi>h</mml:mi>
                                 </mml:msub>
                              </mml:mrow>
                           </mml:mstyle>
                           <mml:msub>
                              <mml:mi>W</mml:mi>
                              <mml:mi>h</mml:mi>
                           </mml:msub>
                        </mml:mrow>
                        
                     </mml:semantics>
                  </mml:math></disp-formula> <disp-formula><bold><italic>α </italic></bold>= argmin<sub><bold><italic>α'</italic></bold></sub>(Ω<bold><italic>α' </italic></bold>- <bold><italic>t</italic></bold>)<sup><italic>t</italic></sup>(Ω<bold><italic>α' </italic></bold>- <bold><italic>t</italic></bold>) + (<bold><italic>α' </italic></bold>- <underline><bold><italic>t</italic></bold></underline>)<sup><italic>t</italic></sup><underline><italic>S</italic></underline>(<bold><italic>α' </italic></bold>- <underline><bold><italic>α</italic></bold></underline>)</disp-formula> <disp-formula><bold><italic>α </italic></bold>= (Ω<sup><italic>t</italic></sup>Ω + <underline><italic>S</italic></underline>)<sup>-1</sup>(Ω<sup><italic>t</italic></sup><bold><italic>t </italic></bold>+ <underline><italic>S</italic><bold><italic>α</italic></bold></underline>)</disp-formula> <inline-formula><mml:math xmlns:mml="http://www.w3.org/1998/Math/MathML" id="M5" name="gb-2008-9-S1-S4-i5" overflow="scroll"><mml:semantics><mml:mrow><mml:mstyle displaystyle="true"><mml:munder><mml:mo>∑</mml:mo><mml:mi>k</mml:mi></mml:munder><mml:mrow><mml:msub><mml:mi>α</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>≤</mml:mo><mml:mi>C</mml:mi></mml:mrow></mml:mstyle></mml:mrow></mml:semantics></mml:math></inline-formula>
<supplementary-material content-type="local-data" id="S1"><caption><title>Additional data file 1</title><p>Supplementary Figures 1 to 5.</p></caption></supplementary-material> <supplementary-material content-type="local-data" id="S2"><caption><title>Additional data file 2</title><p>Supplementary Table 1.</p></caption></supplementary-material>
<graphic xlink:href="gb-2008-9-s1-s4-1"/> <graphic xlink:href="gb-2008-9-s1-s4-2"/> <graphic xlink:href="gb-2008-9-s1-s4-3"/> <graphic xlink:href="gb-2008-9-s1-s4-4"/> <graphic xlink:href="gb-2008-9-s1-s4-5"/> <graphic xlink:href="gb-2008-9-s1-s4-6"/> <graphic xlink:href="gb-2008-9-s1-s4-7"/> <graphic xlink:href="gb-2008-9-s1-s4-8"/>
<media xlink:href="gb-2008-9-s1-s4-S1.pdf" mimetype="application" mime-subtype="pdf"><caption><p>Click here for file</p></caption></media> <media xlink:href="gb-2008-9-s1-s4-S2.pdf" mimetype="application" mime-subtype="pdf"><caption><p>Click here for file</p></caption></media>
[{"surname": ["Pe\u00f1a-Castillo", "Tasan", "Myers", "Lee", "Joshi", "Zhang", "Guan", "Leone", "Pagnani", "Kyu Kim", "Krumpelman", "Tian", "Obozinski", "Qi", "Mostafavi", "Ning Lin", "Berriz", "Gibbons", "Lanckriet", "Qiu", "Grant", "Barutcuoglu", "Hill", "Warde-Farley", "Grouios", "Ray", "Blake", "Deng", "Jordan", "Noble"], "given-names": ["L", "M", "CL", "H", "T", "C", "Y", "M", "A", "W", "C", "W", "G", "Y", "S", "G", "GF", "FD", "G", "J", "C", "Z", "DP", "D", "C", "D", "JA", "M", "MI", "WS"], "article-title": ["A critical assessment of "], "italic": ["Mus musculus "], "source": ["Genome Biol"], "year": ["2008"], "volume": ["9"], "issue": ["Suppl 1"], "fpage": ["S2"]}, {"surname": ["Zhou", "Bousuet", "Lal", "Weston", "Schoelkopf"], "given-names": ["D", "O", "T", "J", "B"], "article-title": ["Learning with local and global consistency."], "source": ["Neural Information Processing Systems"], "year": ["2003"]}, {"surname": ["Zhu", "Ghahramani", "Lafferty", "Fawcett T, Mishra N"], "given-names": ["X", "Z", "J"], "article-title": ["Semi-supervised learning using Gaussian fields and harmonic functions."], "source": ["Proceedings of the Twentieth International Conference on Machine Learning: August 21-24, 2003; Washington, DC, USA"], "year": ["2003"], "publisher-name": ["Menlo Park, CA:AAAI Press"], "fpage": ["912"], "lpage": ["919"]}, {"surname": ["Golub", "Van Loan"], "given-names": ["GH", "CF"], "source": ["Matrix Computations"], "year": ["1996"], "volume": ["1"], "edition": ["3"], "publisher-name": ["Baltimore, MD: Johns Hopkins University Press"]}, {"surname": ["Hastie", "Tibshirani", "Friedman"], "given-names": ["T", "R", "JH"], "source": ["The Elements of Statistical Learning: Data Mining, Inference, and Predictions"], "year": ["2001"], "publisher-name": ["Berlin/Heidelberg: Springer-Verlag"]}, {"article-title": ["ECCB05 paper supplement"]}, {"article-title": ["GeneMANIA prediction server prototype"]}, {"surname": ["Zhang", "Popescul", "Dom"], "given-names": ["T", "A", "B"], "article-title": ["Linear prediction model with graph regularization for web-page categorization."], "source": ["Proceedings of the 12th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining: August 20-23, 2006"], "year": ["2006"], "publisher-name": ["Philadelphia, PA, USA. New York, NY: ACM"], "fpage": ["821"], "lpage": ["826"]}, {"article-title": ["bioPixie"]}, {"article-title": ["The functional landscape of mouse gene expression"]}, {"surname": ["Cristianini", "Elisseef", "Shawe-Taylor", "Kndola"], "given-names": ["N", "A", "J", "J"], "article-title": ["On kernel-target alignment."], "source": ["Proceedings of Neural Information Processing Systems"], "year": ["2001"]}]
Genome Biol. 2008 Jun 27; 9(Suppl 1):S4