BACKGROUND
the wealth of publicly available biological information on gene function necessitates the use of sophisticated data structures to organize, explore, and use this information.
the gene ontology  consortium has developed a unified vocabulary to clarify the relationships of gene products across species and databases  <cit> .
go comprises three separate ontologies: molecular function , biological process , and cellular component .
there are a variety of organism-specific gene ontology annotation files, which associate gene products with go nodes.
these include the saccharomyces genome database  s. cerevisiae annotations  <cit> , the flybase d. melanogaster annotations  <cit> , the mouse genome informatics  m. musculus annotations  <cit> , and the wormbase c. elegans annotations  <cit> .
go is increasingly used to compare gene products across species and to find functional patterns within groups of genes.
the gene ontology hierarchy encapsulates functional homology between genes, which may not be evident from other methods of interspecies gene comparison, such as sequence alignment  <cit> .
an important use of go is the categorization of large-scale gene expression data to identify salient ontological categories in order to facilitate developing biological or mechanistic hypotheses  <cit> .
the large size of the gene ontology hierarchy  and the large number of annotated genes necessitates the use of software tools to mine the information available in the go database.
it is desirable to have software tools that support visualizing the directed acyclic graph  structure of the gene ontology hierarchy rapidly and dynamically, and allow searching for enriched nodes based on a list of genes of interest.
several tools to explore the go hierarchy exist.
the official gene ontology browser, amigo, allows the user to browse the tree structure of the gene ontology hierarchy, search for go term and annotated gene name, and filter searches by species, annotations source, or evidence code.
other tools using the information contained in go include gene infoviz, gofish, fatigo, togo, dyngo, gotermfinder, and gominer  <cit> .
a list of available tools to search the gene ontology hierarchy is available on the gene ontology web site  <cit> .
although the existing tools for go visualization and analysis are useful in many contexts, to our knowledge no current system provides an interactively expandable view of the graph structure of go, allowing the user to focus on a local portion of the gene ontology .
specifically, many tools show the structure of gene ontology as a tree, in which one term may appear multiple times.
the advantage of this approach is that it provides a simplified visualization of the complicated structure of the gene ontology, in which a single term may have multiple parents and many paths back to the root.
however, when gene ontology terms are displayed in a tree, connectivity information present in gene ontology is no longer immediately apparent to the user.
to allow the user to investigate the structure of go fully, software tools are needed that display the gene ontology dynamically as an easily searchable, dynamically interactive dag.
several existing tools, including amigo, geneinfoviz, gotermfinder, gominer, and gennav, display the graph structure of gene ontology.
however, these tools do not support dynamic browsing of the gene ontology hierarchy.
among these tools, only gotermfinder and gennav allow the user to change the graph display to focus on a node of interest.
however, neither gotermfinder nor gennav permit the user to dynamically expand their view of the go graph.
furthermore, many currently available tools cannot load local annotation files, so they are useful only for browsing a pre-determined set of annotations files .
most tools also do not limit the local focus to terms which contain annotated genes in the chosen annotations file.
displaying nodes without annotated genes makes it more difficult to see the relationships between terms with annotated genes in the organism of interest.
another limitation is that most existing software tools are web-based or require an internet connection.
many web-based tools open new windows or reload the current window every time the user wishes to change the display.
simple tasks such as browsing the gene ontology graph often require network traffic over the server.
this makes the usability of many tools highly dependent on the speed of the user's internet connection and the latency of network traffic to the server.
finally, many tools are focused on providing either visualization or analysis capabilities, but not both.
it is desirable to integrate visualization and analysis capabilities in a single software tool, so that the user can browse and search the directed acyclic graph structure of the gene ontology hierarchy, as well as query for terms enriched in a list of genes of interest.
to address these considerations, we have developed golem , a new gene ontology software tool that allows both dynamic visualization of the go graph and gene enrichment analysis.
golem is publicly available as both a stand-alone application and as an applet.
implementation
user interface
golem is implemented in java, using java swing for the graphical user interface.
therefore, golem is platform independent, and can run on any standard machine with jre  <dig>  or higher.
the graph visualization is based on the open-source package openjgraph  <cit> .
both applet and stand-alone versions are available.
statistical analysis
p-values are calculated using the hypergeometric distribution  <cit> .
if an annotations file contains n genes, a given go term has m annotated genes, and the user inputs a list of n genes of interest, the probability of seeing k or more genes of interest annotated to a given go term is computed as:
p−value=∑j=kn
mathtype@mtef@5@5@+=feaafiart1ev1aaatcvaufkttlearuwrp9mdh5mbpbiqv92aaexatlxbi9gbaebbnrfifhhdyfgasaach8aky=wiffydh8gipec8eeeu0xxdbba9frfj0=oqffea0dxdd9vqai=hguq8kuc9pgc9s8qqaq=dirpe0xb9q8qilsfr0=vr0=vr0dc8meaabaqaciaacagaaeqabaqabegadaaakeaacqwgwbaccqghsislcqwg2bgdcqwghbqycqwgsbabcqwg1bqdcqwglbqzcqgh9aqpdaaewbqaamaalaaabawaaewaaeaafaqabegabaaabagaemyta0eabagaemoaaogaaagaayjkaiaawmcaamaabmaabaqbaeqabiqaaaqaaiabd6eaojabgkhitiabd2eanbqaaiabd6gaujabgkhitiabdqgaqbaaaiaawicacaglpaaaaeaadaqadaqaauaabeqaceaaaeaacqwgobgtaeaacqwgubgbaaaacagloagaayzkaaaaaawcbagaemoaaomaeyypa0jaem4aasgabagaemoba4ganiabgghildaaaa@4f18@
the user can choose to correct for multiple hypothesis testing by applying bonferroni correction  <cit> , false discovery rate  correction  <cit> , or no correction.
further, if a user desires to use an alternate method for calculating significance, the provided source code of golem can be altered to use an implementation of a different algorithm  <cit> .
RESULTS
overview of golem
golem displays a local view of the dag structure of the gene ontology hierarchy.
specifically, given a term of interest to the user , golem shows a local portion of the gene ontology graph, centered around this term of interest.
by displaying the gene ontology hierarchy as a dag, golem makes all of the information contained in the local structure of the gene ontology hierarchy visually accessible to the user.
an alternative to such a locally focused dag visualization would be a global view with focusing ability.
however, the entire go hierarchy is very difficult to layout, display, and interpret.
furthermore, many researchers use go with specific terms in mind, and thus a locally focused view is reasonable from the user perspective.
as golem permits the user to interactively browse the graph structure of gene ontology, a local view allows focus on regions of interest while maintaining global graph accessibility.
golem allows the user to search gene ontology by go term name, go id, and gene name.
golem features a search aid window when the user searches by go term name.
this search aid window displays all term names beginning with the letters that the user has entered, facilitating easy browsing of the gene ontology graph.
golem combines dynamic visualization of the dag structure of the gene ontology hierarchy with the functionality to search for go nodes enriched with genes of interest.
we anticipate that the combination of analysis and visualization provided by golem will be useful to biology researchers.
golem requires network traffic only while reading in go term or annotations data.
since golem stores go term and annotation information locally while the program is running, navigating the gene ontology hierarchy is rapid.
additionally, the golem application provides the user with the option to read gene ontology terms and/or annotations from local files.
therefore, the golem application may be used without an internet connection.
it is possible for the user to input any annotations or ontology file in standard format, including personal ontology or annotations files that have not yet been made publicly available.
alternately, the user may choose to download annotations and ontology files from the gene ontology web page.
this ensures that the most recent version of these files is used, an important feature because gene ontology terms are updated frequently.
basic functionality
graph visualization
golem allows the user to visualize the directed acyclic graph structure of the gene ontology hierarchy, centered around a selected node .
golem focuses on a local portion of the graph and implements a depth-based layout.
specifically, nodes are arranged vertically according to their distance from the root node, and nodes with greater degree are centered.
interactivity
clicking on a node changes the node's color and the color of all adjacent edges, displays the name of the selected node at the bottom of the graph, and shows the number of genes annotated to the node in a button at the bottom of the graph.
clicking on that button provides a complete list of annotated genes .
right-clicking on a node displays a popup menu that allows the user to show the children of the selected node, show the ancestors of the selected node, or focus the graph to show the local structure of the gene ontology hierarchy around that node .
golem also permits the user to manually rearrange nodes of the graph in order to improve the appearance of the display.
using local files
the user can choose between using a local gene ontology file defining the go dag and downloading the most recent gene ontology file from the gene ontology consortium web page.
for setting organism-specific annotations, golem allows the user to choose between selecting from a list of annotations files which are downloaded from the go web page, and choosing a local annotations file.
choosing a local file typically results in a shorter loading time, while choosing to download the file ensures that golem will use the most recent version of gene ontology data.
the applet version of golem reads in the data from a stored cache.
choose annotations
golem permits the user to select a species-specific annotations file, to browse all nodes, or to select a local annotations file .
golem provides built-in access to the following species-specific annotations files: s. cerevisiae , d. melanogaster , m. musculus , c. elegans , and h. sapiens .
all files are read from the gene ontology consortium website.
users who wish to browse the annotations for another species or who prefer to use a local annotations file can input a local file in annotations file format.
after an annotations file is selected, golem restricts the graph view to terms that have annotated genes.
search capabilities
find enriched nodes
golem incorporates a function that finds nodes enriched in a list of input genes .
the user enters a list of genes into a text box.
the gene list may include either go db_object_symbols or go db_object_synonyms as input .
golem outputs a table showing the enriched terms.
the table displays the name, id, number of annotated query genes, total number of annotated genes, names of annotated query genes, and p-value of each enriched node.
results are sorted by ontology branch  and in order of ascending p-values.
selecting a row of the table displays the dag of the portion of go containing the selected node in the central display panel window.
selecting multiple rows of the table within the same ontology displays the gene ontology hierarchy centered around all selected terms.
the user must first select an annotations file to use this tool .
genefinder
golem displays all annotated nodes for a given gene within a particular ontology selected by the user .
the user must first select an annotations file to use this tool.
the genefinder tool takes the go db_object_symbol of a gene as input .
for example, the user could search for all nodes in the biological process ontology annotated to the fly gene zol in the flybase annotations file.
golem would display all nodes to which zol is annotated, and the interconnections between these nodes .
gotermsearch
golem is searchable by gene ontology term name.
it displays the selected node, one generation of children, and all possible paths back to the root node.
as a search aid, a popup window will show all nodes that begin with the combination of letters that the user has entered.
thus, if the user types "oxida", they will see "oxidation of lead sulfide," "oxidative phosphorylation," "oxidative phosphorylation uncoupler activity," and "oxidative photosynthetic carbon pathway" as suggested query choices .
goid search
golem is searchable by the unique gene ontology identification number.
it displays the selected node, all possible paths back to the root node, and one generation of child nodes.
timing information
the golem application took approximately  <dig> seconds to initialize the program and load a list of local ontology terms on a  <dig>  ghz celeron cpu with  <dig> mb of ram running microsoft windows xp.
if an update of go is desired, golem took approximately  <dig> seconds to initialize and load ontology terms from the geneontology.org web page.
loading of annotations is fast; a local yeast annotation file can be loaded in approximately  <dig> seconds, for example, and in our trials internet download of the yeast annotations file took  <dig> seconds over a broadband connection.
after this initial loading time, there was typically none or little perceptible delay when searching the ontology hierarchy by go name, go id, or gene name, or when focusing the graph on a specific node, showing the children of a node, showing the ancestors of a node, or finding enriched nodes.
sample use case
after loading the yeast annotations file from the gene ontology web page, a biologist interested in the yeast gene srx <dig> could use the genefinder function to see all of the terms in the biological process ontology to which srx <dig> is annotated.
one of these terms is "response to oxidative stress."
the "focus graph" function could then be used to display all children and all paths to the root node from the "response to oxidative stress" node.
the researcher could also use the "gotermsearch" function to find the "response to oxidative stress" term and examine its location in the go graph as well as the genes annotated to it.
the biologist could then use golem to examine a cluster of genes identified in a microarray study.
for example, golem could be used to analyze the met cluster of genes, which was identified in the yeast cell cycle study by spellman et al.
and contains  <dig> genes  <cit> .
applying the bonferroni correction and setting the p-value cutoff at p =  <dig> , golem's "find enriched nodes" function returns a table containing  <dig> enriched biological process nodes, one enriched cellular component node, and  <dig> enriched molecular function nodes.
as golem searches all three ontologies simultaneously, a single search finds all enriched nodes.
in this case, the enriched biological process nodes include "sulfur amino acid metabolism" , "methionine metabolism"  and "sulfur amino acid biosynthesis" , supporting spellman et al.
's conclusion that many of the genes in this cluster are involved in methionine metabolism.
a researcher interested in exploring an enriched go term in more detail can select that term from golem's table of enriched terms, which displays the directed acyclic graph in the neighborhood of the selected term.
by selecting multiple terms within the same ontology in the table of enriched nodes, the researcher can view the graph centered around several nodes.
this feature allows the user to visualize the relationships in the go dag between nodes enriched in the list of input genes.
in our example of analyzing the met cluster, this type of analysis would quickly show both the interrelationships among the enriched terms and relationships to other nodes such as "sulfur metabolism" which is an ancestor of several of the enriched terms.
as this example indicates, golem can aid researchers with hypothesis generation and testing, as well as show the broader biological context of those hypotheses.
CONCLUSIONS
golem provides dynamic graph-based visualization of the gene ontology hierarchy.
it is the only go visualization tool to provide a dynamically expandable graph display of a local portion of go.
the golem graph view is highly interactive, and can be expanded and focused without network traffic over the server.
golem also provides gene set analysis functionality, allowing the user to search for go terms enriched in genes of interest.
furthermore, the golem application can run without an internet connection on local ontology and annotations files, although a web-based applet version is also available.
in short, golem facilitates rapid, organism-specific searches of the gene ontology and provides a useful tool for biologists to analyze gene sets of interest and to navigate the ontologies' structure.
availability and requirements
project name: golem
project home page:
operating system: platform-independent
programming language: java
requirements: java v <dig>  or greater
licence: open-source
authors' contributions
rsgs implemented the software and drafted the manuscript.
mah contributed implementations for some functionality and provided input on the manuscript.
ch and clm provided vital input and insights during the development and testing processes.
ogt proposed and supervised the project.
all authors read and approved the final manuscript.

 the wealth of publicly available biological information on gene function necessitates the use of sophisticated data structures to organize, explore, and use this information. the gene ontology consortium has developed a unified vocabulary to clarify the relationships of gene products across species and databases. go comprises three separate ontologies: molecular function, biological process, and cellular component. there are a variety of organism-specific gene ontology annotation files, which associate gene products with go nodes. these include the saccharomyces genome database s. cerevisiae annotations, the flybase d. melanogaster annotations, the mouse genome informatics m. musculus annotations, and the wormbase c. elegans annotations. go is increasingly used to compare gene products across species and to find functional patterns within groups of genes. the gene ontology hierarchy encapsulates functional homology between genes, which may not be evident from other methods of interspecies gene comparison, such as sequence alignment. an important use of go is the categorization of large-scale gene expression data to identify salient ontological categories in order to facilitate developing biological or mechanistic hypotheses. the large size of the gene ontology hierarchy and the large number of annotated genes necessitates the use of software tools to mine the information available in the go database. it is desirable to have software tools that support visualizing the directed acyclic graph structure of the gene ontology hierarchy rapidly and dynamically, and allow searching for enriched nodes based on a list of genes of interest. several tools to explore the go hierarchy exist. the official gene ontology browser, amigo, allows the user to browse the tree structure of the gene ontology hierarchy, search for go term and annotated gene name, and filter searches by species, annotations source, or evidence code. other tools using the information contained in go include gene infoviz, gofish, fatigo, togo, dyngo, gotermfinder, and gominer. a list of available tools to search the gene ontology hierarchy is available on the gene ontology web site. although the existing tools for go visualization and analysis are useful in many contexts, to our knowledge no current system provides an interactively expandable view of the graph structure of go, allowing the user to focus on a local portion of the gene ontology. specifically, many tools show the structure of gene ontology as a tree, in which one term may appear multiple times. the advantage of this approach is that it provides a simplified visualization of the complicated structure of the gene ontology, in which a single term may have multiple parents and many paths back to the root. however, when gene ontology terms are displayed in a tree, connectivity information present in gene ontology is no longer immediately apparent to the user. to allow the user to investigate the structure of go fully, software tools are needed that display the gene ontology dynamically as an easily searchable, dynamically interactive dag. several existing tools, including amigo, geneinfoviz, gotermfinder, gominer, and gennav, display the graph structure of gene ontology. however, these tools do not support dynamic browsing of the gene ontology hierarchy. among these tools, only gotermfinder and gennav allow the user to change the graph display to focus on a node of interest. however, neither gotermfinder nor gennav permit the user to dynamically expand their view of the go graph. furthermore, many currently available tools cannot load local annotation files, so they are useful only for browsing a pre-determined set of annotations files. most tools also do not limit the local focus to terms which contain annotated genes in the chosen annotations file. displaying nodes without annotated genes makes it more difficult to see the relationships between terms with annotated genes in the organism of interest. another limitation is that most existing software tools are web-based or require an internet connection. many web-based tools open new windows or reload the current window every time the user wishes to change the display. simple tasks such as browsing the gene ontology graph often require network traffic over the server. this makes the usability of many tools highly dependent on the speed of the user's internet connection and the latency of network traffic to the server. finally, many tools are focused on providing either visualization or analysis capabilities, but not both. it is desirable to integrate visualization and analysis capabilities in a single software tool, so that the user can browse and search the directed acyclic graph structure of the gene ontology hierarchy, as well as query for terms enriched in a list of genes of interest. to address these considerations, we have developed golem, a new gene ontology software tool that allows both dynamic visualization of the go graph and gene enrichment analysis. golem is publicly available as both a stand-alone application and as an applet. implementation user interface golem is implemented in java, using java swing for the graphical user interface. therefore, golem is platform independent, and can run on any standard machine with jre or higher. the graph visualization is based on the open-source package openjgraph. both applet and stand-alone versions are available. statistical analysis p-values are calculated using the hypergeometric distribution. if an annotations file contains n genes, a given go term has m annotated genes, and the user inputs a list of n genes of interest, the probability of seeing k or more genes of interest annotated to a given go term is computed as: p−value=∑j=kn mathtype@mtef@5@5@+=feaafiart1ev1aaatcvaufkttlearuwrp9mdh5mbpbiqv92aaexatlxbi9gbaebbnrfifhhdyfgasaach8aky=wiffydh8gipec8eeeu0xxdbba9frfj0=oqffea0dxdd9vqai=hguq8kuc9pgc9s8qqaq=dirpe0xb9q8qilsfr0=vr0=vr0dc8meaabaqaciaacagaaeqabaqabegadaaakeaacqwgwbaccqghsislcqwg2bgdcqwghbqycqwgsbabcqwg1bqdcqwglbqzcqgh9aqpdaaewbqaamaalaaabawaaewaaeaafaqabegabaaabagaemyta0eabagaemoaaogaaagaayjkaiaawmcaamaabmaabaqbaeqabiqaaaqaaiabd6eaojabgkhitiabd2eanbqaaiabd6gaujabgkhitiabdqgaqbaaaiaawicacaglpaaaaeaadaqadaqaauaabeqaceaaaeaacqwgobgtaeaacqwgubgbaaaacagloagaayzkaaaaaawcbagaemoaaomaeyypa0jaem4aasgabagaemoba4ganiabgghildaaaa@4f18@ the user can choose to correct for multiple hypothesis testing by applying bonferroni correction, false discovery rate correction, or no correction. further, if a user desires to use an alternate method for calculating significance, the provided source code of golem can be altered to use an implementation of a different algorithm.  overview of golem golem displays a local view of the dag structure of the gene ontology hierarchy. specifically, given a term of interest to the user, golem shows a local portion of the gene ontology graph, centered around this term of interest. by displaying the gene ontology hierarchy as a dag, golem makes all of the information contained in the local structure of the gene ontology hierarchy visually accessible to the user. an alternative to such a locally focused dag visualization would be a global view with focusing ability. however, the entire go hierarchy is very difficult to layout, display, and interpret. furthermore, many researchers use go with specific terms in mind, and thus a locally focused view is reasonable from the user perspective. as golem permits the user to interactively browse the graph structure of gene ontology, a local view allows focus on regions of interest while maintaining global graph accessibility. golem allows the user to search gene ontology by go term name, go id, and gene name. golem features a search aid window when the user searches by go term name. this search aid window displays all term names beginning with the letters that the user has entered, facilitating easy browsing of the gene ontology graph. golem combines dynamic visualization of the dag structure of the gene ontology hierarchy with the functionality to search for go nodes enriched with genes of interest. we anticipate that the combination of analysis and visualization provided by golem will be useful to biology researchers. golem requires network traffic only while reading in go term or annotations data. since golem stores go term and annotation information locally while the program is running, navigating the gene ontology hierarchy is rapid. additionally, the golem application provides the user with the option to read gene ontology terms and/or annotations from local files. therefore, the golem application may be used without an internet connection. it is possible for the user to input any annotations or ontology file in standard format, including personal ontology or annotations files that have not yet been made publicly available. alternately, the user may choose to download annotations and ontology files from the gene ontology web page. this ensures that the most recent version of these files is used, an important feature because gene ontology terms are updated frequently. basic functionality graph visualization golem allows the user to visualize the directed acyclic graph structure of the gene ontology hierarchy, centered around a selected node. golem focuses on a local portion of the graph and implements a depth-based layout. specifically, nodes are arranged vertically according to their distance from the root node, and nodes with greater degree are centered. interactivity clicking on a node changes the node's color and the color of all adjacent edges, displays the name of the selected node at the bottom of the graph, and shows the number of genes annotated to the node in a button at the bottom of the graph. clicking on that button provides a complete list of annotated genes. right-clicking on a node displays a popup menu that allows the user to show the children of the selected node, show the ancestors of the selected node, or focus the graph to show the local structure of the gene ontology hierarchy around that node. golem also permits the user to manually rearrange nodes of the graph in order to improve the appearance of the display. using local files the user can choose between using a local gene ontology file defining the go dag and downloading the most recent gene ontology file from the gene ontology consortium web page. for setting organism-specific annotations, golem allows the user to choose between selecting from a list of annotations files which are downloaded from the go web page, and choosing a local annotations file. choosing a local file typically results in a shorter loading time, while choosing to download the file ensures that golem will use the most recent version of gene ontology data. the applet version of golem reads in the data from a stored cache. choose annotations golem permits the user to select a species-specific annotations file, to browse all nodes, or to select a local annotations file. golem provides built-in access to the following species-specific annotations files: s. cerevisiae, d. melanogaster, m. musculus, c. elegans, and h. sapiens. all files are read from the gene ontology consortium website. users who wish to browse the annotations for another species or who prefer to use a local annotations file can input a local file in annotations file format. after an annotations file is selected, golem restricts the graph view to terms that have annotated genes. search capabilities find enriched nodes golem incorporates a function that finds nodes enriched in a list of input genes. the user enters a list of genes into a text box. the gene list may include either go db_object_symbols or go db_object_synonyms as input. golem outputs a table showing the enriched terms. the table displays the name, id, number of annotated query genes, total number of annotated genes, names of annotated query genes, and p-value of each enriched node. results are sorted by ontology branch and in order of ascending p-values. selecting a row of the table displays the dag of the portion of go containing the selected node in the central display panel window. selecting multiple rows of the table within the same ontology displays the gene ontology hierarchy centered around all selected terms. the user must first select an annotations file to use this tool. genefinder golem displays all annotated nodes for a given gene within a particular ontology selected by the user. the user must first select an annotations file to use this tool. the genefinder tool takes the go db_object_symbol of a gene as input. for example, the user could search for all nodes in the biological process ontology annotated to the fly gene zol in the flybase annotations file. golem would display all nodes to which zol is annotated, and the interconnections between these nodes. gotermsearch golem is searchable by gene ontology term name. it displays the selected node, one generation of children, and all possible paths back to the root node. as a search aid, a popup window will show all nodes that begin with the combination of letters that the user has entered. thus, if the user types "oxida", they will see "oxidation of lead sulfide," "oxidative phosphorylation," "oxidative phosphorylation uncoupler activity," and "oxidative photosynthetic carbon pathway" as suggested query choices. goid search golem is searchable by the unique gene ontology identification number. it displays the selected node, all possible paths back to the root node, and one generation of child nodes. timing information the golem application took approximately seconds to initialize the program and load a list of local ontology terms on a ghz celeron cpu with mb of ram running microsoft windows xp. if an update of go is desired, golem took approximately seconds to initialize and load ontology terms from the geneontology.org web page. loading of annotations is fast; a local yeast annotation file can be loaded in approximately seconds, for example, and in our trials internet download of the yeast annotations file took seconds over a broadband connection. after this initial loading time, there was typically none or little perceptible delay when searching the ontology hierarchy by go name, go id, or gene name, or when focusing the graph on a specific node, showing the children of a node, showing the ancestors of a node, or finding enriched nodes. sample use case after loading the yeast annotations file from the gene ontology web page, a biologist interested in the yeast gene srx could use the genefinder function to see all of the terms in the biological process ontology to which srx is annotated. one of these terms is "response to oxidative stress." the "focus graph" function could then be used to display all children and all paths to the root node from the "response to oxidative stress" node. the researcher could also use the "gotermsearch" function to find the "response to oxidative stress" term and examine its location in the go graph as well as the genes annotated to it. the biologist could then use golem to examine a cluster of genes identified in a microarray study. for example, golem could be used to analyze the met cluster of genes, which was identified in the yeast cell cycle study by spellman et al. and contains genes. applying the bonferroni correction and setting the p-value cutoff at p =, golem's "find enriched nodes" function returns a table containing enriched biological process nodes, one enriched cellular component node, and enriched molecular function nodes. as golem searches all three ontologies simultaneously, a single search finds all enriched nodes. in this case, the enriched biological process nodes include "sulfur amino acid metabolism", "methionine metabolism" and "sulfur amino acid biosynthesis", supporting spellman et al.'s conclusion that many of the genes in this cluster are involved in methionine metabolism. a researcher interested in exploring an enriched go term in more detail can select that term from golem's table of enriched terms, which displays the directed acyclic graph in the neighborhood of the selected term. by selecting multiple terms within the same ontology in the table of enriched nodes, the researcher can view the graph centered around several nodes. this feature allows the user to visualize the relationships in the go dag between nodes enriched in the list of input genes. in our example of analyzing the met cluster, this type of analysis would quickly show both the interrelationships among the enriched terms and relationships to other nodes such as "sulfur metabolism" which is an ancestor of several of the enriched terms. as this example indicates, golem can aid researchers with hypothesis generation and testing, as well as show the broader biological context of those hypotheses.  golem provides dynamic graph-based visualization of the gene ontology hierarchy. it is the only go visualization tool to provide a dynamically expandable graph display of a local portion of go. the golem graph view is highly interactive, and can be expanded and focused without network traffic over the server. golem also provides gene set analysis functionality, allowing the user to search for go terms enriched in genes of interest. furthermore, the golem application can run without an internet connection on local ontology and annotations files, although a web-based applet version is also available. in short, golem facilitates rapid, organism-specific searches of the gene ontology and provides a useful tool for biologists to analyze gene sets of interest and to navigate the ontologies' structure. availability and requirements project name: golem project home page: operating system: platform-independent programming language: java requirements: java v or greater licence: open-source authors' contributions rsgs implemented the software and drafted the manuscript. mah contributed implementations for some functionality and provided input on the manuscript. ch and clm provided vital input and insights during the development and testing processes. ogt proposed and supervised the project. all authors read and approved the final manuscript. 
