BACKGROUND
the gene ontology   <cit>  is a cross-species, controlled vocabulary describing three major functional characteristics of gene products: molecular function, cellular component and biological process.
the information is structured as a directed acyclic graph for each sub-ontology.
each node in the graph represents a class of genes identified by a go-term.
each edge represents the relationship between the terms it connects, which can be "is a", "is a part of", or "regulates", meaning that a child class is either a part of the parent, is a more specific example of the parent class or is regulated  by the parent, respectively.
the go provides a controlled vocabulary for describing gene product functions and can be used to evaluate the functional coherence of gene sets.
there are two major approaches for analyzing go-based gene annotations: enrichment tools and semantic similarity measures.
enrichment tools
enrichment tools are used to determine the common features of a set of genes by examining annotations and finding go-terms that they share to a significant extent.
for example, the to-go java navigation tool  <cit>  allows users to navigate the go with various kinds of queries.
there are also enrichment tools that provide ontological analyses with different statistical models, including the hypergeometric, binomial, pearsons's chi-squared and fisher's exact tests  <cit> .
genetools  <cit>  is a web service that provides access to several databases such as unigene  <cit> , entrez gene  <cit> , swiss-prot  <cit>  and gene ontology.
it includes a tool for visualisation and statistical hypothesis testing to assess the similarity of go-term annotations in different gene lists.
the local graph structure of go hierarchy is available from golem   <cit> .
it also supports rapid analysis of an input list of genes to find enriched go terms.
funcassociate  <cit> , takes a list of genes as an input and indicates whether a significant number of the genes share a certain go term.
based on the same concept of go enrichment, the tools bingo  <cit>  and ease   <cit>  take a set of genes and identify the saturated terms.
semantic similarity measures
in general, go-based enrichment tools are used to analyse go term in large-scale gene sets.
however, while they all determine whether an observed number of go annotations in a set is significant, they lack a quantitative similarity measure that would allow for a complete comparable analysis of gene sets or models produced by microarray analysis.
although many enrichment tools are used for analyzing microarray data and give a level of significance for the designed enrichment, they only inform about the data distribution and do not give information on the inherent relationship, which is critical at comparing sets of genes.
to address this issue, semantic similarity methods have been developed.
this category comprises go-term, gene-product and gene-similarity approaches.
go-term similarity approaches have been presented by couto et al.
<cit> , kriventseva et al.
<cit> , and lee et al.
<cit>  and are based on measures  <cit>  originally developed for other semantic taxonomies.
these measures determine the similarity of two go-terms using the information content for their lowest common ancestor.
guo et al.
<cit>  evaluated these methods and showed that resnik's method is better than the others in terms of correlating gene sequence similarities and gene expression profiles.
del pozo et al.
<cit>  proposed a new method for quantifying functional distances between go terms.
their method is based on the simultaneous occurrence of terms in the same set of interpro  <cit>  entries does not rely on the structure of the go itself.
in the same vein, wang et al.
<cit>  presented a method to encode a go-term's semantics as a numeric value by aggregating the semantic contributions of ancestor terms.
this proposal was used to develop a clustering tool to study the genes in pathways retrieved from the saccharomyces genome database , and the clustering results showed that wang's method is more consistent than resnik's method.
the relationships of gene-products are also of interest to researchers.
until recently, the most common methods for measuring gene-product functional similarity were pairwise approaches based on go-term.
lord et al.
<cit>  were the first to apply this methodology, using the average of all pairwise similarities.
the same approach was used by liu et al.
<cit> , azuaje et al.
<cit>  and chagoyen et al.
<cit> .
lee et al.
<cit>  and guo et al.
<cit>  used the maximum of all pairwise similarities; whereas brameier and wiuf  <cit>  and wu et al.
<cit>  used a composite average in which only the best-matching term pairs are considered .
tao et al.
<cit>  proposed a variant, in which only those pairwise measures that exceed a threshold were considered.
the performances of these pairwise-based measures were tested by xu et al.
<cit> .
they concluded that the method based on the best-match average consistently gave the best performance out of all of the tests that were studied.
other methods exist for measuring gene-product functional similarity that are not based on pairwise approaches.
lerman and shakhnovich  <cit>  presented several manifold-embedding techniques for computing distances between go functional annotations and for estimating functional distances between protein domains.
likewise, schlicker et al.
<cit>  proposed a method for measuring functional similarity by combining different ontologies to produce a single similarity score.
their method, named funsim, is based on schlicker's measure , which combines both of the lin and resnik go-term similarity measures.
bastos et al.
<cit>  proposed three different measures: goocurrence to measure the functional coherence of a list of gene products; goscore to indicate how well a cluster of genes has been functionally characterised; and gocenter to provide a measure of how many of the cluster's functional annotations are captured by the center of the cluster.
zheng and lu  <cit>  developed a measure to determine the overall functional coherence of a group of proteins by using the semantic similarity of the biomedical literature associated with the proteins.
the methods presented above measure the similarity of a pair of go terms, a measurement that can be extended to a set of gene products or a pair of genes.
the approaches that address the functional coherence of a gene set do not simply select the most common function found within the set.
instead, the gene set coherence is determined as a function of the similarity of all the pairs of genes within the set  <cit> .
recently, ruths et al.
<cit>  proposed a go-based measure of functional similarity for gene sets, named gs <dig>  this measure quantifies the similarity of a set of genes by averaging their individual contributions.
each gene is compared to the other genes in the set by calculating how closely the gene's annotation match the annotations of the others.
gs <dig> was compared to the go pairwise measure of wang et al.
<cit>  by extending wang's measure to average the contributions of all gene pairs.
the comparison showed that gs <dig> generates results more quickly and with comparable quality.
to our knowledge, gs <dig> was the first method used to determine the functional similarity of a gene set by using an entire set of genes.
later, richards et al.
<cit>  proposed another go-based measure to evaluate the functional coherence of gene sets.
these measures are based on the topological properties of graphs comprised of genes and their go annotations, and they consider the enrichment of annotations and the relationships among annotations when determining the significance of functional coherence.
unlike our approach, the method of richards et al.
considers all of the annotations with equal weight.
the reader is refered to reference  <cit>  for a survey of semantic similarity measures.
although these similarity measures have been used for different applications  <cit> , such as comparing gene products with different functions or predicting gene product functions, they face a major limitation when confronted with genes that are involved in several functions.
for such genes, the current tools give equal weight to all of the biological functions and it is not possible to single out the most relevant ones by considering the context of the other genes involved  <cit> .
in this work, we propose a novel method for measuring gene set dissimilarity by weighting the most cohesive  functions based on the global behaviour of the whole set of input genes.
this measure, named gfd, is based on the gene ontology, and it assigns a numerical value to a gene set for each of the three go ontologies.
method
gfd is based on an adaptation of the go-tree structure presented in  <cit> .
the structure is used to develop a novel go-term dissimilarity measure for use in calculating gene set dissimilarity.
to our knowledge, this is the first report of a measure that evaluates a gene set by taking into account the most cohesive function found in the set.
the method involves searching for the most specific function for each gene that is also similar to the other functions found in the gene set.
the methodology is outlined in figure  <dig>  which presents an example of a set of four genes.
the calculation of gfd entails five consecutive steps, which are described below.
first step: gene identification
the first step consists of finding the representative of each input gene in the go.
let us assume that the go maps to Θ genes for a specific organism.
let a be the set of genes to be evaluated.
each g ∈ a is searched for in Θ, and if the search is unsuccessful, g is transformed into a synonym g' by using the gene synonym information given in the go annotation  <cit> .
that is, the initial set of genes a = {g <dig> ..., gn} is transformed into a′={g1′,…,gn′′}, where each g' is present in Θ. however, the gene is removed if no synonym exists.
for instance, in figure  <dig>  genes g <dig> and g <dig> were found in the go, gene g <dig> was transformed into a synonym , and gene g <dig> was not found.
second step: gene-function identification
the second step consists of identifying the function of the genes in a set.
each gene is transformed into the different proteins encoded by the gene  according to the entrez gene database  <cit> .
thus, a set of gene products h = {gip <dig> ..., gipm} is associated with each gi′∈a′.
continuing with the previous example, g <dig> encodes the g1p <dig> protein, g <dig> encodes the g2p <dig> protein, and g <dig> encodes g3p <dig>  g3p <dig> and g3p <dig>
third step: gene-product filtering
in this step, each gene function is filtered by the three go domains.
the proteins chosen in the previous step are removed from those domains in which they are not involved, and are otherwise selected.
thus, in figure  <dig>  the g1p <dig> protein, encoded by gene g <dig>  takes part in all three ontologies; the protein encoded by gene g <dig>  is presented in the biological process and cellular component ontologies; and gene g <dig> is represented by protein g3p <dig> in the molecular function ontology, by the g3p <dig> and g3p <dig> proteins in the biological process, and by the g3p <dig> protein in the cellular component ontology.
once the input genes have been transformed into their biological functionalities and these have been filtered through each domain, the next steps must be repeated for the three ontologies, vielding three different results .
for the sake of clarity, we will only consider the biological process ontology in the following descriptions and examples.
fourth step: gene-product annotation search
for each ontology, the annotations of each protein are examined.
a single protein can be associated with or located in one or more cellular components, it is active in one or more biological processes, during which it might perform several molecular functions.
this feature is accounted for in the go: each functional annotation is identified by a unique go term.
in figure  <dig>  the annotations of each protein in the biological process ontology are depicted.
for each gipj, a set of go terms is obtained, i.e., h = {gipjt <dig> ..., gipjtq}.
for example, protein g1p <dig> has two different terms in the biological process domain.
both functionalities are used for the g1p1t <dig> and g1p1t <dig> go terms.
fifth step: gene-product functionality
at this stage, each functional annotation in the go has been indentified.
the go directed acyclic graph  is used, but only the "is a" relationships are considered.
our approach does not use the "part of" relationships for three reasons: a) we would like to compare results among the three domains, and the molecular function ontology does not have the "part of" relationship; b) the "part of" relationship is used in the biological process ontology when the child node is an instance of only a portion of the parent process; c) the three ontologies are now "is a" complete, meaning that every term has a path to the root node that passes solely through "is a" relationships.
in figure  <dig>  the g1p1t <dig> go term is identical to the g3p2t <dig> term.
therefore, both functions are located in the same node of the go dag.
next, the retrieved information is transformed into a tree structure .
a node will be present in the go tree for each path that exists in the dag from that node to the root.
for instance, in figure  <dig>  g1p1t <dig> has two ways to reach the biological process root node, so this node is duplicated in the resulting go tree.
once the tree structure is built, the input genes are added to the go tree as leaf nodes.
these node positions designate the functional annotations found among the gene set.
each leaf node position is determined according to both the go term and the protein product of the gene.
a gene can be present in different leaves, which are different representations of the gene from different domains.
each go-term gipjtk will have a number of representations in the go , as it can be present in different places within the go tree.
this set of representations is denoted by h = {gipjtkr <dig> ..., gipjtkrs}, where r <dig> ... rs denote the representations of term gipjtk.
after the go tree is constructed, the input genes can be evaluated.
at this point, the initial information a = {g <dig> ..., g4} has been transformed into three representations of g <dig>  one representation of g <dig>  and three representations of g <dig>  each of which is located in a structure that also provides information itself.
the gene set functional measure gfd, which is described in detail below, is based on the gene-representation similarity and is supported by the go-tree structure.
gene-representation functional dissimilarity
let rα and rβ be two gene representations.
the dissimilarity between them is given by:
r=lengthdepth+depth
where length denotes the minimum number of nodes separating rα from rβ in the go tree  and depth indicates the level of representation in the go tree.
from a biological point of view, length indicates the functional relationship of the two go terms, whereas depth indicates the level of specificity of the representation.
thus, the measure penalises gene-representation pairs that are widely separated, and it rewards specialisation.
this measure provides values between  <dig> and  <dig>  where values close to  <dig> mean "similar", and values near  <dig> mean "dissimilar".
two gene representations, rα and rβ, present the best similarity when they share the same parent  = 1) and their depths are the maximum  = depth = k).
in this case, their functional dissimilarity is:
r=1k+k≈ <dig>
in contrast, the worst case occurs when two gene representations are low in the go tree  = depth = k), and they do not share any ancestor node other than the root node  = k + k - 1):
r=2k-12k≈ <dig>
for example,
r=14+4= <dig> r=74+4= <dig>
for this set of genes, the minimum and maximum values for r are  <dig>  and  <dig> , respectively.
functional dissimilarity measure
the functional dissimilarity is based on the gene-representation dissimilarity described above.
our approach extrapolates the gene-representation dissimilarity measure to evaluate gene set homogeneity.
let a be a set of genes {g <dig>  g <dig> ..., gn}.
the representation set for a gene gi is given by t, as shown in equation  <dig>   in the fifth step).
t= ⋃j∈hk∈hh
the cartesian product p = t × t × ... × t defines the set of all possible sets of representations.
the dissimilarity s of a representation set p ∈ p is given by equation  <dig>  where r is the dissimilarity of two gene representations as calculated by equation  <dig>  note that |p| = |a|.
s=1|p|2∑∀δ,γ|0<δ<γ≤|p|r
finally, the go-based functional dissimilarity, gfd, is the minimum dissimilarity for all possible representation sets for a given set of genes a.
gfd= minp∈ps
in figure  <dig> there are seven representations , one for t, and three for t ), which can generate nine possible sets of representations , so |p| =  <dig>  there are two optimal representations for g <dig> and another two for g <dig>  which yield four possible optimal configurations.
however, there is only one optimal functional combination according to the cohesive function of all genes.
by randomly selecting, we could obtain the worst case  =  <dig> ), in contrast to the best case  =  <dig> ).
it is worth noting that our approach does not select the best go term for each gene individually; instead, it searches for the most common and specific function for the whole set of genes.
in this sense, gfd is quite different from gs <dig>  because it only selects one function per gene , whereas gs <dig> considers all of the gene functions.
RESULTS
roc analysis
the performance of our approach was tested by comparing it to three different measures: an information content-based measure ; a hybrid  measure ; and gs <dig>  <cit> , the first measure reported to efficiently evaluate sets of genes instead of pairs of genes or go terms.
both resnik and wang's measures for terms were calculated using their implementations in bioconductor  <cit>  and extrapolated to gene sets using the best-match average approach.
the gs <dig> source was downloaded from the website referenced in  <cit> .
roc analyses have been widely used in the literature  <cit>  because they can be used to score the performance of classifiers and rankers as a trade-off between sensitivity or as a true positive rate and false positive rate.
in addition, the area under the roc curve is presented, as it provides information about the level of randomness of the approach.
two data sets were used: sets with and without functional coherence.
both data sets were generated according to the information stored in kegg.
kegg <cit>  is a database of biological systems that integrates genomic, chemical and systemic function information.
this database offers genomic information about several hundred organisms, from which we selected saccharomyces cerevisiae .
all of the metabolic pathways from sce were used as examples of gene sets with functional coherence.
a cluster of genes was associated with each pathway.
the data set without functional coherence was designed to be the same size as the functional coherence, but the genes within the clusters were randomly generated.
thus, for each pathway, we have two gene clusters of size k: one with genes involved in the same pathway and another with randomly generated genes.
roc analysis was performed for the three go ontologies.
in particular, the gfd, resnik and wang methods were compared for the three ontologies, whereas gs <dig> was only used for the biological process ontology because this measure can-not provide values for the other two ontologies.
the roc curve was plotted over the interval  <cit>  with increments of  <dig> , as illustrated in figure  <dig>  the area under the roc curve  is enclosed in brackets.
gfd shows similar and satisfactory behaviour for the three ontologies.
the resnik and wang methods perform differently.
for the biological process ontology, only wang's approach performs worse than expected, due to its false positive rate.
the auc is above  <dig>  for most measures, except for wang's, which seems to be random .
for the molecular function ontology, our approach is excellent, with an auc of about  <dig> , which is much greater than that of resnik  or wang's approach.
for the cellular component ontology, the performances of the three measures are similar.
although a biological process is not equivalent to a pathway, these concepts are very similar.
for example, cell cycle pathway  is directly related to "mitotic cell cycle" go-term according to the information stored in kegg.
thus, genes within the same pathway must be similar in the biological process ontology.
however, those genes do not have to be similar in all cases under the cellular component ontology since they can be located in different places of cell for some pathways.
for example, cell cycle genes related to transcription are located in the nucleus while those related to translation are in the ribosome.
hence, the results obtained in this ontology are not sufficiently consistent in order to compare the performance of the different approaches.
finally, genes in the same pathway also have to be similar in the molecular function ontology.
this ontology describes types of activities, some of which are present in the pathway describing the process.
this is crucial in our study since our approach select the most cohesive function among the genes.
in contrast, wang and resnik approaches are based on the best-match average where the same functionality may not neccessarily be selected to compute the overall similarity of the set of genes.
this will cause a high false positive rate .
gfd only uses one go-term to evaluate the similarity of a gene in relation to the rest, while the other approaches can select different go-terms to measure the similarity of a gene with regard to the other genes.
this is the main reason for the poor performance of the wang and resnik in molecular function compaired to biological process.
in general, the roc analysis shows the robustness of gfd and demonstrates the effectiveness of the approach in evaluating the most cohesive functional annotation of a set of genes.
computational analysis
the gene set functional coherence measure proposed here is based on calculating the dissimilarity of all possible input gene-representation combinations.
if the input set has n genes and each gene encodes p gene products, then each gene product supports t go terms in each ontology, and the average number of gene representations per go term is r. the computational order of the similarity measure is:
t∈Θn×n2)=Θ
where k = p × t × r is the number of gene representations per gene.
kn is the number of different gene representation sets for each input gene.
the number- of gene-representation pairs is n <dig>  consequently, the exhaustive calculation of gfd has a high computational complexity, making it intractable for large data sets.
as the homogeneity measure for any set of genes should be calculated in an efficient way, we introduce a heuristic technique based on the voronoi diagram concept  <cit>  that reduces the complexity from exponential to polynomial order.
for each node in the go tree, the nearest representation of each gene for that node is obtained .
thus t  represents the set with a unique representation for each node .
once the nearest representation of each gene is found for each node, the dissimilarity values of the nodes are calculated .
finally, the smallest value found for s is used as the gfd value.
to explore the effect of heuristics on the computational cost, we analysed the well-known cell cycle pathway  from saccharomyces cerevisiae.
to evaluate this set, which contains  <dig> genes, it is necessary to consider their  <dig> annotations.
these annotations have  <dig>   <dig> representations, which generate  <dig>  combinations.
our approach can evaluate these combinations in only  <dig> seconds .
similarly, to evaluate the  <dig> randomly chosen genes,  <dig>  combinations were generated and evaluated in  <dig> seconds.
table  <dig> shows the computational cost of the five largest sets, together with relevant information about the number of annotations, representations and combinations for each set of genes .
the five saccharomyces cerevisiae pathways with the highest number of known genes.
for each set of genes  the upper row represents real data and the lower row illustrates the pseudorandomly generated data.
the performance of the approach, in terms of the influence of the heuristics on the quality of results, was also analysed.
varying the number of children per node  and the number of input genes  and randomly generating  <dig> different trees for each setting,  <dig> trees were considered for analysis with and without the heuristics.
the use of the heuristic algorithm produced slightly different results in  <dig> % of the cases , and the average relative error was  <dig> , indicating that the reduction of computational cost does not significantly affect the quality of the results.
CONCLUSIONS
we have introduced a functional dissimilarity measure for gene sets, named gfd  that selects the most cohesive function from a set of input genes.
gfd was compared to the most relevant techniques: gs <dig> and the methods of wang et al.
and resnik et al.
comparisons were conducted for two different data sets: one based on kegg pathways and another that was pseudorandomly generated.
to demonstrate the robustness of the method, an roc analysis was performed for the three go ontologies to analyse the discriminatory power of the dissimilarity mesures and their sensitivity.
in general, gfd is much more accurate for the molecular function ontology, and it is equivalent to the resnik and gs <dig> methods for the other two ontologies.
the area under the roc curve also shows good performance for both the biological process and molecular function ontologies .
authors' contributions
nd conceived the method, designed and implemented the algorithm, and conducted the study.
jar lead the project and participated in writing the manuscript.
all authors read, edited and approved the final manuscript.

 the gene ontology is a cross-species, controlled vocabulary describing three major functional characteristics of gene products: molecular function, cellular component and biological process. the information is structured as a directed acyclic graph for each sub-ontology. each node in the graph represents a class of genes identified by a go-term. each edge represents the relationship between the terms it connects, which can be "is a", "is a part of", or "regulates", meaning that a child class is either a part of the parent, is a more specific example of the parent class or is regulated by the parent, respectively. the go provides a controlled vocabulary for describing gene product functions and can be used to evaluate the functional coherence of gene sets. there are two major approaches for analyzing go-based gene annotations: enrichment tools and semantic similarity measures. enrichment tools enrichment tools are used to determine the common features of a set of genes by examining annotations and finding go-terms that they share to a significant extent. for example, the to-go java navigation tool allows users to navigate the go with various kinds of queries. there are also enrichment tools that provide ontological analyses with different statistical models, including the hypergeometric, binomial, pearsons's chi-squared and fisher's exact tests. genetools is a web service that provides access to several databases such as unigene, entrez gene, swiss-prot and gene ontology. it includes a tool for visualisation and statistical hypothesis testing to assess the similarity of go-term annotations in different gene lists. the local graph structure of go hierarchy is available from golem. it also supports rapid analysis of an input list of genes to find enriched go terms. funcassociate, takes a list of genes as an input and indicates whether a significant number of the genes share a certain go term. based on the same concept of go enrichment, the tools bingo and ease take a set of genes and identify the saturated terms. semantic similarity measures in general, go-based enrichment tools are used to analyse go term in large-scale gene sets. however, while they all determine whether an observed number of go annotations in a set is significant, they lack a quantitative similarity measure that would allow for a complete comparable analysis of gene sets or models produced by microarray analysis. although many enrichment tools are used for analyzing microarray data and give a level of significance for the designed enrichment, they only inform about the data distribution and do not give information on the inherent relationship, which is critical at comparing sets of genes. to address this issue, semantic similarity methods have been developed. this category comprises go-term, gene-product and gene-similarity approaches. go-term similarity approaches have been presented by couto et al., kriventseva et al., and lee et al. and are based on measures originally developed for other semantic taxonomies. these measures determine the similarity of two go-terms using the information content for their lowest common ancestor. guo et al. evaluated these methods and showed that resnik's method is better than the others in terms of correlating gene sequence similarities and gene expression profiles. del pozo et al. proposed a new method for quantifying functional distances between go terms. their method is based on the simultaneous occurrence of terms in the same set of interpro entries does not rely on the structure of the go itself. in the same vein, wang et al. presented a method to encode a go-term's semantics as a numeric value by aggregating the semantic contributions of ancestor terms. this proposal was used to develop a clustering tool to study the genes in pathways retrieved from the saccharomyces genome database, and the clustering results showed that wang's method is more consistent than resnik's method. the relationships of gene-products are also of interest to researchers. until recently, the most common methods for measuring gene-product functional similarity were pairwise approaches based on go-term. lord et al. were the first to apply this methodology, using the average of all pairwise similarities. the same approach was used by liu et al., azuaje et al. and chagoyen et al.. lee et al. and guo et al. used the maximum of all pairwise similarities; whereas brameier and wiuf and wu et al. used a composite average in which only the best-matching term pairs are considered. tao et al. proposed a variant, in which only those pairwise measures that exceed a threshold were considered. the performances of these pairwise-based measures were tested by xu et al.. they concluded that the method based on the best-match average consistently gave the best performance out of all of the tests that were studied. other methods exist for measuring gene-product functional similarity that are not based on pairwise approaches. lerman and shakhnovich presented several manifold-embedding techniques for computing distances between go functional annotations and for estimating functional distances between protein domains. likewise, schlicker et al. proposed a method for measuring functional similarity by combining different ontologies to produce a single similarity score. their method, named funsim, is based on schlicker's measure, which combines both of the lin and resnik go-term similarity measures. bastos et al. proposed three different measures: goocurrence to measure the functional coherence of a list of gene products; goscore to indicate how well a cluster of genes has been functionally characterised; and gocenter to provide a measure of how many of the cluster's functional annotations are captured by the center of the cluster. zheng and lu developed a measure to determine the overall functional coherence of a group of proteins by using the semantic similarity of the biomedical literature associated with the proteins. the methods presented above measure the similarity of a pair of go terms, a measurement that can be extended to a set of gene products or a pair of genes. the approaches that address the functional coherence of a gene set do not simply select the most common function found within the set. instead, the gene set coherence is determined as a function of the similarity of all the pairs of genes within the set. recently, ruths et al. proposed a go-based measure of functional similarity for gene sets, named gs this measure quantifies the similarity of a set of genes by averaging their individual contributions. each gene is compared to the other genes in the set by calculating how closely the gene's annotation match the annotations of the others. gs was compared to the go pairwise measure of wang et al. by extending wang's measure to average the contributions of all gene pairs. the comparison showed that gs generates results more quickly and with comparable quality. to our knowledge, gs was the first method used to determine the functional similarity of a gene set by using an entire set of genes. later, richards et al. proposed another go-based measure to evaluate the functional coherence of gene sets. these measures are based on the topological properties of graphs comprised of genes and their go annotations, and they consider the enrichment of annotations and the relationships among annotations when determining the significance of functional coherence. unlike our approach, the method of richards et al. considers all of the annotations with equal weight. the reader is refered to reference for a survey of semantic similarity measures. although these similarity measures have been used for different applications, such as comparing gene products with different functions or predicting gene product functions, they face a major limitation when confronted with genes that are involved in several functions. for such genes, the current tools give equal weight to all of the biological functions and it is not possible to single out the most relevant ones by considering the context of the other genes involved. in this work, we propose a novel method for measuring gene set dissimilarity by weighting the most cohesive functions based on the global behaviour of the whole set of input genes. this measure, named gfd, is based on the gene ontology, and it assigns a numerical value to a gene set for each of the three go ontologies. method gfd is based on an adaptation of the go-tree structure presented in. the structure is used to develop a novel go-term dissimilarity measure for use in calculating gene set dissimilarity. to our knowledge, this is the first report of a measure that evaluates a gene set by taking into account the most cohesive function found in the set. the method involves searching for the most specific function for each gene that is also similar to the other functions found in the gene set. the methodology is outlined in figure which presents an example of a set of four genes. the calculation of gfd entails five consecutive steps, which are described below. first step: gene identification the first step consists of finding the representative of each input gene in the go. let us assume that the go maps to Θ genes for a specific organism. let a be the set of genes to be evaluated. each g ∈ a is searched for in Θ, and if the search is unsuccessful, g is transformed into a synonym g' by using the gene synonym information given in the go annotation. that is, the initial set of genes a = {g..., gn} is transformed into a′={g1′,…,gn′′}, where each g' is present in Θ. however, the gene is removed if no synonym exists. for instance, in figure genes g and g were found in the go, gene g was transformed into a synonym, and gene g was not found. second step: gene-function identification the second step consists of identifying the function of the genes in a set. each gene is transformed into the different proteins encoded by the gene according to the entrez gene database. thus, a set of gene products h = {gip..., gipm} is associated with each gi′∈a′. continuing with the previous example, g encodes the g1p protein, g encodes the g2p protein, and g encodes g3p g3p and g3p third step: gene-product filtering in this step, each gene function is filtered by the three go domains. the proteins chosen in the previous step are removed from those domains in which they are not involved, and are otherwise selected. thus, in figure the g1p protein, encoded by gene g takes part in all three ontologies; the protein encoded by gene g is presented in the biological process and cellular component ontologies; and gene g is represented by protein g3p in the molecular function ontology, by the g3p and g3p proteins in the biological process, and by the g3p protein in the cellular component ontology. once the input genes have been transformed into their biological functionalities and these have been filtered through each domain, the next steps must be repeated for the three ontologies, vielding three different results. for the sake of clarity, we will only consider the biological process ontology in the following descriptions and examples. fourth step: gene-product annotation search for each ontology, the annotations of each protein are examined. a single protein can be associated with or located in one or more cellular components, it is active in one or more biological processes, during which it might perform several molecular functions. this feature is accounted for in the go: each functional annotation is identified by a unique go term. in figure the annotations of each protein in the biological process ontology are depicted. for each gipj, a set of go terms is obtained, i.e., h = {gipjt..., gipjtq}. for example, protein g1p has two different terms in the biological process domain. both functionalities are used for the g1p1t and g1p1t go terms. fifth step: gene-product functionality at this stage, each functional annotation in the go has been indentified. the go directed acyclic graph is used, but only the "is a" relationships are considered. our approach does not use the "part of" relationships for three reasons: a) we would like to compare results among the three domains, and the molecular function ontology does not have the "part of" relationship; b) the "part of" relationship is used in the biological process ontology when the child node is an instance of only a portion of the parent process; c) the three ontologies are now "is a" complete, meaning that every term has a path to the root node that passes solely through "is a" relationships. in figure the g1p1t go term is identical to the g3p2t term. therefore, both functions are located in the same node of the go dag. next, the retrieved information is transformed into a tree structure. a node will be present in the go tree for each path that exists in the dag from that node to the root. for instance, in figure g1p1t has two ways to reach the biological process root node, so this node is duplicated in the resulting go tree. once the tree structure is built, the input genes are added to the go tree as leaf nodes. these node positions designate the functional annotations found among the gene set. each leaf node position is determined according to both the go term and the protein product of the gene. a gene can be present in different leaves, which are different representations of the gene from different domains. each go-term gipjtk will have a number of representations in the go, as it can be present in different places within the go tree. this set of representations is denoted by h = {gipjtkr..., gipjtkrs}, where r... rs denote the representations of term gipjtk. after the go tree is constructed, the input genes can be evaluated. at this point, the initial information a = {g..., g4} has been transformed into three representations of g one representation of g and three representations of g each of which is located in a structure that also provides information itself. the gene set functional measure gfd, which is described in detail below, is based on the gene-representation similarity and is supported by the go-tree structure. gene-representation functional dissimilarity let rα and rβ be two gene representations. the dissimilarity between them is given by: r=lengthdepth+depth where length denotes the minimum number of nodes separating rα from rβ in the go tree and depth indicates the level of representation in the go tree. from a biological point of view, length indicates the functional relationship of the two go terms, whereas depth indicates the level of specificity of the representation. thus, the measure penalises gene-representation pairs that are widely separated, and it rewards specialisation. this measure provides values between and where values close to mean "similar", and values near mean "dissimilar". two gene representations, rα and rβ, present the best similarity when they share the same parent = 1) and their depths are the maximum = depth = k). in this case, their functional dissimilarity is: r=1k+k≈ in contrast, the worst case occurs when two gene representations are low in the go tree = depth = k), and they do not share any ancestor node other than the root node = k + k - 1): r=2k-12k≈ for example, r=14+4= r=74+4= for this set of genes, the minimum and maximum values for r are and, respectively. functional dissimilarity measure the functional dissimilarity is based on the gene-representation dissimilarity described above. our approach extrapolates the gene-representation dissimilarity measure to evaluate gene set homogeneity. let a be a set of genes {g g..., gn}. the representation set for a gene gi is given by t, as shown in equation in the fifth step). t= ⋃j∈hk∈hh the cartesian product p = t × t ×... × t defines the set of all possible sets of representations. the dissimilarity s of a representation set p ∈ p is given by equation where r is the dissimilarity of two gene representations as calculated by equation note that |p| = |a|. s=1|p|2∑∀δ,γ|0<δ<γ≤|p|r finally, the go-based functional dissimilarity, gfd, is the minimum dissimilarity for all possible representation sets for a given set of genes a. gfd= minp∈ps in figure there are seven representations, one for t, and three for t ), which can generate nine possible sets of representations, so |p| = there are two optimal representations for g and another two for g which yield four possible optimal configurations. however, there is only one optimal functional combination according to the cohesive function of all genes. by randomly selecting, we could obtain the worst case = ), in contrast to the best case = ). it is worth noting that our approach does not select the best go term for each gene individually; instead, it searches for the most common and specific function for the whole set of genes. in this sense, gfd is quite different from gs because it only selects one function per gene, whereas gs considers all of the gene functions.  roc analysis the performance of our approach was tested by comparing it to three different measures: an information content-based measure; a hybrid measure; and gs, the first measure reported to efficiently evaluate sets of genes instead of pairs of genes or go terms. both resnik and wang's measures for terms were calculated using their implementations in bioconductor and extrapolated to gene sets using the best-match average approach. the gs source was downloaded from the website referenced in. roc analyses have been widely used in the literature because they can be used to score the performance of classifiers and rankers as a trade-off between sensitivity or as a true positive rate and false positive rate. in addition, the area under the roc curve is presented, as it provides information about the level of randomness of the approach. two data sets were used: sets with and without functional coherence. both data sets were generated according to the information stored in kegg. kegg is a database of biological systems that integrates genomic, chemical and systemic function information. this database offers genomic information about several hundred organisms, from which we selected saccharomyces cerevisiae. all of the metabolic pathways from sce were used as examples of gene sets with functional coherence. a cluster of genes was associated with each pathway. the data set without functional coherence was designed to be the same size as the functional coherence, but the genes within the clusters were randomly generated. thus, for each pathway, we have two gene clusters of size k: one with genes involved in the same pathway and another with randomly generated genes. roc analysis was performed for the three go ontologies. in particular, the gfd, resnik and wang methods were compared for the three ontologies, whereas gs was only used for the biological process ontology because this measure can-not provide values for the other two ontologies. the roc curve was plotted over the interval with increments of, as illustrated in figure the area under the roc curve is enclosed in brackets. gfd shows similar and satisfactory behaviour for the three ontologies. the resnik and wang methods perform differently. for the biological process ontology, only wang's approach performs worse than expected, due to its false positive rate. the auc is above for most measures, except for wang's, which seems to be random. for the molecular function ontology, our approach is excellent, with an auc of about, which is much greater than that of resnik or wang's approach. for the cellular component ontology, the performances of the three measures are similar. although a biological process is not equivalent to a pathway, these concepts are very similar. for example, cell cycle pathway is directly related to "mitotic cell cycle" go-term according to the information stored in kegg. thus, genes within the same pathway must be similar in the biological process ontology. however, those genes do not have to be similar in all cases under the cellular component ontology since they can be located in different places of cell for some pathways. for example, cell cycle genes related to transcription are located in the nucleus while those related to translation are in the ribosome. hence, the results obtained in this ontology are not sufficiently consistent in order to compare the performance of the different approaches. finally, genes in the same pathway also have to be similar in the molecular function ontology. this ontology describes types of activities, some of which are present in the pathway describing the process. this is crucial in our study since our approach select the most cohesive function among the genes. in contrast, wang and resnik approaches are based on the best-match average where the same functionality may not neccessarily be selected to compute the overall similarity of the set of genes. this will cause a high false positive rate. gfd only uses one go-term to evaluate the similarity of a gene in relation to the rest, while the other approaches can select different go-terms to measure the similarity of a gene with regard to the other genes. this is the main reason for the poor performance of the wang and resnik in molecular function compaired to biological process. in general, the roc analysis shows the robustness of gfd and demonstrates the effectiveness of the approach in evaluating the most cohesive functional annotation of a set of genes. computational analysis the gene set functional coherence measure proposed here is based on calculating the dissimilarity of all possible input gene-representation combinations. if the input set has n genes and each gene encodes p gene products, then each gene product supports t go terms in each ontology, and the average number of gene representations per go term is r. the computational order of the similarity measure is: t∈Θn×n2)=Θ where k = p × t × r is the number of gene representations per gene. kn is the number of different gene representation sets for each input gene. the number- of gene-representation pairs is n consequently, the exhaustive calculation of gfd has a high computational complexity, making it intractable for large data sets. as the homogeneity measure for any set of genes should be calculated in an efficient way, we introduce a heuristic technique based on the voronoi diagram concept that reduces the complexity from exponential to polynomial order. for each node in the go tree, the nearest representation of each gene for that node is obtained. thus t represents the set with a unique representation for each node. once the nearest representation of each gene is found for each node, the dissimilarity values of the nodes are calculated. finally, the smallest value found for s is used as the gfd value. to explore the effect of heuristics on the computational cost, we analysed the well-known cell cycle pathway from saccharomyces cerevisiae. to evaluate this set, which contains genes, it is necessary to consider their annotations. these annotations have representations, which generate combinations. our approach can evaluate these combinations in only seconds. similarly, to evaluate the randomly chosen genes, combinations were generated and evaluated in seconds. table shows the computational cost of the five largest sets, together with relevant information about the number of annotations, representations and combinations for each set of genes. the five saccharomyces cerevisiae pathways with the highest number of known genes. for each set of genes the upper row represents real data and the lower row illustrates the pseudorandomly generated data. the performance of the approach, in terms of the influence of the heuristics on the quality of results, was also analysed. varying the number of children per node and the number of input genes and randomly generating different trees for each setting, trees were considered for analysis with and without the heuristics. the use of the heuristic algorithm produced slightly different results in % of the cases, and the average relative error was, indicating that the reduction of computational cost does not significantly affect the quality of the results.  we have introduced a functional dissimilarity measure for gene sets, named gfd that selects the most cohesive function from a set of input genes. gfd was compared to the most relevant techniques: gs and the methods of wang et al. and resnik et al. comparisons were conducted for two different data sets: one based on kegg pathways and another that was pseudorandomly generated. to demonstrate the robustness of the method, an roc analysis was performed for the three go ontologies to analyse the discriminatory power of the dissimilarity mesures and their sensitivity. in general, gfd is much more accurate for the molecular function ontology, and it is equivalent to the resnik and gs methods for the other two ontologies. the area under the roc curve also shows good performance for both the biological process and molecular function ontologies. authors' contributions nd conceived the method, designed and implemented the algorithm, and conducted the study. jar lead the project and participated in writing the manuscript. all authors read, edited and approved the final manuscript. 
