geneontology / noctua

Graph-based modeling environment for biology, including prototype editor and services
http://noctua.geneontology.org/
BSD 3-Clause "New" or "Revised" License
38 stars 12 forks source link
annotation curation functional-annotation geneontology go-cam noctua noctua-models ontology owl pathways

The Noctua Stack

The Noctua Stack is a curation platform developped by the Gene Ontology Consortium. The stack is composed of:

The biological knowledge are stored in RDF/OWL using the blazegraph triplestore implementation. In effect, any piece of knowledge stored in RDF/OWL is a triple { subject, predicate, object } defining a relationship (or association) between a subject and an object. Those triples are also commonly stored in Turtle files.

Installation

Pre-requisite

You must have npm installed. On ubuntu/debian, simply type:

sudo apt-get install nodejs

On OSX, it is also possible to install npm either from nodejs.org or using brew:

brew install node

Steps for a local Installation

# The full Noctua stack is a multi-repositorie project; optionally create a main directory for the stack to contain all the repositories.
# These instruction assume that "gulp" is in your path; if local-only, use: `./node_modules/.bin/gulp`.

# Creating a local directory for our work.
mkdir noctua-stack && cd noctua-stack

# Repo containing metadata (users, groups, etc.).
git clone https://github.com/geneontology/go-site.git
# The data repo to start the store and save to.
git clone https://github.com/geneontology/noctua-models.git
# Repo for the backend server.
git clone https://github.com/geneontology/minerva.git
# Repo for the Noctua client and middleware (Barista).
git clone https://github.com/geneontology/noctua.git

# Build the Minerva server (and CLI).
cd minerva && sh ./build-cli.sh && cd ..

# Create default authentication users with your favorite editor.
mkdir barista
vim barista/local.yaml
-
 uri: 'http://orcid.org/XXXX-XXXX-XXXX-XXXX'
 username: my_username
 password: my_password

# Install Noctua Form (old "simple-annoton-editor")
git clone https://github.com/geneontology/noctua-form.git
git clone https://github.com/geneontology/noctua-landing-page.git

# Install Noctua as an all-local installation.
cd noctua
npm install
cp config/startup.yaml.stack-dev ./startup.yaml

# Edit configuration file (barista, user, group, noctua models location, minerva memory to at least 16GB, link to NoctuaForm / SAE)
vim startup.yaml

# Build the stack and Blazegraph Journal (triplestore)
./node_modules/.bin/gulp build
# If running first time.
./node_modules/.bin/gulp batch-minerva-destroy-journal
./node_modules/.bin/gulp batch-minerva-destroy-ontology-journal
./node_modules/.bin/gulp batch-minerva-create-journal

# Then launch the stack, waiting for each to successfully start up:
./node_modules/.bin/gulp run-minerva &> minerva.log &
./node_modules/.bin/gulp run-barista &> barista.log &
./node_modules/.bin/gulp run-noctua &> noctua.log &

Additional notes

Gulp Tasks

In addition, the last 3 lines of the installation steps launch all the 3 layers of the Noctua Stack:

gulp run-barista &> barista.log &
gulp run-minerva &> minerva.log &
gulp run-noctua &> noctua.log &

And Gulp can be used to both destroy and create blazegraph journals (triplestore):

gulp batch-minerva-destroy-journal
gulp batch-minerva-destroy-ontology-journal
gulp batch-minerva-create-journal

Users & groups

Barista, the authentication layer needs two files to run: users.yaml and groups.yaml. These files defined who is authorized to log in to the Noctua Stack to perform biological curations.

Libraries and CLI to communicate with the Noctua Stack

bbop-manager-minerva

This is the high-level API with OWL formatted requests (e.g. add individual, add fact or evidence using class expressions). https://github.com/berkeleybop/bbop-manager-minerva

minerva-requests

This is the request object used to format specific queries to Minerva. It is composed of a basic request object as well as a request_set designed to chain multiple request objects and speed up complex tasks. https://github.com/berkeleybop/minerva-requests

Some useful details about the API are described here

CLI (REPL)

The Noctua REPL is a recommended step for anyone trying to learn the syntax and how to build requests to Minerva in the Noctua Stack. As any REPL, it allows for the rapid testing of multiple commands and to check the responses from barista. This project can be considered as a basic prototype for any other client wanting to interact with the stack.

https://github.com/geneontology/noctua-repl

Known issues

The bulk of major issues and feature requests are handled by the tracker (https://github.com/geneontology/noctua/issues). If something is not mentioned here or in the tracker, please contact Seth Carbon or Chris Mungall.