From c7c306c69254ca49ddeccc495a8a096fcf03974d Mon Sep 17 00:00:00 2001 From: Zachary Sloan Date: Tue, 9 Apr 2013 19:36:43 +0000 Subject: Nick's code works fine with human data Added option to limit results based on lod score (which also changes the y-axis of the plot) --- wqflask/base/data_set.py | 2 -- wqflask/base/species.py | 10 +++++----- .../wqflask/marker_regression/marker_regression.py | 13 ++++++++----- wqflask/wqflask/my_pylmm/pyLMM/lmm.py | 4 ++-- .../static/new/javascript/marker_regression.coffee | 16 +++++++++------- .../static/new/javascript/marker_regression.js | 12 ++++++------ .../new/javascript/show_trait_mapping_tools.coffee | 12 +++++++++++- .../new/javascript/show_trait_mapping_tools.js | 11 ++++++++++- .../templates/show_trait_mapping_tools.html | 22 ++++++++++------------ wqflask/wqflask/views.py | 1 + 10 files changed, 62 insertions(+), 41 deletions(-) diff --git a/wqflask/base/data_set.py b/wqflask/base/data_set.py index 16bc4ba4..111597a9 100755 --- a/wqflask/base/data_set.py +++ b/wqflask/base/data_set.py @@ -83,8 +83,6 @@ class Markers(object): marker['lod_score'] = -math.log10(marker['p_value']) #Using -log(p) for the LRS; need to ask Rob how he wants to get LRS from p-values marker['lrs_value'] = -math.log10(marker['p_value']) * 4.61 - - class HumanMarkers(Markers): diff --git a/wqflask/base/species.py b/wqflask/base/species.py index 689e5c05..191f4535 100644 --- a/wqflask/base/species.py +++ b/wqflask/base/species.py @@ -16,8 +16,7 @@ class TheSpecies(object): print("self.dataset is:", pf(self.dataset.__dict__)) self.chromosomes = Chromosomes(self.dataset) self.genome_mb_length = self.chromosomes.get_genome_mb_length() - - + #@property #def chromosomes(self): # chromosomes = [("All", -1)] @@ -31,7 +30,8 @@ class TheSpecies(object): # return chromosomes class IndChromosome(object): - def __init__(self, length): + def __init__(self, name, length): + self.name = name self.length = length @property @@ -50,7 +50,7 @@ class Chromosomes(object): results = g.db.execute(""" Select - Chr_Length.Name, Length from Chr_Length, InbredSet + Chr_Length.Name, Chr_Length.OrderId, Length from Chr_Length, InbredSet where Chr_Length.SpeciesId = InbredSet.SpeciesId AND InbredSet.Name = %s @@ -59,7 +59,7 @@ class Chromosomes(object): print("bike:", results) for item in results: - self.chromosomes[item.Name] = IndChromosome(item.Length) + self.chromosomes[item.OrderId] = IndChromosome(item.Name, item.Length) self.set_mb_graph_interval() #self.get_cm_length_list() diff --git a/wqflask/wqflask/marker_regression/marker_regression.py b/wqflask/wqflask/marker_regression/marker_regression.py index 545c8162..86d9fe06 100755 --- a/wqflask/wqflask/marker_regression/marker_regression.py +++ b/wqflask/wqflask/marker_regression/marker_regression.py @@ -41,6 +41,8 @@ class MarkerRegression(object): self.samples = [] # Want only ones with values self.vals = [] + print("start_vars: ", pf(start_vars)) + self.suggestive = float(start_vars['suggestive']) for sample in self.dataset.group.samplelist: value = start_vars['value:' + sample] @@ -50,12 +52,13 @@ class MarkerRegression(object): self.gen_data(tempdata) #Get chromosome lengths for drawing the manhattan plot - chromosome_mb_lengths = {} + chromosomes = {} for key in self.species.chromosomes.chromosomes.keys(): - chromosome_mb_lengths[key] = self.species.chromosomes.chromosomes[key].mb_length + this_chr = self.species.chromosomes.chromosomes[key] + chromosomes[key] = [this_chr.name, this_chr.mb_length] self.js_data = dict( - chromosomes = chromosome_mb_lengths, + chromosomes = chromosomes, qtl_results = self.qtl_results, ) @@ -87,12 +90,12 @@ class MarkerRegression(object): refit=False, temp_data=tempdata ) - + self.dataset.group.markers.add_pvalues(p_values) self.qtl_results = [] for marker in self.dataset.group.markers.markers: - if marker['p_value'] < 0.2: + if marker['lod_score'] >= self.suggestive: self.qtl_results.append(marker) #self.qtl_results = self.dataset.group.markers.markers diff --git a/wqflask/wqflask/my_pylmm/pyLMM/lmm.py b/wqflask/wqflask/my_pylmm/pyLMM/lmm.py index 0e965c8e..e5978933 100644 --- a/wqflask/wqflask/my_pylmm/pyLMM/lmm.py +++ b/wqflask/wqflask/my_pylmm/pyLMM/lmm.py @@ -66,8 +66,8 @@ def run_human(pheno_vector, with Bench("snp iterator loop"): count = 0 for snp, this_id in plink_input: - #if count > 5000: - # break + if count > 5000: + break count += 1 diff --git a/wqflask/wqflask/static/new/javascript/marker_regression.coffee b/wqflask/wqflask/static/new/javascript/marker_regression.coffee index 78b6fdbc..fd1fac54 100644 --- a/wqflask/wqflask/static/new/javascript/marker_regression.coffee +++ b/wqflask/wqflask/static/new/javascript/marker_regression.coffee @@ -25,6 +25,7 @@ $ -> #@x_max = d3.max(@x_coords) @x_max = @total_length + @y_min = d3.min(@y_coords) @y_max = d3.max(@y_coords) * 1.2 @svg = @create_svg() @@ -57,7 +58,7 @@ $ -> chr_lengths = [] total_length = 0 for key of @chromosomes - this_length = @chromosomes[key] + this_length = @chromosomes[key][1] chr_lengths.push(this_length) cumulative_chr_lengths.push(total_length + this_length) total_length += this_length @@ -70,10 +71,11 @@ $ -> chr_lengths = [] chr_seen = [] for result in js_data.qtl_results - chr_length = @chromosomes[result.chr] + chr_length = @chromosomes[result.chr][1] if not(result.chr in chr_seen) chr_seen.push(result.chr) - chr_lengths.push(chr_length) + chr_lengths.push(chr_length) + if result.chr != "1" @total_length += chr_lengths[chr_lengths.length - 2] @x_coords.push(@total_length + parseFloat(result.Mb)) @@ -104,7 +106,7 @@ $ -> @add_x_axis() @add_y_axis() @add_chr_lines() - @fill_chr_areas() + #@fill_chr_areas() @add_chr_labels() @add_plot_points() @@ -138,7 +140,7 @@ $ -> .range([@x_buffer, @plot_width]) @y_scale = d3.scale.linear() - .domain([0, @y_max]) + .domain([@y_min, @y_max]) .range([@plot_height, @y_buffer]) create_x_axis_tick_values: () -> @@ -244,7 +246,7 @@ $ -> add_chr_labels: () -> chr_names = [] for key of @chromosomes - chr_names.push(key) + chr_names.push(@chromosomes[key][0]) chr_info = _.zip(chr_names, @chr_lengths, @cumulative_chr_lengths) @svg.selectAll("text") .data(chr_info, (d) => @@ -274,7 +276,7 @@ $ -> return @x_buffer + ((@plot_width-@x_buffer) * d[0]/@x_max) ) .attr("cy", (d) => - return @plot_height - ((@plot_height-@y_buffer) * d[1]/@y_max) + return @plot_height - ((@plot_height-@y_buffer) * (d[1]-@y_min)/@y_max) ) .attr("r", 2) .attr("id", (d) => diff --git a/wqflask/wqflask/static/new/javascript/marker_regression.js b/wqflask/wqflask/static/new/javascript/marker_regression.js index 25d88ec0..37a4e1e5 100644 --- a/wqflask/wqflask/static/new/javascript/marker_regression.js +++ b/wqflask/wqflask/static/new/javascript/marker_regression.js @@ -27,6 +27,7 @@ this.x_buffer = this.plot_width / 30; this.y_buffer = this.plot_height / 20; this.x_max = this.total_length; + this.y_min = d3.min(this.y_coords); this.y_max = d3.max(this.y_coords) * 1.2; this.svg = this.create_svg(); this.plot_coordinates = _.zip(this.x_coords, this.y_coords, this.marker_names); @@ -65,7 +66,7 @@ chr_lengths = []; total_length = 0; for (key in this.chromosomes) { - this_length = this.chromosomes[key]; + this_length = this.chromosomes[key][1]; chr_lengths.push(this_length); cumulative_chr_lengths.push(total_length + this_length); total_length += this_length; @@ -80,7 +81,7 @@ _ref = js_data.qtl_results; for (_i = 0, _len = _ref.length; _i < _len; _i++) { result = _ref[_i]; - chr_length = this.chromosomes[result.chr]; + chr_length = this.chromosomes[result.chr][1]; if (!(_ref1 = result.chr, __indexOf.call(chr_seen, _ref1) >= 0)) { chr_seen.push(result.chr); chr_lengths.push(chr_length); @@ -120,7 +121,6 @@ this.add_x_axis(); this.add_y_axis(); this.add_chr_lines(); - this.fill_chr_areas(); this.add_chr_labels(); return this.add_plot_points(); }; @@ -142,7 +142,7 @@ Manhattan_Plot.prototype.create_scales = function() { this.x_scale = d3.scale.linear().domain([0, d3.max(this.x_coords)]).range([this.x_buffer, this.plot_width]); - return this.y_scale = d3.scale.linear().domain([0, this.y_max]).range([this.plot_height, this.y_buffer]); + return this.y_scale = d3.scale.linear().domain([this.y_min, this.y_max]).range([this.plot_height, this.y_buffer]); }; Manhattan_Plot.prototype.create_x_axis_tick_values = function() { @@ -233,7 +233,7 @@ _this = this; chr_names = []; for (key in this.chromosomes) { - chr_names.push(key); + chr_names.push(this.chromosomes[key][0]); } chr_info = _.zip(chr_names, this.chr_lengths, this.cumulative_chr_lengths); return this.svg.selectAll("text").data(chr_info, function(d) { @@ -250,7 +250,7 @@ return this.svg.selectAll("circle").data(this.plot_coordinates).enter().append("circle").attr("cx", function(d) { return _this.x_buffer + ((_this.plot_width - _this.x_buffer) * d[0] / _this.x_max); }).attr("cy", function(d) { - return _this.plot_height - ((_this.plot_height - _this.y_buffer) * d[1] / _this.y_max); + return _this.plot_height - ((_this.plot_height - _this.y_buffer) * (d[1] - _this.y_min) / _this.y_max); }).attr("r", 2).attr("id", function(d) { return "point_" + String(d[2]); }).classed("circle", true).on("mouseover", function(d) { 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 bc176ab9..03f872ca 100644 --- a/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.coffee +++ b/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.coffee @@ -60,7 +60,17 @@ $ -> ) return false - $("#marker_regression").click(() => + $('#suggestive').hide() + + $('input[name=display_all]').change(() => + console.log("check") + if $('input[name=display_all]:checked').val() == "False" + $('#suggestive').show() + else + $('#suggestive').hide() + ) + + $("#marker_regression_compute").click(() => $("#progress_bar_container").modal() url = "/marker_regression" form_data = $('#trait_data_form').serialize() 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 b017257a..329dcdd9 100644 --- a/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js +++ b/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js @@ -62,7 +62,16 @@ }); return false; }; - $("#marker_regression").click(function() { + $('#suggestive').hide(); + $('input[name=display_all]').change(function() { + console.log("check"); + if ($('input[name=display_all]:checked').val() === "False") { + return $('#suggestive').show(); + } else { + return $('#suggestive').hide(); + } + }); + $("#marker_regression_compute").click(function() { var form_data, url; $("#progress_bar_container").modal(); url = "/marker_regression"; diff --git a/wqflask/wqflask/templates/show_trait_mapping_tools.html b/wqflask/wqflask/templates/show_trait_mapping_tools.html index a98a75c7..c2d5211f 100644 --- a/wqflask/wqflask/templates/show_trait_mapping_tools.html +++ b/wqflask/wqflask/templates/show_trait_mapping_tools.html @@ -95,26 +95,24 @@