the gene ontology provides a controlled vocabulary for describing the functions of genes and can be used to evaluate the functional coherence of gene sets. to implement this approach to functional assessment, we present gfd, a novel dissimilarity measure for evaluating groups of genes based on the most relevant functions of the whole set. therefore, an identification of the most common function for all of the genes involved in a biological process is important in evaluating the functional similarity of groups of genes and a quantification of functional coherence can helps to clarify the role of a group of genes working together. an roc analysis reveals that the performance of gfd in evaluating the functional dissimilarity of gene sets is very satisfactory. the measure assigns a numerical value to the gene set for each of the three go sub-ontologies. results show that gfd performs robustly when applied to gene set of known functionality. many functional coherence measures consider each pair of gene functions in a set and produce an output based on all pairwise distances.
 the gene ontology provides a controlled vocabulary for describing the functions of genes and can be used to evaluate the functional coherence of gene sets. many functional coherence measures consider each pair of gene functions in a set and produce an output based on all pairwise distances. a single gene can encode multiple proteins that may differ in function. for each functionality, other proteins that exhibit the same activity may also participate. therefore, an identification of the most common function for all of the genes involved in a biological process is important in evaluating the functional similarity of groups of genes and a quantification of functional coherence can helps to clarify the role of a group of genes working together.  to implement this approach to functional assessment, we present gfd, a novel dissimilarity measure for evaluating groups of genes based on the most relevant functions of the whole set. the measure assigns a numerical value to the gene set for each of the three go sub-ontologies.  results show that gfd performs robustly when applied to gene set of known functionality. it performs particularly well on randomly generated gene sets. an roc analysis reveals that the performance of gfd in evaluating the functional dissimilarity of gene sets is very satisfactory. a comparative analysis against other functional measures, such as gs and those presented by resnik and wang, also demonstrates the robustness of gfd. 