aboutsummaryrefslogtreecommitdiff
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