Git Product home page Git Product logo

higlass-server's Introduction

HiGlass Server

The HiGlass Server supports HiGlass and HiPiler by providing APIs for accessing and uploading tiles generated by Clodius.

demo api DOI

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 nvictus/pybbi#2

macOS 10.15 dependencies

  • brew install hdf5
  • brew install libpng
  • brew install jpeg
  • FUSE for Mac

License

The code in this repository is provided under the MIT License.

higlass-server's People

Contributors

101arrowz avatar alexander-veit avatar alexpreynolds avatar dependabot[bot] avatar ebirn avatar flekschas avatar j1z0 avatar jacobluber avatar jeewon-hwang avatar keller-mark avatar mccalluc avatar mildewey avatar ngehlenborg avatar nvictus avatar pkerpedjiev avatar scottx611x avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.