No description
  • Python 71%
  • HTML 17.4%
  • JavaScript 8.2%
  • R 2.1%
  • Dockerfile 1.1%
  • Other 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2021-04-02 21:36:32 +00:00
deployment Copy rgt data to correct user home 2021-04-01 13:20:20 +02:00
halfpipe Add link to gitlab repository 2021-04-02 22:17:32 +02:00
patches Add celery docker image and use worker image for testing 2021-03-03 22:59:24 +01:00
requirements Merge branch 'feature/diff_analysis' 2021-03-27 21:44:46 +01:00
tests Allow deletion of differential analysis 2021-03-31 19:28:41 +02:00
.dockerignore Add R to worker docker container 2021-03-12 16:18:45 +01:00
.env Initial commit 2021-02-22 01:47:49 +01:00
.flake8 Enforce black code style 2021-03-28 11:26:38 +02:00
.gitattributes Add testdata as git lfs files 2021-03-05 12:21:04 +01:00
.gitignore Split file view in multiple tables and reload using websockets Fixes #6 2021-03-05 10:34:00 +01:00
.gitlab-ci.yml Use module call to pytest 2021-03-31 12:15:31 +02:00
LICENSE Add LICENSE 2021-04-02 21:36:32 +00:00
manage.py Initial commit 2021-02-22 01:47:49 +01:00
pytest.ini Initial commit 2021-02-22 01:47:49 +01:00
README.md Add more reference data and index mapping installation instructions 2021-03-06 09:37:00 +01:00

Halfpipe

ATAC-Seq Pipeline implemented as a webinterface.

Setup

Halfpipe requires Python3 and uses the webframework Django.

Make sure you have the following dependencies installed:

  • Postgresql
  • Redis

To install them on Ubuntu/Debian use:

apt-get install postgresql postgresql-contrib libpq-dev redis-server

Installation under MacOS requires homebrew:

brew install postgres && brew install redis

Database setup

Create a database superuser with the same username as your current user:

sudo -u postgres createuser --interactive

To create database for the project use:

createdb halfpipe

Storage backend setup

File storage is done with a S3-compatible storage API called minio.

On MacOS there is a homebrew package available: m̀inio/stable/minio. Linux users can download the binary directly with:

# Download + make exec
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio

Then minio can be started with:

./minio server shared

Other dependencies

Python dependencies are managed via pip. It is however advised to install those dependencies into an virtual environment. This can be created with:

python3 -m venv venv

To activate the environment use:

source venv/bin/activate

This needs to be done in every shell that should use our newly created environment.

For development purposes we suggest installing the Python dependencies in the requirements/testing.txt file:

pip install -r requirements/testing.txt

In order to install javascript and css dependencies use:

python manage.py install_dependencies requirements/static.json

Running

Jobs are managed with Celery, a distributed Task-Queue for Python. Start a worker with:

celery -A halfpipe worker --task-events

To inspect the job queue and status use celery -A halfpipe events Keep in mind that the worker needs to be restarted in order to reflect code changes.

The Django Webserver can be started with:

python manage.py runserver

Changes on schema require running python manage.py migrate to update the database. For more information see Django's model documentation.

Testing and best practices

Halfpipe uses Pytest to run tests:

pytest

The Python code style conforms to Black. To format all Python code use:

black .

Bowtie Indices

Halfpipe does not ship with a index mapping, but includes documentation on how to obtain them. Follow the instructions in halfpipe/fixtures/index_mapping.yaml and install the fixtures with:

python manage.py loaddata halfpipe/fixtures/index_mapping.yaml

Project organisation

TODO (till)

Troubleshooting

TODO (till)