From 855a586f82fd1774358d8cfde28ce067f1c6c2ae Mon Sep 17 00:00:00 2001 From: Zachary Sloan Date: Thu, 7 Mar 2013 00:34:51 +0000 Subject: Created file temp_data to store data related to progress of the marker regression calculations Storing progress of kinship matrix calculation in variable as portion of 45 (the rough percent of total marker regression calculation time --- wqflask/utility/helper_functions.py | 1 + wqflask/utility/temp_data.py | 27 ++++++++++++++ .../wqflask/marker_regression/marker_regression.py | 11 +++++- wqflask/wqflask/my_pylmm/pyLMM/lmm.py | 8 ++-- wqflask/wqflask/show_trait/show_trait.py | 4 +- .../new/javascript/show_trait_mapping_tools.coffee | 10 ++++- .../new/javascript/show_trait_mapping_tools.js | 43 +--------------------- wqflask/wqflask/templates/show_trait.html | 4 +- wqflask/wqflask/views.py | 11 +++++- 9 files changed, 65 insertions(+), 54 deletions(-) create mode 100644 wqflask/utility/temp_data.py 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 %} {% endfor %} - - + +