diff options
21 files changed, 520 insertions, 44 deletions
diff --git a/wqflask/base/webqtlConfig.py b/wqflask/base/webqtlConfig.py index 019d592b..e74b9ce5 100755 --- a/wqflask/base/webqtlConfig.py +++ b/wqflask/base/webqtlConfig.py @@ -49,13 +49,13 @@ GENOMEBROWSER_URL="http://ucscbrowser.genenetwork.org/cgi-bin/hgTracks?clade=mam ENSEMBLETRANSCRIPT_URL="http://useast.ensembl.org/Mus_musculus/Lucene/Details?species=Mus_musculus;idx=Transcript;end=1;q=%s" -GNROOT = "/home/danny/GeneNetwork/" # Will remove this and dependent items later +GNROOT = "/home/zas1024/gene/" # Will remove this and dependent items later SECUREDIR = GNROOT + 'secure/' COMMON_LIB = GNROOT + 'support/admin' HTMLPATH = GNROOT + 'web/' PYLMM_PATH = '/home/zas1024/plink/' SNP_PATH = '/home/zas1024/snps/' -IMGDIR = HTMLPATH +'image/' +IMGDIR = GNROOT + '/wqflask/wqflask/images/' IMAGESPATH = HTMLPATH + 'images/' UPLOADPATH = IMAGESPATH + 'upload/' TMPDIR = '/tmp/' diff --git a/wqflask/secure_server.py b/wqflask/secure_server.py index 248559f3..975c97c0 100755 --- a/wqflask/secure_server.py +++ b/wqflask/secure_server.py @@ -72,7 +72,7 @@ if __name__ == '__main__': app.run(host='0.0.0.0', - port=5003, + port=5002, use_debugger=True, threaded=True, use_reloader=True) diff --git a/wqflask/wqflask/marker_regression/marker_regression.py b/wqflask/wqflask/marker_regression/marker_regression.py index 8fb1d841..af441489 100755 --- a/wqflask/wqflask/marker_regression/marker_regression.py +++ b/wqflask/wqflask/marker_regression/marker_regression.py @@ -69,7 +69,7 @@ class MarkerRegression(object): self.maf = start_vars['maf'] # Minor allele frequency self.suggestive = "" self.significant = "" - #print("self.maf:", self.maf) + self.pair_scan = False # Initializing this since it is checked in views to determine which template to use self.dataset.group.get_markers() if self.mapping_method == "gemma": @@ -86,11 +86,8 @@ class MarkerRegression(object): self.method = start_vars['mapmethod_rqtl_geno'] self.model = start_vars['mapmodel_rqtl_geno'] - if start_vars['pair_scan'] == "true": self.pair_scan = True - else: - self.pair_scan = False print("pair scan:", self.pair_scan) print("DOING RQTL GENO") @@ -283,6 +280,10 @@ class MarkerRegression(object): r_library = ro.r["library"] # Map the library function r_c = ro.r["c"] # Map the c function 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 + dev_off = ro.r["dev.off"] # Map the device off function print(r_library("qtl")) # Load R/qtl @@ -315,13 +316,19 @@ class MarkerRegression(object): if self.pair_scan: if(r_sum(covar)[0] > 0): # If sum(covar) > 0 we have a covariate matrix - print("Using covariate"); result_data_frame = scantwo(cross_object, pheno = "the_pheno", addcovar = covar) + print("Using covariate"); result_data_frame = scantwo(cross_object, pheno = "the_pheno", addcovar = covar, model=self.model, method=self.method, n_cluster = 16) else: - print("No covariates"); result_data_frame = scantwo(cross_object, pheno = "the_pheno") + print("No covariates"); result_data_frame = scantwo(cross_object, pheno = "the_pheno", model=self.model, method=self.method, n_cluster = 16) print("Pair scan results:", result_data_frame) + + self.pair_scan_filename = webqtlUtil.genRandStr("scantwo_") + png(file=webqtlConfig.IMGDIR+self.pair_scan_filename+".png") + plot(result_data_frame) + dev_off() + + return self.process_pair_scan_results(result_data_frame) - return 0 else: if(r_sum(covar)[0] > 0): print("Using covariate"); result_data_frame = scanone(cross_object, pheno = "the_pheno", addcovar = covar, model=self.model, method=self.method) @@ -373,6 +380,11 @@ class MarkerRegression(object): pheno_as_string += ")" return pheno_as_string + def process_pair_scan_results(self, result): + results = [] + + return results + def process_rqtl_results(self, result): # TODO: how to make this a one liner and not copy the stuff in a loop qtl_results = [] diff --git a/wqflask/wqflask/static/new/javascript/css/bar_chart.css b/wqflask/wqflask/static/new/javascript/css/bar_chart.css new file mode 100755 index 00000000..78d31eee --- /dev/null +++ b/wqflask/wqflask/static/new/javascript/css/bar_chart.css @@ -0,0 +1,15 @@ +.barchart .axis path,
+.barchart .axis line {
+ fill: none;
+ stroke: #000;
+ shape-rendering: crispEdges;
+}
+
+.bar {
+ fill: steelblue;
+ shape-rendering: crispEdges;
+}
+/*
+.x.axis path {
+ display: none;
+}*/
\ No newline at end of file diff --git a/wqflask/wqflask/static/new/javascript/css/box_plot.css b/wqflask/wqflask/static/new/javascript/css/box_plot.css new file mode 100755 index 00000000..4c743b33 --- /dev/null +++ b/wqflask/wqflask/static/new/javascript/css/box_plot.css @@ -0,0 +1,20 @@ +.box {
+ font: 10px sans-serif;
+}
+
+.box line,
+.box rect,
+.box circle {
+ fill: #fff;
+ stroke: #000;
+ stroke-width: 1.5px;
+}
+
+.box .center {
+ stroke-dasharray: 3,3;
+}
+
+.box .outlier {
+ fill: none;
+ stroke: #ccc;
+}
\ No newline at end of file diff --git a/wqflask/wqflask/static/new/javascript/css/charts.css b/wqflask/wqflask/static/new/javascript/css/charts.css new file mode 100644 index 00000000..5f2d4d23 --- /dev/null +++ b/wqflask/wqflask/static/new/javascript/css/charts.css @@ -0,0 +1,28 @@ +body {
+ font-family: sans-serif;
+}
+
+svg {
+ margin-top: 10px;
+ margin-left: 50px;
+}
+
+.line {
+ stroke-width: 1;
+ fill: none;
+}
+
+text {
+ font-family: sans-serif;
+ font-size: 11pt;
+}
+
+p {
+ font-family: sans-serif;
+ font-size: 12pt;
+}
+
+p#caption {
+ margin-left: 100px;
+ width: 500px;
+}
diff --git a/wqflask/wqflask/static/new/javascript/css/corr_matrix.css b/wqflask/wqflask/static/new/javascript/css/corr_matrix.css new file mode 100755 index 00000000..f4838f77 --- /dev/null +++ b/wqflask/wqflask/static/new/javascript/css/corr_matrix.css @@ -0,0 +1,12 @@ +.vertical_label { + -webkit-transform: rotate(-90deg); + -moz-transform: rotate(-90deg); + -ms-transform: rotate(-90deg); + -o-transform: rotate(-90deg); + trasnform: rotate(-90deg); + color: #000 + font-size: 22px; + height: 50px; + width: 100px; + float: left; +} diff --git a/wqflask/wqflask/static/new/javascript/css/corr_scatter_plot.css b/wqflask/wqflask/static/new/javascript/css/corr_scatter_plot.css new file mode 100755 index 00000000..c62d4c9a --- /dev/null +++ b/wqflask/wqflask/static/new/javascript/css/corr_scatter_plot.css @@ -0,0 +1,13 @@ +.chart { + +} + +.main text { + font: 10px sans-serif; +} + +.axis line, .axis path { + shape-rendering: crispEdges; + stroke: black; + fill: none; +} diff --git a/wqflask/wqflask/static/new/javascript/css/d3-tip.min.css b/wqflask/wqflask/static/new/javascript/css/d3-tip.min.css new file mode 100644 index 00000000..3d253caf --- /dev/null +++ b/wqflask/wqflask/static/new/javascript/css/d3-tip.min.css @@ -0,0 +1 @@ +.d3-tip{line-height:1;font-weight:bold;padding:12px;background:rgba(0,0,0,0.8);color:#fff;border-radius:2px;pointer-events:none}.d3-tip:after{box-sizing:border-box;display:inline;font-size:10px;width:100%;line-height:1;color:rgba(0,0,0,0.8);position:absolute;pointer-events:none}.d3-tip.n:after{content:"\25BC";margin:-1px 0 0 0;top:100%;left:0;text-align:center}.d3-tip.e:after{content:"\25C0";margin:-4px 0 0 0;top:50%;left:-8px}.d3-tip.s:after{content:"\25B2";margin:0 0 1px 0;top:-8px;left:0;text-align:center}.d3-tip.w:after{content:"\25B6";margin:-4px 0 0 -1px;top:50%;left:100%}
\ No newline at end of file diff --git a/wqflask/wqflask/static/new/javascript/css/interval_mapping.css b/wqflask/wqflask/static/new/javascript/css/interval_mapping.css new file mode 100755 index 00000000..4a55d2e3 --- /dev/null +++ b/wqflask/wqflask/static/new/javascript/css/interval_mapping.css @@ -0,0 +1,32 @@ +.chr_interval_map .y_axis path,
+.chr_interval_map .y_axis line {
+ fill: none;
+ stroke: black;
+ shape-rendering: crispEdges;
+}
+.chr_interval_map .y_axis text {
+ font-family: sans-serif;
+ font-size: 14px;
+}
+
+.chr_interval_map .x_axis path,
+.chr_interval_map .x_axis line {
+ fill: none;
+ stroke: black;
+ shape-rendering: crispEdges;
+}
+.chr_interval_map .x_axis text {
+ text-anchor: end;
+ font-family: sans-serif;
+ font-size: 8px;
+}
+/*
+interval_map rect {
+ stroke: WhiteSmoke;
+ fill: white;
+}
+
+interval_map path {
+ stroke: steelblue;
+ stroke-width: 1;
+}*/
\ No newline at end of file diff --git a/wqflask/wqflask/static/new/javascript/css/main.css b/wqflask/wqflask/static/new/javascript/css/main.css new file mode 100755 index 00000000..017bbdb8 --- /dev/null +++ b/wqflask/wqflask/static/new/javascript/css/main.css @@ -0,0 +1,4 @@ +.security_box { + padding-left: 30px; + padding-right: 30px; +} diff --git a/wqflask/wqflask/static/new/javascript/css/marker_regression.css b/wqflask/wqflask/static/new/javascript/css/marker_regression.css new file mode 100755 index 00000000..d81b5021 --- /dev/null +++ b/wqflask/wqflask/static/new/javascript/css/marker_regression.css @@ -0,0 +1,38 @@ +.chr_manhattan_plot .y_axis path, +.chr_manhattan_plot .y_axis line { + fill: none; + stroke: black; + shape-rendering: crispEdges; +} +.chr_manhattan_plot .y_axis text { + font-family: sans-serif; + font-size: 14px; +} + +.chr_manhattan_plot .x_axis path, +.chr_manhattan_plot .x_axis line { + fill: none; + stroke: black; + shape-rendering: crispEdges; +} + +.chr_manhattan_plot .x_axis text { + text-anchor: end; + font-family: sans-serif; + font-size: 10px; +} + +rect.pane { + cursor: move; + fill: none; + pointer-events: all; +} + +/*rect { + stroke: WhiteSmoke; + fill: lightgrey; +}*/ +/*rect { + stroke: WhiteSmoke; + fill: Azure; +}*/
\ No newline at end of file diff --git a/wqflask/wqflask/static/new/javascript/css/panelutil.css b/wqflask/wqflask/static/new/javascript/css/panelutil.css new file mode 100644 index 00000000..ccd7eb01 --- /dev/null +++ b/wqflask/wqflask/static/new/javascript/css/panelutil.css @@ -0,0 +1,91 @@ +
+/* figures will always be within a div with class="qtlcharts" */
+div.qtlcharts {
+ font-family: sans-serif;
+ font-size: 11pt;
+}
+
+div.qtlcharts .title text {
+ dominant-baseline: middle;
+ fill: blue;
+ text-anchor: middle;
+}
+
+div.qtlcharts .y.axis text {
+ dominant-baseline: middle;
+ text-anchor: end;
+}
+
+div.qtlcharts .y.axis text.title {
+ text-anchor: middle;
+ fill: slateblue;
+}
+
+div.qtlcharts .x.axis text {
+ dominant-baseline: hanging;
+ text-anchor: middle;
+}
+
+div.qtlcharts .x.axis text.title {
+ fill: slateblue;
+}
+
+/*div.qtlcharts line.axis.grid {
+ fill: none;
+ stroke-width: 1;
+ pointer-events: none;
+}
+
+div.qtlcharts line.x.axis.grid {
+ stroke: rgb(200, 200, 200);
+ stroke-width: 3;
+}
+
+div.qtlcharts line.y.axis.grid {
+ stroke: white;
+}*/
+
+div.qtlcharts .extent {
+ fill: #cac;
+ opacity: 0.3;
+}
+
+div.qtlcharts circle.selected {
+ fill: hotpink;
+ opacity: 1;
+}
+
+div.qtlcharts a {
+ color: #08c;
+ text-decoration: none;
+}
+
+div.qtlcharts a:hover {
+ color: #333;
+ text-decoration: underline;
+}
+
+
+/* figure captions */
+.caption {
+ font-family: Sans-serif;
+ font-size: 11pt;
+ margin-left: 60px;
+ width: 600px;
+}
+
+
+/* d3 tip for tool tips */
+.d3-tip {
+ background: darkslateblue;
+ color: #fff;
+ stroke: none;
+ font-weight: bold;
+ font-size: 16px;
+ font-family: sans-serif;
+ padding: 5px;
+}
+
+.d3-tip.e:after {
+ color: darkslateblue;
+}
\ No newline at end of file diff --git a/wqflask/wqflask/static/new/javascript/css/parsley.css b/wqflask/wqflask/static/new/javascript/css/parsley.css new file mode 100755 index 00000000..7d244579 --- /dev/null +++ b/wqflask/wqflask/static/new/javascript/css/parsley.css @@ -0,0 +1,20 @@ +/* Adapted from parsleyjs.org/documentation.html#parsleyclasses */ + +input.parsley-success, textarea.parsley-success { + color: #468847 !important; + background-color: #DFF0D8 !important; + border: 1px solid #D6E9C6 !important; +} +input.parsley-error, textarea.parsley-error { + color: #B94A48 !important; + background-color: #F2DEDE !important; + border: 1px solid #EED3D7 !important; +} +ul.parsley-error-list { + font-size: 11px; + margin: 2px; + list-style-type:none; +} +ul.parsley-error-list li { + line-height: 11px; +}
\ No newline at end of file diff --git a/wqflask/wqflask/static/new/javascript/css/scatter-matrix.css b/wqflask/wqflask/static/new/javascript/css/scatter-matrix.css new file mode 100644 index 00000000..147903be --- /dev/null +++ b/wqflask/wqflask/static/new/javascript/css/scatter-matrix.css @@ -0,0 +1,40 @@ +#scatter-matrix { font-size: 14px; } + +.axis { shape-rendering: crispEdges; } +.axis line { stroke: #ddd; stroke-width: 1px; } +.axis path { display: none; } +.axis text { font-size: 0.8em; } + +rect.extent { fill: #000; fill-opacity: .125; stroke: #fff; } +rect.frame { fill: #fff; fill-opacity: .7; stroke: #aaa; } + +circle { fill: #ccc; fill-opacity: .5; } + +.legend circle { fill-opacity: 1; } +.legend text { font-size: 18px; font-style: oblique; } + +.cell text { pointer-events: none; } + +.color-0 { fill: #800; } +.color-1 { fill: #080; } +.color-2 { fill: #008; } +.color-3 { fill: #440; } +.color-4 { fill: #044; } +.color-5 { fill: #404; } +.color-6 { fill: #400; } +.color-7 { fill: #040; } +.color-8 { fill: #004; } +.color-9 { fill: #cc0; } +.color-10 { fill: #0cc; } +.color-11 { fill: #c0c; } +.color-12 { fill: #880; } +.color-13 { fill: #088; } +.color-14 { fill: #808; } +.color-15 { fill: #c00; } +.color-16 { fill: #0c0; } +.color-17 { fill: #00c; } + +.scatter-matrix-filter-control ul { list-style: none; padding-left: 10px; } +.scatter-matrix-variable-control ul { list-style: none; padding-left: 10px; } +.scatter-matrix-drill-control ul { list-style: none; padding-left: 10px; } + diff --git a/wqflask/wqflask/static/new/javascript/css/show_trait.css b/wqflask/wqflask/static/new/javascript/css/show_trait.css new file mode 100644 index 00000000..9fc82a85 --- /dev/null +++ b/wqflask/wqflask/static/new/javascript/css/show_trait.css @@ -0,0 +1,7 @@ +tr .outlier { + background-color: #ffff99; +} + +#bar_chart_container { + overflow-x:scroll; +}
\ No newline at end of file diff --git a/wqflask/wqflask/static/new/javascript/css/table.css b/wqflask/wqflask/static/new/javascript/css/table.css new file mode 100755 index 00000000..1910ef88 --- /dev/null +++ b/wqflask/wqflask/static/new/javascript/css/table.css @@ -0,0 +1,36 @@ +/* Adapted from http://coding.smashingmagazine.com/2008/08/13/top-10-css-table-designs/ */ + +.one-column-emphasis +{ + font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; + font-size: 12px; + line-height: 1.6em; + margin: 45px; + width: 480px; + text-align: left; + border-collapse: collapse; +} +.one-column-emphasis th +{ + font-size: 14px; + font-weight: normal; + padding: 12px 15px; + color: #039; +} +.one-column-emphasis td +{ + padding: 10px 15px; + color: #669; + border-top: 1px solid #e8edff; +} +.oce-first +{ + background: #d0dafd; + border-right: 10px solid transparent; + border-left: 10px solid transparent; +} +.one-column-emphasis tr:hover td +{ + color: #339; + background: #eff2ff; +} diff --git a/wqflask/wqflask/templates/pair_scan_results.html b/wqflask/wqflask/templates/pair_scan_results.html new file mode 100644 index 00000000..a0041e11 --- /dev/null +++ b/wqflask/wqflask/templates/pair_scan_results.html @@ -0,0 +1,91 @@ +{% extends "base.html" %} +{% block title %}Interval Mapping{% endblock %} +{% block css %} +<!-- <link rel="stylesheet" type="text/css" href="/static/new/css/interval_mapping.css" />--> + <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 rel="stylesheet" type="text/css" href="/static/new/css/d3-tip.min.css" /> + <link rel="stylesheet" type="text/css" href="/static/new/css/panelutil.css" /> +{% endblock %} +{% block content %} <!-- Start of body --> + + {{ header("Mapping", + '{}: {}'.format(this_trait.name, this_trait.description_fmt)) }} + + <div class="container"> + <div> + <h2> + Pair Scan + </h2> + </div> + <div id="chart_container"> + <div class="pair_scan_figure" id="pair_scan_figure"> + <img src="/images/{{ pair_scan_filename }}.png"> + </div> + </div> + <div> + <h2> + Results + </h2> + </div> + </div> + + <!-- End of body --> + +{% endblock %} + +{% block js %} + <script> + js_data = {{ js_data | safe }} + </script> + + <!--[if lt IE 9]> +<!-- <script language="javascript" type="text/javascript" src="/static/packages/jqplot/excanvas.js"></script>--> + <![endif]--> + <script language="javascript" type="text/javascript" src="http://d3js.org/d3.v3.min.js"></script> + <script language="javascript" type="text/javascript" src="/static/new/js_external/d3-tip.min.js"></script> +<!-- <script language="javascript" type="text/javascript" src="/static/new/packages/jsPDF/jspdf.js"></script> + <script language="javascript" type="text/javascript" src="/static/new/packages/jsPDF/libs/FileSaver.js/FileSaver.js"></script> + <script language="javascript" type="text/javascript" src="/static/new/packages/jsPDF/libs/Blob.js/BlobBuilder.js"></script> + <script language="javascript" type="text/javascript" src="/static/new/packages/jsPDF/jspdf.plugin.standard_fonts_metrics.js"></script> + <script language="javascript" type="text/javascript" src="/static/new/packages/jsPDF/jspdf.plugin.from_html.js"></script>--> + <script language="javascript" type="text/javascript" src="/static/new/javascript/panelutil.js"></script> + <script language="javascript" type="text/javascript" src="/static/new/javascript/chr_lod_chart.js"></script> +<!-- <script language="javascript" type="text/javascript" src="/static/new/javascript/manhattan_plot.js"></script>--> + <script language="javascript" type="text/javascript" src="/static/new/javascript/lod_chart.js"></script> + <script language="javascript" type="text/javascript" src="/static/new/javascript/create_lodchart.js"></script> + <script language="javascript" type="text/javascript" src="/static/new/packages/DataTables/js/jquery.js"></script> + <script language="javascript" type="text/javascript" src="/static/new/packages/DataTables/js/jquery.dataTables.min.js"></script> + <script language="javascript" type="text/javascript" src="/static/new/packages/DataTables/js/dataTables.scientific.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="/static/packages/underscore/underscore-min.js"></script> + + <script type="text/javascript" charset="utf-8"> + $(document).ready( function () { + console.time("Creating table"); + $('#qtl_results').dataTable( { + //"sDom": "<<'span3'l><'span3'T><'span4'f>'row-fluid'r>t<'row-fluid'<'span6'i><'span6'p>>", + "sDom": "lTftipr", + "oTableTools": { + "aButtons": [ + "copy", + "print", + { + "sExtends": "collection", + "sButtonText": 'Save <span class="caret" />', + "aButtons": [ "csv", "xls", "pdf" ] + } + ], + "sSwfPath": "/static/packages/TableTools/media/swf/copy_csv_xls_pdf.swf" + }, + "iDisplayLength": 50, + "bLengthChange": true, + "bDeferRender": true, + "bSortClasses": false + } ); + console.timeEnd("Creating table"); + }); + </script> +{% endblock %}
\ No newline at end of file diff --git a/wqflask/wqflask/templates/show_trait_calculate_correlations.html b/wqflask/wqflask/templates/show_trait_calculate_correlations.html index 63bbd7b6..f02d1705 100755 --- a/wqflask/wqflask/templates/show_trait_calculate_correlations.html +++ b/wqflask/wqflask/templates/show_trait_calculate_correlations.html @@ -2,7 +2,7 @@ <div style="padding: 20px" class="form-horizontal"> <div class="form-group"> - <label for="corr_method" class="col-xs-1 control-label">Method</label> + <label for="corr_type" class="col-xs-1 control-label">Method</label> <div class="col-xs-2 controls"> <select name="corr_type" class="form-control"> <option value="sample">Sample r</option> diff --git a/wqflask/wqflask/templates/show_trait_mapping_tools.html b/wqflask/wqflask/templates/show_trait_mapping_tools.html index 7794fab5..426a5c5d 100755 --- a/wqflask/wqflask/templates/show_trait_mapping_tools.html +++ b/wqflask/wqflask/templates/show_trait_mapping_tools.html @@ -140,63 +140,68 @@ <label for="control_for" class="col-xs-2 control-label">Control for</label> <div style="margin-left: 20px;" class="col-xs-4 controls"> {% if dataset.type == 'ProbeSet' and this_trait.locus_chr != "" %} - <input name="control_rqtl_geno" value="{{ nearest_marker1+","+nearest_marker2 }}" type="text" /> + <input name="control_rqtl_geno" value="{{ nearest_marker1+","+nearest_marker2 }}" type="text" style="width: 160px;" class="form-control" /> {% else %} - <input name="control_rqtl_geno" value="" type="text" /> + <input name="control_rqtl_geno" value="" type="text" class="form-control" /> {% endif %} </div> </div> <div class="mapping_method_fields form-group"> - <label style="text-align:left;" class="col-xs-12 control-label">Manhattan Plot</label> + <label for="mapmethod_rqtl_geno" style="text-align:left;" class="col-xs-2 control-label">Method</label> + <div class="col-xs-4 controls"> + <select name="mapmethod_rqtl_geno" class="form-control"> + <option value="em">em</option> + <option value="imp">imp</option> + <option value="hk">hk</option> + <option value="ehk">ehk</option> + <option value="mr">mr</option> + <option value="mr-imp">mr-imp</option> + <option value="mr-argmax">mr-argmax</option> + </select> + </div> + </div> + + <div class="mapping_method_fields form-group"> + <label for="mapmodel_rqtl_geno" style="text-align:left;" class="col-xs-2 control-label">Model</label> + <div class="col-xs-4 controls"> + <select name="mapmodel_rqtl_geno" class="form-control"> + <option value="normal">normal</option> + <option value="binary">binary</option> + <option value="2part">2part</option> + <option value="np">np</option> + </select> + </div> + </div> + + <div class="mapping_method_fields form-group"> + <label style="text-align:left;" class="col-xs-12 control-label">Pair Scan</label> <div class="col-xs-12 controls"> <label class="radio-inline"> - <input type="radio" name="manhattan_plot_rqtl" value="true"> + <input type="radio" name="pair_scan" value="true"> Yes </label> <label class="radio-inline"> - <input type="radio" name="manhattan_plot_rqtl" value="false" checked=""> + <input type="radio" name="pair_scan" value="false" checked=""> No </label> </div> </div> <div class="mapping_method_fields form-group"> - <label style="text-align:left;" class="col-xs-12 control-label">Method</label> - <select name="mapmethod_rqtl_geno"> - <option value="em">em</option> - <option value="imp">imp</option> - <option value="hk">hk</option> - <option value="ehk">ehk</option> - <option value="mr">mr</option> - <option value="mr-imp">mr-imp</option> - <option value="mr-argmax">mr-argmax</option> - </select> - </div> - - <div class="mapping_method_fields form-group"> - <label style="text-align:left;" class="col-xs-12 control-label">Model</label> - <select name="mapmodel_rqtl_geno"> - <option value="normal">normal</option> - <option value="binary">binary</option> - <option value="2part">2part</option> - <option value="np">np</option> - </select> - </div> - - <div class="mapping_method_fields form-group"> - <label style="text-align:left;" class="col-xs-12 control-label">Pair Scan</label> + <label style="text-align:left;" class="col-xs-12 control-label">Manhattan Plot</label> <div class="col-xs-12 controls"> <label class="radio-inline"> - <input type="radio" name="pair_scan" value="true"> + <input type="radio" name="manhattan_plot_rqtl" value="true"> Yes </label> <label class="radio-inline"> - <input type="radio" name="pair_scan" value="false" checked=""> + <input type="radio" name="manhattan_plot_rqtl" value="false" checked=""> No </label> </div> </div> + <div class="form-group"> <div style="padding-left:15px;" class="controls"> <button id="rqtl_geno_compute" class="btn submit_special btn-primary" data-url="/marker_regression" title="Compute Marker Regression"> diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py index bac553d7..4b7bd639 100755 --- a/wqflask/wqflask/views.py +++ b/wqflask/wqflask/views.py @@ -82,6 +82,14 @@ def index_page(): #print("[orange] ds:", ds.datasets) return render_template("index_page.html") + +@app.route("/tmp") +def tmp_page(): + print("In tmp_page") + initial_start_vars = request.form + print("initial_start_vars:", initial_start_vars) + + @app.route("/data_sharing") def data_sharing_page(): print("In data_sharing") @@ -296,7 +304,7 @@ def marker_regression_page(): if key in wanted or key.startswith(('value:')): start_vars[key] = value - version = "v3" + version = "v4" key = "marker_regression:{}:".format(version) + json.dumps(start_vars, sort_keys=True) print("key is:", pf(key)) with Bench("Loading cache"): @@ -335,7 +343,10 @@ def marker_regression_page(): Redis.expire(key, 1*60) with Bench("Rendering template"): - rendered_template = render_template("marker_regression.html", **result) + if result['pair_scan'] == True: + rendered_template = render_template("pair_scan_results.html", **result) + else: + rendered_template = render_template("marker_regression.html", **result) return rendered_template |