An environment for curating, validating, and exploring knowledge assemblies encoded in Biological Expression Language (BEL) to support elucidating disease-specific, mechanistic insight.
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
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
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.
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>
For the times when you just have to burn it down and start over:
bel-commons manage drop
will nuke the database and output a user listbel-commons manage load
will automatically add the most recently exported user listbel-commons manage examples load
will automatically load some example networks and data sets
If you find BEL Commons useful in your work, please consider citing [Hoyt2018] and [Hoyt2017]:
[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. |
[Hoyt2017] | Hoyt, C. T., Konotopez, A., & Ebeling, C., (2017). PyBEL: a computational framework for Biological Expression Language. Bioinformatics, 34(4), 703–704. |
This project has been supported by several organizations:
- University of Bonn
- Bonn Aachen International Center for IT
- Fraunhofer Institute for Algorithms and Scientific Computing
- Fraunhofer Center for Machine Learning
- IMI (in the AETIONOMY project)
The BEL Commons logo was designed by Scott Colby.