about summary refs log tree commit diff
path: root/bin/genenetwork2
diff options
context:
space:
mode:
Diffstat (limited to 'bin/genenetwork2')
-rwxr-xr-xbin/genenetwork2100
1 files changed, 18 insertions, 82 deletions
diff --git a/bin/genenetwork2 b/bin/genenetwork2
index 2b94b2a2..ce3678e4 100755
--- a/bin/genenetwork2
+++ b/bin/genenetwork2
@@ -1,59 +1,49 @@
-#! /bin/bash
+#! /bin/sh -e
 #
 # This is the startup script for GN2. It sets the environment variables to pick
 # up a Guix profile and allows for overriding parameters.
 #
 # Typical usage
 #
-#   env GN2_PROFILE=~/opt/genenetwork2-phewas ./bin/genenetwork2 ~/my_settings.py
-#
-# Where GN2_PROFILE points to the GNU Guix profile used for deployment.
+#   ./bin/genenetwork2 ~/my_settings.py
 #
 # This will run the GN2 server (with default settings if none
-# supplied). Typically you need a GNU Guix profile which is set with
-# an environment variable (this profile is dictated by the
-# installation path of genenetwork). Say your profile is in
-# ~/opt/gn-latest-guix
-#
-#   env GN2_PROFILE=~/opt/gn-latest ./bin/genenetwork2
-#
-# You can pass in your own settings file, e.g.
-#
-#   env GN2_PROFILE=~/opt/gn-latest ./bin/genenetwork2 ~/my_settings.py
+# supplied).
 #
 # To run a maintenance python script with settings (instead of the
 # webserver) run from the base-dir with settings file and add that
 # script with a -c switch, e.g.
 #
-#   env GN2_PROFILE=/usr/local/guix-profiles/gn-latest-20190905 TMPDIR=/export/local/home/zas1024/gn2-zach/tmp WEBSERVER_MODE=DEBUG LOG_LEVEL=DEBUG SERVER_PORT=5002 GENENETWORK_FILES=/export/local/home/zas1024/gn2-zach/genotype_files SQL_URI=mysql://webqtlout:webqtlout@lily.uthsc.edu/db_webqtl ./bin/genenetwork2 ./etc/default_settings.py -c ./maintenance/gen_select_dataset.py
+#   env TMPDIR=/export/local/home/zas1024/gn2-zach/tmp WEBSERVER_MODE=DEBUG LOG_LEVEL=DEBUG SERVER_PORT=5002 GENENETWORK_FILES=/export/local/home/zas1024/gn2-zach/genotype_files SQL_URI=mysql://webqtlout:webqtlout@lily.uthsc.edu/db_webqtl ./bin/genenetwork2 ./etc/default_settings.py -c ./maintenance/gen_select_dataset.py
 #
 # To run any script in the environment
 #
-#   env GN2_PROFILE=~/opt/gn-latest ./bin/genenetwork2 ./etc/default_settings.py -cli echo "HELLO WORLD"
+#   ./bin/genenetwork2 ./etc/default_settings.py -cli echo "HELLO WORLD"
 #
 # To get a python REPL(!)
 #
-#   env GN2_PROFILE=~/opt/gn-latest ./bin/genenetwork2 ./etc/default_settings.py -cli python
+#   ./bin/genenetwork2 ./etc/default_settings.py -cli python
 #
 # For development you may want to run
 #
-#   env GN2_PROFILE=~/opt/gn-latest WEBSERVER_MODE=DEBUG LOG_LEVEL=DEBUG ./bin/genenetwork2
+#   env WEBSERVER_MODE=DEBUG LOG_LEVEL=DEBUG ./bin/genenetwork2
 #
 # For staging and production we use gunicorn. Run with something like
 # (note you have to provide the server port). Provide a settings file!
 #
-#   env GN2_PROFILE=~/opt/gn-latest-guix SERVER_PORT=5003 ./bin/genenetwork2 ./etc/default_settings.py -gunicorn-prod
+#   env SERVER_PORT=5003 ./bin/genenetwork2 ./etc/default_settings.py -gunicorn-prod
 #
 # For development use
 #
