about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--wqflask/base/trait.py15
-rw-r--r--wqflask/wqflask/marker_regression/marker_regression.py11
-rwxr-xr-xwqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js18
-rwxr-xr-xwqflask/wqflask/static/new/packages/DataTables/css/jquery.dataTables.css4
-rwxr-xr-xwqflask/wqflask/static/new/packages/DataTables/js/dataTables.naturalSort.js122
-rwxr-xr-xwqflask/wqflask/templates/base.html2
-rwxr-xr-xwqflask/wqflask/templates/collections/view.html20
-rwxr-xr-xwqflask/wqflask/templates/correlation_page.html252
-rwxr-xr-xwqflask/wqflask/templates/gsearch_gene.html129
-rwxr-xr-xwqflask/wqflask/templates/gsearch_pheno.html102
-rwxr-xr-xwqflask/wqflask/templates/index_page.html6
-rw-r--r--wqflask/wqflask/templates/pair_scan_results.html2
-rwxr-xr-xwqflask/wqflask/templates/search_result_page.html85
-rwxr-xr-xwqflask/wqflask/templates/show_trait_edit_data.html17
-rw-r--r--wqflask/wqflask/views.py66
15 files changed, 449 insertions, 402 deletions
diff --git a/wqflask/base/trait.py b/wqflask/base/trait.py
index 0c962331..a71d8157 100644
--- a/wqflask/base/trait.py
+++ b/wqflask/base/trait.py
@@ -444,9 +444,9 @@ class GeneralTrait(object):
                                 self.locus_chr = result[0]
                                 self.locus_mb = result[1]
                             else:
-                                self.locus = self.locus_chr = self.locus_mb = ""
+                                self.locus = self.locus_chr = self.locus_mb = self.additive = ""
                         else:
-                            self.locus = self.locus_chr = self.locus_mb = ""
+                            self.locus = self.locus_chr = self.locus_mb = self.additive = ""
                     else:
                         self.locus = self.locus_chr = self.locus_mb = self.lrs = self.pvalue = self.mean = self.additive = ""
 
@@ -476,9 +476,9 @@ class GeneralTrait(object):
                                 self.locus_chr = result[0]
                                 self.locus_mb = result[1]
                             else:
-                                self.locus = self.locus_chr = self.locus_mb = ""
+                                self.locus = self.locus_chr = self.locus_mb = self.additive = ""
                         else:
-                            self.locus = self.locus_chr = self.locus_mb = ""
+                            self.locus = self.locus_chr = self.locus_mb = self.additive = ""
                     else:
                         self.locus = self.lrs = self.additive = ""
                 
@@ -492,9 +492,10 @@ class GeneralTrait(object):
                         else:
                             LRS_location_value = ord(str(self.locus_chr).upper()[0])*1000 + float(self.locus_mb)
 
-                    self.LRS_location_repr = LRS_location_repr = 'Chr%s: %.6f' % (self.locus_chr, float(self.locus_mb))                                        
-                    self.LRS_score_repr = LRS_score_repr = '%3.1f' % self.lrs
-                    self.LRS_score_value = LRS_score_value = self.lrs
+                    self.LRS_location_repr = LRS_location_repr = 'Chr%s: %.6f' % (self.locus_chr, float(self.locus_mb))
+                    if self.lrs != "":                                     
+                        self.LRS_score_repr = LRS_score_repr = '%3.1f' % self.lrs
+                        self.LRS_score_value = LRS_score_value = self.lrs
         else:
             raise KeyError, `self.name`+' information is not found in the database.'
 
diff --git a/wqflask/wqflask/marker_regression/marker_regression.py b/wqflask/wqflask/marker_regression/marker_regression.py
index 1e0a618e..26da95b9 100644
--- a/wqflask/wqflask/marker_regression/marker_regression.py
+++ b/wqflask/wqflask/marker_regression/marker_regression.py
@@ -37,7 +37,7 @@ from utility import temp_data
 from utility.benchmark import Bench
 from wqflask.marker_regression import gemma_mapping
 
-from utility.tools import locate, locate_ignore_error, PYLMM_COMMAND, GEMMA_COMMAND, PLINK_COMMAND
+from utility.tools import locate, locate_ignore_error, PYLMM_COMMAND, GEMMA_COMMAND, PLINK_COMMAND, TEMPDIR
 from utility.external import shell
 from base.webqtlConfig import TMPDIR, GENERATED_TEXT_DIR
 
@@ -213,7 +213,8 @@ class MarkerRegression(object):
                     if 'lod_score' in marker.keys():
                         self.qtl_results.append(marker)
 
-            self.trimmed_markers = trim_markers_for_table(results)            
+            
+            self.trimmed_markers = results    
                         
             for qtl in enumerate(self.qtl_results):
                 self.json_data['chr1'].append(str(qtl['chr1']))
@@ -228,7 +229,7 @@ class MarkerRegression(object):
                 maf = self.maf,
                 manhattan_plot = self.manhattan_plot,
                 mapping_scale = self.mapping_scale,
-                qtl_results = self.qtl_results,
+                qtl_results = self.qtl_results
             )
 
         else:
@@ -388,7 +389,7 @@ class MarkerRegression(object):
         r_sum         = ro.r["sum"]                     # Map the sum function
         plot          = ro.r["plot"]                    # Map the plot function
         postscript    = ro.r["postscript"]              # Map the postscript function
-        png           = ro.r["png"]              # Map the png function
+        png           = ro.r["png"]                     # Map the png function
         dev_off       = ro.r["dev.off"]                 # Map the device off function
 
         print(r_library("qtl"))                         # Load R/qtl
@@ -430,7 +431,7 @@ class MarkerRegression(object):
             #print("Pair scan results:", result_data_frame)
 
             self.pair_scan_filename = webqtlUtil.genRandStr("scantwo_") + ".png"
-            png(file=TMPDIR+self.pair_scan_filename)
+            png(file=TEMPDIR+self.pair_scan_filename)
             plot(result_data_frame)
             dev_off()
             
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 519d1304..3b1a1205 100755
--- a/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js
+++ b/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js
@@ -135,6 +135,8 @@
 
   outlier_text = "One or more outliers exist in this data set. Please review values before mapping. Including outliers when mapping may lead to misleading results. We recommend <A HREF=\"http://en.wikipedia.org/wiki/Winsorising\">winsorising</A> the outliers or simply deleting them.";
 
+  runtime_warning_text = "This function could take as long as 10-20 minutes to run, so please do not close your browser window until it finishes."
+  
   showalert = function(message, alerttype) {
     return $('#alert_placeholder').append('<div id="alertdiv" class="alert ' + alerttype + '"><a class="close" data-dismiss="alert">�</a><span>' + message + '</span></div>');
   };
@@ -187,8 +189,20 @@
       $('input[name=do_control]').val($('input[name=do_control_rqtl]:checked').val());
       form_data = $('#trait_data_form').serialize();
       console.log("form_data is:", form_data);
-      return submit_special(url);
-      //return do_ajax_post(url, form_data);
+      if ($('input[name=pair_scan]:checked').val() == "true") {
+        console.log("PAIR SCAN:", $('input[name=pair_scan]:checked').val())
+        run_pair_scan = confirm(runtime_warning_text)
+        if (run_pair_scan == true) {
+          submit_special(url);
+        }
+        else {
+          return false
+        }
+      }
+      else {
+        return submit_special(url);
+        //return do_ajax_post(url, form_data);
+      }
     };
   })(this));
 
diff --git a/wqflask/wqflask/static/new/packages/DataTables/css/jquery.dataTables.css b/wqflask/wqflask/static/new/packages/DataTables/css/jquery.dataTables.css
index 931ec6b3..6540d01f 100755
--- a/wqflask/wqflask/static/new/packages/DataTables/css/jquery.dataTables.css
+++ b/wqflask/wqflask/static/new/packages/DataTables/css/jquery.dataTables.css
@@ -20,7 +20,7 @@ table.dataTable tfoot th {
 }
 table.dataTable thead th,
 table.dataTable thead td {
-  padding: 10px 18px;
+  padding: 10px 18px 10px 0px;
   border-bottom: 1px solid #111;
 }
 table.dataTable thead th:active,
