Skip to content

An environment for curating, validating, and exploring knowledge assemblies encoded in BEL

License

Notifications You must be signed in to change notification settings

bel-commons/bel-commons

Repository files navigation

BEL Commons Travis-CI Build Status Documentation Status

An environment for curating, validating, and exploring knowledge assemblies encoded in Biological Expression Language (BEL) to support elucidating disease-specific, mechanistic insight.

Installation

BEL Commons can be installed easily from PyPI with the following code in your favorite shell:

$ pip install bel_commons

Get the latest code on GitHub with:

$ python3 -m pip install git+https://github.com/bel-commons/bel-commons.git

It's also suggested to use a relational database management system like PostgreSQL and install their corresponding connectors:

$ python3 -m pip install psycopg2-binary

Run with Manual Setup

A test server can be easily run with:

$ bel-commons run

A more powerful server like gunicorn can also be used like:

$ gunicorn bel_commons.wsgi:flask_app

Running with the Parser

To run the parser, you'll need an instance of a message queue like RabbitMQ (or any other message queue supported by Celery), a results backend like Redis, and a worker. It's best to run in docker if you want to do this.

Run with docker-compose

Clone this repo from GitHub

$ git clone https://github.com/bel-commons/bel-commons.git
$ cd bel-commons

Create a file called .env and generate both SECRET_KEY and SECURITY_PASSWORD_SALT.

SECRET_KEY=mypassword
SECURITY_PASSWORD_SALT=mypassword
BUTLER_NAME="BEL Commons Butler"
BUTLER_EMAIL=bel@example.com
BUTLER_PASSWORD=butlerpassword

Other options:

  • If you want to run BEL Commons so networks can be made private, add DISALLOW_PRIVATE=false.
  • If you want to disable self-serve user registration, add SECURITY_REGISTERABLE=false.
  • If you want to run BEL Commons so none of the pages/endpoints are accessible without login, add LOCKDOWN=true.
  • If you want to automatically add some example networks, add REGISTER_EXAMPLES=true.

Run docker-compose. If you don't have it, check the docker-compose installation guide:

$ docker-compose up

If you want it to run in the background, use docker-compose up --detach.

Ports exposed:

  • 5002: BEL Commons web application
  • 5432: PostgreSQL database

Figure our your container ID with:

docker ps | grep bel

Check the logs with:

docker exec -it <your container id> /usr/bin/tail -f web_log.txt

Same can be done for celery_log.txt or worker_log.txt.

Make an existing user an admin with:

docker exec -it <your container id> bel-commons manage users make-admin <user email>

Reset the Database

For the times when you just have to burn it down and start over:

  1. bel-commons manage drop will nuke the database and output a user list
  2. bel-commons manage load will automatically add the most recently exported user list
  3. bel-commons manage examples load will automatically load some example networks and data sets

Citation

If you find BEL Commons useful in your work, please consider citing [Hoyt2018] and [Hoyt2017]:

Acknowledgements

Supporters

This project has been supported by several organizations:

The BEL Commons logo was designed by Scott Colby.

Hoyt2017

Hoyt, C. T., Konotopez, A., & Ebeling, C., (2017). PyBEL: a computational framework for Biological Expression Language. Bioinformatics, 34(4), 703–704.

Hoyt2018

Hoyt, C. T., Domingo-Fernández, D., & Hofmann-Apitius, M. (2018). BEL Commons: an environment for exploration and analysis of networks encoded in Biological Expression Language. Database, 2018(3), 1–11.