-#   env GN2_PROFILE=~/opt/gn-latest-guix SERVER_PORT=5003 ./bin/genenetwork2 ./etc/default_settings.py -gunicorn-dev
+#   env SERVER_PORT=5003 ./bin/genenetwork2 ./etc/default_settings.py -gunicorn-dev
 #
 # For extra flexibility you can also provide gunicorn parameters yourself with something like
 #
-#   env GN2_PROFILE=~/opt/gn-latest-guix ./bin/genenetwork2 ./etc/default_settings.py -gunicorn "--bind 0.0.0.0:5003 --workers=1 wsgi"
+#   ./bin/genenetwork2 ./etc/default_settings.py -gunicorn "--bind 0.0.0.0:5003 --workers=1 wsgi"
 
 SCRIPT=$(realpath "$0")
 echo SCRIPT=$SCRIPT
+export GN2_PROFILE=$GUIX_ENVIRONMENT
 echo GN2_PROFILE=$GN2_PROFILE
 GN2_BASE_DIR=$(dirname $(dirname "$SCRIPT"))
 GN2_ID=$(cat /etc/hostname):$(basename $GN2_BASE_DIR)
@@ -101,61 +91,15 @@ fi
 export GN2_SETTINGS=$settings     # Python
 echo GN2_SETTINGS=$settings
 
-# This is a temporary hack to inject ES - should have added python2-elasticsearch package to guix instead
-# if [ -z $ELASTICSEARCH_PROFILE ]; then
-#     echo -e "WARNING: Elastic Search profile has not been set - use ELASTICSEARCH_PROFILE";
-# else
-#     PYTHONPATH="$PYTHONPATH${PYTHONPATH:+:}$ELASTICSEARCH_PROFILE/lib/python3.8/site-packages"
-# fi
-
-if [ -z $GN2_PROFILE ] ; then
-    echo "WARNING: GN2_PROFILE has not been set - you need the environment, so I hope you know what you are doing!"
-    export GN2_PROFILE=$(dirname $(dirname $(which genenetwork2)))
-    if [ -d $GN2_PROFILE ]; then
-        echo "Best guess is $GN2_PROFILE"
-    fi
-    echo "ERROR: always set GN2_PROFILE"
-    exit 1
-fi
-if [ -z $GN2_PROFILE ]; then
-    read -p "PRESS [ENTER] TO CONTINUE..."
-else
-    export PATH=$GN2_PROFILE/bin:$PATH
-    export PYTHONPATH="$GN2_PROFILE/lib/python3.8/site-packages" # never inject another PYTHONPATH!!
-    export R_LIBS_SITE=$GN2_PROFILE/site-library
-    export JS_GUIX_PATH=$GN2_PROFILE/share/genenetwork2/javascript
-    export GUIX_GTK3_PATH="$GN2_PROFILE/lib/gtk-3.0"
-    export GI_TYPELIB_PATH="$GN2_PROFILE/lib/girepository-1.0"
-    export XDG_DATA_DIRS="$GN2_PROFILE/share"
-    export GIO_EXTRA_MODULES="$GN2_PROFILE/lib/gio/modules"
-    export LC_ALL=C # FIXME
-    export GUIX_GENENETWORK_FILES="$GN2_PROFILE/share/genenetwork2"
-    export PLINK_COMMAND="$GN2_PROFILE/bin/plink2"
-    export GEMMA_COMMAND="$GN2_PROFILE/bin/gemma"
-    if [ -z $GEMMA_WRAPPER_COMMAND ]; then
-        export GEMMA_WRAPPER_COMMAND="$GN2_PROFILE/bin/gemma-wrapper"
-    fi
-    while IFS=":" read -ra PPATH; do
-	for PPART in "${PPATH[@]}"; do
-	    if [ ! -d $PPART ] ; then echo "$PPART in PYTHONPATH not valid $PYTHONPATH" ; exit 1 ; fi
-	done
-    done <<< "$PYTHONPATH"
-    if [ ! -d $R_LIBS_SITE ] ; then echo "R_LIBS_SITE not valid "$R_LIBS_SITE ; exit 1 ; fi
-fi
-if [ -z $PYTHONPATH ] ; then
-    echo "ERROR PYTHONPATH has not been set - use GN2_PROFILE!"
-    exit 1
-fi
-if [ ! -d $R_LIBS_SITE ] ; then
-    echo "ERROR R_LIBS_SITE has not been set correctly (we only allow one path) - use GN2_PROFILE!"
-    echo "Paste into your shell the output of (for example)"
-    echo "guix package -p \$GN2_PROFILE --search-paths"
-    exit 1
+export JS_GUIX_PATH=$GN2_PROFILE/share/genenetwork2/javascript
+export LC_ALL=C # FIXME
+export GUIX_GENENETWORK_FILES="$GN2_PROFILE/share/genenetwork2"
+export PLINK_COMMAND="$GN2_PROFILE/bin/plink2"
+export GEMMA_COMMAND="$GN2_PROFILE/bin/gemma"
+if [ -z $GEMMA_WRAPPER_COMMAND ]; then
+    export GEMMA_WRAPPER_COMMAND="$GN2_PROFILE/bin/gemma-wrapper"
 fi
 