@@ -69,7 +69,7 @@ table.dataTable tbody tr.selected {
 }
 table.dataTable tbody th,
 table.dataTable tbody td {
-  padding: 8px 10px;
+  padding: 4px 5px;
 }
 table.dataTable.row-border tbody th, table.dataTable.row-border tbody td, table.dataTable.display tbody th, table.dataTable.display tbody td {
   border-top: 1px solid #ddd;
diff --git a/wqflask/wqflask/static/new/packages/DataTables/js/dataTables.naturalSort.js b/wqflask/wqflask/static/new/packages/DataTables/js/dataTables.naturalSort.js
index c9e26682..8b7fa8fd 100755
--- a/wqflask/wqflask/static/new/packages/DataTables/js/dataTables.naturalSort.js
+++ b/wqflask/wqflask/static/new/packages/DataTables/js/dataTables.naturalSort.js
@@ -1,56 +1,68 @@
-(function() {

- 

-/*

- * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license

- * Author: Jim Palmer (based on chunking idea from Dave Koelle)

- * Contributors: Mike Grier (mgrier.com), Clint Priest, Kyle Adams, guillermo

- * See: http://js-naturalsort.googlecode.com/svn/trunk/naturalSort.js

- */

-function naturalSort (a, b) {

-    var re = /(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi,

-        sre = /(^[ ]*|[ ]*$)/g,

-        dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,

-        hre = /^0x[0-9a-f]+$/i,

-        ore = /^0/,

-        // convert all to strings and trim()

-        x = a.toString().replace(sre, '') || '',

-        y = b.toString().replace(sre, '') || '',

-        // chunk/tokenize

-        xN = x.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'),

-        yN = y.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'),

-        // numeric, hex or date detection

-        xD = parseInt(x.match(hre)) || (xN.length != 1 && x.match(dre) && Date.parse(x)),

-        yD = parseInt(y.match(hre)) || xD && y.match(dre) && Date.parse(y) || null;

-    // first try and sort Hex codes or Dates

-    if (yD)

-        if ( xD < yD ) return -1;

-        else if ( xD > yD )  return 1;

-    // natural sorting through split numeric strings and default strings

-    for(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {

-        // find floats not starting with '0', string or 0 if not defined (Clint Priest)

-        var oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;

-        var oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;

-        // handle numeric vs string comparison - number < string - (Kyle Adams)

-        if (isNaN(oFxNcL) !== isNaN(oFyNcL)) return (isNaN(oFxNcL)) ? 1 : -1;

-        // rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'

-        else if (typeof oFxNcL !== typeof oFyNcL) {

-            oFxNcL += '';

-            oFyNcL += '';

-        }

-        if (oFxNcL < oFyNcL) return -1;

-        if (oFxNcL > oFyNcL) return 1;

-    }

-    return 0;

-}

- 

-jQuery.extend( jQuery.fn.dataTableExt.oSort, {

-    "natural-asc": function ( a, b ) {

-        return naturalSort(a,b);

-    },

- 

-    "natural-desc": function ( a, b ) {

-        return naturalSort(a,b) * -1;

-    }

-} );

- 

+(function() {
+ 
+/*
+ * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license
+ * Author: Jim Palmer (based on chunking idea from Dave Koelle)
+ * Contributors: Mike Grier (mgrier.com), Clint Priest, Kyle Adams, guillermo
+ * See: http://js-naturalsort.googlecode.com/svn/trunk/naturalSort.js
+ */
+function naturalSort (a, b) {
+    var re = /(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi,
+        sre = /(^[ ]*|[ ]*$)/g,
+        dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,
+        hre = /^0x[0-9a-f]+$/i,
+        ore = /^0/,
+        // convert all to strings and trim()
+        x = a.toString().replace(sre, '') || '',
+        y = b.toString().replace(sre, '') || '',
+        // chunk/tokenize
+        xN = x.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'),
+        yN = y.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'),
+        // numeric, hex or date detection
+        xD = parseInt(x.match(hre)) || (xN.length != 1 && x.match(dre) && Date.parse(x)),
+        yD = parseInt(y.match(hre)) || xD && y.match(dre) && Date.parse(y) || null;
+
+    // first try and sort Hex codes or Dates
+    if (yD)
+        if ( xD < yD ) return -1;
+        else if ( xD > yD )  return 1;
+
+    // natural sorting through split numeric strings and default strings
+    for(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) {
+        // find floats not starting with '0', string or 0 if not defined (Clint Priest)
+        var oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0;
+        var oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0;
+        // handle numeric vs string comparison - number < string - (Kyle Adams)
+        if (isNaN(oFxNcL) !== isNaN(oFyNcL)) return (isNaN(oFxNcL)) ? 1 : -1;
+        // rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'
+        else if (typeof oFxNcL !== typeof oFyNcL) {
+            oFxNcL += '';
+            oFyNcL += '';
+        }
+        if (oFxNcL < oFyNcL) return -1;
+        if (oFxNcL > oFyNcL) return 1;
+    }
+
+    return 0;
+}
+ 
+jQuery.extend( jQuery.fn.dataTableExt.oSort, {
+    "natural-asc": function ( a, b ) {
+        // first check if null or n/a
+        if (a == "N/A" || a == "NA" || a == "" || a == "--") return 1;
+        else if (b == "N/A" || b == "NA" || b == "" || b == "--") return -1;
+        else {
+            return naturalSort(a,b);
+        }
+    },
+ 
+    "natural-desc": function ( a, b ) {
+        if (a == "N/A" || a == "NA" || a == "" || a == "--") return 1;
+        else if (b == "N/A" || b == "NA" || b == "" || b == "--") return -1;
+        else {
+            return naturalSort(a,b) * -1;
+        }
+    }
+} );
+ 
 }());
\ No newline at end of file
diff --git a/wqflask/wqflask/templates/base.html b/wqflask/wqflask/templates/base.html
index b4fdbd8e..759c4a8d 100755
--- a/wqflask/wqflask/templates/base.html
+++ b/wqflask/wqflask/templates/base.html
@@ -19,7 +19,7 @@
 
 </head>
 
-<body style="width: 1500px !important;">
+<body style="width: 100% !important;">
     <!-- Navbar ================================================== -->
 
     <div class="navbar navbar-inverse navbar-static-top pull-left" role="navigation">
diff --git a/wqflask/wqflask/templates/collections/view.html b/wqflask/wqflask/templates/collections/view.html
index c1563b9c..288207e7 100755
--- a/wqflask/wqflask/templates/collections/view.html
+++ b/wqflask/wqflask/templates/collections/view.html
@@ -92,18 +92,19 @@
             <button class="btn" id="remove" disabled="disabled"><i class="icon-minus-sign"></i> Remove Record</button>
             <br />
             <br />
+        <div style="background-color: #eeeeee; border: 1px solid black;">
         <table class="table table-hover table-striped" id='trait_table'>
             <thead>
                 <tr>
-                    <th></th>
-                    <th>Index</th>
-                    <th>Record</th>
-                    <th>Description</th>
-                    <th>Location</th>
-                    <th>Mean</th>
-                    <th>Max LRS<a href="http://genenetwork.org//glossary.html#L" target="_blank"><sup style="color:#f00">  ?</sup></a></th>
-                    <th>Max LRS Location</th>
-                    <th>Additive Effect<a href="http://genenetwork.org//glossary.html#A" target="_blank"><sup style="color:#f00">  ?</sup></a></th>
+                    <th style="background-color: #eeeeee;"></th>
+                    <th style="background-color: #eeeeee;">Index</th>
+                    <th style="background-color: #eeeeee;">Record</th>
+                    <th style="background-color: #eeeeee;">Description</th>
+                    <th style="background-color: #eeeeee;">Location</th>
+                    <th style="background-color: #eeeeee;">Mean</th>
+                    <th style="background-color: #eeeeee;">Max LRS<a href="http://genenetwork.org//glossary.html#L" target="_blank"><sup style="color:#f00">  ?</sup></a></th>
+                    <th style="background-color: #eeeeee;">Max LRS Location</th>
+                    <th style="background-color: #eeeeee;">Additive Effect<a href="http://genenetwork.org//glossary.html#A" target="_blank"><sup style="color:#f00">  ?</sup></a></th>
                 </tr>
             </thead>
 
@@ -136,6 +137,7 @@
             </tbody>
 
         </table>
+        </div>
         <br />
         </div>
     </div>
diff --git a/wqflask/wqflask/templates/correlation_page.html b/wqflask/wqflask/templates/correlation_page.html
index efc94c42..c5b4477b 100755
--- a/wqflask/wqflask/templates/correlation_page.html
+++ b/wqflask/wqflask/templates/correlation_page.html
@@ -3,8 +3,6 @@
     <link rel="stylesheet" type="text/css" href="/static/new/packages/DataTables/css/jquery.dataTables.css" />
     <link rel="stylesheet" type="text/css" href="/static/packages/DT_bootstrap/DT_bootstrap.css" />
     <link rel="stylesheet" type="text/css" href="/static/packages/TableTools/media/css/TableTools.css" />
-    <link href="//cdn.datatables.net/fixedheader/2.1.2/css/dataTables.fixedHeader.css" rel="stylesheet">
-    <link href="//cdn.datatables.net/fixedcolumns/3.0.4/css/dataTables.fixedColumns.css" rel="stylesheet">
     <link rel="stylesheet" type="text/css" href="/static/new/packages/DataTables/extensions/buttons.bootstrap.css" />
 {% endblock %}
 {% block content %}
@@ -34,55 +32,65 @@
         <br />
         <br />
 
-        <div>
-            <table id="trait_table" class="table table-hover table-striped">
+        <div style="width: {% if target_dataset.type == "ProbeSet" %}1600px{% elif target_dataset.type == "Publish" %}1200px{% else %}800px{% endif %}; background-color: #eeeeee; border: 1px solid black;">
+            <table width="1600px" id="trait_table" class="table table-hover table-striped">
                 <thead>
                     <tr>
-                        <th style="width: 30px;"></th>
+                        <th style="width: 30px; background-color: #eeeeee;"></th>
                     {% for header in target_dataset.header_fields %}
-                        {% if header == 'Max LRS' %}
-                        <th style="text-align: right;">Max&nbsp;&nbsp;<br>LRS<a href="http://genenetwork.org//glossary.html#L" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
+                        {% if header == 'Year' %}
+                        <th style="text-align: right; background-color: #eeeeee;">{{header}}</th>
+                        {% elif header == 'Max LRS' %}
+                        <th style="text-align: right; background-color: #eeeeee;">Max&nbsp;&nbsp;<br>LRS<a href="http://genenetwork.org//glossary.html#L" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
+                        {% elif header == 'Max LRS Location' %}
+                        <th style="text-align: right; background-color: #eeeeee;">{{header}}</th>
+                        {% elif header == 'Location' %}
+                        <th style="text-align: right; background-color: #eeeeee;">{{header}}</th>
+                        {% elif header == 'Mean' %}
+                        <th style="text-align: right; background-color: #eeeeee;">{{header}}</th>
                         {% elif header == 'Additive Effect' %}
-                        <th style="text-align: right;">Additive<br>Effect<a href="http://genenetwork.org//glossary.html#A" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
+                        <th style="text-align: right; background-color: #eeeeee;">Add&nbsp;&nbsp;<br>Effect<a href="http://genenetwork.org//glossary.html#A" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
+                        {% elif header == 'Index' %}
+                        <th style="text-align: right; background-color: #eeeeee; padding-left: 0px; margin-left: 0px;">{{header}}</th>
+                        {% elif header == 'N' %}
+                        <th style="text-align: right; background-color: #eeeeee;">{{header}}</th>
                         {% else %}
-                        <th>{{header}}</th>
+                        <th style="background-color: #eeeeee;">{{header}}</th>
                         {% endif %}
                     {% endfor %}
-                        {% if target_dataset.type == "ProbeSet" %}
+                    {% if target_dataset.type == "ProbeSet" %}
                         {% if corr_method == 'pearson' %}
-                        <th>Sample r</th>
-                        <th>N Cases</th>
-                        <th>Sample p(r)</th>
-                        <th>Lit Corr</th>
-                        <th>Tissue r</th>
-                        <th>Tissue p(r)</th>
+                        <th style="text-align: right; background-color: #eeeeee;">Sample r</th>
+                        <th style="text-align: right; background-color: #eeeeee;">&nbsp;&nbsp;N</th>
+                        <th style="text-align: right; background-color: #eeeeee;">Sample p(r)</th>
+                        <th style="text-align: right; background-color: #eeeeee;">Lit r</th>
+                        <th style="text-align: right; background-color: #eeeeee;">Tissue r</th>
                         {% else %}
-                        <th>Sample rho</th>
-                        <th>N Cases</th>
-                        <th>Sample p(rho)</th>
-                        <th>Lit Corr</th>
-                        <th>Tissue rho</th>
-                        <th>Tissue p(rho)</th>
+                        <th style="text-align: right; background-color: #eeeeee;">Sample rho</th>
+                        <th style="text-align: right; background-color: #eeeeee;">N</th>
+                        <th style="text-align: right; background-color: #eeeeee;">Sample p(rho)</th>
+                        <th style="text-align: right; background-color: #eeeeee;">Lit r</th>
+                        <th style="text-align: right; background-color: #eeeeee;">Tissue rho</th>
                         {% endif %}
                     {% elif target_dataset.type == "Publish" %}
                         {% if corr_method == 'pearson' %}
-                        <th>Sample r</th>
-                        <th>N Cases</th>
-                        <th>Sample p(r)</th>
+                        <th style="text-align: right; background-color: #eeeeee;">Sample r</th>
+                        <th style="text-align: right; background-color: #eeeeee;">&nbsp;&nbsp;N</th>
+                        <th style="text-align: right; background-color: #eeeeee;">Sample p(r)</th>
                         {% else %}
-                        <th>Sample rho</th>
-                        <th>N Cases</th>
-                        <th>Sample p(rho)</th>
+                        <th style="text-align: right; background-color: #eeeeee;">Sample rho</th>
+                        <th style="text-align: right; background-color: #eeeeee;">&nbsp;&nbsp;N</th>
+                        <th style="text-align: right; background-color: #eeeeee;">Sample p(rho)</th>
                         {% endif %}
                     {% elif target_dataset.type == "Geno" %}
                         {% if corr_method == 'pearson' %}
-                        <th>Sample r</th>
-                        <th>N Cases</th>
-                        <th>Sample p(r)</th>
+                        <th style="text-align: right; background-color: #eeeeee;">Sample r</th>
+                        <th style="text-align: right; background-color: #eeeeee;">N</th>
+                        <th style="text-align: right; background-color: #eeeeee;">Sample p(r)</th>
                         {% else %}
-                        <th>Sample rho</th>
-                        <th>N Cases</th>
-                        <th>Sample p(rho)</th>
+                        <th style="text-align: right; background-color: #eeeeee;">Sample rho</th>
+                        <th style="text-align: right; background-color: #eeeeee;">N</th>
+                        <th style="text-align: right; background-color: #eeeeee;">Sample p(rho)</th>
                         {% endif %}
                     {% endif %}
                     </tr>
@@ -91,58 +99,56 @@
                 <tbody>
                 {% for trait in correlation_results %}
                     <tr>
-                        <TD><INPUT TYPE="checkbox" NAME="searchResult" class="checkbox trait_checkbox" style="transform: scale(1.5);" VALUE="{{ data_hmac('{}:{}'.format(trait.name, trait.dataset.name)) }}">
-                        </TD>
-                        <TD align="right">{{ loop.index }}</TD>
-                        <TD>
+                        <td>&nbsp;<INPUT TYPE="checkbox" NAME="searchResult" class="checkbox trait_checkbox" style="transform: scale(1.5);" VALUE="{{ data_hmac('{}:{}'.format(trait.name, trait.dataset.name)) }}"></td>
+                        <td align="right">{{ loop.index }}</td>
+                        <td>
                             <a href="{{ url_for('show_trait_page',
                                     trait_id = trait.name,
                                     dataset = dataset.name
                                     )}}">
                                 {{ trait.name }}
                             </a>
-                        </TD>
+                        </td>
                       {% if target_dataset.type == 'ProbeSet' %}
-                        <TD>{{ trait.symbol }}</TD>
-                        <TD>{{ trait.description_display }}</TD>
-                        <TD style="white-space: nowrap;">{{ trait.location_repr }}</TD>
-                        <TD align="right">{{ '%0.3f' % trait.mean|float }}</TD>
-                        <TD align="right">{{ '%0.3f' % trait.LRS_score_repr|float }}</TD>
-                        <TD style="white-space: nowrap;">{{ trait.LRS_location_repr }}</TD>
-                        <TD align="right">{{ '%0.3f' % trait.additive|float }}</TD>
-                        <TD><a target="_blank" href="corr_scatter_plot?dataset_1={{dataset.name}}&dataset_2={{trait.dataset.name}}&trait_1={{this_trait.name}}&trait_2={{trait.name}}">{{'%0.3f'|format(trait.sample_r)}}</a></TD>
-                        <TD>{{ trait.num_overlap }}</TD>
-                        <TD>{{'%0.3e'|format(trait.sample_p)}}</TD>
+                        <td>{{ trait.symbol }}</td>
+                        <td>{{ trait.description_display }}</TD>
+                        <td align="right"style="white-space: nowrap;">{{ trait.location_repr }}</td>
+                        <td align="right">{{ '%0.3f' % trait.mean|float }}</td>
+                        <td align="right" style="padding-right: 15px;">{% if trait.LRS_score_repr != "N/A" %}{{ '%0.1f' % trait.LRS_score_repr|float }}{% else %}N/A{% endif %}</td>
+                        <td align="right" style="padding-right: 15px;">{{ trait.LRS_location_repr }}</td>
+                        <td align="right" style="padding-right: 15px;">{% if trait.additive != "" %}{{ '%0.3f' % trait.additive|float }}{% else %}N/A{% endif %}</td>
+                        <td align="right" style="padding-right: 15px;"><a target="_blank" href="corr_scatter_plot?dataset_1={{dataset.name}}&dataset_2={{trait.dataset.name}}&trait_1={{this_trait.name}}&trait_2={{trait.name}}">{{'%0.3f'|format(trait.sample_r)}}</a></td>
+                        <td align="right" style="padding-right: 15px;">{{ trait.num_overlap }}</td>
+                        <td align="right" style="padding-right: 15px;">{{'%0.3e'|format(trait.sample_p)}}</td>
                         {% if trait.lit_corr == "" or trait.lit_corr == 0.000 %}
-                        <TD>--</TD>
+                        <td align="right" style="padding-right: 15px;">--</td>
                         {% else %}
-                        <TD>{{'%0.3f'|format(trait.lit_corr)}}</TD>
+                        <td align="right" style="padding-right: 15px;">{{'%0.3f'|format(trait.lit_corr)}}</td>
                         {% endif %}
                         {% if trait.tissue_corr == "" or trait.tissue_corr == 0.000 %}
-                        <TD>--</TD>
+                        <td align="right" style="padding-right: 15px;">--</td>
                         {% else %}
-                        <TD>{{'%0.3f'|format(trait.tissue_corr)}}</TD>
+                        <td align="right" style="padding-right: 15px;">{{'%0.3f'|format(trait.tissue_corr)}}</td>
                         {% endif %}
-                        <TD>{{'%0.3e'|format(trait.tissue_pvalue)}}</TD>
                       {% elif target_dataset.type == "Publish" %}
-                        <TD>{{ trait.description_display }}</TD>
-                        <TD>{{ trait.authors }}</TD>
-                        <TD>
+                        <td>{{ trait.description_display }}</td>
+                        <td>{{ trait.authors }}</td>
+                        <td>
                             <a href="{{ trait.pubmed_link }}">
                                 {{ trait.pubmed_text }}
                             </a>
-                        </TD>
-                        <TD>{{ trait.LRS_score_repr }}</TD>
-                        <TD>{{ trait.LRS_location_repr }}</TD>
-                        <TD>{{ '%0.3f' % trait.additive|float }}</TD>
-                        <TD><a target="_blank" href="corr_scatter_plot?dataset_1={{dataset.name}}&dataset_2={{trait.dataset.name}}&trait_1={{this_trait.name}}&trait_2={{trait.name}}">{{'%0.3f'|format(trait.sample_r)}}</a></TD>
-                        <TD>{{ trait.num_overlap }}</TD>
-                        <TD>{{'%0.3e'|format(trait.sample_p)}}</TD>
+                        </td>
+                        <td align="right" style="padding-right: 15px;">{{ trait.LRS_score_repr }}</td>
+                        <td align="right" style="padding-right: 15px;">{{ trait.LRS_location_repr }}</td>
+                        <td align="right" style="padding-right: 15px;">{% if trait.additive != "" %}{{ '%0.3f' % trait.additive|float }}{% else %}N/A{% endif %}</td>
+                        <td align="right" style="padding-right: 15px;"><a target="_blank" href="corr_scatter_plot?dataset_1={{dataset.name}}&dataset_2={{trait.dataset.name}}&trait_1={{this_trait.name}}&trait_2={{trait.name}}">{{'%0.3f'|format(trait.sample_r)}}</a></td>
+                        <td align="right" style="padding-right: 15px;">{{ trait.num_overlap }}</td>
+                        <td align="right" style="padding-right: 15px;">{{'%0.3e'|format(trait.sample_p)}}</td>
                       {% elif target_dataset.type == "Geno" %}
-                        <TD>{{ trait.location_repr }}</TD>
-                        <TD><a target="_blank" href="corr_scatter_plot?dataset_1={{dataset.name}}&dataset_2={{trait.dataset.name}}&trait_1={{this_trait.name}}&trait_2={{trait.name}}">{{'%0.3f'|format(trait.sample_r)}}</a></TD>
-                        <TD>{{ trait.num_overlap }}</TD>
-                        <TD>{{'%0.3e'|format(trait.sample_p)}}</TD>
+                        <td align="right" style="padding-right: 15px;">{{ trait.location_repr }}</TD>
+                        <td align="right" style="padding-right: 15px;"><a target="_blank" href="corr_scatter_plot?dataset_1={{dataset.name}}&dataset_2={{trait.dataset.name}}&trait_1={{this_trait.name}}&trait_2={{trait.name}}">{{'%0.3f'|format(trait.sample_r)}}</a></td>
+                        <td align="right" style="padding-right: 15px;">{{ trait.num_overlap }}</td>
+                        <td align="right" style="padding-right: 15px;">{{'%0.3e'|format(trait.sample_p)}}</td>
                       {% endif %}
                     </tr>
                 {% endfor %}
@@ -161,12 +167,8 @@
     <script language="javascript" type="text/javascript" src="https://cdn.datatables.net/buttons/1.0.0/js/buttons.bootstrap.min.js"></script>
     <script language="javascript" type="text/javascript" src="/static/new/js_external/jszip.min.js"></script>
     <script language="javascript" type="text/javascript" src="/static/new/packages/DataTables/js/dataTables.naturalSort.js"></script>
-    <script language="javascript" type="text/javascript" src="/static/new/packages/DataTables/extensions/dataTables.colResize.js"></script>
-    <script language="javascript" type="text/javascript" src="/static/new/packages/DataTables/extensions/dataTables.colReorder.js"></script>
     <script language="javascript" type="text/javascript" src="/static/packages/DT_bootstrap/DT_bootstrap.js"></script>
     <script language="javascript" type="text/javascript" src="/static/packages/TableTools/media/js/TableTools.min.js"></script>
-    <script language="javascript" type="text/javascript" src="//cdn.datatables.net/fixedheader/2.1.2/js/dataTables.fixedHeader.min.js"></script>
-    <script language="javascript" type="text/javascript" src="//cdn.datatables.net/fixedcolumns/3.0.4/js/dataTables.fixedColumns.min.js"></script>
     <script language="javascript" type="text/javascript" src="/static/packages/underscore/underscore-min.js"></script>
     <script type="text/javascript" charset="utf-8">
         function getValue(x) {
@@ -229,15 +231,28 @@
             console.time("Creating table");
 
             {% if target_dataset.type == "ProbeSet" %}
-
-
             $('#trait_table').dataTable( {
+                "paging": false,
+                "buttons": [
+                    {
+                       extend: 'csvHtml5',
+                       text: 'Download CSV',
+                       title: 'correlation_results',
+                       fieldBoundary: '"',
+                       exportOptions: {
+                           columns: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
+                       }
+                    }
+                ],
+                "columnDefs": [ 
+                    { "targets": 0, "orderable": false }
+                ],  
                 "columns": [
                     { "type": "natural" },
                     { "type": "natural" },
                     { "type": "natural" },
                     { "type": "natural" },
-                    { "type": "natural" },
+                    { "type": "natural", "width": "20%" },
                     { "type": "natural" },
                     { "type": "natural" },
                     { "type": "natural" },
@@ -247,19 +262,14 @@
                     { "type": "natural" },
                     { "type": "natural" },
                     { "type": "natural" },
-                    { "type": "natural" },
                     { "type": "natural" }
                 ],
-                "buttons": [
-                    'csvHtml5'
-                ],
-                "sDom": "RZBtir",
-                "iDisplayLength": -1,
+                "order": [[10, "desc" ]],
+                "sDom": "Btir",
+                "autoWidth": false,
                 "bDeferRender": true,
-                "bSortClasses": false,
-                //"scrollY": "700px",
-                //"scrollCollapse": false,
-                "paging": false
+                "scrollY": "800px",
+                "scrollCollapse": false
             } );
 
             var table = $('#trait_table').DataTable();
@@ -267,12 +277,27 @@
 
             {% elif target_dataset.type == "Publish" %}
             $('#trait_table').dataTable( {
+                "paging": false,
+                "buttons": [
+                    {
+                       extend: 'csvHtml5',
+                       text: 'Download CSV',
+                       title: 'correlation_results',
+                       fieldBoundary: '"',
+                       exportOptions: {
+                           columns: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
+                       }
+                    }
+                ],
+                "columnDefs": [ 
+                    { "targets": 0, "orderable": false }
+                ],  
                 "columns": [
                     { "type": "natural" },
                     { "type": "natural" },
                     { "type": "natural" },
-                    { "type": "natural" },
-                    { "type": "natural" },
+                    { "type": "natural", "width": "25%" },
+                    { "type": "natural", "width": "10%" },
                     { "type": "natural" },
                     { "type": "natural" },
                     { "type": "natural" },
@@ -281,24 +306,30 @@
                     { "type": "natural" },
                     { "type": "natural" }
                 ],
-                "buttons": [
-                    'csvHtml5'
-                ],
-                "sDom": "RZBtir",
-                "iDisplayLength": -1,
-                "autoWidth": true,
-                "bLengthChange": true,
+                "order": [[9, "desc" ]],
+                "sDom": "Btir",
+                "autoWidth": false,
                 "bDeferRender": true,
-                "bSortClasses": false,
-                "scrollY": "700px",
-                "scrollCollapse": false,
-                "colResize": {
-                    "tableWidthFixed": false
-                },
-                "paging": false
+                "scrollY": "800px",
+                "scrollCollapse": false
             } );
             {% elif target_dataset.type == "Geno" %}
             $('#trait_table').dataTable( {
+                "paging": false,
+                "buttons": [
+                    {
+                       extend: 'csvHtml5',
+                       text: 'Download CSV',
+                       title: 'correlation_results',
+                       fieldBoundary: '"',
+                       exportOptions: {
+                           columns: [1, 2, 3, 4, 5, 6]
+                       }
+                    }
+                ],
+                "columnDefs": [ 
+                    { "targets": 0, "orderable": false }
+                ],  
                 "columns": [
                     { "type": "natural" },
                     { "type": "natural" },
@@ -308,21 +339,12 @@
                     { "type": "natural" },
                     { "type": "natural" }
                 ],
-                "buttons": [
-                    'csvHtml5'
-                ],
-                "sDom": "RZBtir",
-                "iDisplayLength": -1,
-                "autoWidth": true,
-                "bLengthChange": true,
+                "order": [[4, "desc" ]],
+                "sDom": "Btir",
+                "autoWidth": false,
                 "bDeferRender": true,
-                "bSortClasses": false,
-                "scrollY": "700px",
-                "scrollCollapse": false,
-                "colResize": {
-                    "tableWidthFixed": false
-                },
-                "paging": false
+                "scrollY": "800px",
+                "scrollCollapse": false
             } );
             {% endif %}
             console.timeEnd("Creating table");
diff --git a/wqflask/wqflask/templates/gsearch_gene.html b/wqflask/wqflask/templates/gsearch_gene.html
index 37e26817..70cafcfe 100755
--- a/wqflask/wqflask/templates/gsearch_gene.html
+++ b/wqflask/wqflask/templates/gsearch_gene.html
@@ -23,24 +23,24 @@
 
             <br />
             <br />
-            <div style="width: 2000px;">
+            <div style="width: 2000px; background-color: #eeeeee; border: 1px solid black;">
               <table width="2000px" id="trait_table" class="table table-hover table-striped" >
                 <thead>
                   <tr>
-                    <th></th>
-                    <th>Index</th>
-                    <th>Species</th> 
-                    <th>Group</th> 
-                    <th>Tissue</th> 
-                    <th>Dataset</th> 
-                    <th>Record</th> 
-                    <th>Symbol</th> 
-                    <th>Description</th> 
-                    <th>Location</th>
-                    <th>Mean</th>
-                    <th>Max<br>LRS<a href="http://genenetwork.org/glossary.html#L" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
-                    <th>Max LRS Location</th>
-                    <th>Additive<br>Effect<a href="http://genenetwork.org/glossary.html#A" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
+                    <th style="background-color: #eeeeee;"></th>
+                    <th style="background-color: #eeeeee;">Index</th>
+                    <th style="background-color: #eeeeee;">Species</th> 
+                    <th style="background-color: #eeeeee;">Group</th> 
+                    <th style="background-color: #eeeeee;">Tissue</th> 
+                    <th style="background-color: #eeeeee;">Dataset</th> 
+                    <th style="background-color: #eeeeee;">Record</th> 
+                    <th style="background-color: #eeeeee;">Symbol</th> 
+                    <th style="background-color: #eeeeee;">Description</th> 
+                    <th style="background-color: #eeeeee;">Location</th>
+                    <th style="background-color: #eeeeee;">Mean</th>
+                    <th style="background-color: #eeeeee;">Max&nbsp;&nbsp;<br>LRS<a href="http://genenetwork.org/glossary.html#L" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
+                    <th style="background-color: #eeeeee;">Max LRS Location</th>
+                    <th style="background-color: #eeeeee;">Additive<br>Effect<a href="http://genenetwork.org/glossary.html#A" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
                   </tr>
                 </thead> 
                 <tbody>
@@ -55,13 +55,32 @@
                     <td><a href="{{ url_for('show_trait_page', trait_id = this_trait.name, dataset = this_trait.dataset.name)}}">{{ this_trait.name }}</a></td>
                     <td>{{ this_trait.symbol }}</td>
                     <td>{{ this_trait.description_display }}</td>
-                    <td>{{ this_trait.location_repr }}</td>
-                    <td>{{ this_trait.mean }}</td>
-                    <td>{{ this_trait.LRS_score_repr }}</td>
-                    <td>{{ this_trait.LRS_location_repr }}</td>
-                    <td>{{ this_trait.additive }}</td>
+                    <td align="right">{{ this_trait.location_repr }}</td>
+                    <td align="right">{{ '%0.3f' % this_trait.mean|float }}</td>
+                    <td align="right">{% if this_trait.LRS_score_repr != "N/A" %}{{ '%0.1f' % this_trait.LRS_score_repr|float }}{% else %}N/A{% endif %}</td>
+                    <td align="right">{{ this_trait.LRS_location_repr }}</td>
+                    <td align="right">{% if this_trait.additive != "" %}{{ '%0.3f' % this_trait.additive|float }}{% else %}N/A{% endif %}</td>
                   </tr>
                   {% endfor %}
+                </tbody>
+                <tfoot>
+                  <tr>
+                    <th style="background-color: #eeeeee;"></th>
+                    <th style="background-color: #eeeeee;">Index</th>
+                    <th style="background-color: #eeeeee;">Species</th> 
+                    <th style="background-color: #eeeeee;">Group</th> 
+                    <th style="background-color: #eeeeee;">Tissue</th> 
+                    <th style="background-color: #eeeeee;">Dataset</th> 
+                    <th style="background-color: #eeeeee;">Record</th> 
+                    <th style="background-color: #eeeeee;">Symbol</th> 
+                    <th style="background-color: #eeeeee;">Description</th> 
+                    <th style="background-color: #eeeeee;">Location</th>
+                    <th style="background-color: #eeeeee;">Mean</th>
+                    <th style="background-color: #eeeeee;">Max&nbsp;&nbsp;<br>LRS<a href="http://genenetwork.org/glossary.html#L" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
+                    <th style="background-color: #eeeeee;">Max LRS Location</th>
+                    <th style="background-color: #eeeeee;">Additive<br>Effect<a href="http://genenetwork.org/glossary.html#A" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
+                  </tr>
+                </tfoot> 
               </table>
             </div>
         </div>
@@ -100,42 +119,6 @@
             }
             return parseFloat(x);
         }
-            
-        jQuery.fn.dataTableExt.oSort['cust-txt-asc'] = function (a, b) {
-            var x = getValue(a);
-            var y = getValue(b); 
-            
-            if (x == 'N/A' || x == '') {
-                return 1;
-            }
-            else if (y == 'N/A' || y == '') {
-                return -1;
-            }
-            else {
-                return ((x < y) ? -1 : ((x > y) ? 1 : 0));
-            }
-        };
-
-        jQuery.fn.dataTableExt.oSort['cust-txt-asc'] = function (a, b) {
-            var x = getValue(a);
-            var y = getValue(b); 
-            
-            if (x == 'N/A' || x == '') {
-                return 1;
-            }
-            else if (y == 'N/A' || y == '') {
-                return -1;
-            }
-            else {
-                return ((x < y) ? -1 : ((x > y) ? 1 : 0));
-            }
-        };
-  
-        jQuery.fn.dataTableExt.oSort['cust-txt-desc'] = function (a, b) {
-            var x = getValue(a);
-            var y = getValue(b);
-            return ((x < y) ? 1 : ((x > y) ? -1 : 0));
-        };
 
         $.fn.dataTable.ext.order['dom-checkbox'] = function  ( settings, col )
         {
@@ -167,25 +150,27 @@
                     }
                 ],
                 "columns": [
-                    { "data": "checkbox", "orderable" : false },
-                    { "data": "index", "orderable" : true },
-                    { "data": "species", "orderable" : true },
-                    { "data": "group", "orderable" : true },
-                    { "data": "tissue", "orderable" : true },
-                    { "data": "dataset", "orderable" : true },
-                    { "data": "record", "orderable" : true },
-                    { "data": "symbol", "orderable" : true },
-                    { "data": "description", "orderable" : true },
-                    { "data": "location", "orderable" : true },
-                    { "data": "mean", "orderable" : true },
-                    { "data": "max_lrs", "orderable" : true },
-                    { "data": "max_lrs_location", "orderable" : true },
-                    { "data": "additive_effect", "orderable" : true }
+                    { "type": "natural" },
+                    { "type": "natural" },
+                    { "type": "natural" },
+                    { "type": "natural", "width": "8%"  },
+                    { "type": "natural" },
+                    { "type": "natural" },
+                    { "type": "natural" },
+                    { "type": "natural" },
+                    { "type": "natural" },
+                    { "type": "natural", "width": "8%" },
+                    { "type": "natural" },
+                    { "type": "natural", "width": "5%" },
+                    { "type": "natural", "width": "8%" },
+                    { "type": "natural" }
                 ],
-                "sDom": "RZBtir",
+                "order": [[1, "asc" ]],
+                "sDom": "Btir",
                 "autoWidth": false,
+                "bDeferRender": true,
                 "scrollY": "800px",
-                "bDeferRender": true
+                "scrollCollapse": false
             } );
 
             console.timeEnd("Creating table");
