GOlr

From GO Wiki
Jump to navigation Jump to search

Overview

This page describes the status of the public Solr index for the GO. This index will replace some of the query functionality for GOOSE as well as become the new backend for AmiGO 2 and other services. A preview server is now active at http://golr.berkeleybop.org.

Public alpha

The preview server at http://golr.berkeleybop.org is currently in alpha.

Some preview documentation is at http://api.berkeleybop.org .

Use

Feel free to use it as you will and start to write for it. As this is still a little early, we are only loading the GO, CL, ECO, and taxslim, as well as non-IEA annotations from the GAFs. Please see the AmiGO_Labs caveats, as well as the downtime information on this page.

Implementation progress

We are now loading properly from owltools.

We have looked at nginx as a reverse proxy for speed and to prevent unauthorized access to non-select URLs on the Solr server, and found it to be good.

The GOlr server is now active at http://golr.berkeleybop.org (nginx front on stove).

We now also have http://amigo2.berkeleybop.org working on stove and backed by golr.berkeleybop.org.

We are now on Solr 3.6. At some point we'd like to get on 4.x for some improvements including pivot tables.

Schema progress

We are currently working towards a flexible schema as defined in the owltools code. As we roll it out for the AmiGO backend and as a replacement for common GOOSE queries, we expect to find holes in the schema, documented below.

Currently, the index is entirely populated by through an owltools command line program, using YAML files for configuration. For more information, see the Installation section below.

Rewriting old GOOSE query examples for the new GOlr Schema

Example queries on the wiki.

  • Some old queries require the use of Solr facets and some modification of code Seth has written to present simpler results queries (i.e. the facet results are not displayed).
  • Note: hierarchical queries that 'combine' facet queries can be handled by the facet.pivot functionality that is available in Solr 4. In the meantime, we'll see if we can devise a work-around.

Current holes in the GOlr schema

  • None listed at this time...

Downtime

Rebuilds start at 10pm PDT (6am BST; 5pm NZST), so there may be some data gaps in there.

At the time of this writing, this process is taking a few hours to complete.

Local installation (data and schema development)

These instructions are intended to illustrate how to install the GOlr server software for AmiGO 2 on a Ubuntu 12.04 LTS Desktop. With careful reading, these instructions should be generalizable to other cases.

General notes

The following packages are required:

  • openjdk-6-jdk
  • jetty

Jetty will need to be setup to start and listen to an external address if you want.

Also, you will need a version of Maven 3 (mvn) to use and build OWLTools if you are trying to load data or produce a schema--the one in Ubuntu for 12.04 is stuck at Maven 2 and not compatible. It is a fairly simple process to download it and make sure that it is in your path.

mkdir -p ~/local/src/java
cd ~/local/src/java
wget http://apache.cs.utah.edu/maven/maven-3/3.0.4/binaries/apache-maven-3.0.4-bin.tar.gz
tar -zxvf apache-maven-3.0.4-bin.tar.gz

Now just make sure that either ~/local/src/java/apache-maven-3.0.4/bin is in your path or explicitly call ~/local/src/java/apache-maven-3.0.4/bin/mvn each time. You'll probably want to add something like:

JAVA_HOME=/usr/lib/jvm/java-6-openjdk
PATH="${PATH}":"${HOME}"/local/src/java/apache-maven-3.0.4/bin

To your ~/.bashrc.

source ~/.bashrc

Readying OWLTools

First, we need to download and build OWLTools--it contains the loader code that GO uses for ontology and GAF files, as well as the tools to generate a new Solr schema from AmiGO 2 YAML config files. The code should be self-sufficient and easy to build on a machine with an internet connection.

cd ~/local/src/svn
svn checkout http://owltools.googlecode.com/svn/trunk/ owltools

To build:

cd ~/local/srv/svn/owltools/OWLTools-Parent/ && mvn clean package

Or, without unit tests (much quicker):

cd ~/local/src/svn/owltools/OWLTools-Parent/ && mvn clean package -DskipTests

The owltools binary should now be built, so you'll probably want to add it to your path by adding the following to your ~/.bashrc:

PATH="${PATH}":"${HOME}"/local/src/svn/owltools/OWLTools-Runner/bin

Then refresh:

source ~/.bashrc

Solr with the GO Solr schema (GOlr)

