/noctua

Graph-based modeling environment for biology, including prototype editor and services

Primary LanguageJavaScriptBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

The Noctua Stack

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

  • Minerva: the backend data server to retrieve, store, update and delete annotations.
  • Barista: an authentication layer controling and formating all communications from/to Minerva.
  • Noctua: the website to browse the annotations in production and development and provide an editorial platform to produce Gene Ontology Causal Activity Models (or GO-CAMs) using either the simple UI Noctua Form or the more advanced Graph Editor.

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

  • doc - build the docs, available in doc/
  • test - need more here
  • build - assemble the apps for running
  • watch - development file monitor
  • clean - clean out /doc and /deploy

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.

  • To know more about curation with the Noctua Stack, visit our wiki.
  • To request an account to curate with the Noctua Stack, contact us

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.

  • Sometimes, when moving instance or relations near a boundary, the relations will fall out of sync; either move nearby instances or refresh the model
  • Sometimes, when editing an instance, the relations (edges) will fall out of sync; either move nearby instances or refresh the model
  • The endpoint scheme is reversed between creation and instantiation
  • TODO, etc.