diff --git a/wqflask/wqflask/templates/gsearch_pheno.html b/wqflask/wqflask/templates/gsearch_pheno.html
index 3c9f6841..9be0349f 100755
--- a/wqflask/wqflask/templates/gsearch_pheno.html
+++ b/wqflask/wqflask/templates/gsearch_pheno.html
@@ -25,40 +25,57 @@
             <input type="text" id="select_top" class="form-control" style="width: 200px; display: inline;" placeholder="Select Top ...">
             <br />
             <br />
-            <table class="table table-hover table-striped" id='trait_table'  style="float: left;">
+            <div style="width: 1500px; background-color: #eeeeee; border: 1px solid black;">
+            <table width="1500px" id="trait_table" class="table table-hover table-striped">
                 <thead>
                     <tr>
-                        <th style="width: 30px;"></th>
-                        <th>Index</th>
-                        <th>Species</th>
-                        <th>Group</th>
-                        <th>Record</th>
-                        <th>Description</th>
-                        <th>Authors</th>
-                        <th>Year</th>
-                        <th style="text-align: right;">Max&nbsp;&nbsp;<br>LRS<a href="http://genenetwork.org//glossary.html#L" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
-                        <th>Max LRS Location</th>
-                        <th style="text-align: right;">Additive<br>Effect<a href="http://genenetwork.org//glossary.html#A" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
+                        <th style="background-color: #eeeeee;"></th>
+                        <th style="background-color: #eeeeee;">Index</th>
+                        <th style="background-color: #eeeeee;">Species</th>
+                        <th style="background-color: #eeeeee;">Group</th>
+                        <th style="background-color: #eeeeee;">Record</th>
+                        <th style="background-color: #eeeeee;">Description</th>
+                        <th style="background-color: #eeeeee;">Authors</th>
+                        <th style="background-color: #eeeeee;">Year</th>
+                        <th style="background-color: #eeeeee; text-align: right;">Max&nbsp;&nbsp;<br>LRS<a href="http://genenetwork.org//glossary.html#L" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
+                        <th style="background-color: #eeeeee;">Max LRS Location</th>
+                        <th style="background-color: #eeeeee; text-align: right;">Additive<br>Effect<a href="http://genenetwork.org//glossary.html#A" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
                     </tr>
                 </thead>
                 <tbody>
                  {% for this_trait in trait_list %}
                     <TR id="trait:{{ this_trait.name }}:{{ this_trait.dataset.name }}">
