diff options
author | zsloan | 2015-05-13 11:44:49 -0500 |
---|---|---|
committer | zsloan | 2015-05-13 11:44:49 -0500 |
commit | 8fa315467f70a4b14e40ed2f5d4adce15ef24bc6 (patch) | |
tree | 992d5bef1f93d9b035bded4bd224cdbf617043cb | |
parent | 8e8e14bbd6ae680c27f1db1837c09c1aa2cc642b (diff) | |
parent | 6d14bf787c53ba3701b8be91202c1c880309ca59 (diff) | |
download | genenetwork2-8fa315467f70a4b14e40ed2f5d4adce15ef24bc6.tar.gz |
Merge pull request #39 from pjotrp/master
Refactoring finding tools such as pylmm
-rw-r--r-- | INSTALL.md | 4 | ||||
-rw-r--r-- | wqflask/utility/tools.py | 51 | ||||
-rwxr-xr-x | wqflask/wqflask/marker_regression/marker_regression.py | 15 |
3 files changed, 55 insertions, 15 deletions
@@ -82,8 +82,8 @@ Next update the setting.py file to point at the tree GN2 can locate PYLMM through PYLMM_PATH in setting.py (or in ENV) - PYLMM_PATH = '/home/test/opensource/python/pylmm_gn2/pylmm_gn2' + PYLMM_PATH = '/home/test/opensource/python/pylmm_gn2' ## Other information -Check also the ./misc/ directory for settings
\ No newline at end of file +Check also the ./misc/ directory for settings 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): |