about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--wqflask/utility/helper_functions.py1
-rw-r--r--wqflask/utility/temp_data.py27
-rwxr-xr-xwqflask/wqflask/marker_regression/marker_regression.py11
-rw-r--r--wqflask/wqflask/my_pylmm/pyLMM/lmm.py8
-rwxr-xr-xwqflask/wqflask/show_trait/show_trait.py4
-rw-r--r--wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.coffee10
-rw-r--r--wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js43
-rw-r--r--wqflask/wqflask/templates/show_trait.html4
-rw-r--r--wqflask/wqflask/views.py11
9 files changed, 65 insertions, 54 deletions
diff --git a/wqflask/utility/helper_functions.py b/wqflask/utility/helper_functions.py
index d2567b63..56b409e6 100644
--- a/wqflask/utility/helper_functions.py
+++ b/wqflask/utility/helper_functions.py
@@ -4,6 +4,7 @@ from base.trait import GeneralTrait
 from base import data_set
 from base.species import TheSpecies
 
+
 def get_species_dataset_trait(self, start_vars):
     #assert type(read_genotype) == type(bool()), "Expecting boolean value for read_genotype"
     self.dataset = data_set.create_dataset(start_vars['dataset'])
diff --git a/wqflask/utility/temp_data.py b/wqflask/utility/temp_data.py
new file mode 100644
index 00000000..192dcc44
--- /dev/null
+++ b/wqflask/utility/temp_data.py
@@ -0,0 +1,27 @@
+from __future__ import print_function, division, absolute_import
+from redis import Redis
+
+import simplejson as json
+
+class TempData(object):
+    
+    def __init__(self, temp_uuid):
+        self.temp_uuid = temp_uuid
+        self.redis = Redis()
+        self.key = "tempdata:{}".format(self.temp_uuid)
+        
+    def store(self, field, value):
+        print("Storing...")
+        self.redis.hset(self.key, field, value)
+        self.redis.expire(self.key, 60*15)  # Expire in 15 minutes
+        
+    def get_all(self):
+        return self.redis.hgetall(self.key)
+
+
+
+if __name__ == "__main__":
+    redis = Redis()
+    for key in redis.keys():
+        for field in redis.hkeys(key):
+            print("{}.{}={}".format(key, field, redis.hget(key, field)))
diff --git a/wqflask/wqflask/marker_regression/marker_regression.py b/wqflask/wqflask/marker_regression/marker_regression.py
index 40ebc546..412d9e35 100755
--- a/wqflask/wqflask/marker_regression/marker_regression.py
+++ b/wqflask/wqflask/marker_regression/marker_regression.py
@@ -34,6 +34,7 @@ from dbFunction import webqtlDatabaseFunction
 from base.GeneralObject import GeneralObject
 from wqflask.my_pylmm.data import prep_data
 from wqflask.my_pylmm.pyLMM import lmm
+from utility import temp_data
 
 import reaper
 import cPickle
@@ -65,7 +66,13 @@ class MarkerRegression(object):
 
         helper_functions.get_species_dataset_trait(self, start_vars)
 
+        print("start_vars is:", start_vars)
+
+
         self.num_perm = int(start_vars['num_perm'])
+        #self.temp_uuid = start_vars['temp_uuid']
+        self.temp_data = temp_data.TempData(start_vars['temp_uuid'])
+        
 
         # Passed in by the form (user might have edited)
         #samples = start_vars['allsamples'].split()
@@ -465,7 +472,7 @@ class MarkerRegression(object):
     def gen_data(self):
         """Todo: Fill this in here"""
 
-        print("Session UUID: ", self.start_vars[session_uuid])
+        #print("Temp UUID: ", self.temp_uuid)
 
         genotype_data = [marker['genotypes'] for marker in self.dataset.group.markers.markers]
 
@@ -476,7 +483,7 @@ class MarkerRegression(object):
         genotype_matrix = np.array(trimmed_genotype_data).T
 
         with Bench("Calculate Kinship"):
-            kinship_matrix = lmm.calculate_kinship(genotype_matrix)
+            kinship_matrix = lmm.calculate_kinship(genotype_matrix, self.temp_data)
         
         with Bench("Create LMM object"):
             lmm_ob = lmm.LMM(pheno_vector, kinship_matrix)
diff --git a/wqflask/wqflask/my_pylmm/pyLMM/lmm.py b/wqflask/wqflask/my_pylmm/pyLMM/lmm.py
index 374452f0..cc2e32a7 100644
--- a/wqflask/wqflask/my_pylmm/pyLMM/lmm.py
+++ b/wqflask/wqflask/my_pylmm/pyLMM/lmm.py
@@ -54,7 +54,7 @@ def matrixMult(A,B):
     return linalg.fblas.dgemm(alpha=1.,a=AA,b=BB,trans_a=transA,trans_b=transB)
 
 