-                        <TD><INPUT TYPE="checkbox" NAME="searchResult" class="checkbox trait_checkbox" style="transform: scale(1.5);" VALUE="{{ data_hmac('{}:{}'.format(this_trait.name, this_trait.dataset.name)) }}"></TD>
-                        <TD>{{ loop.index }}</TD>
-                        <TD>{{ this_trait.dataset.group.species }}</TD>
-                        <TD>{{ this_trait.dataset.group.name }}</TD>
-                        <TD><a href="{{ url_for('show_trait_page', trait_id = this_trait.name, dataset = this_trait.dataset.name)}}">{{ this_trait.name }}</a></TD>
-                        <TD>{{ this_trait.description_display }}</TD>
-                        <TD>{{ this_trait.authors }}</TD>
-                        <TD><a href="{{ this_trait.pubmed_link }}">{{ this_trait.pubmed_text }}</a></TD>
-                        <TD>{{ this_trait.LRS_score_repr }}</TD>
-                        <TD>{{ this_trait.LRS_location_repr }}</TD>
-                        <TD>{{ '%0.3f' % this_trait.additive|float }}</TD>
+                        <td><INPUT TYPE="checkbox" NAME="searchResult" class="checkbox trait_checkbox" style="transform: scale(1.5);" VALUE="{{ data_hmac('{}:{}'.format(this_trait.name, this_trait.dataset.name)) }}"></td>
+                        <td>{{ loop.index }}</td>
+                        <td>{{ this_trait.dataset.group.species }}</td>
+                        <td>{{ this_trait.dataset.group.name }}</td>
+                        <td><a href="{{ url_for('show_trait_page', trait_id = this_trait.name, dataset = this_trait.dataset.name)}}">{{ this_trait.name }}</a></td>
+                        <td>{{ this_trait.description_display }}</td>
+                        <td>{{ this_trait.authors }}</td>
+                        <td><a href="{{ this_trait.pubmed_link }}">{{ this_trait.pubmed_text }}</a></td>
+                        <td align="right">{% if this_trait.LRS_score_repr != "N/A" %}{{ '%0.1f' % this_trait.LRS_score_repr|float }}{% else %}N/A{% endif %}</td>
+                        <td align="right">{{ this_trait.LRS_location_repr }}</td>
+                        <td align="right">{% if this_trait.additive != "" %}{{ this_trait.additive }}{% else %}N/A{% endif %}</td>
                     </TR>
                 {% endfor %}
                 </tbody>