While we have Jetty installed from the repos, we have our own Solr (3.6) in the GOlr repo--the one that comes with Ubuntu is ancient. While we install/handle our Jetty/Solr setup with the golr.el script found in the GOlr repo, you may find it easier to just look at the script and copy its actions unless you're really into Emacs.

The most important part is using the correct schema.xml (derived from YAML files using OWLTools, but that's another story). The solrconfig.xml is also there and might be useful.

There are two options for this.

Generating the schema from AmiGO 2 (geneontology repo)

This software contains the GO-specific things that BBOP JS does not support--the client (web server) code for AmiGO 2. For the sake of convenience (and using a similar directory layout to the developers), we'll get it like:

mkdir -p ~/local/src/svn
cd ~/local/src/svn
svn co https://geneontology.svn.sourceforge.net/svnroot/geneontology/AmiGO/trunk geneontology/AmiGO/trunk

The Solr schema.xml generation would then look like:

./OWLTools-Runner/bin/owltools --solr-config /home/sjcarbon/local/src/svn/owltools/OWLTools-Solr/src/main/resources/ont-config.yaml /home/sjcarbon/local/src/svn/owltools/OWLTools-Solr/src/main/resources/bio-config.yaml /home/sjcarbon/local/src/svn/owltools/OWLTools-Solr/src/main/resources/ann-config.yaml /home/sjcarbon/local/src/svn/owltools/OWLTools-Solr/src/main/resources/ann_ev_agg-config.yaml --solr-schema-dump

Using the premade GOlrs schema (geneontology repo)

Server code and utilities for handling the GO Solr schema.

svn co https://geneontology.svn.sourceforge.net/svnroot/geneontology/golr geneontology/golr

This is just utility code and the GO data schema, no building is necessary.

Loading the data

With the actual population along the lines of:

owltools http://purl.obolibrary.org/obo/go.owl http://purl.obolibrary.org/obo/ncbitaxon/subsets/taxslim.owl http://purl.obolibrary.org/obo/cl.owl http://purl.obolibrary.org/obo/eco.owl --merge-support-ontologies --reasoner elk --solr-url http://localhost:8080/solr/ --solr-purge --solr-config /home/bbop/local/src/svn/owltools/OWLTools-Solr/src/main/resources/ont-config.yaml --solr-load-ontology --solr-load-panther /optional/wherever --solr-load-gafs /srv/tmp/gene_association.mgi

For the sake of completeness, a development load that we often run looks like:

./OWLTools-Runner/bin/owltools http://purl.obolibrary.org/obo/go.owl http://purl.obolibrary.org/obo/ncbitaxon/subsets/taxslim.owl http://purl.obolibrary.org/obo/cl.owl http://purl.obolibrary.org/obo/eco.owl --merge-support-ontologies --reasoner elk --solr-url http://localhost:8080/solr/ --solr-purge --solr-config /home/sjcarbon/local/src/svn/owltools/OWLTools-Solr/src/main/resources/ont-config.yaml --solr-load-ontology --solr-load-panther ~/tmp/tree --solr-load-gafs http://www.geneontology.org/gene-associations/gene_association.GeneDB_Spombe.gz http://www.geneontology.org/gene-associations/gene_association.dictyBase.gz

As an example, we will load four ontologies useful to GO right now and a single GAF file for annotations onto the localhost Solr instance. Please note the WHEREVER, the other resources are on the web.

OWLTOOLS_MEMORY=32G owltools http://purl.obolibrary.org/obo/go.owl http://purl.obolibrary.org/obo/ncbitaxon/subsets/taxslim.owl http://purl.obolibrary.org/obo/cl.owl http://purl.obolibrary.org/obo/eco.owl --merge-support-ontologies --reasoner elk --solr-url http://localhost:8080/solr/ --solr-purge --solr-config WHEREVER/owltools/OWLTools-Solr/src/main/resources/ont-config.yaml --solr-load-ontology --solr-load-panther ~/tmp/PANTHER7.2_HMM_classifications ~/tmp/tree --solr-load-gafs http://www.geneontology.org/gene-associations/gene_association.GeneDB_Lmajor.gz

More memory is always welcome, but less is probably sufficient. The panther section

--solr-load-panther ~/tmp/PANTHER7.2_HMM_classifications ~/tmp/tree

is optional and experimental--it can be left out entirely.