about summary refs log tree commit diff
diff options
context:
space:
mode:
authorzsloan2019-01-11 10:46:38 -0600
committerzsloan2019-01-11 10:46:38 -0600
commitf1ea496ae71388810f0e6dffe36b005ceabaed6c (patch)
tree8862dd0d771101dc44f0ec553f8ee2fde9db0eb5
parentee1e49b90663be72032c8dee32748e97bc28e1e9 (diff)
downloadgenenetwork2-f1ea496ae71388810f0e6dffe36b005ceabaed6c.tar.gz
Got InDel working for Variant Browser
Changed Variant Browser to display gene name under "Domain" when the user searches a gene term and rows are mislabeled "Intergenic"

Fixed Chr option to display correct chromosomes for different species

Fixed order for correlation drop-down on trait page

Fixed some appearance issues with the mapping results table

Improved appearance of correlation scatterplot page
-rw-r--r--wqflask/base/data_set.py7
-rw-r--r--wqflask/wqflask/marker_regression/display_mapping_results.py2
-rw-r--r--wqflask/wqflask/snp_browser/snp_browser.py63
-rw-r--r--wqflask/wqflask/static/new/css/marker_regression.css2
-rw-r--r--wqflask/wqflask/static/new/javascript/dataset_select_menu_orig.js7
-rw-r--r--wqflask/wqflask/templates/collections/list.html4
-rw-r--r--wqflask/wqflask/templates/corr_scatterplot.html10
-rw-r--r--wqflask/wqflask/templates/mapping_results.html19
-rw-r--r--wqflask/wqflask/templates/snp_browser.html32
9 files changed, 117 insertions, 29 deletions
diff --git a/wqflask/base/data_set.py b/wqflask/base/data_set.py
index 55782576..2acb3b61 100644
--- a/wqflask/base/data_set.py
+++ b/wqflask/base/data_set.py
@@ -109,6 +109,7 @@ Publish or ProbeSet. E.g.
                         else:
                             new_type = "ProbeSet"
                         self.datasets[short_dataset_name] = new_type
+
         # Set LOG_LEVEL_DEBUG=5 to see the following:
         logger.debugf(5, "datasets",self.datasets)
 
@@ -450,12 +451,14 @@ def datasets(group_name, this_group = None):
             and InbredSet.Name like %s
             and ProbeSetFreeze.public > %s
             and ProbeSetFreeze.confidentiality < 1