furthermore, most existing tools are web-based or require an internet connection, will not load local annotations files, and provide either analysis or visualization functionality, but not both. the golem application permits the user either to utilize local gene ontology and annotations files in the absence of an internet connection, or to access the most recent ontology and annotation information from the gene ontology webpage. the gene ontology has become an extremely useful tool for the analysis of genomic data and structuring of biological knowledge. several excellent software tools for navigating the gene ontology have been developed. however, no existing system provides an interactively expandable graph-based view of the gene ontology hierarchy. to address the above limitations, we have developed golem, a visualization and analysis tool for focused exploration of the gene ontology graph. golem allows the user to dynamically expand and focus the local graph structure of the gene ontology hierarchy in the neighborhood of any chosen term. it also supports rapid analysis of an input list of genes to find enriched gene ontology terms. golem supports global and organism-specific searches by gene ontology term name, gene ontology id and gene name. golem is a useful software tool for biologists interested in visualizing the local directed acyclic graph structure of the gene ontology hierarchy and searching for gene ontology terms enriched in genes of interest.
 the gene ontology has become an extremely useful tool for the analysis of genomic data and structuring of biological knowledge. several excellent software tools for navigating the gene ontology have been developed. however, no existing system provides an interactively expandable graph-based view of the gene ontology hierarchy. furthermore, most existing tools are web-based or require an internet connection, will not load local annotations files, and provide either analysis or visualization functionality, but not both.  to address the above limitations, we have developed golem, a visualization and analysis tool for focused exploration of the gene ontology graph. golem allows the user to dynamically expand and focus the local graph structure of the gene ontology hierarchy in the neighborhood of any chosen term. it also supports rapid analysis of an input list of genes to find enriched gene ontology terms. the golem application permits the user either to utilize local gene ontology and annotations files in the absence of an internet connection, or to access the most recent ontology and annotation information from the gene ontology webpage. golem supports global and organism-specific searches by gene ontology term name, gene ontology id and gene name.  golem is a useful software tool for biologists interested in visualizing the local directed acyclic graph structure of the gene ontology hierarchy and searching for gene ontology terms enriched in genes of interest. it is freely available both as an application and as an applet at. 