-def calculate_kinship(genotype_matrix):
+def calculate_kinship(genotype_matrix, temp_data):
     """
     genotype_matrix is an n x m matrix encoding SNP minor alleles.
     
@@ -87,8 +87,10 @@ def calculate_kinship(genotype_matrix):
         keep.append(counter)
         genotype_matrix[:,counter] = (genotype_matrix[:,counter] - values_mean) / np.sqrt(vr)
         
-        stage = round((counter/m)*45)
-        print("Percent complete: ", stage)
+        percent_complete = int(round((counter/m)*45))
+        print("Percent complete: ", percent_complete)
+        temp_data.store("percent_complete", percent_complete)
+        
     genotype_matrix = genotype_matrix[:,keep]
     kinship_matrix = np.dot(genotype_matrix,genotype_matrix.T) * 1.0/float(m)
     return kinship_matrix
diff --git a/wqflask/wqflask/show_trait/show_trait.py b/wqflask/wqflask/show_trait/show_trait.py
index 7b2d022c..16aec827 100755
--- a/wqflask/wqflask/show_trait/show_trait.py
+++ b/wqflask/wqflask/show_trait/show_trait.py
@@ -122,7 +122,7 @@ class ShowTrait(object):
         # We'll need access to this_trait and hddn in the Jinja2 Template, so we put it inside self
         self.hddn = hddn
         
-        self.session_uuid = uuid.uuid4()
+        self.temp_uuid = uuid.uuid4()
 
         self.sample_group_types = OrderedDict()
         self.sample_group_types['samples_primary'] = self.dataset.group.name + " Only"
@@ -133,7 +133,7 @@ class ShowTrait(object):
         js_data = dict(sample_group_types = self.sample_group_types,
                         sample_lists = sample_lists,
                         attribute_names = self.sample_groups[0].attributes,
-                        session_uuid = self.session_uuid)
+                        temp_uuid = self.temp_uuid)
         #print("js_data:", pf(js_data))
         self.js_data = js_data
 
diff --git a/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.coffee b/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.coffee
index 83cdce4d..50b97171 100644
--- a/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.coffee
+++ b/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.coffee
@@ -11,13 +11,21 @@ $ ->
         $("#trait_data_form").attr("action", url);
         $("#trait_data_form").submit()
         
+    get_progress () =>
+        console.log("temp_uuid:", $("#temp_uuid").val())
+        
     $("#marker_regression").click(() =>
         $("#progress_bar_container").modal()
+        
+        get_progress()
+        
         url = "/marker_regression"
+        form_data = $('#trait_data_form').serialize()
+        console.log("form_data is:", form_data)
         $.ajax(
             type: "POST"
             url: url
-            data: $("#trait_data_form").serialize()
+            data: form_data
             success: (data) =>
                 $('#progress_bar_container').modal('hide')
                 $("body").html(data)
diff --git a/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js b/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js
index 9e40a129..c8b0aa7b 100644
--- a/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js
+++ b/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js
@@ -1,47 +1,6 @@
 // Generated by CoffeeScript 1.4.0
 (function() {
 
-  $(function() {
-    var composite_mapping_fields, submit_special, toggle_enable_disable,
-      _this = this;
-    submit_special = function() {
-      var url;
-      console.log("In submit_special");
-      console.log("this is:", this);
-      console.log("$(this) is:", $(this));
-      url = $(this).data("url");
-      console.log("url is:", url);
-      $("#trait_data_form").attr("action", url);
-      return $("#trait_data_form").submit();
-    };
-    $("#marker_regression").click(function() {
-      var url;
-      $("#progress_bar_container").modal();
-      url = "/marker_regression";
-      $.ajax({
-        type: "POST",
-        url: url,
-        data: $("#trait_data_form").serialize(),
-        success: function(data) {
-          $('#progress_bar_container').modal('hide');
-          return $("body").html(data);
-        }
-      });
-      return false;
-    });
-    composite_mapping_fields = function() {
-      return $(".composite_fields").toggle();
-    };
-    $("#use_composite_choice").change(composite_mapping_fields);
-    toggle_enable_disable = function(elem) {
-      return $(elem).prop("disabled", !$(elem).prop("disabled"));
-    };
-    $("#choose_closet_control").change(function() {
-      return toggle_enable_disable("#control_locus");
-    });
-    return $("#display_all_lrs").change(function() {
-      return toggle_enable_disable("#suggestive_lrs");
-    });
-  });
+
 
 }).call(this);
diff --git a/wqflask/wqflask/templates/show_trait.html b/wqflask/wqflask/templates/show_trait.html
index bb87b4bb..2d569b20 100644
--- a/wqflask/wqflask/templates/show_trait.html
+++ b/wqflask/wqflask/templates/show_trait.html
@@ -21,8 +21,8 @@
             {% for key in hddn %}
             <input type="hidden" name="{{ key }}" value="{{ hddn[key] }}">
             {% endfor %}
-            
-            <input type="hidden" name="session_uuid" value="{{ session_uuid }}">
+
+            <input type="hidden" name="temp_uuid" value="{{ temp_uuid }}">
 
         <div class="container">
             <div class="page-header">
diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py
index 9a250434..473dfdff 100644
--- a/wqflask/wqflask/views.py
+++ b/wqflask/wqflask/views.py
@@ -13,13 +13,14 @@ import sqlalchemy
 
 from wqflask import app
 
-from flask import render_template, request, make_response, Response, Flask, g, config
+from flask import render_template, request, make_response, Response, Flask, g, config, jsonify
 
 from wqflask import search_results
 from wqflask.show_trait import show_trait
 from wqflask.show_trait import export_trait_data
 from wqflask.marker_regression import marker_regression
 from wqflask.correlation import show_corr_results
+from utility import temp_data
 
 from wqflask.dataSharing import SharingInfo, SharingInfoPage
 
@@ -178,6 +179,12 @@ def sharing_info_page():
     return template_vars
 
 
+@app.route("/get_temp_data")
+def get_temp_data():
+    temp_uuid = request.args['key']
+    return flask.jsonify(temp_data.TempData(temp_uuid).get_all())
+
+
 def json_default_handler(obj):
     '''Based on http://stackoverflow.com/a/2680060/1175849'''
     # Handle datestamps
@@ -194,4 +201,4 @@ def json_default_handler(obj):
     #    return None
     else:
         raise TypeError, 'Object of type %s with value of %s is not JSON serializable' % (
-            type(obj), repr(obj))
+            type(obj), repr(obj))
\ No newline at end of file