+                <tfoot>
+                    <tr>
+                        <th style="background-color: #eeeeee;"></th>
+                        <th style="background-color: #eeeeee;">Index</th>
+                        <th style="background-color: #eeeeee;">Species</th>
+                        <th style="background-color: #eeeeee;">Group</th>
+                        <th style="background-color: #eeeeee;">Record</th>
+                        <th style="background-color: #eeeeee;">Description</th>
+                        <th style="background-color: #eeeeee;">Authors</th>
+                        <th style="background-color: #eeeeee;">Year</th>
+                        <th style="background-color: #eeeeee; text-align: right;">Max&nbsp;&nbsp;<br>LRS<a href="http://genenetwork.org//glossary.html#L" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
+                        <th style="background-color: #eeeeee;">Max LRS Location</th>
+                        <th style="background-color: #eeeeee; text-align: right;">Additive<br>Effect<a href="http://genenetwork.org//glossary.html#A" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
+                    </tr>
+                </tfoot>
             </table>
+            </div>
         </div>
     </div>
 
@@ -127,20 +144,7 @@
 
             console.time("Creating table");
             $('#trait_table').DataTable( {
-                "columns": [
-                    { "bSortClasses": false },
-                    { "type": "natural" },
-                    { "type": "natural" },
-                    { "type": "natural" },
-                    { "type": "natural" },
-                    { "type": "natural", "width": "20%"},
-                    { "type": "natural" },
-                    { "type": "natural" },
-                    { "type": "natural" },
-                    { "type": "natural", "width": "12%"},
-                    { "type": "natural" }
-                ],
-                "order": [[ 1, "asc" ]],
+                "paging": false,
                 "buttons": [
                     {
                        extend: 'csvHtml5',
@@ -152,15 +156,25 @@
                        }
                     }
                 ],
-                "sDom": "RZBtir",
+                "columns": [
+                    { "type": "natural" },
+                    { "type": "natural" },
+                    { "type": "natural" },
+                    { "type": "natural" },
+                    { "type": "natural" },
+                    { "type": "natural", "width": "30%"},
+                    { "type": "natural", "width": "25%"},
+                    { "type": "natural" },
+                    { "type": "natural", "width": "8%"},
+                    { "type": "natural", "width": "12%"},
+                    { "type": "natural" }
+                ],
+                "order": [[1, "asc" ]],
+                "sDom": "Btir",
                 "autoWidth": false,
-                "bLengthChange": true,
                 "bDeferRender": true,
-                "scrollCollapse": false,
-                "colResize": {
-                    "tableWidthFixed": false,
-                },
-                "paging": false
+                "scrollY": "800px",
+                "scrollCollapse": false
             } );
             console.timeEnd("Creating table");
         });
