aboutsummaryrefslogtreecommitdiff
path: root/wqflask
diff options
context:
space:
mode:
authorzsloan2015-05-13 11:44:49 -0500
committerzsloan2015-05-13 11:44:49 -0500
commit8fa315467f70a4b14e40ed2f5d4adce15ef24bc6 (patch)
tree992d5bef1f93d9b035bded4bd224cdbf617043cb /wqflask
parent8e8e14bbd6ae680c27f1db1837c09c1aa2cc642b (diff)
parent6d14bf787c53ba3701b8be91202c1c880309ca59 (diff)
downloadgenenetwork2-8fa315467f70a4b14e40ed2f5d4adce15ef24bc6.tar.gz
Merge pull request #39 from pjotrp/master
Refactoring finding tools such as pylmm
Diffstat (limited to 'wqflask')
-rw-r--r--wqflask/utility/tools.py51
-rwxr-xr-xwqflask/wqflask/marker_regression/marker_regression.py15
2 files changed, 53 insertions, 13 deletions
diff --git a/wqflask/utility/tools.py b/wqflask/utility/tools.py
new file mode 100644
index 00000000..1a5c19d9
--- /dev/null
+++ b/wqflask/utility/tools.py
@@ -0,0 +1,51 @@
+# Tools/paths finder resolves external paths from settings and/or environment
+# variables
+#
+# Currently supported:
+#
+# PYLMM_PATH finds the root of the git repository of the pylmm_gn2 tool
+
+import os
+import sys
+from wqflask import app
+
+def get_setting(id,default,guess,get_valid_path):
+ """
+ Resolve a setting from the environment or the global settings in app.config
+ """
+ # ---- Check whether environment exists
+ path = get_valid_path(os.environ.get(id))
+ # ---- Check whether setting exists
+ setting = app.config.get(id)
+ if not path:
+ path = get_valid_path(setting)
+ # ---- Check whether default exists
+ if not path:
+ path = get_valid_path(default)
+ # ---- Guess directory
+ if not path:
+ if not setting:
+ setting = guess
+ path = get_valid_path(guess)
+ if not path:
+ raise Exception(id+' '+setting+' path unknown or faulty (update settings.py?). '+id+' should point to the root of the git repository')
+
+ return path
+
+def pylmm_command(default=None):
+ """
+ Return the path to the repository and the python command to call
+ """
+ def get_valid_path(path):
+ """Test for a valid repository"""
+ if path:
+ sys.stderr.write("Trying PYLMM_PATH in "+path+"\n")
+ if path and os.path.isfile(path+'/pylmm_gn2/lmm.py'):
+ return path
+ else:
+ None
+
+ guess = os.environ.get('HOME')+'/pylmm_gn2'
+ path = get_setting('PYLMM_PATH',default,guess,get_valid_path)
+ pylmm_command = 'python '+path+'/pylmm_gn2/lmm.py'
+ return path,pylmm_command
diff --git a/wqflask/wqflask/marker_regression/marker_regression.py b/wqflask/wqflask/marker_regression/marker_regression.py
index 999a32b8..2b0e89b3 100755
--- a/wqflask/wqflask/marker_regression/marker_regression.py
+++ b/wqflask/wqflask/marker_regression/marker_regression.py
@@ -25,7 +25,6 @@ from redis import Redis
Redis = Redis()
from flask import Flask, g
-from wqflask import app
from base.trait import GeneralTrait
from base import data_set
@@ -36,23 +35,13 @@ from utility import webqtlUtil
#from wqflask.marker_regression import plink_mapping
from wqflask.marker_regression import gemma_mapping
#from wqflask.marker_regression import rqtl_mapping
-from wqflask.my_pylmm.data import prep_data
-# from wqflask.my_pylmm.pyLMM import lmm
-# from wqflask.my_pylmm.pyLMM import input
from utility import helper_functions
from utility import Plot, Bunch
from utility import temp_data
-
from utility.benchmark import Bench
+from utility.tools import pylmm_command
-import os
-if os.environ.get('PYLMM_PATH') is None:
- PYLMM_PATH=app.config.get('PYLMM_PATH')
- if PYLMM_PATH is None:
- PYLMM_PATH=os.environ['HOME']+'/gene/wqflask/wqflask/my_pylmm/pyLMM'
-if not os.path.isfile(PYLMM_PATH+'/lmm.py'):
- raise Exception('PYLMM_PATH '+PYLMM_PATH+' unknown or faulty')
-PYLMM_COMMAND= 'python '+PYLMM_PATH+'/lmm.py'
+PYLMM_PATH,PYLMM_COMMAND = pylmm_command()
class MarkerRegression(object):