diff options
author | zsloan | 2016-06-07 18:15:51 +0000 |
---|---|---|
committer | zsloan | 2016-06-07 18:15:51 +0000 |
commit | f3396740863f6f64713a9c761d2bfd089785170d (patch) | |
tree | c207f1963bae8a770b4637db56a47763ff47ac5c | |
parent | 3bc5e361d135777c1c4cfc2cef5b6aca7a6fa984 (diff) | |
download | genenetwork2-f3396740863f6f64713a9c761d2bfd089785170d.tar.gz |
R/qtl pair scan now works again, though it takes a while (10-15 minutes).
Added pop-up warning user about run-time for pair scan
Fixed links to GN2 github on the index page
Fixed a couple issues with the search result page text
Changed the appearance of the trait sample data table to match other tables (darker headers, etc)
-rw-r--r-- | wqflask/wqflask/marker_regression/marker_regression.py | 11 | ||||
-rwxr-xr-x | wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js | 18 | ||||
-rwxr-xr-x | wqflask/wqflask/templates/index_page.html | 6 | ||||
-rw-r--r-- | wqflask/wqflask/templates/pair_scan_results.html | 2 | ||||
-rwxr-xr-x | wqflask/wqflask/templates/search_result_page.html | 36 | ||||
-rwxr-xr-x | wqflask/wqflask/templates/show_trait_edit_data.html | 17 | ||||
-rw-r--r-- | wqflask/wqflask/views.py | 66 |
7 files changed, 86 insertions, 70 deletions
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/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 4b4f3584..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> 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> </th> - <th>SE</th> + <th style="background-color: #eeeeee;"> </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 |