diff --git a/wqflask/wqflask/templates/index_page.html b/wqflask/wqflask/templates/index_page.html
index 5cc15682..9e029911 100755
--- a/wqflask/wqflask/templates/index_page.html
+++ b/wqflask/wqflask/templates/index_page.html
@@ -207,12 +207,12 @@
                         <li><a href="http://galaxy.genenetwork.org/" target="_blank">Galaxy</a> at
                         UTHSC</li>
 
-                        <li>GeneNetwork at <a href="http://ec2.genenetwork.org/" target="_blank">Amazon
+                        <li>GeneNetwork 1 at <a href="http://ec2.genenetwork.org/" target="_blank">Amazon
                         Cloud (EC2)</a></li>
 
-                        <li>GeneNetwork Source Code at <a href="http://sourceforge.net/projects/genenetwork/" target="_blank">SourceForge</a></li>
+                        <li>GeneNetwork 1 Source Code at <a href="http://sourceforge.net/projects/genenetwork/" target="_blank">SourceForge</a></li>
 
-                        <li>GeneNetwork Source Code at <a href="https://github.com/genenetwork/genenetwork" target="_blank">GitHub</a></li>
+                        <li>GeneNetwork 2 Source Code at <a href="https://github.com/genenetwork/genenetwork2" target="_blank">GitHub</a></li>
                     </ul>
                     <h3>GN1 Mirror and development sites</h3>
 