-# We may change this one:
-export PYTHONPATH=$PYTHON_GN_PATH:$GN2_BASE_DIR/wqflask:$PYTHONPATH
-
 # Our UNIX TMPDIR defaults to /tmp - change this on a shared server
 if [ -z $TMPDIR ]; then
     TMPDIR="/tmp"
@@ -170,7 +114,6 @@ set|grep TMPDIR
 if [ "$1" = '-c' ] ; then
     cd $GN2_BASE_DIR/wqflask
     cmd=${2#wqflask/}
-    echo PYTHONPATH=$PYTHONPATH
     shift ; shift
     echo RUNNING COMMAND $cmd $*
     python $cmd $*
@@ -181,7 +124,6 @@ fi
 if [ "$1" = "-cli" ] ; then
     cd $GN2_BASE_DIR/wqflask
     cmd=$2
-    echo PYTHONPATH=$PYTHONPATH
     shift ; shift
     echo RUNNING COMMAND $cmd $*
     $cmd $*
@@ -190,14 +132,12 @@ fi
 if [ "$1" = '-gunicorn' ] ; then
     cd $GN2_BASE_DIR/wqflask
     cmd=$2
-    echo PYTHONPATH=$PYTHONPATH
     echo RUNNING gunicorn $cmd
     gunicorn $cmd
     exit $?
 fi
 if [ "$1" = '-gunicorn-dev' ] ; then
     cd $GN2_BASE_DIR/wqflask
-    echo PYTHONPATH=$PYTHONPATH
     if [ -z $SERVER_PORT ]; then echo "ERROR: Provide a SERVER_PORT" ; exit 1 ; fi
     cmd="--bind 0.0.0.0:$SERVER_PORT --workers=1 --timeout 180 --reload wsgi"
     echo RUNNING gunicorn $cmd
@@ -206,7 +146,6 @@ if [ "$1" = '-gunicorn-dev' ] ; then
 fi
 if [ "$1" = '-gunicorn-prod' ] ; then
     cd $GN2_BASE_DIR/wqflask
-    echo PYTHONPATH=$PYTHONPATH
     if [ -z $SERVER_PORT ]; then echo "ERROR: Provide a SERVER_PORT" ; exit 1 ; fi
     PID=$TMPDIR/gunicorn.$USER.pid
     cmd="--bind 0.0.0.0:$SERVER_PORT --pid $PID --workers 20 --keep-alive 6000 --max-requests 100 --max-requests-jitter 30 --timeout 1200 wsgi"
@@ -220,9 +159,6 @@ echo -n "dir $TMPDIR
 dbfilename gn2.rdb
 " | redis-server - &
 
-# Overrides for packages that are not yet public (currently r-auwerx)
-# export R_LIBS_SITE=$R_LIBS_SITE:$HOME/.Rlibs/das1i1pm54dj6lbdcsw5w0sdwhccyj1a-r-3.3.2/lib/R/lib
-
 # Start the flask server running GN2
 cd $GN2_BASE_DIR/wqflask
 echo "Starting with $settings"