The proteins.plus web server makes a wide-range of software tools for working with protein structures in drug discovery and bio/cheminformatics easily accessible for everyone. This repository contains the backend of the web server.
The web front end is coming soon.
You can access ProteinsPlus programmatically via its API. A good starting point to do this are the many interactive notebooks we compiled in the ProteinsPlus Examples project. You can also check out the API directly in the swagger-ui.
This project is developed at the Universitaet Hamburg, ZBH - Center for Bioinformatics by the group of Matthias Rarey.
Get Python dependencies with conda.
conda env create -f environment.yml
conda activate pplusThe executable files for the integrated tools should be placed in bin/toolname/. E.g.: bin/preprocessor/
There are a few commands you need to execute to get the server running. Make sure you have activated your conda environment with:
conda activate pplusOpen a separate terminal and start the redis server which is needed by celery which we use for distributed task execution.
redis-server --port 6378Open another separate terminal and start the celery worker.
celery -A proteins_plus worker -O fair --loglevel=INFOAt this point either set the environment variables $USER, $PASSWORD and $DATABASE to the ones
configured in the proteins_plus/settings.py or replace them with appropriate values below.
proteins_plus requires a postgres database and a separate database user. You can create a user with appropriate permissions with this:
psql -d postgres -h localhost -c "CREATE ROLE $USER WITH ENCRYPTED PASSWORD '$PASSWORD'; ALTER ROLE $USER WITH LOGIN CREATEDB;"To create the proteins_plus database execute the following:
psql -d postgres -h localhost -U $USER -c "CREATE DATABASE $DATABASE;"Migrate pending changes to the database. You need to repeat this step whenever you have made any changes to the project's database Models.
python manage.py makemigrations
python manage.py migrateGenerate the API schema with this command:
python manage.py spectacular --file schema.ymlTo start the server run:
python manage.py runserverNow the server is running at http://localhost:8000/.
You can run the included unit tests with
python manage.py test # Run all unit tests
python manage.py test <path_to_app> # Only run unit tests for specific applicationRun test coverage
coverage run manage.py test <path_to_app>
coverage reportRun pylint for static code quality check with
find . -type f -name "*.py" | xargs pylint --load-plugins pylint_django --django-settings-module=proteins_plus.settingsIf you intend to work with the server's code, please read the Developer Guide found in Developer-Guide.md.