diff --git a/wqflask/wqflask/templates/pair_scan_results.html b/wqflask/wqflask/templates/pair_scan_results.html
index ab4a36bb..1ccb2b27 100644
--- a/wqflask/wqflask/templates/pair_scan_results.html
+++ b/wqflask/wqflask/templates/pair_scan_results.html
@@ -44,7 +44,7 @@
                    </tr>
                 </thead>
                 <tbody>
-                    {% for marker in filtered_markers %}
+                    {% for marker in trimmed_markers %}
                         <tr>
                             <td>{{loop.index}}</td>
                             <td>{{marker.name}}</td>
diff --git a/wqflask/wqflask/templates/search_result_page.html b/wqflask/wqflask/templates/search_result_page.html
index a4ef68b9..02c97862 100755
--- a/wqflask/wqflask/templates/search_result_page.html
+++ b/wqflask/wqflask/templates/search_result_page.html
@@ -21,44 +21,30 @@
            to find all records
                 {% for word in search_terms %}
                     {% if word.key|lower == "rif" %}
-                    with <u>GeneRIF</u> containing <strong>{{ word.search_term[0] }}</strong>{% if not loop.last %} and {% endif %}
+                    with <u>GeneRIF</u> containing <strong>{{ word.search_term[0] }}</strong>{% if loop.last %}.{% else %} and {% endif %}
                     {% elif word.key|lower == "go" %}
-                    with <u>Gene Ontology ID</u> <strong>{{ word.search_term[0] }}</strong>{% if not loop.last %} and {% endif %}
+                    with <u>Gene Ontology ID</u> <strong>{{ word.search_term[0] }}</strong>{% if loop.last %}.{% else %} and {% endif %}
                     {% elif word.key|lower == "wiki" %}
-                    with <u>GeneWiki</u> containing <strong>{{ word.search_term[0] }}</strong>{% if not loop.last %} and {% endif %}
+                    with <u>GeneWiki</u> containing <strong>{{ word.search_term[0] }}</strong>{% if loop.last %}.{% else %} and {% endif %}
                     {% elif word.key|lower == "mean" %}
-                    with <u>MEAN</u> between <strong>{{ word.search_term[0] }}</strong> and <strong>{{ word.search_term[1] }}</strong>{% if not loop.last %} and {% endif %}
+                    with <u>MEAN</u> between <strong>{{ word.search_term[0] }}</strong> and <strong>{{ word.search_term[1] }}</strong>{% if loop.last %}.{% else %} and {% endif %}
                     {% elif word.key|lower == "lrs" or word.key|lower == "translrs" or word.key|lower == "cislrs" %}
                     {% if word.search_term|length == 1 %}
-                    with {% if word.key|lower == "translrs" %}trans{% elif word.key|lower == "cislrs" %}cis{% endif %}LRS {% if word.separator == ">" %} greater than {% elif word.separator == "<" %} less than {% elif word.separator == ">=" %} greater than or equal to {% elif word.separator == "<=" %} less than or equal to {% endif %} <strong>{{ word.search_term[0] }}</strong>{% if not loop.last %} and {% endif %}
+                    with {% if word.key|lower == "translrs" %}trans{% elif word.key|lower == "cislrs" %}cis{% endif %}LRS {% if word.separator == ">" %} greater than {% elif word.separator == "<" %} less than {% elif word.separator == ">=" %} greater than or equal to {% elif word.separator == "<=" %} less than or equal to {% endif %} <strong>{{ word.search_term[0] }}</strong>{% if loop.last %}.{% else %} and {% endif %}
                     {% elif word.search_term|length == 2 %}
-                    with <u>LRS</u> between <strong>{{ word.search_term[0] }}</strong> and <strong>{{ word.search_term[1] }}</strong>{% if not loop.last %} and {% endif %}
+                    with <u>LRS</u> between <strong>{{ word.search_term[0] }}</strong> and <strong>{{ word.search_term[1] }}</strong>{% if loop.last %}.{% else %} and {% endif %}
                     {% elif word.search_term|length == 3 %}
-                    with <u>LRS</u> between <strong>{{ word.search_term[0] }}</strong> and <strong>{{ word.search_term[1] }}</strong> on chromosome <strong>{{ word.search_term[2] }}</strong>{% if not loop.last %} and {% endif %}
+                    with <u>LRS</u> between <strong>{{ word.search_term[0] }}</strong> and <strong>{{ word.search_term[1] }}</strong> on chromosome <strong>{{ word.search_term[2] }}</strong>{% if loop.last %}.{% else %} and {% endif %}
                     {% elif word.search_term|length == 5 %}
-                    with <u>LRS</u> between <strong>{{ word.search_term[0] }}</strong> and <strong>{{ word.search_term[1] }}</strong> on chromosome <strong>{{ word.search_term[2] }}</strong> between <strong>{{ word.search_term[3] }}</strong> and <strong>{{ word.search_term[4] }}</strong> Mb{% if not loop.last %} and {% endif %}
+                    with <u>LRS</u> between <strong>{{ word.search_term[0] }}</strong> and <strong>{{ word.search_term[1] }}</strong> on chromosome <strong>{{ word.search_term[2] }}</strong> between <strong>{{ word.search_term[3] }}</strong> and <strong>{{ word.search_term[4] }}</strong> Mb{% if loop.last %}.{% else %} and {% endif %}
                     {% endif %}
                     {% elif word.key|lower == "position" %}
-                    with <u>target genes</u> on chromosome <strong>{% if word.search_term[0].split('chr')|length > 1 %}{{ word.search_term[0].split('chr')[1] }}{% elif word.search_term[0].split('CHR')|length > 1 %}{{ word.search_term[0].split('CHR')[1] }}{% else %}{{ word.search_term[0] }}{% endif %}</strong> between <strong>{{ word.search_term[1] }}</strong> and <strong>{{ word.search_term[2] }}</strong> Mb{% if not loop.last %} and {% endif %}
+                    with <u>target genes</u> on chromosome <strong>{% if word.search_term[0].split('chr')|length > 1 %}{{ word.search_term[0].split('chr')[1] }}{% elif word.search_term[0].split('CHR')|length > 1 %}{{ word.search_term[0].split('CHR')[1] }}{% else %}{{ word.search_term[0] }}{% endif %}</strong> between <strong>{{ word.search_term[1] }}</strong> and <strong>{{ word.search_term[2] }}</strong> Mb{% if loop.last %}.{% else %} and {% endif %}
                     {% else %}
-                    with {{ word.key|lower }} matching {{ word.search_term[0] }}
+                    that match the term {{ word.search_term[0] }}.
                     {% endif %}
-                    <!--<strong>{{word.search_term[0]}}</strong> {% if not loop.last %} or {% endif %}-->
-                {% endfor %}.
-
-        </p>
-
-        <!--
-        <ul>
-            {% if search_terms %}
-            <li>
-                {% for word in search_terms %}
-                    <strong>{{word.search_term[0]}}</strong> {% if not loop.last %} or {% endif %}
                 {% endfor %}
