aboutsummaryrefslogtreecommitdiff

Development

Using GN2PROFILE

After cloning the git source tree you can run the contained GN2 using an existing GN2PROFILE, i.e., use a profile that was create to run a binary installation of GN2. This profile may be found by typing

which genenetwork2
  /home/wrk/opt/gn-latest-guix/bin/genenetwork2

An example of running the development version would be

env GN2_PROFILE=/home/wrk/opt/gn-latest-guix ./bin/genenetwork2

Profiles are stored in /gnu/store, so you may pick one up there

readlink -f $(dirname $(dirname `which genenetwork2`))
  /gnu/store/dvckpaw770b00l6rv4ijql8wrk11iypv-profile

and use that instead.

Note that the genenetwork2 script sets up the environment for running the webserver. This includes path to R modules and python modules. These are output on startup. To make sure there is no environment pollution you can

Javascript modules

As of release 2.10-pre4 we Javascript modules are installed in three places:

  1. JSGUIXPATH: the Guix store - these are Guix pre-packaged modules
  2. The git source tree (./wqflask/wqflask/static/packages/)
  3. JSGNPATH: a local directory containing (temporary) development modules

Packages currently in git (2) will move to JSGUIXPATH (1) over time. This is to keep better track of origin updates. Putting packages in git (2) is actively discouraged(!), unless there are GN2 specific adaptations to the original Javascript modules.

JSGNPATH (3) is for development purposes. By default is is set to $HOME/genenetwork/javascript. Say you are working on an updated version of a JS module not yet in (1) you can simply check out that module in that path and it should show up.

Python modules

Python modules are automatically found in the Guix profile.

For development purposes it may be useful to try some Python package. Obviously this is only a temporary measure and when you decide to include the package it should be packaged in our GNU Guix software stack!

To add packages you need to make sure the correct Python is used (currently Python 2.7) to install a package. E.g..

python --version
  Python 2.7.16
pip --version
  pip 18.1 from /usr/lib/python2.7/dist-packages/pip (python 2.7)

You can install a Python package locally with pip, e.g.

pip install hjson

This installed in $HOME/.local/lib/python3.8/site-packages. To add the search path for GeneNetwork use the environment variable

export PYTHON_GN_PATH=$HOME/.local/lib/python3.8/site-packages

Now you should be able to do

import hjson

In fact you can kick off a Python shell with something like

env SERVER_PORT=5013 WEBSERVER_MODE=DEBUG LOG_LEVEL=DEBUG \
  SQL_URI=mysql://gn2:webqtl@localhost/db_webqtl_s \
  GN2_PROFILE=~/opt/genenetwork2 \
  ./bin/genenetwork2 ./etc/default_settings.py -c
Python 2.7.17 (default, Jan  1 1970, 00:00:01)
[GCC 7.5.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import hjson

It should now also work in GN2.

TODO External tools