higlass-server
higlass-server copied to clipboard
Server component for HiGlass that manages and serves tiled data
HiGlass Server
The HiGlass Server supports HiGlass and HiPiler by providing APIs for accessing and uploading tiles generated by Clodius.
Note: that the HiGlass Server itself only provides an API, and does not serve any HTML.
Installation
Prerequirements:
- Python
>=v3.6
Docker
The easiest way to run HiGlass with HiGlass Server is with Docker. More information is available at higlass-docker or check out the Dockerfile.
This project also includes a Dockerfile in the docker-context directory that can be used to run a locally checked out copy of higlass-server as follows:
docker build -t higlass-server -f docker-context/Dockerfile .
docker run -d --cap-add SYS_ADMIN --device /dev/fuse --security-opt apparmor:unconfined --name higlass-server higlass-server
Manually
To install HiGlass Server manually follow the steps below. Note we strongly recommend to create a virtual environment using Virtualenvwrapper for example. Skip step 2 if you don't work with virtual environments.
git clone https://github.com/higlass/higlass-server && cd higlass-server
Manually with virtualenvwrapper
mkvirtualenv -a $(pwd) -p $(which python3) higlass-server && workon higlass-server
pip install --upgrade -r ./requirements.txt
python manage.py migrate
python manage.py runserver
Manually with conda
conda env create -f environment.yml
conda activate higlass-server
python manage.py migrate
python manage.py runserver
To enable the register_url api endpoint, HiGlass depends on a project called httpfs to cache external url files. Tests depend on this process running. Set it up as follows:
pip install simple-httpfs
mkdir -p media/http
mkdir -p media/https
simple-httpfs media/http
simple-httpfs media/https
Or simply use ./unit_tests.sh.
Uploading Files
Although there is an API endpoint for uploading files, but it is more direct to use a manage.py script:
COOLER=dixon2012-h1hesc-hindiii-allreps-filtered.1000kb.multires.cool
HITILE=wgEncodeCaltechRnaSeqHuvecR1x75dTh1014IlnaPlusSignalRep2.hitile
wget -P data/ https://s3.amazonaws.com/pkerp/public/$COOLER
wget -P data/ https://s3.amazonaws.com/pkerp/public/$HITILE
python manage.py ingest_tileset --filename data/$COOLER --filetype cooler --datatype matrix --uid cooler-demo
python manage.py ingest_tileset --filename data/$HITILE --filetype hitile --datatype vector --uid hitile-demo
We can now use the API to get information about a tileset, or to get the tile data itself:
curl http://localhost:8000/api/v1/tileset_info/?d=hitile-demo
curl http://localhost:8000/api/v1/tiles/?d=hitile-demo.0.0.0
Development
Start the server:
python manage.py runserver localhost:8001
// or
npm start
Test the server:
./test.sh
// or
npm test
Bump version of server:
bumpversion patch
Update source code:
./update.sh
Troubleshooting
pybbi installation fails on macOS: Check out https://github.com/nvictus/pybbi/issues/2
macOS 10.15 dependencies
brew install hdf5brew install libpngbrew install jpeg- FUSE for Mac
License
The code in this repository is provided under the MIT License.