about summary refs log tree commit diff
diff options
context:
space:
mode:
authorZachary Sloan2013-04-09 19:36:43 +0000
committerZachary Sloan2013-04-09 19:36:43 +0000
commitc7c306c69254ca49ddeccc495a8a096fcf03974d (patch)
treed022224c537e4b297836e94209a292b17c6765a8
parent27d0c86528fdbeaed56a7f5eaa71a950c522f183 (diff)
downloadgenenetwork2-c7c306c69254ca49ddeccc495a8a096fcf03974d.tar.gz
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)
-rwxr-xr-xwqflask/base/data_set.py2
-rw-r--r--wqflask/base/species.py10
-rwxr-xr-xwqflask/wqflask/marker_regression/marker_regression.py13
-rw-r--r--wqflask/wqflask/my_pylmm/pyLMM/lmm.py4
-rw-r--r--wqflask/wqflask/static/new/javascript/marker_regression.coffee16
-rw-r--r--wqflask/wqflask/static/new/javascript/marker_regression.js12
-rw-r--r--wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.coffee12
-rw-r--r--wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js11
-rw-r--r--wqflask/wqflask/templates/show_trait_mapping_tools.html22
-rw-r--r--wqflask/wqflask/views.py1
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 @@
                 </div>
                 
                 <div class="tab-pane" id="marker_regression">
-                    <div class="control-group" id="display_all_lrs">
-                        <label class="control-label">Display all LRS</label>
+                    <div class="control-group" id="display_all_div">
+                        <label class="control-label">Display all</label>
                         <div class="controls">                      
                             <label class="radio inline">
-                                <input type="radio" name="display_all_lrs"
-                                       id="display_all_lrs" value=True>
+                                <input type="radio" name="display_all" value="True" checked>
                                 Yes
                             </label>
                             <label class="radio inline">
-                                <input type="radio" name="display_all_lrs"
-                                       id="display_all_lrs" value=False checked>
+                                <input type="radio" name="display_all" value="False">
                                 No
                             </label>
                         </div>
-                    </div>                  
-                    <div class="control-group">
-                        <label for="suggestive_lrs" class="control-label"
-                               title="Control Locus">LRS greater than</label>
+                    </div>
+                    <div class="control-group" id="suggestive" >
+                        <label for="suggestive" class="control-label"
+                               title="Control Locus">LOD score greater than: </label>
                         <div class="controls">
-                            <input name="suggestive_lrs" id="suggestive_lrs" type="text" />
+                            <input name="suggestive" type="text" value="0"/>
                         </div>
                     </div>
                     
@@ -127,7 +125,7 @@
                     
                     <div class="control-group">
                         <div class="controls">
-                            <button id="marker_regression"
+                            <button id="marker_regression_compute"
                                     class="btn btn-inverse submit_special"
                                     data-url="/marker_regression"
                                     title="Compute Marker Regression">
diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py
index c303e0d1..eb7ae8f8 100644
--- a/wqflask/wqflask/views.py
+++ b/wqflask/wqflask/views.py
@@ -161,6 +161,7 @@ def marker_regression_page():
     wanted = (
         'trait_id',
         'dataset',
+        'suggestive'
     )
     
     start_vars = {}