-          ORDER BY Tissue.Name, ProbeSetFreeze.CreateTime desc, ProbeSetFreeze.AvgId)
+          ORDER BY Tissue.Name)
         ''' % (group_name, webqtlConfig.PUBLICTHRESH,
               group_name, webqtlConfig.PUBLICTHRESH,
               "'" + group_name + "'", webqtlConfig.PUBLICTHRESH))
 
-    for dataset_item in the_results:
+    sorted_results = sorted(the_results, key=lambda kv: kv[0])
+
+    for dataset_item in sorted_results:
         tissue_name = dataset_item[0]
         dataset = dataset_item[1]
         dataset_short = dataset_item[2]
diff --git a/wqflask/wqflask/marker_regression/display_mapping_results.py b/wqflask/wqflask/marker_regression/display_mapping_results.py
index e63e4af2..28831937 100644
--- a/wqflask/wqflask/marker_regression/display_mapping_results.py
+++ b/wqflask/wqflask/marker_regression/display_mapping_results.py
@@ -2083,7 +2083,7 @@ class DisplayMappingResults(object):
                 tableIterationsCnt = tableIterationsCnt + 1
 
                 this_row = [] #container for the cells of each row
-                selectCheck = HT.Input(type="checkbox", name="searchResult", value=theGO["GeneSymbol"], Class="checkbox", onClick="highlight(this)") #checkbox for each row
+                selectCheck = HT.Input(type="checkbox", name="searchResult", value=theGO["GeneSymbol"], Class="checkbox trait_checkbox") #checkbox for each row
 
                 geneLength = (theGO["TxEnd"] - theGO["TxStart"])*1000.0
                 tenPercentLength = geneLength*0.0001
diff --git a/wqflask/wqflask/snp_browser/snp_browser.py b/wqflask/wqflask/snp_browser/snp_browser.py
index 0e999ba2..0058070c 100644
--- a/wqflask/wqflask/snp_browser/snp_browser.py
+++ b/wqflask/wqflask/snp_browser/snp_browser.py
@@ -51,11 +51,19 @@ class SnpBrowser(object):
             if self.species_name.capitalize() == "Rat":
                 self.species_id = 2
 
-        species_ob = species.TheSpecies(species_name=self.species_name)
+        self.mouse_chr_list = []
+        self.rat_chr_list = []
+        mouse_species_ob = species.TheSpecies(species_name="Mouse")
+        for key in mouse_species_ob.chromosomes.chromosomes:
+            self.mouse_chr_list.append(mouse_species_ob.chromosomes.chromosomes[key].name)
+        rat_species_ob = species.TheSpecies(species_name="Rat")
+        for key in rat_species_ob.chromosomes.chromosomes:
+            self.rat_chr_list.append(rat_species_ob.chromosomes.chromosomes[key].name)
 
-        self.chr_list = []
-        for key in species_ob.chromosomes.chromosomes:
-            self.chr_list.append(species_ob.chromosomes.chromosomes[key].name)
+        if self.species_id == 1:
+            self.this_chr_list = self.mouse_chr_list
+        else:
+            self.this_chr_list = self.rat_chr_list
 
         if self.first_run == "true":
             self.chr = "19"
@@ -213,7 +221,7 @@ class SnpBrowser(object):
                 query = rat_query
 
         elif self.variant_type == "InDel":
-            if species_id != 0:
+            if self.species_id != 0:
                 query = """
                            SELECT
                                DISTINCT a.Name, a.Chromosome, a.SourceId, a.Mb_start, a.Mb_end, a.Strand, a.Type, a.Size, a.InDelSequence, b.Name
@@ -289,7 +297,12 @@ class SnpBrowser(object):
                         domain = [key, '']
 
                     if 'Intergenic' in domain:
-                        gene = transcript = exon = function = function_details = ''
+                        if self.gene_name != "":
+                            gene_id = get_gene_id(self.species_id, self.gene_name)
+                            gene = [gene_id, self.gene_name]
+                        else:
+                            gene = ""
+                        transcript = exon = function = function_details = ''
                         if self.redundant == "false" or last_mb != mb: # filter redundant
                             if self.include_record(domain, function, snp_source, conservation_score):
                                 info_list = [snp_name, rs, chr, mb, alleles, gene, transcript, exon, domain, function, function_details, snp_source, conservation_score, snp_id]
@@ -325,7 +338,7 @@ class SnpBrowser(object):
                                     filtered_results.append(info_list)
                             last_mb = mb
 
-            elif self.variant == "InDel":
+            elif self.variant_type == "InDel":
                 # The order of variables is important; this applies to anything from the variant table as indel
                 indel_name, indel_chr, source_id, indel_mb_start, indel_mb_end, indel_strand, indel_type, indel_size, indel_sequence, source_name = result
 
@@ -354,7 +367,7 @@ class SnpBrowser(object):
                     if gene_name and (gene_name not in gene_name_list):
                         gene_name_list.append(gene_name)
             if len(gene_name_list) > 0:
-                gene_id_name_dict = get_gene_id_name_dict(gene_name_list)
+                gene_id_name_dict = get_gene_id_name_dict(self.species_id, gene_name_list)
 
         the_rows = []
         for result in self.filtered_results:
@@ -395,7 +408,7 @@ class SnpBrowser(object):
                         gene_id = gene_id_name_dict[gene[1]]
                         gene_link = webqtlConfig.NCBI_LOCUSID % gene_id
                     else:
-                        gene_link = "http://www.ncbi.nln.nih.gov/entrez/query.fcgi?CMD=search&DB=gene&term=%s" % gene_name
+                        gene_link = "http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?CMD=search&DB=gene&term=%s" % gene_name
                 else:
                     gene_name = ""
                     gene_link = ""
@@ -408,13 +421,16 @@ class SnpBrowser(object):
                 if exon:
                     exon = exon[1] # exon[0] is exon_id, exon[1] is exon_rank
                 else:
-                    exon = "1"
+                    exon = ""
 
                 if domain:
                     domain_1 = domain[0]
                     domain_2 = domain[1]
-                    if domain_1 == "Exon":
-                        domain_1 = domain_1 + " " + exon
+                    if domain_1 == "Intergenic" and self.gene_name != "":
+                        domain_1 = self.gene_name
+                    else:
+                        if domain_1 == "Exon":
+                            domain_1 = domain_1 + " " + exon
 
                 function_list = []
                 if function_details:
@@ -759,7 +775,24 @@ def get_effect_info(effect_list):
 
     return effect_info_dict
 
-def get_gene_id_name_dict(gene_name_list):
+def get_gene_id(species_id, gene_name):
+    query = """
+                SELECT
+                        geneId
+                FROM
+                        GeneList
+                WHERE
+                        SpeciesId = %s AND geneSymbol = '%s'
+            """ % (species_id, gene_name)
+
+    result = g.db.execute(query).fetchone()
+
+    if len(result) > 0:
+        return result
+    else:
+        return ""
+
+def get_gene_id_name_dict(species_id, gene_name_list):
     gene_id_name_dict = {}
     if len(gene_name_list) == 0:
         return ""
@@ -772,8 +805,8 @@ def get_gene_id_name_dict(gene_name_list):
                 FROM
                         GeneList
                 WHERE
-                        SpeciesId = 1 AND geneSymbol in (%s)
-            """ % gene_name_str
+                        SpeciesId = %s AND geneSymbol in (%s)
+            """ % (species_id, gene_name_str)
 
     results = g.db.execute(query).fetchall()
 
diff --git a/wqflask/wqflask/static/new/css/marker_regression.css b/wqflask/wqflask/static/new/css/marker_regression.css
index 8d205143..f1a26a83 100644
--- a/wqflask/wqflask/static/new/css/marker_regression.css
+++ b/wqflask/wqflask/static/new/css/marker_regression.css
@@ -59,7 +59,7 @@ table.dataTable thead th {
 }
 
 table.dataTable tbody td {
-  padding: 3px 20px 1px 10px;
+  padding: 4px 20px 2px 10px;
 }
 
 table.dataTable.cell-border tbody th, table.dataTable.cell-border tbody td {
diff --git a/wqflask/wqflask/static/new/javascript/dataset_select_menu_orig.js b/wqflask/wqflask/static/new/javascript/dataset_select_menu_orig.js
index 3f123d6f..fc1f1beb 100644
--- a/wqflask/wqflask/static/new/javascript/dataset_select_menu_orig.js
+++ b/wqflask/wqflask/static/new/javascript/dataset_select_menu_orig.js
@@ -108,7 +108,12 @@ $(function() {
   dataset_info = function() {
     var dataset, url;
     accession_id = $('#dataset option:selected').data("id");
-    url = "http://genenetwork.org/webqtl/main.py?FormID=sharinginfo&GN_AccessionId=" + accession_id;
+    if (accession_id != "None") {
+      url = "http://genenetwork.org/webqtl/main.py?FormID=sharinginfo&GN_AccessionId=" + accession_id;
+    } else {
+      name = $('#dataset option:selected').val();
+      url = "http://genenetwork.org/webqtl/main.py?FormID=sharinginfo&InfoPageName=" + name;
+    }
     return open_window(url, "Dataset Info");
   };
   $('#dataset_info').click(dataset_info);
diff --git a/wqflask/wqflask/templates/collections/list.html b/wqflask/wqflask/templates/collections/list.html
index 5a2df5e3..83e74613 100644
--- a/wqflask/wqflask/templates/collections/list.html
+++ b/wqflask/wqflask/templates/collections/list.html
@@ -9,7 +9,7 @@
 {% block content %}
 <!-- Start of body -->
     {% if g.user_session.logged_in %}
-    {{ header("Your Collections",
+    {{ header("Collections owned by {{ g.user_session.user_name }}",
         'You have {}.'.format(numify(collections|count, "collection", "collections"))) }}
     {% else %}
     {{ header("Your Collections",
@@ -17,6 +17,7 @@
     {% endif %}
 
     <div class="container">
+        <!--
         <div class="page-header">
             {% if g.user_session.logged_in %}
             <h1>Collections owned by {{ g.user_session.user_name }}</h1>
@@ -24,6 +25,7 @@
             <h1>Your Collections</h1>
             {% endif %}
         </div>
+        -->
         <div>
             <form id="collections_form" action="/delete" method="post">
               <input type="hidden" name="uc_id" id="uc_id" value="" />
diff --git a/wqflask/wqflask/templates/corr_scatterplot.html b/wqflask/wqflask/templates/corr_scatterplot.html
index e520b4b9..e3d90e30 100644
--- a/wqflask/wqflask/templates/corr_scatterplot.html
+++ b/wqflask/wqflask/templates/corr_scatterplot.html
@@ -131,8 +131,8 @@
       <br>
       <div id="scatterplot2"></div>
       <br>
-      <div class="row" style="width: 70%;">
-      <div class="col-xs-3">
+      <div class="row" style="width: 70%; overflow: hidden;">
+      <div style="float: left;">
       <table class="table table-hover table-striped table-bordered" style="width: 80%; margin-left: 60px; text-align: right;">
         <thead>
           <tr><th style="text-align: right;">Statistic</th><th style="text-align: right;">Value</th></tr>
@@ -168,7 +168,7 @@
         </tbody>
       </table>
       </div>
-      <div class="col-xs-9">
+      <div style="padding-left: 40px; overflow: hidden;">
         {% if trait_1.dataset.type == "ProbeSet" %}
         <div>
           X axis:
@@ -227,7 +227,7 @@
       <div id="srscatterplot2"></div>
       <br>
       <div class="row" style="width: 70%;">
-      <div class="col-xs-3">
+      <div style="float: left;">
         <table class="table table-hover table-striped table-bordered" style="width: 80%; margin-left: 60px; text-align: right;">
           <thead>
             <tr><th style="text-align: right;">Statistic</th><th style="text-align: right;">Value</th></tr>
@@ -256,7 +256,7 @@
           </tbody>
         </table>
       </div>
-      <div class="col-xs-9">
+      <div style="padding-left: 40px; overflow: hidden;">
         {% if trait_1.dataset.type == "ProbeSet" %}
         <div>
           X axis:
diff --git a/wqflask/wqflask/templates/mapping_results.html b/wqflask/wqflask/templates/mapping_results.html
index 3138d855..72d9d0dd 100644
--- a/wqflask/wqflask/templates/mapping_results.html
+++ b/wqflask/wqflask/templates/mapping_results.html
@@ -215,7 +215,7 @@
             <tbody>
               {% for marker in trimmed_markers %}
               <tr>
-                <td align="center" style="padding-right: 0px; padding-left: 0px;">
+                <td align="center" style="padding: 1px 0px 1px 0px;">
                   <input type="checkbox" name="selectCheck"
                          class="checkbox trait_checkbox"
                          value="{{ data_hmac('{}:{}Geno'.format(marker.name, dataset.group.name)) }}">
@@ -269,7 +269,11 @@
               {% for row in gene_table_body %}
               <tr>
                 {% for n in range(row|length) %}
+                {% if n == 0 %}
+                <td align="center" style="padding: 1px 0px 1px 0px;">{{ row[n]|safe }}</td>
+                {% else %}
                 <td>{{ row[n]|safe }}</td>
+                {% endif %}
                 {% endfor %}
               </tr>
               {% endfor %}
@@ -339,6 +343,19 @@
             } );
 
             $('#interval_analyst').dataTable( {
+                "columns": [
+                    { "bSortable": false},
+                    { "type": "natural" },
+                    { "type": "natural" },
+                    { "type": "natural" },
+                    { "type": "natural" },
+                    { "type": "natural" },
+                    { "type": "natural" },
+                    { "type": "natural" },
+                    { "type": "natural" },
+                    { "type": "natural" },
+                    { "type": "natural" }
+                ],
                 "columnDefs": [ {
                     "targets": 0,
                     "sortable": false
diff --git a/wqflask/wqflask/templates/snp_browser.html b/wqflask/wqflask/templates/snp_browser.html
index 3608d0fe..cbca9d22 100644
--- a/wqflask/wqflask/templates/snp_browser.html
+++ b/wqflask/wqflask/templates/snp_browser.html
@@ -30,6 +30,7 @@
               <select id="species_select" name="species">
                 <option value="Mouse" {% if species_name == "Mouse" %}selected{% endif %}>Mouse</option>
                 <option value="Rat" {% if species_name == "Rat" %}selected{% endif %}>Rat</option>
+                <option value="Human" disabled>Human</option>
               </select>
             </div>
           </div>
@@ -45,8 +46,8 @@
           <div class="form-group row" style="margin-bottom: 5px;">
             <label for="chr" style="text-align: right;" class="col-xs-4 col-form-label"><b>Chr:</b></label>
             <div class="col-xs-8">
-              <select name="chr">
-                {% for item in chr_list %}
+              <select id="chr_select" name="chr">
+                {% for item in this_chr_list %}
                 <option value="{{ item }}" {% if item == chr %}selected{% endif %}>{{ item }}</option>
                 {% endfor %}
               </select>
@@ -204,6 +205,7 @@
       </thead>
       <tbody>
         {% for row in table_rows %}
+        {% if variant_type == "SNP" %}
         <tr>
           <td><input type="checkbox" name="trait_check"></td>
           <td align="right">{{ loop.index }}</td>
@@ -224,6 +226,21 @@
           <td style="background-color: {{ item[1] }};">{{ item[0] }}</td>
           {% endfor %}
         </tr>
+        {% else %}
+        <tr>
+          <td><input type="checkbox" name="trait_check"></td>
+          <td align="right">{{ loop.index }}</td>
+          <td>{{ row.indel_name }}</td>
+          <td>{{ row.indel_type }}</td>
+          <td>{{ row.indel_chr }}</td>
+          <td>{{ row.indel_mb_s }}</td>
+          <td>{{ row.indel_mb_e }}</td>
+          <td>{{ row.indel_strand }}</td>
+          <td>{{ row.indel_size }}</td>
+          <td>{{ row.indel_sequence }}</td>
+          <td>{{ row.source_name }}</td>
+        </tr>
+        {% endif %}
         {% endfor %}
       </tbody>
     </table>
@@ -263,6 +280,7 @@
         this_species = $(this).val();
         $("#strain_select").empty()
         $("#chosen_strains_select").empty()
+        $("#chr_select").empty()
 
         if (this_species == "Mouse") {
             {% for strain in strain_lists["mouse"] %}
@@ -270,6 +288,11 @@
             $("select[name=strains]").append(option);
             {% endfor %}
 
+            {% for chr in mouse_chr_list %}
+            var option = $('<option></option>').attr("value", "{{ chr }}").text("{{ chr }}");
+            $("select[name=chr]").append(option);
+            {% endfor %}
+
             chosen_strains = $("input[name=chosen_strains_mouse]").val().split(",")
         } else if (this_species == "Rat") {
             {% for strain in strain_lists["rat"] %}
@@ -277,6 +300,11 @@
             $("select[name=strains]").append(option);
             {% endfor %}
 
+            {% for chr in rat_chr_list %}
+            var option = $('<option></option>').attr("value", "{{ chr }}").text("{{ chr }}");
+            $("select[name=chr]").append(option);
+            {% endfor %}
+
             chosen_strains = $("input[name=chosen_strains_rat]").val().split(",")
         }