about summary refs log tree commit diff
diff options
context:
space:
mode:
authorzsloan2017-12-20 23:53:42 +0000
committerzsloan2017-12-20 23:53:42 +0000
commit01b7d8a3e2807405cb274cf064a4ba01f8d15bf6 (patch)
tree41e2a7323c00524f91545594f59ee61d10905c7c
parent25f2d02ae56e1a9f8c0a03415e564ee3bf32512e (diff)
parent8eb02512f87aa789f41313d84c7789ce764f6fe3 (diff)
downloadgenenetwork2-01b7d8a3e2807405cb274cf064a4ba01f8d15bf6.tar.gz
Merge branch 'testing' of https://github.com/genenetwork/genenetwork2
-rw-r--r--wqflask/maintenance/gen_select_dataset.py7
-rw-r--r--wqflask/wqflask/marker_regression/marker_regression.py26
-rw-r--r--wqflask/wqflask/marker_regression/marker_regression_gn1.py4
-rw-r--r--wqflask/wqflask/marker_regression/plink_mapping.py6
-rw-r--r--wqflask/wqflask/static/new/javascript/dataset_menu_structure.json200
-rw-r--r--wqflask/wqflask/static/new/javascript/dataset_select_menu_orig.js5
-rw-r--r--wqflask/wqflask/static/new/javascript/network_graph.js11
-rw-r--r--wqflask/wqflask/static/new/javascript/search_results.js15
-rw-r--r--wqflask/wqflask/templates/show_trait.html3
-rw-r--r--wqflask/wqflask/templates/show_trait_details.html4
-rw-r--r--wqflask/wqflask/templates/show_trait_statistics.html2
-rw-r--r--wqflask/wqflask/views.py6
12 files changed, 215 insertions, 74 deletions
diff --git a/wqflask/maintenance/gen_select_dataset.py b/wqflask/maintenance/gen_select_dataset.py
index 6553f090..f62d0cc1 100644
--- a/wqflask/maintenance/gen_select_dataset.py
+++ b/wqflask/maintenance/gen_select_dataset.py
@@ -96,13 +96,14 @@ def get_groups(species):
         Cursor.execute("""select InbredSet.Name, InbredSet.FullName from InbredSet,
                        Species,
                        ProbeFreeze, GenoFreeze, PublishFreeze where Species.Name = '%s'
-                       and InbredSet.SpeciesId = Species.Id and InbredSet.Name != 'BXD300' and
+                       and InbredSet.SpeciesId = Species.Id and
                        (PublishFreeze.InbredSetId = InbredSet.Id
                         or GenoFreeze.InbredSetId = InbredSet.Id
                         or ProbeFreeze.InbredSetId = InbredSet.Id)
                         group by InbredSet.Name
-                        order by InbredSet.Name""" % species_name)
-        groups[species_name] = list(Cursor.fetchall())
+                        order by InbredSet.FullName""" % species_name)
+        results = Cursor.fetchall()
+        groups[species_name] = list(results)
     return groups
 
 
diff --git a/wqflask/wqflask/marker_regression/marker_regression.py b/wqflask/wqflask/marker_regression/marker_regression.py
index 9e01be3e..bcb14451 100644
--- a/wqflask/wqflask/marker_regression/marker_regression.py
+++ b/wqflask/wqflask/marker_regression/marker_regression.py
@@ -277,7 +277,7 @@ class MarkerRegression(object):
                     if ('lod_score' in marker.keys()) or ('lrs_value' in marker.keys()):
                         self.qtl_results.append(marker)
 
-            export_mapping_results(self.qtl_results, self.mapping_results_path, self.mapping_scale, self.score_type)
+            export_mapping_results(self.dataset, self.this_trait, self.qtl_results, self.mapping_results_path, self.mapping_scale, self.score_type)
 
             self.trimmed_markers = trim_markers_for_table(results)
 
@@ -608,29 +608,35 @@ def create_snp_iterator_file(group):
     with gzip.open(snp_file_base, "wb") as fh:
         pickle.dump(data, fh, pickle.HIGHEST_PROTOCOL)
 
-def export_mapping_results(markers, results_path, mapping_scale, score_type):
+def export_mapping_results(dataset, trait, markers, results_path, mapping_scale, score_type):
     with open(results_path, "w+") as output_file:
-        output_file.write("Name\tChr\t")
+        output_file.write("Population: " + dataset.group.species.title() + " " + dataset.group.name + "\n")
+        output_file.write("Data Set: " + dataset.fullname + "\n")
+        if dataset.type == "ProbeSet":
+            output_file.write("Gene Symbol: " + trait.symbol + "\n")
+            output_file.write("Location: " + str(trait.chr) + " @ " + str(trait.mb) + " Mb\n")
+        output_file.write("\n")
+        output_file.write("Name,Chr,")
         if mapping_scale == "physic":
-            output_file.write("Mb\t" + score_type)
+            output_file.write("Mb," + score_type)
         else:
-            output_file.write("Cm\t" + score_type)
+            output_file.write("Cm," + score_type)
         if "additive" in markers[0].keys():
-            output_file.write("\tAdditive")
+            output_file.write(",Additive")
         if "dominance" in markers[0].keys():
-            output_file.write("\tDominance")
+            output_file.write(",Dominance")
         output_file.write("\n")
         for i, marker in enumerate(markers):
             logger.debug("THE MARKER:", marker)
-            output_file.write(marker['name'] + "\t" + str(marker['chr']) + "\t" + str(marker['Mb']) + "\t")
+            output_file.write(marker['name'] + "," + str(marker['chr']) + "," + str(marker['Mb']) + ",")
             if "lod_score" in marker.keys():
                 output_file.write(str(marker['lod_score']))
             else:
                 output_file.write(str(marker['lrs_value']))
             if "additive" in marker.keys():
-                output_file.write("\t" + str(marker['additive']))
+                output_file.write("," + str(marker['additive']))
             if "dominance" in marker.keys():
-                output_file.write("\t" + str(marker['dominance']))
+                output_file.write("," + str(marker['dominance']))
             if i < (len(markers) - 1):
                 output_file.write("\n")
 
diff --git a/wqflask/wqflask/marker_regression/marker_regression_gn1.py b/wqflask/wqflask/marker_regression/marker_regression_gn1.py
index ff1fb492..93bd9d42 100644
--- a/wqflask/wqflask/marker_regression/marker_regression_gn1.py
+++ b/wqflask/wqflask/marker_regression/marker_regression_gn1.py
@@ -1801,9 +1801,9 @@ class MarkerRegression(object):
                             distScale = 10
                         else:
                             distScale = 5
-                    for i, tickdists in enumerate(range(distScale, int(ceil(distLen)), distScale)):
+                    for j, tickdists in enumerate(range(distScale, int(ceil(distLen)), distScale)):
                         canvas.drawLine(startPosX + tickdists*plotXScale, yZero, startPosX + tickdists*plotXScale, yZero + 7, color=pid.black, width=1*zoom)
-                        if i % 2 == 0:
+                        if j % 2 == 0:
                             canvas.drawString(str(tickdists), startPosX+tickdists*plotXScale, yZero + 10*zoom, color=pid.black, font=MBLabelFont, angle=270)
                     startPosX +=  (self.ChrLengthDistList[i]+self.GraphInterval)*plotXScale
 
diff --git a/wqflask/wqflask/marker_regression/plink_mapping.py b/wqflask/wqflask/marker_regression/plink_mapping.py
index 3d31da1a..4de88f00 100644
--- a/wqflask/wqflask/marker_regression/plink_mapping.py
+++ b/wqflask/wqflask/marker_regression/plink_mapping.py
@@ -14,7 +14,7 @@ def run_plink(this_trait, dataset, species, vals, maf):
     gen_pheno_txt_file(dataset, vals)
     #gen_pheno_txt_file_plink(this_trait, dataset, vals, pheno_filename = plink_output_filename)
 
-    plink_command = PLINK_COMMAND + ' --noweb --bfile %s/%s --no-fid --no-parents --no-sex --maf %s --missing-phenotype -9 --out %s/%s --assoc ' % (
+    plink_command = PLINK_COMMAND + ' --noweb --bfile %s/%s --no-pheno --no-fid --no-parents --no-sex --maf %s --out %s%s --assoc ' % (
         flat_files('mapping'), dataset.group.name, maf, TMPDIR, plink_output_filename)
     logger.debug("plink_command:", plink_command)
 
@@ -48,7 +48,7 @@ def gen_pheno_txt_file(this_dataset, vals):
                 this_val = -9
             else:
                 this_val = vals[i]
-            outfile.write(line[1] + " " + line[1] + " " + line[2] + " " + line[3] + " " + line[4] + " " + str(this_val) + "\n")
+            outfile.write("0 " + line[1] + " " + line[2] + " " + line[3] + " " + line[4] + " " + str(this_val) + "\n")
 
 def gen_pheno_txt_file_plink(this_trait, dataset, vals, pheno_filename = ''):
     ped_sample_list = get_samples_from_ped_file(dataset)
@@ -106,7 +106,7 @@ def parse_plink_output(output_filename, species):
 
     threshold_p_value = 1
 
-    result_fp = open("%s/%s.qassoc"% (TMPDIR, output_filename), "rb")
+    result_fp = open("%s%s.qassoc"% (TMPDIR, output_filename), "rb")
 
     header_line = result_fp.readline()# read header line
     line = result_fp.readline()
diff --git a/wqflask/wqflask/static/new/javascript/dataset_menu_structure.json b/wqflask/wqflask/static/new/javascript/dataset_menu_structure.json
index 75767f47..8de85a86 100644
--- a/wqflask/wqflask/static/new/javascript/dataset_menu_structure.json
+++ b/wqflask/wqflask/static/new/javascript/dataset_menu_structure.json
@@ -1918,12 +1918,12 @@
                [
                   "797",
                   "EPFL_AdiPro0416",
-                  "EPFL/ETHZ BXD Brown Adipose, Total Tissue Proteome, Chow Diet (Apr16) Light SWATH **"
+                  "EPFL/ETHZ BXD Brown Adipose, Total Tissue Proteome, Chow Diet (Apr16) Light SWATH"
                ],
                [
                   "798",
                   "EPFL_AdiMitPro0416",
-                  "EPFL/ETHZ BXD Brown Adipose, Isolated Mitochondria Proteome, Chow Diet (Apr16) Light SWATH **"
+                  "EPFL/ETHZ BXD Brown Adipose, Isolated Mitochondria Proteome, Chow Diet (Apr16) Light SWATH"
                ]
             ],
             "Adipose mRNA": [
@@ -2021,6 +2021,21 @@
                   "UCHSC BXD Whole Brain M430 2.0 (Nov06) RMA"
                ],
                [
+                  "113",
+                  "IBR_M_0606_R",
+                  "INIA Brain mRNA M430 (Jun06) RMA"
+               ],
+               [
+                  "101",
+                  "IBR_M_0106_P",
+                  "INIA Brain mRNA M430 (Jan06) PDNN"
+               ],
+               [
+                  "102",
+                  "IBR_M_0106_R",
+                  "INIA Brain mRNA M430 (Jan06) RMA"
+               ],
+               [
                   "95",
                   "BR_U_1105_P",
                   "UTHSC Brain mRNA U74Av2 (Nov05) PDNN"
@@ -2065,6 +2080,36 @@
             ],
             "Cerebellum mRNA": [
                [
+                  "72",
+                  "GCB_M2_0505_R",
+                  "GE-NIAAA Cerebellum mRNA M430v2 (May05) RMA"
+               ],
+               [
+                  "73",
+                  "GCB_M2_0505_P",
+                  "GE-NIAAA Cerebellum mRNA M430v2 (May05) PDNN"
+               ],
+               [
+                  "71",
+                  "GCB_M2_0505_M",
+                  "GE-NIAAA Cerebellum mRNA M430v2 (May05) MAS5"
+               ],
+               [
+                  "56",
+                  "CB_M_0305_R",
+                  "SJUT Cerebellum mRNA M430 (Mar05) RMA"
+               ],
+               [
+                  "55",
+                  "CB_M_0305_P",
+                  "SJUT Cerebellum mRNA M430 (Mar05) PDNN"
+               ],
+               [
+                  "54",
+                  "CB_M_0305_M",
+                  "SJUT Cerebellum mRNA M430 (Mar05) MAS5"
+               ],
+               [
                   "46",
                   "CB_M_1004_R",
                   "SJUT Cerebellum mRNA M430 (Oct04) RMA"
@@ -2173,6 +2218,26 @@
                   "819",
                   "UCLA_BXD_Aor_Jan16",
                   "UCLA BXD Aorta Affy M430 2.0 (Jan16) RMA"
+               ],
+               [
+                  "485",
+                  "EPFL-LISPBXDHeCD0114",
+                  "EPFL/LISP BXD CD Heart Affy Mouse Gene 2.0 ST Gene Level (Jan14) RMA"
+               ],
+               [
+                  "486",
+                  "EPFL-LISPBXDHeHFD0114",
+                  "EPFL/LISP BXD HFD Heart Affy Mouse Gene 2.0 ST Gene Level (Jan14) RMA"
+               ],
+               [
+                  "487",
+                  "EPFL-LISPBXDHeCDEx0114",
+                  "EPFL/LISP BXD CD Heart Affy Mouse Gene 2.0 ST Exon Level (Jan14) RMA"
+               ],
+               [
+                  "488",
+                  "EPFL-LISPBXDHeHFDEx0114",
+                  "EPFL/LISP BXD HFD Heart Affy Mouse Gene 2.0 ST Exon Level (Jan14) RMA"
                ]
             ],
             "Hematopoietic Cells mRNA": [
@@ -2909,6 +2974,39 @@
                ]
             ]
          },
+         "BXD300": {
+            "Genotypes": [
+               [
+                  "None",
+                  "BXD300Geno",
+                  "BXD300 Genotypes"
+               ]
+            ],
+            "Liver mRNA": [
+               [
+                  "105",
+                  "LV_G_0106_B",
+                  "UNC Agilent G4121A Liver LOWESS Stanford (Jan06) Both Sexes"
+               ],
+               [
+                  "103",
+                  "LV_G_0106_M",
+                  "UNC Agilent G4121A Liver LOWESS Stanford (Jan06) Males"
+               ],
+               [
+                  "104",
+                  "LV_G_0106_F",
+                  "UNC Agilent G4121A Liver LOWESS Stanford (Jan06) Females"
+               ]
+            ],
+            "Phenotypes": [
+               [
+                  "None",
+                  "BXD300Publish",
+                  "BXD300 Published Phenotypes"
+               ]
+            ]
+         },
          "BXH": {
             "Bone Femur mRNA": [
                [
@@ -3485,7 +3583,7 @@
                [
                   "799",
                   "FGUCAS_BAdip0516",
-                  "FGUCAS BXH/HXB Brown Adipose Affy Rat Gene 2.0 ST (May16) log2 **"
+                  "FGUCAS BXH/HXB Brown Adipose Affy Rat Gene 2.0 ST (May16) log2"
                ]
             ],
             "Adrenal Gland mRNA": [
@@ -3652,6 +3750,10 @@
       ],
       "human": [
          [
+            "HB",
+            "Brain, Aging: AD, HD, Normal Gene Expression (Harvard/Merck)"
+         ],
+         [
             "AD-cases-controls",
             "Brain, Aging: AD, Normal Gene Expression (Liang)"
          ],
@@ -3664,6 +3766,14 @@
             "Brain, Aging: Normal Gene Expression (UCI/Cotman)"
          ],
          [
+            "HCP",
+            "Brain, Cognition, Human Connectome Project"
+         ],
+         [
+            "HSB",
+            "Brain, Development: Normal Gene Expression (Yale/Sestan)"
+         ],
+         [
             "Brain-Normal-NIH-Gibbs",
             "Brain: Normal Gene Expression (NIH/Gibbs)"
          ],
@@ -3672,10 +3782,6 @@
             "Child Development: CANDLE Cohort with Genotypes (TUCI/UTHSC)"
          ],
          [
-            "CEPH-2004",
-            "Lymphoblastoid Cells: Gene Expression (CEPH, Williams)"
-         ],
-         [
             "GTEx",
             "GTEx v3 All Tissues, RNA-Seq with Genotypes"
          ],
@@ -3684,14 +3790,6 @@
             "GTEx v5 All Tissues, RNA-Seq with Genotypes"
          ],
          [
-            "HB",
-            "Brain, Aging: AD, HD, Normal Gene Expression (Harvard/Merck)"
-         ],
-         [
-            "HCP",
-            "Brain, Cognition, Human Connectome Project"
-         ],
-         [
             "HLC",
             "Liver: Normal Gene Expression with Genotypes (Merck)"
          ],
@@ -3700,8 +3798,8 @@
             "Lung: Normal Gene Expression (Merck)"
          ],
          [
-            "HSB",
-            "Brain, Development: Normal Gene Expression (Yale/Sestan)"
+            "CEPH-2004",
+            "Lymphoblastoid Cells: Gene Expression (CEPH, Williams)"
          ],
          [
             "Islets-Gerling",
@@ -3726,8 +3824,8 @@
             "B6BTBRF2"
          ],
          [
-            "B6D2",
-            "Glaucoma and Aged Retina, UTHSC"
+            "Linsenbardt-Boehm",
+            "B6D2 EtOH Selected Advanced Intercross"
          ],
          [
             "B6D2F2",
@@ -3738,10 +3836,6 @@
             "B6D2F2 PSU"
          ],
          [
-            "B6D2RI",
-            "BXD Aged"
-         ],
-         [
             "BDF2-1999",
             "BDF2 UCLA"
          ],
@@ -3750,28 +3844,36 @@
             "BDF2-2005"
          ],
          [
-            "BHF2",
-            "BHF2 (Apoe Null) UCLA"
-         ],
-         [
             "BHHBF2",
             "BH/HB F2 UCLA"
          ],
          [
+            "BHF2",
+            "BHF2 (Apoe Null) UCLA"
+         ],
+         [
             "BXD",
             "BXD"
          ],
          [
+            "B6D2RI",
+            "BXD Aged"
+         ],
+         [
             "BXD-Bone",
             "BXD Bone"
          ],
          [
+            "BXD300",
+            "BXD300"
+         ],
+         [
             "BXH",
             "BXH"
          ],
          [
-            "C57BL-6JxC57BL-6NJF2",
-            "Reduced Complexity Cross (B6JxB6N F2)"
+            "CTB6F2",
+            "CastB6/B6Cast F2 UCLA"
          ],
          [
             "CFW",
@@ -3790,10 +3892,6 @@
             "Chronic Mild Stress"
          ],
          [
-            "CTB6F2",
-            "CastB6/B6Cast F2 UCLA"
-         ],
-         [
             "CXB",
             "CXB"
          ],
@@ -3802,6 +3900,10 @@
             "Ethanol-Medicated Stress Reduction"
          ],
          [
+            "B6D2",
+            "Glaucoma and Aged Retina, UTHSC"
+         ],
+         [
             "HS",
             "Heterogeneous Stock"
          ],
@@ -3810,10 +3912,6 @@
             "Heterogeneous Stock Collaborative Cross"
          ],
          [
-            "Linsenbardt-Boehm",
-            "B6D2 EtOH Selected Advanced Intercross"
-         ],
-         [
             "LXS",
             "LXS"
          ],
@@ -3826,6 +3924,10 @@
             "NZB/FVB N2 NCI"
          ],
          [
+            "C57BL-6JxC57BL-6NJF2",
+            "Reduced Complexity Cross (B6JxB6N F2)"
+         ],
+         [
             "Scripps-2013",
             "Scripps C57BL/6J"
          ],
@@ -3842,6 +3944,10 @@
       ],
       "rat": [
          [
+            "HXBBXH",
+            "HXB/BXH"
+         ],
+         [
             "HSNIH-Palmer",
             "NIH Heterogeneous Stock (Palmer)"
          ],
@@ -3850,10 +3956,6 @@
             "NIH Heterogeneous Stock (RGSMC 2013)"
          ],
          [
-            "HXBBXH",
-            "HXB/BXH"
-         ],
-         [
             "SRxSHRSPF2",
             "UIOWA SRxSHRSP F2"
          ]
@@ -3886,7 +3988,7 @@
       ],
       [
          "rat",
-         "Rat (rn3)"
+         "Rat (rn6)"
       ],
       [
          "drosophila",
@@ -4905,6 +5007,20 @@
                "Phenotypes"
             ]
          ],
+         "BXD300": [
+            [
+               "Phenotypes",
+               "Phenotypes"
+            ],
+            [
+               "Genotypes",
+               "Genotypes"
+            ],
+            [
+               "Liver mRNA",
+               "Liver mRNA"
+            ]
+         ],
          "BXH": [
             [
                "Phenotypes",
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 fd96eb78..d5ce6f84 100644
--- a/wqflask/wqflask/static/new/javascript/dataset_select_menu_orig.js
+++ b/wqflask/wqflask/static/new/javascript/dataset_select_menu_orig.js
@@ -24,6 +24,11 @@ $(function() {
     console.log("in populate group");
     species = $('#species').val();
     group_list = this.jdata.groups[species];
+    for (_i = 0, _len = group_list.length; _i < (_len - 1); _i++) {
+       if (group_list[_i][0] == "BXD300"){
+           group_list.splice(_i, 1)
+       }
+    }
     redo_dropdown($('#group'), group_list);
     if ($('#type').length > 0) { //This is to determine if it's the index page or the submit_trait page (which only has species and group selection and no make default option)
       return populate_type();
diff --git a/wqflask/wqflask/static/new/javascript/network_graph.js b/wqflask/wqflask/static/new/javascript/network_graph.js
index 0129bcae..0ecf4743 100644
--- a/wqflask/wqflask/static/new/javascript/network_graph.js
+++ b/wqflask/wqflask/static/new/javascript/network_graph.js
@@ -82,7 +82,7 @@ window.onload=function() {
         cy.nodes().qtip({
                             content: function(){
                                 qtip_content = ''
-                                gn_link = '<b>'+'<a href="http://gn2.genenetwork.org/show_trait?trait_id=' + this.data().id + '&dataset=' + this.data().dataset + '" >'+this.data().id +'</a>'+'</b><br>'
+                                gn_link = '<b>'+'<a href="http://gn2.genenetwork.org/show_trait?trait_id=' + this.data().id.split(":")[0] + '&dataset=' + this.data().id.split(":")[1] + '" >'+this.data().id +'</a>'+'</b><br>'
                                 qtip_content += gn_link
                                 if (typeof(this.data().geneid) !== 'undefined'){
                                     ncbi_link = '<a href="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=Graphics&list_uids=' + this.data().geneid + '" >NCBI<a>'+'<br>'
@@ -92,15 +92,8 @@ window.onload=function() {
                                     omim_link = '<a href="http://www.ncbi.nlm.nih.gov/omim/' + this.data().omim + '" >OMIM<a>'+'<br>'
                                     qtip_content += omim_link
                                 }
-                                //qtip_content = gn_link + ncbi_link + omim_link
                                 return qtip_content
-                                //return '<b>'+'<a href="http://gn2.genenetwork.org/show_trait?trait_id=' + this.data().id + '&dataset=' + this.data().dataset + '" >'+this.data().id +'<a>'+'</b>' 
                             },
-                            // content: {
-                                // title: '<b>'+'<a href="http://gn2.genenetwork.org/show_trait?trait_id=' + this.target() + '&dataset=' + this.dataset() + '" >'+this.target() +'<a>'+'</b>',
-                                // text: this.target,
-                                // button: true
-                            // },
                             position: {
                                 my: 'top center',
                                 at: 'bottom center'
@@ -119,7 +112,7 @@ window.onload=function() {
                                 correlation_line = '<b>Sample r: ' + this.data().correlation + '</b><br>'
                                 p_value_line = 'Sample p(r): ' + this.data().p_value + '<br>'
                                 overlap_line = 'Overlap: ' + this.data().overlap + '<br>'
-                                scatter_plot = '<a href="http://gn2-zach.genenetwork.org/corr_scatter_plot?dataset_1=' + this.data().source_dataset + '&dataset_2=' + this.data().target_dataset + '&trait_1=' + this.data().source + '&trait_2=' + this.data().target + '" >View Scatterplot</a>'
+                                scatter_plot = '<a href="http://gn2-zach.genenetwork.org/corr_scatter_plot?dataset_1=' + this.data().source.split(":")[1] + '&dataset_2=' + this.data().target.split(":")[1] + '&trait_1=' + this.data().source.split(":")[0] + '&trait_2=' + this.data().target.split(":")[0] + '" >View Scatterplot</a>'
                                 return correlation_line + p_value_line + overlap_line + scatter_plot
                             },
                             position: {
diff --git a/wqflask/wqflask/static/new/javascript/search_results.js b/wqflask/wqflask/static/new/javascript/search_results.js
index 40fdff70..2b878087 100644
--- a/wqflask/wqflask/static/new/javascript/search_results.js
+++ b/wqflask/wqflask/static/new/javascript/search_results.js
@@ -154,11 +154,15 @@ $(function() {
     }
   };
 
+  submit_bnw = function() {
+    trait_data = get_traits_from_table("trait_table", "submit_bnw")
+  }
+
   export_traits = function() {
-    trait_data = get_traits_from_table("trait_table")
+    trait_data = get_traits_from_table("trait_table", "export_csv")
   };
 
-  get_traits_from_table = function(table_name) {
+  get_traits_from_table = function(table_name, destination) {
     trait_table = $('#'+table_name);
     table_dict = {};
 
@@ -199,7 +203,11 @@ $(function() {
     json_table_dict = JSON.stringify(table_dict);
     $('input[name=export_data]').val(json_table_dict);
 
-    $('#export_form').attr('action', '/export_traits_csv');
+    if (destination == "export_csv"){
+        $('#export_form').attr('action', '/export_traits_csv');
+    } else{
+        $('#export_form').attr('action', '/submit_bnw');
+    }
     $('#export_form').submit();
   };
 
@@ -208,6 +216,7 @@ $(function() {
   $("#invert").click(invert);
   $("#add").click(add);
   $("#remove").click(remove);
+  $("#submit_bnw").click(submit_bnw);
   $("#export_traits").click(export_traits);
   $('.trait_checkbox, .btn').click(change_buttons);
 });
\ No newline at end of file
diff --git a/wqflask/wqflask/templates/show_trait.html b/wqflask/wqflask/templates/show_trait.html
index d41f4dfb..a291baf3 100644
--- a/wqflask/wqflask/templates/show_trait.html
+++ b/wqflask/wqflask/templates/show_trait.html
@@ -141,7 +141,8 @@
     <script type="text/javascript" src="/static/new/javascript/box_plot.js"></script>
     <script type="text/javascript" src="/static/new/javascript/scatterplot.js"></script>
     <script type="text/javascript" src="/static/new/javascript/scatter-matrix.js"></script>
-    <script type="text/javascript" src="/static/new/javascript/draw_probability_plot.js"></script>  
+    <script type="text/javascript" src="/static/new/javascript/draw_probability_plot.js"></script>
+    <!--<script type="text/javascript" src="/static/new/javascript/plotly_probability_plot.js"></script>-->
     <script type="text/javascript" src="/static/new/javascript/compare_traits_scatterplot.js"></script>
     <script language="javascript" type="text/javascript" src="/static/new/javascript/get_covariates_from_collection.js"></script>
 
diff --git a/wqflask/wqflask/templates/show_trait_details.html b/wqflask/wqflask/templates/show_trait_details.html
index a0c40c7f..2a62733e 100644
--- a/wqflask/wqflask/templates/show_trait_details.html
+++ b/wqflask/wqflask/templates/show_trait_details.html
@@ -70,6 +70,10 @@
                 Genotation
             </a>
             &nbsp;&nbsp;
+            <a href="https://www.gtexportal.org/home/gene/{{ this_trait.symbol }}" title="GTEx Portal">
+                GTEx Portal
+            </a>
+            &nbsp;&nbsp;
         {% endif %}
         </td>
     </tr>
diff --git a/wqflask/wqflask/templates/show_trait_statistics.html b/wqflask/wqflask/templates/show_trait_statistics.html
index 48ac468a..aa95b083 100644
--- a/wqflask/wqflask/templates/show_trait_statistics.html
+++ b/wqflask/wqflask/templates/show_trait_statistics.html
@@ -105,7 +105,6 @@
                                 <option value="{{ group }}">{{ pretty_group }}</option>
                             {% endfor %}
                         </select>
-                        <!--<button type="button" class="btn btn-default" id="down_prob_plot">Export as PNG</button>-->
                         <br>
                         <br>
                         {% endif %}
@@ -113,6 +112,7 @@
                         <div id="prob_plot_container">
                             <div id="prob_plot_title"></div>
                             <svg></svg>
+                            <!--<div id="prob_plot_div"></div>-->
                         </div>
                         <div id="shapiro_wilk_text"></div>
                         <div>
diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py
index 40806450..68e779a1 100644
--- a/wqflask/wqflask/views.py
+++ b/wqflask/wqflask/views.py
@@ -38,6 +38,7 @@ from wqflask import gsearch
 from wqflask import update_search_results
 from wqflask import docs
 from wqflask import news
+from wqflask.submit_bnw import get_bnw_input
 from base.data_set import DataSet    # Used by YAML in marker_regression
 from wqflask.show_trait import show_trait
 from wqflask.show_trait import export_trait_data
@@ -760,6 +761,11 @@ def corr_scatter_plot_page():
                                        indent="   ")
     return render_template("corr_scatterplot.html", **template_vars.__dict__)
 
+@app.route("/submit_bnw", methods=('POST',))
+def submit_bnw():
+    logger.error(request.url)
+    template_vars = get_bnw_input(request.form)
+    return render_template("empty_collection.html", **{'tool':'Correlation Matrix'}) 
 
 # Todo: Can we simplify this? -Sam
 def sharing_info_page():