diff options
author | Zachary Sloan | 2013-11-22 22:33:22 +0000 |
---|---|---|
committer | Zachary Sloan | 2013-11-22 22:33:22 +0000 |
commit | 5143738870b8872a915432225acf01508de620ee (patch) | |
tree | 451832a079bcd0baa557360753461f7bc1b4fcda /wqflask | |
parent | 4cfdad02e5f8ebd4bd347f078999b063041b29d2 (diff) | |
download | genenetwork2-5143738870b8872a915432225acf01508de620ee.tar.gz |
Did some work towards getting the interval mapping page working
Diffstat (limited to 'wqflask')
-rw-r--r-- | wqflask/wqflask/interval_mapping/__init__.py | 0 | ||||
-rwxr-xr-x | wqflask/wqflask/interval_mapping/interval_mapping.py | 20 | ||||
-rw-r--r-- | wqflask/wqflask/static/new/javascript/bar_chart.coffee | 25 | ||||
-rw-r--r-- | wqflask/wqflask/static/new/javascript/bar_chart.js | 15 | ||||
-rw-r--r-- | wqflask/wqflask/static/new/javascript/box_plot.coffee | 45 | ||||
-rw-r--r-- | wqflask/wqflask/static/new/javascript/box_plot.js | 83 | ||||
-rw-r--r-- | wqflask/wqflask/static/new/javascript/show_trait.coffee | 433 | ||||
-rw-r--r-- | wqflask/wqflask/static/new/javascript/show_trait.js | 477 | ||||
-rw-r--r-- | wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.coffee | 26 | ||||
-rw-r--r-- | wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js | 27 | ||||
-rw-r--r-- | wqflask/wqflask/templates/show_trait.html | 1 | ||||
-rw-r--r-- | wqflask/wqflask/templates/show_trait_mapping_tools.html | 9 | ||||
-rw-r--r-- | wqflask/wqflask/user_manager.py | 30 | ||||
-rw-r--r-- | wqflask/wqflask/views.py | 16 |
14 files changed, 307 insertions, 900 deletions
diff --git a/wqflask/wqflask/interval_mapping/__init__.py b/wqflask/wqflask/interval_mapping/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/wqflask/wqflask/interval_mapping/__init__.py diff --git a/wqflask/wqflask/interval_mapping/interval_mapping.py b/wqflask/wqflask/interval_mapping/interval_mapping.py index aca99cbe..f41ebd2c 100755 --- a/wqflask/wqflask/interval_mapping/interval_mapping.py +++ b/wqflask/wqflask/interval_mapping/interval_mapping.py @@ -37,6 +37,8 @@ class IntervalMapping(object): def __init__(self, start_vars, temp_uuid): + print("TESTING!!!") + #Currently only getting trait data for one trait, but will need #to change this to accept multiple traits once the collection page is implemented helper_functions.get_species_dataset_trait(self, start_vars) @@ -51,6 +53,8 @@ class IntervalMapping(object): self.samples.append(str(sample)) self.vals.append(value) + print("start_vars:", start_vars) + self.set_options(start_vars) self.gen_qtl_results(tempdata) @@ -69,24 +73,24 @@ class IntervalMapping(object): def set_options(self, start_vars): """Sets various options (physical/genetic mapping, # permutations, which chromosome""" - self.plot_scale = start_vars['scale'] + #self.plot_scale = start_vars['scale'] #if self.plotScale == 'physic' and not fd.genotype.Mbmap: # self.plotScale = 'morgan' self.num_permutations = start_vars['num_permutations'] - self.do_bootstrap = start_vars['do_bootstrap'] - self.control_locus = start_vars['control_locus'] - self.selected_chr = start_vars['selected_chr'] - self.weighted_regression = start_vars['weighted'] - self.lrs_lod = start_vars['lrs_lod'] + #self.do_bootstrap = start_vars['do_bootstrap'] + #self.control_locus = start_vars['control_locus'] + self.selected_chr = start_vars['chromosome'] + #self.weighted_regression = start_vars['weighted'] + #self.lrs_lod = start_vars['lrs_lod'] def gen_qtl_results(self, tempdata): """Generates qtl results for plotting interval map""" self.dataset.group.get_markers() - self.dataset.read_genotype_file() + self.dataset.group.read_genotype_file() - samples, values, variances = self.trait.export_informative() + samples, values, variances = self.this_trait.export_informative() if self.control_locus: if self.weighted_regression: self.qtl_results = self.dataset.genotype.regression(strains = samples, diff --git a/wqflask/wqflask/static/new/javascript/bar_chart.coffee b/wqflask/wqflask/static/new/javascript/bar_chart.coffee index 749a7dc0..2c60d3ab 100644 --- a/wqflask/wqflask/static/new/javascript/bar_chart.coffee +++ b/wqflask/wqflask/static/new/javascript/bar_chart.coffee @@ -121,6 +121,10 @@ class Bar_Chart $('.x.axis').remove() @add_x_axis(x_scale) ) + + d3.select("#color_by_trait").on("click", => + @color_by_trait() + ) get_attr_color_dict: () -> @attr_color_dict = {} @@ -299,20 +303,15 @@ class Bar_Chart .text((d) => return d ) - - + color_by_trait: () -> - console.log("Before load") - $('#collections_holder').load('/collections/list #collections_list') - $.colorbox( - inline: true - href: "#collections_holder" + $('#collections_holder').load('/collections/list #collections_list', => + $.colorbox( + inline: true + href: "#collections_holder" + ) ) - console.log("After load") - #$.colorbox({href:"/collections/list"}) - #$.get( - # url: /collections/list - # - #) + + root.Bar_Chart = Bar_Chart
\ No newline at end of file diff --git a/wqflask/wqflask/static/new/javascript/bar_chart.js b/wqflask/wqflask/static/new/javascript/bar_chart.js index 20fab15c..03902741 100644 --- a/wqflask/wqflask/static/new/javascript/bar_chart.js +++ b/wqflask/wqflask/static/new/javascript/bar_chart.js @@ -125,6 +125,9 @@ return _this.add_x_axis(x_scale); } }); + d3.select("#color_by_trait").on("click", function() { + return _this.color_by_trait(); + }); } Bar_Chart.prototype.get_attr_color_dict = function() { @@ -318,13 +321,13 @@ }; Bar_Chart.prototype.color_by_trait = function() { - console.log("Before load"); - $('#collections_holder').load('/collections/list #collections_list'); - $.colorbox({ - inline: true, - href: "#collections_holder" + var _this = this; + return $('#collections_holder').load('/collections/list #collections_list', function() { + return $.colorbox({ + inline: true, + href: "#collections_holder" + }); }); - return console.log("After load"); }; return Bar_Chart; diff --git a/wqflask/wqflask/static/new/javascript/box_plot.coffee b/wqflask/wqflask/static/new/javascript/box_plot.coffee index 562bd1dc..e9035456 100644 --- a/wqflask/wqflask/static/new/javascript/box_plot.coffee +++ b/wqflask/wqflask/static/new/javascript/box_plot.coffee @@ -5,46 +5,53 @@ class Box_Plot @get_samples()
@margin = {top: 10, right: 50, bottom: 20, left: 50}
- @plot_width = 120 - @margin.left - @margin.right
+ @plot_width = 200 - @margin.left - @margin.right
@plot_height = 500 - @margin.top - @margin.bottom
@min = d3.min(@sample_vals)
- @max = d3.max(@sample_vals) * 1.1
+ @max = d3.max(@sample_vals)
@svg = @create_svg()
-
@enter_data()
-
+
get_samples: () ->
- @sample_names = (sample.name for sample in @sample_list when sample.value != null)
@sample_vals = (sample.value for sample in @sample_list when sample.value != null)
- @samples = _.zip(@sample_names, @sample_vals)
- create_svg: () -> d3.chart.box()
- .whiskers(@inter_quartile_range(1.5))
- .width(@plot_width)
- .height(@plot_height)
- .domain([@min, @max])
-
+ create_svg: () ->
+ svg = d3.box()
+ .whiskers(@inter_quartile_range(1.5))
+ .width(@plot_width)
+ .height(@plot_height)
+ .domain([@min, @max])
+ return svg
+
enter_data: () ->
d3.select("#box_plot").selectAll("svg")
- .data(@sample_vals)
+ .data([@sample_vals])
.enter().append("svg:svg")
.attr("class", "box")
.attr("width", @plot_width)
.attr("height", @plot_height)
+ .append("svg:g")
.call(@svg)
inter_quartile_range: (k) ->
return (d, i) =>
- q1 = d.quartiles[0],
- q3 = d.quartiles[2],
+ console.log("iqr d:", d)
+ q1 = d.quartiles[0]
+ q3 = d.quartiles[2]
inter_quartile_range = (q3 - q1) * k
- i = -1
+ console.log("iqr:", inter_quartile_range)
+ i = 0
j = d.length
- while (d[++i] < q1 - inter_quartile_range)
- while (d[--j] > q3 + inter_quartile_range)
+ console.log("d[-1]:", d[1])
+ console.log("q1 - iqr:", q1 - inter_quartile_range)
+ i++ while (d[i] < q1 - inter_quartile_range)
+ j-- while (d[j] > q3 + inter_quartile_range)
+ #while (d[++i] < q1 - inter_quartile_range
+ #while d[--j] > q3 + inter_quartile_range
+ console.log("[i, j]", [i, j])
return [i, j]
-
\ No newline at end of file +root.Box_Plot = Box_Plot
\ No newline at end of file diff --git a/wqflask/wqflask/static/new/javascript/box_plot.js b/wqflask/wqflask/static/new/javascript/box_plot.js new file mode 100644 index 00000000..2dd624e1 --- /dev/null +++ b/wqflask/wqflask/static/new/javascript/box_plot.js @@ -0,0 +1,83 @@ +// Generated by CoffeeScript 1.6.1 +(function() { + var Box_Plot, root; + + root = typeof exports !== "undefined" && exports !== null ? exports : this; + + Box_Plot = (function() { + + function Box_Plot(sample_list, sample_group) { + this.sample_list = sample_list; + this.sample_group = sample_group; + this.get_samples(); + this.margin = { + top: 10, + right: 50, + bottom: 20, + left: 50 + }; + this.plot_width = 200 - this.margin.left - this.margin.right; + this.plot_height = 500 - this.margin.top - this.margin.bottom; + this.min = d3.min(this.sample_vals); + this.max = d3.max(this.sample_vals); + this.svg = this.create_svg(); + this.enter_data(); + } + + Box_Plot.prototype.get_samples = function() { + var sample; + return this.sample_vals = (function() { + var _i, _len, _ref, _results; + _ref = this.sample_list; + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + sample = _ref[_i]; + if (sample.value !== null) { + _results.push(sample.value); + } + } + return _results; + }).call(this); + }; + + Box_Plot.prototype.create_svg = function() { + var svg; + svg = d3.box().whiskers(this.inter_quartile_range(1.5)).width(this.plot_width).height(this.plot_height).domain([this.min, this.max]); + return svg; + }; + + Box_Plot.prototype.enter_data = function() { + return d3.select("#box_plot").selectAll("svg").data([this.sample_vals]).enter().append("svg:svg").attr("class", "box").attr("width", this.plot_width).attr("height", this.plot_height).append("svg:g").call(this.svg); + }; + + Box_Plot.prototype.inter_quartile_range = function(k) { + var _this = this; + return function(d, i) { + var inter_quartile_range, j, q1, q3; + console.log("iqr d:", d); + q1 = d.quartiles[0]; + q3 = d.quartiles[2]; + inter_quartile_range = (q3 - q1) * k; + console.log("iqr:", inter_quartile_range); + i = 0; + j = d.length; + console.log("d[-1]:", d[1]); + console.log("q1 - iqr:", q1 - inter_quartile_range); + while (d[i] < q1 - inter_quartile_range) { + i++; + } + while (d[j] > q3 + inter_quartile_range) { + j--; + } + console.log("[i, j]", [i, j]); + return [i, j]; + }; + }; + + return Box_Plot; + + })(); + + root.Box_Plot = Box_Plot; + +}).call(this); diff --git a/wqflask/wqflask/static/new/javascript/show_trait.coffee b/wqflask/wqflask/static/new/javascript/show_trait.coffee index 8bcca85d..7d23345f 100644 --- a/wqflask/wqflask/static/new/javascript/show_trait.coffee +++ b/wqflask/wqflask/static/new/javascript/show_trait.coffee @@ -59,373 +59,6 @@ Stat_Table_Rows = [ ] $ -> - class Bar_Chart - constructor: (@sample_list, @sample_group) -> - @get_samples() - console.log("sample names:", @sample_names) - if @sample_attr_vals.length > 0 - @get_distinct_attr_vals() - @get_attr_color_dict() - - #Used to calculate the bottom margin so sample names aren't cut off - longest_sample_name = d3.max(sample.length for sample in @sample_names) - - @margin = {top: 20, right: 20, bottom: longest_sample_name * 7, left: 40} - @plot_width = @sample_vals.length * 15 - @margin.left - @margin.right - @plot_height = 500 - @margin.top - @margin.bottom - - @x_buffer = @plot_width/20 - @y_buffer = @plot_height/20 - - @y_min = d3.min(@sample_vals) - @y_max = d3.max(@sample_vals) * 1.1 - - @svg = @create_svg() - - @plot_height -= @y_buffer - @create_scales() - @create_graph() - - d3.select("#color_attribute").on("change", => - attribute = $("#color_attribute").val() - if $("#update_bar_chart").html() == 'Sort By Name' - @svg.selectAll(".bar") - .data(@sorted_samples()) - .transition() - .duration(1000) - .style("fill", (d) => - if attribute == "None" - return "steelblue" - else - return @attr_color_dict[attribute][d[2][attribute]] - ) - .select("title") - .text((d) => - return d[1] - ) - else - @svg.selectAll(".bar") - .data(@samples) - .transition() - .duration(1000) - .style("fill", (d) => - if attribute == "None" - return "steelblue" - else - return @attr_color_dict[attribute][d[2][attribute]] - ) - @add_legend(attribute, @distinct_attr_vals[attribute]) - ) - - - d3.select("#update_bar_chart").on("click", => - if @attributes.length > 0 - attribute = $("#color_attribute").val() - if $("#update_bar_chart").html() == 'Sort By Value' - $("#update_bar_chart").html('Sort By Name') - sortItems = (a, b) -> - return a[1] - b[1] - - @svg.selectAll(".bar") - .data(@sorted_samples()) - .transition() - .duration(1000) - .attr("y", (d) => - return @y_scale(d[1]) - ) - .attr("height", (d) => - return @plot_height - @y_scale(d[1]) - ) - .style("fill", (d) => - if @attributes.length > 0 - return @attr_color_dict[attribute][d[2][attribute]] - else - return "steelblue" - ) - .select("title") - .text((d) => - return d[1] - ) - sorted_sample_names = (sample[0] for sample in @sorted_samples()) - x_scale = d3.scale.ordinal() - .domain(sorted_sample_names) - .rangeBands([0, @plot_width], .1) - $('.x.axis').remove() - @add_x_axis(x_scale) - else - $("#update_bar_chart").html('Sort By Value') - @svg.selectAll(".bar") - .data(@samples) - .transition() - .duration(1000) - .attr("y", (d) => - return @y_scale(d[1]) - ) - .attr("height", (d) => - return @plot_height - @y_scale(d[1]) - ) - .style("fill", (d) => - if @attributes.length > 0 - return @attr_color_dict[attribute][d[2][attribute]] - else - return "steelblue" - ) - .select("title") - .text((d) => - return d[1] - ) - x_scale = d3.scale.ordinal() - .domain(@sample_names) - .rangeBands([0, @plot_width], .1) - $('.x.axis').remove() - @add_x_axis(x_scale) - ) - - d3.select("#color_by_trait").on("click", => - @color_by_trait() - ) - - get_attr_color_dict: () -> - @attr_color_dict = {} - console.log("distinct_attr_vals:", @distinct_attr_vals) - for own key, distinct_vals of @distinct_attr_vals - this_color_dict = {} - if distinct_vals.length < 10 - color = d3.scale.category10() - for value, i in distinct_vals - this_color_dict[value] = color(i) - else - console.log("distinct_values:", distinct_vals) - if _.every(distinct_vals, (d) => - if isNaN(d) - return false - else - return true - ) - color_range = d3.scale.linear() - .domain([d3.min(distinct_vals), - d3.max(distinct_vals)]) - .range([0,4]) - for value, i in distinct_vals - console.log("color_range(value):", color_range(parseInt(value))) - this_color_dict[value] = d3.rgb("lightblue").darker(color_range(parseInt(value))) - #this_color_dict[value] = "rgb(0, 0, " + color_range(parseInt(value)) + ")" - @attr_color_dict[key] = this_color_dict - - get_samples: () -> - @sample_names = (sample.name for sample in @sample_list when sample.value != null) - @sample_vals = (sample.value for sample in @sample_list when sample.value != null) - @attributes = (key for key of @sample_list[0]["extra_attributes"]) - console.log("attributes:", @attributes) - @sample_attr_vals = [] - if @attributes.length > 0 - for sample in @sample_list - attr_vals = {} - for attribute in @attributes - attr_vals[attribute] = sample["extra_attributes"][attribute] - @sample_attr_vals.push(attr_vals) - @samples = _.zip(@sample_names, @sample_vals, @sample_attr_vals) - - get_distinct_attr_vals: () -> - @distinct_attr_vals = {} - for sample in @sample_attr_vals - for attribute of sample - if not @distinct_attr_vals[attribute] - @distinct_attr_vals[attribute] = [] - if sample[attribute] not in @distinct_attr_vals[attribute] - @distinct_attr_vals[attribute].push(sample[attribute]) - #console.log("distinct_attr_vals:", @distinct_attr_vals) - - create_svg: () -> - svg = d3.select("#bar_chart") - .append("svg") - .attr("class", "bar_chart") - .attr("width", @plot_width + @margin.left + @margin.right) - .attr("height", @plot_height + @margin.top + @margin.bottom) - .append("g") - .attr("transform", "translate(" + @margin.left + "," + @margin.top + ")") - - return svg - - create_scales: () -> - @x_scale = d3.scale.ordinal() - .domain(@sample_names) - .rangeBands([0, @plot_width], .1) - - @y_scale = d3.scale.linear() - .domain([@y_min * 0.75, @y_max]) - .range([@plot_height, @y_buffer]) - - create_graph: () -> - - #@add_border() - @add_x_axis(@x_scale) - @add_y_axis() - - @add_bars() - - add_x_axis: (scale) -> - xAxis = d3.svg.axis() - .scale(scale) - .orient("bottom"); - - @svg.append("g") - .attr("class", "x axis") - .attr("transform", "translate(0," + @plot_height + ")") - .call(xAxis) - .selectAll("text") - .style("text-anchor", "end") - .style("font-size", "12px") - .attr("dx", "-.8em") - .attr("dy", "-.3em") - .attr("transform", (d) => - return "rotate(-90)" - ) - - add_y_axis: () -> - yAxis = d3.svg.axis() - .scale(@y_scale) - .orient("left") - .ticks(5) - - @svg.append("g") - .attr("class", "y axis") - .call(yAxis) - .append("text") - .attr("transform", "rotate(-90)") - .attr("y", 6) - .attr("dy", ".71em") - .style("text-anchor", "end") - - add_bars: () -> - @svg.selectAll(".bar") - .data(@samples) - .enter().append("rect") - .style("fill", "steelblue") - .attr("class", "bar") - .attr("x", (d) => - return @x_scale(d[0]) - ) - .attr("width", @x_scale.rangeBand()) - .attr("y", (d) => - return @y_scale(d[1]) - ) - .attr("height", (d) => - return @plot_height - @y_scale(d[1]) - ) - .append("svg:title") - .text((d) => - return d[1] - ) - - sorted_samples: () -> - #if @sample_attr_vals.length > 0 - sample_list = _.zip(@sample_names, @sample_vals, @sample_attr_vals) - #else - # sample_list = _.zip(@sample_names, @sample_vals) - sorted = _.sortBy(sample_list, (sample) => - return sample[1] - ) - console.log("sorted:", sorted) - return sorted - - add_legend: (attribute, distinct_vals) -> - legend = @svg.append("g") - .attr("class", "legend") - .attr("height", 100) - .attr("width", 100) - .attr('transform', 'translate(-20,50)') - - legend_rect = legend.selectAll('rect') - .data(distinct_vals) - .enter() - .append("rect") - .attr("x", @plot_width - 65) - .attr("width", 10) - .attr("height", 10) - .attr("y", (d, i) => - return i * 20 - ) - .style("fill", (d) => - console.log("TEST:", @attr_color_dict[attribute][d]) - return @attr_color_dict[attribute][d] - ) - - legend_text = legend.selectAll('text') - .data(distinct_vals) - .enter() - .append("text") - .attr("x", @plot_width - 52) - .attr("y", (d, i) => - return i*20 + 9 - ) - .text((d) => - return d - ) - - color_by_trait: () -> - $('#collections_holder').load('/collections/list #collections_list', => - $.colorbox( - inline: true - href: "#collections_holder" - ) - ) - - class Box_Plot - constructor: (@sample_list, @sample_group) -> - @get_samples() - - @margin = {top: 10, right: 50, bottom: 20, left: 50} - @plot_width = 200 - @margin.left - @margin.right - @plot_height = 500 - @margin.top - @margin.bottom - - @min = d3.min(@sample_vals) - @max = d3.max(@sample_vals) - - @svg = @create_svg() - @enter_data() - - - get_samples: () -> - @sample_vals = (sample.value for sample in @sample_list when sample.value != null) - - create_svg: () -> - svg = d3.box() - .whiskers(@inter_quartile_range(1.5)) - .width(@plot_width) - .height(@plot_height) - .domain([@min, @max]) - return svg - - enter_data: () -> - d3.select("#box_plot").selectAll("svg") - .data([@sample_vals]) - .enter().append("svg:svg") - .attr("class", "box") - .attr("width", @plot_width) - .attr("height", @plot_height) - .append("svg:g") - .call(@svg) - - inter_quartile_range: (k) -> - return (d, i) => - console.log("iqr d:", d) - q1 = d.quartiles[0] - q3 = d.quartiles[2] - inter_quartile_range = (q3 - q1) * k - console.log("iqr:", inter_quartile_range) - i = 0 - j = d.length - console.log("d[-1]:", d[1]) - console.log("q1 - iqr:", q1 - inter_quartile_range) - i++ while (d[i] < q1 - inter_quartile_range) - j-- while (d[j] > q3 + inter_quartile_range) - #while (d[++i] < q1 - inter_quartile_range - #while d[--j] > q3 + inter_quartile_range - console.log("[i, j]", [i, j]) - return [i, j] - - sample_lists = js_data.sample_lists sample_group_types = js_data.sample_group_types @@ -504,39 +137,6 @@ $ -> console.log("Calling change_stats_value") change_stats_value(sample_sets, category, row.vn, row.digits) - edit_data_change = -> - already_seen = {} - sample_sets = - samples_primary: new Stats([]) - samples_other: new Stats([]) - samples_all: new Stats([]) - - console.log("at beginning:", sample_sets) - - tables = ['samples_primary', 'samples_other'] - for table in tables - rows = $("#" + table).find('tr') - for row in rows - name = $(row).find('.edit_sample_sample_name').html() - name = $.trim(name) - real_value = $(row).find('.edit_sample_value').val() - console.log("real_value:", real_value) - checkbox = $(row).find(".edit_sample_checkbox") - checked = $(checkbox).attr('checked') - - if checked and is_number(real_value) and real_value != "" - console.log("in the iffy if") - real_value = parseFloat(real_value) - - sample_sets[table].add_value(real_value) - console.log("checking name of:", name) - if not (name of already_seen) - console.log("haven't seen") - sample_sets['samples_all'].add_value(real_value) - already_seen[name] = true - console.log("towards end:", sample_sets) - update_stat_values(sample_sets) - make_table = -> header = "<thead><tr><th> </th>" @@ -585,6 +185,38 @@ $ -> processed += value return processed + edit_data_change = -> + already_seen = {} + sample_sets = + samples_primary: new Stats([]) + samples_other: new Stats([]) + samples_all: new Stats([]) + + console.log("at beginning:", sample_sets) + + tables = ['samples_primary', 'samples_other'] + for table in tables + rows = $("#" + table).find('tr') + for row in rows + name = $(row).find('.edit_sample_sample_name').html() + name = $.trim(name) + real_value = $(row).find('.edit_sample_value').val() + console.log("real_value:", real_value) + checkbox = $(row).find(".edit_sample_checkbox") + checked = $(checkbox).attr('checked') + + if checked and is_number(real_value) and real_value != "" + console.log("in the iffy if") + real_value = parseFloat(real_value) + + sample_sets[table].add_value(real_value) + console.log("checking name of:", name) + if not (name of already_seen) + console.log("haven't seen") + sample_sets['samples_all'].add_value(real_value) + already_seen[name] = true + console.log("towards end:", sample_sets) + update_stat_values(sample_sets) show_hide_outliers = -> console.log("FOOBAR in beginning of show_hide_outliers") @@ -613,7 +245,6 @@ $ -> $('select[name=corr_method]').change(on_corr_method_change) - ##End Calculate Correlations Code ##Populate Samples Attribute Values Code diff --git a/wqflask/wqflask/static/new/javascript/show_trait.js b/wqflask/wqflask/static/new/javascript/show_trait.js index b562bfe2..718e365a 100644 --- a/wqflask/wqflask/static/new/javascript/show_trait.js +++ b/wqflask/wqflask/static/new/javascript/show_trait.js @@ -2,7 +2,6 @@ (function() { var Stat_Table_Rows, is_number, __hasProp = {}.hasOwnProperty, - __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }, __slice = [].slice; console.log("start_b"); @@ -57,407 +56,7 @@ ]; $(function() { - var Bar_Chart, Box_Plot, block_by_attribute_value, block_by_index, block_outliers, change_stats_value, create_value_dropdown, edit_data_change, export_sample_table_data, get_sample_table_data, hide_no_value, hide_tabs, make_table, on_corr_method_change, populate_sample_attributes_values_dropdown, process_id, reset_samples_table, sample_group_types, sample_lists, show_hide_outliers, stats_mdp_change, update_stat_values; - Bar_Chart = (function() { - - function Bar_Chart(sample_list, sample_group) { - var longest_sample_name, sample, - _this = this; - this.sample_list = sample_list; - this.sample_group = sample_group; - this.get_samples(); - console.log("sample names:", this.sample_names); - if (this.sample_attr_vals.length > 0) { - this.get_distinct_attr_vals(); - this.get_attr_color_dict(); - } - longest_sample_name = d3.max((function() { - var _i, _len, _ref, _results; - _ref = this.sample_names; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - sample = _ref[_i]; - _results.push(sample.length); - } - return _results; - }).call(this)); - this.margin = { - top: 20, - right: 20, - bottom: longest_sample_name * 7, - left: 40 - }; - this.plot_width = this.sample_vals.length * 15 - this.margin.left - this.margin.right; - this.plot_height = 500 - this.margin.top - this.margin.bottom; - this.x_buffer = this.plot_width / 20; - this.y_buffer = this.plot_height / 20; - this.y_min = d3.min(this.sample_vals); - this.y_max = d3.max(this.sample_vals) * 1.1; - this.svg = this.create_svg(); - this.plot_height -= this.y_buffer; - this.create_scales(); - this.create_graph(); - d3.select("#color_attribute").on("change", function() { - var attribute; - attribute = $("#color_attribute").val(); - if ($("#update_bar_chart").html() === 'Sort By Name') { - _this.svg.selectAll(".bar").data(_this.sorted_samples()).transition().duration(1000).style("fill", function(d) { - if (attribute === "None") { - return "steelblue"; - } else { - return _this.attr_color_dict[attribute][d[2][attribute]]; - } - }).select("title").text(function(d) { - return d[1]; - }); - } else { - _this.svg.selectAll(".bar").data(_this.samples).transition().duration(1000).style("fill", function(d) { - if (attribute === "None") { - return "steelblue"; - } else { - return _this.attr_color_dict[attribute][d[2][attribute]]; - } - }); - } - return _this.add_legend(attribute, _this.distinct_attr_vals[attribute]); - }); - d3.select("#update_bar_chart").on("click", function() { - var attribute, sortItems, sorted_sample_names, x_scale; - if (_this.attributes.length > 0) { - attribute = $("#color_attribute").val(); - } - if ($("#update_bar_chart").html() === 'Sort By Value') { - $("#update_bar_chart").html('Sort By Name'); - sortItems = function(a, b) { - return a[1] - b[1]; - }; - _this.svg.selectAll(".bar").data(_this.sorted_samples()).transition().duration(1000).attr("y", function(d) { - return _this.y_scale(d[1]); - }).attr("height", function(d) { - return _this.plot_height - _this.y_scale(d[1]); - }).style("fill", function(d) { - if (_this.attributes.length > 0) { - return _this.attr_color_dict[attribute][d[2][attribute]]; - } else { - return "steelblue"; - } - }).select("title").text(function(d) { - return d[1]; - }); - sorted_sample_names = (function() { - var _i, _len, _ref, _results; - _ref = this.sorted_samples(); - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - sample = _ref[_i]; - _results.push(sample[0]); - } - return _results; - }).call(_this); - x_scale = d3.scale.ordinal().domain(sorted_sample_names).rangeBands([0, _this.plot_width], .1); - $('.x.axis').remove(); - return _this.add_x_axis(x_scale); - } else { - $("#update_bar_chart").html('Sort By Value'); - _this.svg.selectAll(".bar").data(_this.samples).transition().duration(1000).attr("y", function(d) { - return _this.y_scale(d[1]); - }).attr("height", function(d) { - return _this.plot_height - _this.y_scale(d[1]); - }).style("fill", function(d) { - if (_this.attributes.length > 0) { - return _this.attr_color_dict[attribute][d[2][attribute]]; - } else { - return "steelblue"; - } - }).select("title").text(function(d) { - return d[1]; - }); - x_scale = d3.scale.ordinal().domain(_this.sample_names).rangeBands([0, _this.plot_width], .1); - $('.x.axis').remove(); - return _this.add_x_axis(x_scale); - } - }); - d3.select("#color_by_trait").on("click", function() { - return _this.color_by_trait(); - }); - } - - Bar_Chart.prototype.get_attr_color_dict = function() { - var color, color_range, distinct_vals, i, key, this_color_dict, value, _i, _j, _len, _len1, _ref, _results, - _this = this; - this.attr_color_dict = {}; - console.log("distinct_attr_vals:", this.distinct_attr_vals); - _ref = this.distinct_attr_vals; - _results = []; - for (key in _ref) { - if (!__hasProp.call(_ref, key)) continue; - distinct_vals = _ref[key]; - this_color_dict = {}; - if (distinct_vals.length < 10) { - color = d3.scale.category10(); - for (i = _i = 0, _len = distinct_vals.length; _i < _len; i = ++_i) { - value = distinct_vals[i]; - this_color_dict[value] = color(i); - } - } else { - console.log("distinct_values:", distinct_vals); - if (_.every(distinct_vals, function(d) { - if (isNaN(d)) { - return false; - } else { - return true; - } - })) { - color_range = d3.scale.linear().domain([d3.min(distinct_vals), d3.max(distinct_vals)]).range([0, 4]); - for (i = _j = 0, _len1 = distinct_vals.length; _j < _len1; i = ++_j) { - value = distinct_vals[i]; - console.log("color_range(value):", color_range(parseInt(value))); - this_color_dict[value] = d3.rgb("lightblue").darker(color_range(parseInt(value))); - } - } - } - _results.push(this.attr_color_dict[key] = this_color_dict); - } - return _results; - }; - - Bar_Chart.prototype.get_samples = function() { - var attr_vals, attribute, key, sample, _i, _j, _len, _len1, _ref, _ref1; - this.sample_names = (function() { - var _i, _len, _ref, _results; - _ref = this.sample_list; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - sample = _ref[_i]; - if (sample.value !== null) { - _results.push(sample.name); - } - } - return _results; - }).call(this); - this.sample_vals = (function() { - var _i, _len, _ref, _results; - _ref = this.sample_list; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - sample = _ref[_i]; - if (sample.value !== null) { - _results.push(sample.value); - } - } - return _results; - }).call(this); - this.attributes = (function() { - var _results; - _results = []; - for (key in this.sample_list[0]["extra_attributes"]) { - _results.push(key); - } - return _results; - }).call(this); - console.log("attributes:", this.attributes); - this.sample_attr_vals = []; - if (this.attributes.length > 0) { - _ref = this.sample_list; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - sample = _ref[_i]; - attr_vals = {}; - _ref1 = this.attributes; - for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { - attribute = _ref1[_j]; - attr_vals[attribute] = sample["extra_attributes"][attribute]; - } - this.sample_attr_vals.push(attr_vals); - } - } - return this.samples = _.zip(this.sample_names, this.sample_vals, this.sample_attr_vals); - }; - - Bar_Chart.prototype.get_distinct_attr_vals = function() { - var attribute, sample, _i, _len, _ref, _results; - this.distinct_attr_vals = {}; - _ref = this.sample_attr_vals; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - sample = _ref[_i]; - _results.push((function() { - var _ref1, _results1; - _results1 = []; - for (attribute in sample) { - if (!this.distinct_attr_vals[attribute]) { - this.distinct_attr_vals[attribute] = []; - } - if (_ref1 = sample[attribute], __indexOf.call(this.distinct_attr_vals[attribute], _ref1) < 0) { - _results1.push(this.distinct_attr_vals[attribute].push(sample[attribute])); - } else { - _results1.push(void 0); - } - } - return _results1; - }).call(this)); - } - return _results; - }; - - Bar_Chart.prototype.create_svg = function() { - var svg; - svg = d3.select("#bar_chart").append("svg").attr("class", "bar_chart").attr("width", this.plot_width + this.margin.left + this.margin.right).attr("height", this.plot_height + this.margin.top + this.margin.bottom).append("g").attr("transform", "translate(" + this.margin.left + "," + this.margin.top + ")"); - return svg; - }; - - Bar_Chart.prototype.create_scales = function() { - this.x_scale = d3.scale.ordinal().domain(this.sample_names).rangeBands([0, this.plot_width], .1); - return this.y_scale = d3.scale.linear().domain([this.y_min * 0.75, this.y_max]).range([this.plot_height, this.y_buffer]); - }; - - Bar_Chart.prototype.create_graph = function() { - this.add_x_axis(this.x_scale); - this.add_y_axis(); - return this.add_bars(); - }; - - Bar_Chart.prototype.add_x_axis = function(scale) { - var xAxis, - _this = this; - xAxis = d3.svg.axis().scale(scale).orient("bottom"); - return this.svg.append("g").attr("class", "x axis").attr("transform", "translate(0," + this.plot_height + ")").call(xAxis).selectAll("text").style("text-anchor", "end").style("font-size", "12px").attr("dx", "-.8em").attr("dy", "-.3em").attr("transform", function(d) { - return "rotate(-90)"; - }); - }; - - Bar_Chart.prototype.add_y_axis = function() { - var yAxis; - yAxis = d3.svg.axis().scale(this.y_scale).orient("left").ticks(5); - return this.svg.append("g").attr("class", "y axis").call(yAxis).append("text").attr("transform", "rotate(-90)").attr("y", 6).attr("dy", ".71em").style("text-anchor", "end"); - }; - - Bar_Chart.prototype.add_bars = function() { - var _this = this; - return this.svg.selectAll(".bar").data(this.samples).enter().append("rect").style("fill", "steelblue").attr("class", "bar").attr("x", function(d) { - return _this.x_scale(d[0]); - }).attr("width", this.x_scale.rangeBand()).attr("y", function(d) { - return _this.y_scale(d[1]); - }).attr("height", function(d) { - return _this.plot_height - _this.y_scale(d[1]); - }).append("svg:title").text(function(d) { - return d[1]; - }); - }; - - Bar_Chart.prototype.sorted_samples = function() { - var sample_list, sorted, - _this = this; - sample_list = _.zip(this.sample_names, this.sample_vals, this.sample_attr_vals); - sorted = _.sortBy(sample_list, function(sample) { - return sample[1]; - }); - console.log("sorted:", sorted); - return sorted; - }; - - Bar_Chart.prototype.add_legend = function(attribute, distinct_vals) { - var legend, legend_rect, legend_text, - _this = this; - legend = this.svg.append("g").attr("class", "legend").attr("height", 100).attr("width", 100).attr('transform', 'translate(-20,50)'); - legend_rect = legend.selectAll('rect').data(distinct_vals).enter().append("rect").attr("x", this.plot_width - 65).attr("width", 10).attr("height", 10).attr("y", function(d, i) { - return i * 20; - }).style("fill", function(d) { - console.log("TEST:", _this.attr_color_dict[attribute][d]); - return _this.attr_color_dict[attribute][d]; - }); - return legend_text = legend.selectAll('text').data(distinct_vals).enter().append("text").attr("x", this.plot_width - 52).attr("y", function(d, i) { - return i * 20 + 9; - }).text(function(d) { - return d; - }); - }; - - Bar_Chart.prototype.color_by_trait = function() { - var _this = this; - return $('#collections_holder').load('/collections/list #collections_list', function() { - return $.colorbox({ - inline: true, - href: "#collections_holder" - }); - }); - }; - - return Bar_Chart; - - })(); - Box_Plot = (function() { - - function Box_Plot(sample_list, sample_group) { - this.sample_list = sample_list; - this.sample_group = sample_group; - this.get_samples(); - this.margin = { - top: 10, - right: 50, - bottom: 20, - left: 50 - }; - this.plot_width = 200 - this.margin.left - this.margin.right; - this.plot_height = 500 - this.margin.top - this.margin.bottom; - this.min = d3.min(this.sample_vals); - this.max = d3.max(this.sample_vals); - this.svg = this.create_svg(); - this.enter_data(); - } - - Box_Plot.prototype.get_samples = function() { - var sample; - return this.sample_vals = (function() { - var _i, _len, _ref, _results; - _ref = this.sample_list; - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - sample = _ref[_i]; - if (sample.value !== null) { - _results.push(sample.value); - } - } - return _results; - }).call(this); - }; - - Box_Plot.prototype.create_svg = function() { - var svg; - svg = d3.box().whiskers(this.inter_quartile_range(1.5)).width(this.plot_width).height(this.plot_height).domain([this.min, this.max]); - return svg; - }; - - Box_Plot.prototype.enter_data = function() { - return d3.select("#box_plot").selectAll("svg").data([this.sample_vals]).enter().append("svg:svg").attr("class", "box").attr("width", this.plot_width).attr("height", this.plot_height).append("svg:g").call(this.svg); - }; - - Box_Plot.prototype.inter_quartile_range = function(k) { - var _this = this; - return function(d, i) { - var inter_quartile_range, j, q1, q3; - console.log("iqr d:", d); - q1 = d.quartiles[0]; - q3 = d.quartiles[2]; - inter_quartile_range = (q3 - q1) * k; - console.log("iqr:", inter_quartile_range); - i = 0; - j = d.length; - console.log("d[-1]:", d[1]); - console.log("q1 - iqr:", q1 - inter_quartile_range); - while (d[i] < q1 - inter_quartile_range) { - i++; - } - while (d[j] > q3 + inter_quartile_range) { - j--; - } - console.log("[i, j]", [i, j]); - return [i, j]; - }; - }; - - return Box_Plot; - - })(); + var block_by_attribute_value, block_by_index, block_outliers, change_stats_value, create_value_dropdown, edit_data_change, export_sample_table_data, get_sample_table_data, hide_no_value, hide_tabs, make_table, on_corr_method_change, populate_sample_attributes_values_dropdown, process_id, reset_samples_table, sample_group_types, sample_lists, show_hide_outliers, stats_mdp_change, update_stat_values; sample_lists = js_data.sample_lists; sample_group_types = js_data.sample_group_types; new Bar_Chart(sample_lists[0]); @@ -546,43 +145,6 @@ } return _results; }; - edit_data_change = function() { - var already_seen, checkbox, checked, name, real_value, row, rows, sample_sets, table, tables, _i, _j, _len, _len1; - already_seen = {}; - sample_sets = { - samples_primary: new Stats([]), - samples_other: new Stats([]), - samples_all: new Stats([]) - }; - console.log("at beginning:", sample_sets); - tables = ['samples_primary', 'samples_other']; - for (_i = 0, _len = tables.length; _i < _len; _i++) { - table = tables[_i]; - rows = $("#" + table).find('tr'); - for (_j = 0, _len1 = rows.length; _j < _len1; _j++) { - row = rows[_j]; - name = $(row).find('.edit_sample_sample_name').html(); - name = $.trim(name); - real_value = $(row).find('.edit_sample_value').val(); - console.log("real_value:", real_value); - checkbox = $(row).find(".edit_sample_checkbox"); - checked = $(checkbox).attr('checked'); - if (checked && is_number(real_value) && real_value !== "") { - console.log("in the iffy if"); - real_value = parseFloat(real_value); - sample_sets[table].add_value(real_value); - console.log("checking name of:", name); - if (!(name in already_seen)) { - console.log("haven't seen"); - sample_sets['samples_all'].add_value(real_value); - already_seen[name] = true; - } - } - } - } - console.log("towards end:", sample_sets); - return update_stat_values(sample_sets); - }; make_table = function() { var header, key, row, row_line, table, the_id, the_rows, value, _i, _len, _ref, _ref1; header = "<thead><tr><th> </th>"; @@ -645,6 +207,43 @@ } return processed; }; + edit_data_change = function() { + var already_seen, checkbox, checked, name, real_value, row, rows, sample_sets, table, tables, _i, _j, _len, _len1; + already_seen = {}; + sample_sets = { + samples_primary: new Stats([]), + samples_other: new Stats([]), + samples_all: new Stats([]) + }; + console.log("at beginning:", sample_sets); + tables = ['samples_primary', 'samples_other']; + for (_i = 0, _len = tables.length; _i < _len; _i++) { + table = tables[_i]; + rows = $("#" + table).find('tr'); + for (_j = 0, _len1 = rows.length; _j < _len1; _j++) { + row = rows[_j]; + name = $(row).find('.edit_sample_sample_name').html(); + name = $.trim(name); + real_value = $(row).find('.edit_sample_value').val(); + console.log("real_value:", real_value); + checkbox = $(row).find(".edit_sample_checkbox"); + checked = $(checkbox).attr('checked'); + if (checked && is_number(real_value) && real_value !== "") { + console.log("in the iffy if"); + real_value = parseFloat(real_value); + sample_sets[table].add_value(real_value); + console.log("checking name of:", name); + if (!(name in already_seen)) { + console.log("haven't seen"); + sample_sets['samples_all'].add_value(real_value); + already_seen[name] = true; + } + } + } + } + console.log("towards end:", sample_sets); + return update_stat_values(sample_sets); + }; show_hide_outliers = function() { var label; console.log("FOOBAR in beginning of show_hide_outliers"); 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 3c995441..8571753e 100644 --- a/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.coffee +++ b/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.coffee @@ -52,6 +52,32 @@ $ -> ) return false + $("#interval_mapping_compute").click(() => + $("#progress_bar_container").modal() + url = "/interval_mapping" + form_data = $('#trait_data_form').serialize() + console.log("form_data is:", form_data) + $.ajax( + type: "POST" + url: url + data: form_data + error: (xhr, ajaxOptions, thrownError) => + alert("Sorry, an error occurred") + console.log(xhr) + clearInterval(this.my_timer) + $('#progress_bar_container').modal('hide') + $("body").html("We got an error.") + success: (data) => + clearInterval(this.my_timer) + $('#progress_bar_container').modal('hide') + $("body").html(data) + ) + console.log("settingInterval") + + this.my_timer = setInterval(get_progress, 1000) + return false + ) + $('#suggestive').hide() $('input[name=display_all]').change(() => 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 b309b167..1153b8ef 100644 --- a/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js +++ b/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js @@ -62,6 +62,33 @@ }); return false; }; + $("#interval_mapping_compute").click(function() { + var form_data, url; + $("#progress_bar_container").modal(); + url = "/interval_mapping"; + form_data = $('#trait_data_form').serialize(); + console.log("form_data is:", form_data); + $.ajax({ + type: "POST", + url: url, + data: form_data, + error: function(xhr, ajaxOptions, thrownError) { + alert("Sorry, an error occurred"); + console.log(xhr); + clearInterval(_this.my_timer); + $('#progress_bar_container').modal('hide'); + return $("body").html("We got an error."); + }, + success: function(data) { + clearInterval(_this.my_timer); + $('#progress_bar_container').modal('hide'); + return $("body").html(data); + } + }); + console.log("settingInterval"); + _this.my_timer = setInterval(get_progress, 1000); + return false; + }); $('#suggestive').hide(); $('input[name=display_all]').change(function() { console.log("check"); diff --git a/wqflask/wqflask/templates/show_trait.html b/wqflask/wqflask/templates/show_trait.html index 8a19e07b..91e6df42 100644 --- a/wqflask/wqflask/templates/show_trait.html +++ b/wqflask/wqflask/templates/show_trait.html @@ -56,6 +56,7 @@ <script type="text/javascript" src="/static/new/javascript/stats.js"></script> <script type="text/javascript" src="/static/new/javascript/box.js"></script> <script type="text/javascript" src="/static/new/javascript/bar_chart.js"></script> + <script type="text/javascript" src="/static/new/javascript/box_plot.js"></script> <script type="text/javascript" src="/static/new/javascript/show_trait.js"></script> <script type="text/javascript" src="/static/new/javascript/show_trait_mapping_tools.js"></script> <script type="text/javascript" src="/static/new/javascript/validation.js"></script> diff --git a/wqflask/wqflask/templates/show_trait_mapping_tools.html b/wqflask/wqflask/templates/show_trait_mapping_tools.html index c2d5211f..00301d39 100644 --- a/wqflask/wqflask/templates/show_trait_mapping_tools.html +++ b/wqflask/wqflask/templates/show_trait_mapping_tools.html @@ -30,7 +30,7 @@ <div class="control-group"> <label for="mapping_permutations" class="control-label">Permutations (n)</label> <div class="controls"> - <input name="num_perm1" value="2000" type="text" /> + <input name="num_permutations" value="2000" type="text" /> </div> </div> @@ -85,7 +85,8 @@ <div class="control-group"> <div class="controls"> - <button class="btn btn-inverse submit_special" + <button id="interval_mapping_compute" + class="btn btn-inverse submit_special" data-url="/interval_mapping" title="Compute Interval Mapping"> <i class="icon-ok-circle icon-white"></i> Compute @@ -116,12 +117,12 @@ </div> </div> - <div class="control-group"> +<!-- <div class="control-group"> <label for="marker_reg_permutations" class="control-label">Permutations (n)</label> <div class="controls"> <input name="num_perm" value="2000" type="text" /> </div> - </div> + </div> --> <div class="control-group"> <div class="controls"> diff --git a/wqflask/wqflask/user_manager.py b/wqflask/wqflask/user_manager.py index 768415b5..1d0d9846 100644 --- a/wqflask/wqflask/user_manager.py +++ b/wqflask/wqflask/user_manager.py @@ -49,7 +49,8 @@ from utility import Bunch, Struct from base.data_set import create_datasets_list - +THREE_DAYS = 60 * 60 * 24 * 3 +#THREE_DAYS = 45 def timestamp(): return datetime.datetime.utcnow().isoformat() @@ -74,6 +75,27 @@ class UserSession(object): print("self.redis_key is:", self.redis_key) self.session_id = session_id self.record = Redis.hgetall(self.redis_key) + + + if not self.record: + # This will occur, for example, when the browser has been left open over a long + # weekend and the site hasn't been visited by the user + self.logged_in = False + + ########### Grrr...this won't work because of the way flask handles cookies + # Delete the cookie + #response = make_response(redirect(url_for('login'))) + #response.set_cookie(self.cookie_name, '', expires=0) + #flash( + # "Due to inactivity your session has expired. If you'd like please login again.") + #return response + return + + if Redis.ttl(self.redis_key) < THREE_DAYS: + # (Almost) everytime the user does something we extend the session_id in Redis... + print("Extending ttl...") + Redis.expire(self.redis_key, THREE_DAYS) + print("record is:", self.record) self.logged_in = True @@ -225,8 +247,8 @@ class VerificationEmail(object): ) Redis.set(key, data) - two_days = 60 * 60 * 24 * 2 - Redis.expire(key, two_days) + #two_days = 60 * 60 * 24 * 2 + Redis.expire(key, THREE_DAYS) to = user.email_address subject = self.subject body = render_template(self.template_name, @@ -415,7 +437,7 @@ class LoginUser(object): if self.remember_me: expire_time = self.remember_time else: - expire_time = 60 * 60 * 24 * 2 # two days + expire_time = THREE_DAYS Redis.expire(key, expire_time) db_session.add(login_rec) db_session.commit() diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py index b2f08ca0..50161d41 100644 --- a/wqflask/wqflask/views.py +++ b/wqflask/wqflask/views.py @@ -32,7 +32,7 @@ from base.data_set import create_datasets_list from wqflask.show_trait import show_trait from wqflask.show_trait import export_trait_data from wqflask.marker_regression import marker_regression -#from wqflask.interval_mapping import interval_mapping +from wqflask.interval_mapping import interval_mapping from wqflask.correlation import show_corr_results from wqflask.correlation import corr_scatter_plot from utility import temp_data @@ -256,7 +256,11 @@ def interval_mapping_page(): wanted = ( 'trait_id', 'dataset', - 'suggestive' + 'chromosome', + 'num_permutations', + 'do_bootstraps', + 'default_control_locus', + 'control_locus' ) start_vars = {} @@ -308,10 +312,10 @@ def corr_scatter_plot_page(): indent=" ") return render_template("corr_scatter_plot.html", **template_vars.__dict__) -@app.route("/int_mapping", methods=('POST',)) -def interval_mapping_page(): - template_vars = interval_mapping.IntervalMapping(request.args) - return render_template("interval_mapping.html", **template_vars.__dict__) +#@app.route("/int_mapping", methods=('POST',)) +#def interval_mapping_page(): +# template_vars = interval_mapping.IntervalMapping(request.args) +# return render_template("interval_mapping.html", **template_vars.__dict__) # Todo: Can we simplify this? -Sam def sharing_info_page(): |