-            </li>
-            {% endif %}
-        </ul>
-        -->
+        </p>
 
         <p>To study a record, click on its ID below. Check records below and click Add button to add to selection.</p>
 
@@ -89,18 +75,18 @@
           {% endif %}
 -->
 
-          <div id="table_container">
+          <div id="table_container" style="background-color: #eeeeee; border: 1px solid black;">
             <table class="table table-hover table-striped" id='trait_table' {% if dataset.type == 'Geno' %}width="400px"{% endif %} style="float: left;">
                 <thead>
                     <tr>
-                        <th style="width: 30px;"></th>
+                        <th style="background-color: #eeeeee;"></th>
                     {% for header in header_fields %}
                         {% if header == 'Max LRS' %}
-                        <th style="text-align: right;">Max&nbsp;&nbsp;<br>LRS</th>
+                        <th style="background-color: #eeeeee; text-align: right;">Max<br>LRS</th>
                         {% elif header == 'Additive Effect' %}
-                        <th style="text-align: right;">Additive<br>Effect<a href="http://genenetwork.org//glossary.html#A" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
+                        <th style="background-color: #eeeeee; text-align: right;">Additive<br>Effect<a href="http://genenetwork.org//glossary.html#A" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
                         {% else %}
-                        <th>{{header}}</th>
+                        <th style="background-color: #eeeeee;">{{header}}</th>
                         {% endif %}
                     {% endfor %}
                     </tr>
@@ -145,7 +131,22 @@
                     </TR>
                 {% endfor %}
                 </tbody>
-
+                {% if trait_list|length > 20 %}
+                <tfoot>
+                    <tr>
+                        <th style="width: 30px;"></th>
+                    {% for header in header_fields %}
+                        {% if header == 'Max LRS' %}
+                        <th style="text-align: right;">Max<br>LRS</th>
+                        {% elif header == 'Additive Effect' %}
+                        <th style="text-align: right;">Additive<br>Effect<a href="http://genenetwork.org//glossary.html#A" target="_blank"><sup style="color:#f00"> ?</sup></a></th>
+                        {% else %}
+                        <th>{{header}}</th>
+                        {% endif %}
+                    {% endfor %}
+                    </tr>
+                </tfoot>
+                {% endif %}
             </table>
           </div>
         </div>
@@ -219,26 +220,6 @@
                 }
             });
 
-/*
-                serverSide: true,
-                ajax: function ( data, callback, settings ) {
-                    var out = [];
- 
-                    for ( var i=data.start, ien=data.start+data.length ; i<ien ; i++ ) {
-                        out.push( [ i+'-1', i+'-2', i+'-3', i+'-4', i+'-5' ] );
-                    }
- 
-                    setTimeout( function () {
-                        callback( {
-                            draw: data.draw,
-                            data: out,
-                            recordsTotal: 5000000,
-                            recordsFiltered: 5000000
-                        } );
-                    }, 50 );
-                },
-*/
-
             console.time("Creating table");
             {% if dataset.type == 'ProbeSet' %}
             //ZS: Need to make sort by symbol, also need to make sure blank symbol fields at the bottom and symbols starting with numbers below letters
@@ -271,7 +252,7 @@
                 "iDisplayLength": -1,
                 "bDeferRender": true,
                 "bSortClasses": false,
-                "scrollY": "700px",
+                "scrollY": true,
                 "scrollCollapse": false,
                 "paging": false
             } );
diff --git a/wqflask/wqflask/templates/show_trait_edit_data.html b/wqflask/wqflask/templates/show_trait_edit_data.html
index 228ef362..ff5f0c87 100755
--- a/wqflask/wqflask/templates/show_trait_edit_data.html
+++ b/wqflask/wqflask/templates/show_trait_edit_data.html
@@ -77,20 +77,20 @@
     {% for sample_type in sample_groups %}
         <div class="sample_group" style="width:{{ trait_table_width }}%;">
             <h3>{{ sample_type.header }}</h3>
-
+            <div id="table_container" style="background-color: #eeeeee; border: 1px solid black;">
             <table class="table-hover table-striped" id="samples_{{ sample_type.sample_group_type }}" style="float: left;">
                 <thead>
                     <tr>
-                        <th></th>
-                        <th>Index</th>
-                        <th>Sample</th>
-                        <th>Value</th>
+                        <th style="background-color: #eeeeee;"></th>
+                        <th style="background-color: #eeeeee;">Index</th>
+                        <th style="background-color: #eeeeee;">Sample</th>
+                        <th style="background-color: #eeeeee;">Value</th>
                         {% if sample_type.se_exists() %}
-                        <th>&nbsp;</th>
-                        <th>SE</th>
+                        <th style="background-color: #eeeeee;">&nbsp;</th>
+                        <th style="background-color: #eeeeee;">SE</th>
                         {% endif %}
                         {% for attribute in sample_type.attributes|sort() %}
-                        <th>
+                        <th style="background-color: #eeeeee;">
                             {{ sample_type.attributes[attribute].name }}
                         </th>
                         {% endfor %}
@@ -144,6 +144,7 @@
                     {% endfor %}
                 </tbody>
             </table>
+            </div>
         </div>
         {% endfor %}
     <!--</div>-->
diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py
index b7fcfa1d..df1f77bc 100644
--- a/wqflask/wqflask/views.py
+++ b/wqflask/wqflask/views.py
@@ -457,33 +457,47 @@ def marker_regression_page():
 
         result = template_vars.__dict__
 
-        #for item in template_vars.__dict__.keys():
-        #    print("  ---**--- {}: {}".format(type(template_vars.__dict__[item]), item))
-        
-        gn1_template_vars = marker_regression_gn1.MarkerRegression(result).__dict__
-
-        #qtl_length = len(result['js_data']['qtl_results'])
-        #print("qtl_length:", qtl_length)
-        pickled_result = pickle.dumps(result, pickle.HIGHEST_PROTOCOL)
-        #print("pickled result length:", len(pickled_result))
-        Redis.set(key, pickled_result)
-        Redis.expire(key, 1*60)
-
-    with Bench("Rendering template"):
-        if result['pair_scan'] == True:
-            img_path = result['pair_scan_filename']
-            print("img_path:", img_path)
-            initial_start_vars = request.form
-            print("initial_start_vars:", initial_start_vars)
-            imgfile = open(TEMPDIR + '/' + img_path, 'rb')
-            imgdata = imgfile.read()
-            imgB64 = imgdata.encode("base64")
-            bytesarray = array.array('B', imgB64)
-            result['pair_scan_array'] = bytesarray
-            rendered_template = render_template("pair_scan_results.html", **result)
+        if result['pair_scan']:
+            with Bench("Rendering template"):
+                img_path = result['pair_scan_filename']
+                print("img_path:", img_path)
+                initial_start_vars = request.form
+                print("initial_start_vars:", initial_start_vars)
+                imgfile = open(TEMPDIR + img_path, 'rb')
+                imgdata = imgfile.read()
+                imgB64 = imgdata.encode("base64")
+                bytesarray = array.array('B', imgB64)
+                result['pair_scan_array'] = bytesarray
+                rendered_template = render_template("pair_scan_results.html", **result)        
         else:
-            #rendered_template = render_template("marker_regression.html", **result)
-            rendered_template = render_template("marker_regression_gn1.html", **gn1_template_vars)
+            #for item in template_vars.__dict__.keys():
+            #    print("  ---**--- {}: {}".format(type(template_vars.__dict__[item]), item))
+            
+            gn1_template_vars = marker_regression_gn1.MarkerRegression(result).__dict__
+
+            pickled_result = pickle.dumps(result, pickle.HIGHEST_PROTOCOL)
+            print("pickled result length:", len(pickled_result))
+            Redis.set(key, pickled_result)
+            Redis.expire(key, 1*60)
+            
+            with Bench("Rendering template"):
+                rendered_template = render_template("marker_regression_gn1.html", **gn1_template_vars)
+
+    # with Bench("Rendering template"):
+        # if result['pair_scan'] == True:
+            # img_path = result['pair_scan_filename']
+            # print("img_path:", img_path)
+            # initial_start_vars = request.form
+            # print("initial_start_vars:", initial_start_vars)
+            # imgfile = open(TEMPDIR + '/' + img_path, 'rb')
+            # imgdata = imgfile.read()
+            # imgB64 = imgdata.encode("base64")
+            # bytesarray = array.array('B', imgB64)
+            # result['pair_scan_array'] = bytesarray
+            # rendered_template = render_template("pair_scan_results.html", **result)
+        # else:
+            # rendered_template = render_template("marker_regression.html", **result)
+            # rendered_template = render_template("marker_regression_gn1.html", **gn1_template_vars)
 
     return rendered_template