The goal is to set up a Django management command and API route (with authentication support) for deleting HiGlass tilesets.
We will do the work on a t2.micro
EC2 instance running Ubuntu 18.04 (ami-0f65671a86f061fcd
).
Nodejs
Installation
Install node
, npm
, and npx
from Nodejs:
$ cd ~
$ wget -qO- https://nodejs.org/dist/v11.1.0/node-v11.1.0-linux-x64.tar.xz > node-v11.1.0-linux-x64.tar.xz
$ tar xvf node-v11.1.0-linux-x64.tar.xz
...
$ cd node-v11.1.0-linux-x64/bin
$ sudo ln -s ${PWD}/node /usr/bin/node
$ sudo ln -s ${PWD}/npm /usr/bin/npm
$ sudo ln -s ${PWD}/npx /usr/bin/npx
Anaconda
Installation
$ cd ~
$ wget https://repo.anaconda.com/archive/Anaconda3-5.3.0-Linux-x86_64.sh
$ chmod +x Anaconda3-5.3.0-Linux-x86_64.sh
$ ./Anaconda3-5.3.0-Linux-x86_64.sh
...
Environment
Python 3.7 does not appear to be compatible with Cython at this time, so we downgrade to 3.6:
$ conda create -n higlass-server python=3.6 --no-default-packages --yes
...
Cf. https://github.com/cython/cython/issues/1978
Github
Clone and branch
We clone a fork of higlass-server
, sync up with the upstream repository, and set up our branch off of the freshly-updated develop
branch:
$ git clone https://github.com/alexpreynolds/higlass-server
$ cd ~/higlass-server
$ git remote add upstream https://github.com/higlass/higlass-server.git
$ git checkout develop
$ git pull remote develop
$ git checkout -b delete-tileset develop
Clean up old hms-dbmi
references:
$ cd ~/higlass-server
$ grep -rl hms-dbmi . | xargs sed -i 's/hms-dbmi/higlass/g'
Development
Environment
Install current GCC kit and libraries:
$ sudo apt install build-essential
$ sudo apt install libglib2.0-dev
$ sudo apt install libbz2-dev
$ sudo apt install liblzma-dev
$ sudo apt install libhdf5-serial-dev
$ sudo apt install libcurl4-gnutls-dev
$ sudo apt install libpng-dev
$ sudo apt install libssl-dev
$ gcc --version
...
Python requirements
Note: Edit requirements-secondary.txt
to build clodius
v0.9.3, or newer.
$ cd ~/higlass-server
$ source activate higlass-server
(higlass-server) $ pip install --upgrade -r ./requirements.txt
(higlass-server) $ pip install --upgrade -r ./requirements-secondary.txt
Initialize server
(higlass-server) $ python manage.py makemigrations
(higlass-server) $ python manage.py migrate
(higlass-server) $ python manage.py runserver localhost:8000
...
Test API
From another terminal session:
$ wget -qO- http://localhost:8000/api/v1/tilesets
{"count":0,"next":null,"previous":null,"results":[]}
$ wget -qO- http://localhost:8000/api/v1/tileset_info/?d=1234
{"1234": {"error": "No such tileset with uid: 1234"}}
Test ingestion and listing
$ wget -O- --user * --password * https://resources.altius.org/~areynolds/LN43287.75_20.normalized.GRCh38_no_alts.bw.tileset > /tmp/LN43287.75_20.normalized.GRCh38_no_alts.bw.tileset
$ python manage.py ingest_tileset --filetype hitile --datatype vector --filename /tmp/LN43287.75_20.normalized.GRCh38_no_alts.bw.tileset
uid: AIVpsJYwSemD8FVPBv6vrw
$ python manage.py list_tilesets
tileset: Tileset [name: LN43287.75_20.normalized.GRCh38_no_alts.bw.tileset] [ft: hitile] [uuid: AIVpsJYwSemD8FVPBv6vrw]
Set up superuser
$ python manage.py createsuperuser
...