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:
- JSGUIXPATH: the Guix store - these are Guix pre-packaged modules
- The git source tree (./wqflask/wqflask/static/packages/)
- 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.