about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--wqflask/other_config/nginx_conf/gn2-lei.conf (renamed from wqflask/other_config/nginx_conf/gn2_lei.conf)2
-rw-r--r--wqflask/wqflask/correlation/corr_scatter_plot.py1
-rw-r--r--wqflask/wqflask/static/new/css/corr_scatter_plot2.css19
-rw-r--r--wqflask/wqflask/static/new/javascript/draw_corr_scatterplot-2.js74
-rw-r--r--wqflask/wqflask/static/new/javascript/scatterplot.js2
-rw-r--r--wqflask/wqflask/templates/corr_scatterplot.html57
-rw-r--r--wqflask/wqflask/views.py34
7 files changed, 178 insertions, 11 deletions
diff --git a/wqflask/other_config/nginx_conf/gn2_lei.conf b/wqflask/other_config/nginx_conf/gn2-lei.conf
index 6589d298..893ad435 100644
--- a/wqflask/other_config/nginx_conf/gn2_lei.conf
+++ b/wqflask/other_config/nginx_conf/gn2-lei.conf
@@ -2,7 +2,7 @@ server {
     # Modeled after http://flask.pocoo.org/docs/deploying/wsgi-standalone/
     listen 80;
 
-    server_name gn2_lei.genenetwork.org;
+    server_name gn2-lei.genenetwork.org;
 
     access_log  /var/log/nginx/lei_access.log;
     error_log  /var/log/nginx/lei_error.log;
diff --git a/wqflask/wqflask/correlation/corr_scatter_plot.py b/wqflask/wqflask/correlation/corr_scatter_plot.py
index 96afef1e..6a92c501 100644
--- a/wqflask/wqflask/correlation/corr_scatter_plot.py
+++ b/wqflask/wqflask/correlation/corr_scatter_plot.py
@@ -89,3 +89,4 @@ class CorrScatterPlot(object):
             line_color = line_color,
             line_width = line_width
         )
+        self.jsdata = self.js_data
diff --git a/wqflask/wqflask/static/new/css/corr_scatter_plot2.css b/wqflask/wqflask/static/new/css/corr_scatter_plot2.css
new file mode 100644
index 00000000..92e777c2
--- /dev/null
+++ b/wqflask/wqflask/static/new/css/corr_scatter_plot2.css
@@ -0,0 +1,19 @@
+.nvd3 .nv-axis.nv-x text {
+	font-size: 16px;
+	font-weight: normal;
+	fill: black;
+}
+
+.nvd3 .nv-axis.nv-y text {
+	font-size: 16px;
+	font-weight: normal;
+	fill: black;
+}
+
+.nv-y .tick.zero line {
+	stroke: black;
+}
+
+.nv-y .nv-axis g path.domain {
+	stroke: black;
+}
diff --git a/wqflask/wqflask/static/new/javascript/draw_corr_scatterplot-2.js b/wqflask/wqflask/static/new/javascript/draw_corr_scatterplot-2.js
new file mode 100644
index 00000000..7a5a86bd
--- /dev/null
+++ b/wqflask/wqflask/static/new/javascript/draw_corr_scatterplot-2.js
@@ -0,0 +1,74 @@
+var chart;
+
+nv.addGraph(function() {
+	//
+	chart = nv.models.scatterChart();
+	//
+	chart.showLegend(false);
+	chart.duration(300);
+	chart.color(d3.scale.category10().range());
+	chart.pointRange([200,0]);
+	//
+	// chart.showDistX(true);
+	// chart.showDistY(true);
+	chart.xAxis.tickFormat(d3.format('.02f'));
+	chart.yAxis.tickFormat(d3.format('.02f'));
+	// chart.showXAxis(false);
+	// chart.showYAxis(false);
+	chart.xAxis.axisLabel(js_data.trait_1);
+	chart.yAxis.axisLabel(js_data.trait_2);
+	//
+	xmin = d3.min(js_data.data[0]);
+	xmax = d3.max(js_data.data[0]);
+	xrange = xmax - xmin;
+	ymin = d3.min(js_data.data[1]);
+	ymax = d3.max(js_data.data[1]);
+	yrange = ymax - ymin;
+	chart.xDomain([xmin - xrange/10, xmax + xrange/10]);
+	chart.yDomain([ymin - yrange/10, ymax + yrange/10]);
+	//
+	d3.select('#scatterplot2 svg').datum(nv.log(getdata())).call(chart);
+	nv.utils.windowResize(chart.update);
+	return chart;
+});
+
+function getdata () {
+	var data = [];
+	data.push({
+			values: [],
+			slope: js_data.slope,
+			intercept: js_data.intercept
+		});
+	for (j = 0; j < js_data.data[0].length; j++) {
+		data[0].values.push({
+			x: js_data.data[0][j],
+			y: js_data.data[1][j],
+			size: 10,
+			shape: 'circle'
+		});
+	}
+	return data;
+}
+	
+function randomData(groups, points) {
+	var data = [],
+		shapes = ['circle'],
+		random = d3.random.normal();
+	for (i = 0; i < groups; i++) {
+		data.push({
+			key: 'Group ' + i,
+			values: [],
+			slope: Math.random() - .01,
+			intercept: Math.random() - .5
+		});
+		for (j = 0; j < points; j++) {
+			data[i].values.push({
+				x: random(),
+				y: random(),
+				size: Math.random(),
+				shape: shapes[j % shapes.length]
+			});
+		}
+	}
+	return data;
+}
diff --git a/wqflask/wqflask/static/new/javascript/scatterplot.js b/wqflask/wqflask/static/new/javascript/scatterplot.js
index de7b7906..d7f2a4a5 100644
--- a/wqflask/wqflask/static/new/javascript/scatterplot.js
+++ b/wqflask/wqflask/static/new/javascript/scatterplot.js
@@ -166,7 +166,7 @@ scatterplot = function() {
       maxx = xlim[1];
       yticks = yticks != null ? yticks : ys.ticks(nyticks);
       xticks = xticks != null ? xticks : xs.ticks(nxticks);
-      titlegrp = g.append("g").attr("class", "title").append("text").attr("x", margin.left + width / 2).attr("y", margin.top - titlepos).style("fill", "black").style("font-size", "28px").text(title);
+      titlegrp = g.append("g").attr("class", "title").append("text").attr("x", margin.left + width / 2).attr("y", margin.top - titlepos).style("fill", "black").style("font-size", "24px").text(title);
       xaxis = g.append("g").attr("class", "x axis");
       xaxis.selectAll("empty").data(xticks).enter().append("line").attr("x1", function(d) {
         return xscale(d);
diff --git a/wqflask/wqflask/templates/corr_scatterplot.html b/wqflask/wqflask/templates/corr_scatterplot.html
index 810f4ca3..4464025e 100644
--- a/wqflask/wqflask/templates/corr_scatterplot.html
+++ b/wqflask/wqflask/templates/corr_scatterplot.html
@@ -7,6 +7,8 @@
     <link rel="stylesheet" type="text/css" href="/static/packages/TableTools/media/css/TableTools.css" />

     <link rel="stylesheet" type="text/css" href="/static/new/css/panelutil.css" />

     <link rel="stylesheet" type="text/css" href="/static/new/css/d3-tip.min.css" />

+	<link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/nvd3/1.8.5/nv.d3.min.css">

+	<link rel="stylesheet" type="text/css" href="/static/new/css/corr_scatter_plot2.css" />

 {% endblock %}

 

 {% block content %}

@@ -47,10 +49,48 @@
     </tr>

 </table>

 </form>-->

-<div class="container">

-<div id="chart1" class="qtlcharts"></div>

+<div class="container-fluid">

 

-<div style="margin-left: 80px;">

+<h2>Correlation Scatterplot</h2>

+

+<table class="table">

+	<tbody>

+		<tr><th class="text-right">num overlap</th>	<td>{{jsdata.num_overlap}}</td></tr>

+		<tr><th class="text-right">slope</th>		<td>{{jsdata.slope}}</td></tr>

+		<tr><th class="text-right">intercept</th>	<td>{{jsdata.intercept}}</td></tr>

+		<tr><th class="text-right">r value</th>		<td>{{jsdata.r_value}}</td></tr>

+		<tr><th class="text-right">p value</th>		<td>{{jsdata.p_value}}</td></tr>

+	</tbody>

+</table>

+

+<!--

+<table class="table">

+	<tr>

+		<td>Correlation Line Width</td>

+		<td><input type="text" name="lastname" value="2" style="width: 44px;"> px</td>

+	</tr>

+	<tr>

+		<td>Correlation Line Color</td>

+		<td><input type="color" name="favcolor" value="#000000"></td>

+	</tr>

+	<tr>

+		<td>Dot Stroke</td>

+		<td><input type="text" name="lastname" value="5" style="width: 44px;"> px</td>

+	</tr>

+	<tr>

+		<td>Dot Color</td>

+		<td><input type="color" name="favcolor" value="#ff0000"></td>

+	</tr>

+</table>

+-->

+

+<div id="scatterplot2">

+	<svg style="width: 1000px; height: 800px;"></svg>

+</div>

+

+<br>

+

+<div style="margin-left: 75px;">

 

     {% if trait_1.dataset.type == "ProbeSet" %}

 		<div>

@@ -103,17 +143,18 @@
     {% endif %}

 	

 </div>

+

 {% endblock %}

 

 {% block js %}

     <script>

-       js_data = {{ js_data | safe }}

+       js_data = {{ js_data | safe }};

     </script>

-    <script language="javascript" type="text/javascript" src="http://d3js.org/d3.v3.min.js"></script>

+    <script language="javascript" type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/d3/3.5.17/d3.min.js"></script>

+	<script language="javascript" type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/nvd3/1.8.5/nv.d3.min.js"></script>

     <script language="javascript" type="text/javascript" src="/static/packages/underscore/underscore-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/javascript/colorbrewer.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/scatterplot.js"></script>

-    <script language="javascript" type="text/javascript" src="/static/new/javascript/draw_corr_scatterplot.js"></script>

-{% endblock %}
\ No newline at end of file
+    <script language="javascript" type="text/javascript" src="/static/new/javascript/draw_corr_scatterplot-2.js"></script>

+{% endblock %}

diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py
index 3882e60a..44ca8de8 100644
--- a/wqflask/wqflask/views.py
+++ b/wqflask/wqflask/views.py
@@ -71,6 +71,8 @@ import werkzeug
 import utility.logger
 logger = utility.logger.getLogger(__name__ )
 
+
+
 @app.before_request
 def connect_db():
     db = getattr(g, '_database', None)
@@ -120,6 +122,7 @@ def handle_bad_request(e):
 @app.route("/")
 def index_page():
     logger.info("Sending index_page")
+    logger.error(request.url)
     params = request.args
     if 'import_collections' in params:
         import_collections = params['import_collections']
@@ -137,6 +140,7 @@ def index_page():
 def tmp_page(img_path):
     logger.info("In tmp_page")
     logger.info("img_path:", img_path)
+    logger.error(request.url)
     initial_start_vars = request.form
     logger.info("initial_start_vars:", initial_start_vars)
     imgfile = open(GENERATED_IMAGE_DIR + img_path, 'rb')
@@ -169,6 +173,7 @@ def bd_files(filename):
 @app.route("/search", methods=('GET',))
 def search_page():
     logger.info("in search_page")
+    logger.error(request.url)
     if 'info_database' in request.args:
         logger.info("Going to sharing_info_page")
         template_vars = sharing_info_page()
@@ -207,6 +212,7 @@ def search_page():
 
 @app.route("/gsearch", methods=('GET',))
 def gsearchact():
+    logger.error(request.url)
     result = gsearch.GSearch(request.args).__dict__
     type = request.args['type']
     if type == "gene":
@@ -217,6 +223,7 @@ def gsearchact():
 @app.route("/gsearch_updating", methods=('POST',))
 def gsearch_updating():
     logger.info("REQUEST ARGS:", request.values)
+    logger.error(request.url)
     result = update_search_results.GSearch(request.args).__dict__
     return result['results']
     # type = request.args['type']
@@ -227,26 +234,31 @@ def gsearch_updating():
 
 @app.route("/docedit")
 def docedit():
+    logger.error(request.url)
     doc = docs.Docs(request.args['entry'])
     return render_template("docedit.html", **doc.__dict__)
 
 @app.route('/generated/<filename>')
 def generated_file(filename):
+    logger.error(request.url)
     return send_from_directory(GENERATED_IMAGE_DIR,filename)
 
 @app.route("/help")
 def help():
+    logger.error(request.url)
     doc = docs.Docs("help")
     return render_template("docs.html", **doc.__dict__)
 
 @app.route("/wgcna_setup", methods=('POST',))
 def wcgna_setup():
     logger.info("In wgcna, request.form is:", request.form)             # We are going to get additional user input for the analysis
+    logger.error(request.url)
     return render_template("wgcna_setup.html", **request.form)          # Display them using the template
 
 @app.route("/wgcna_results", methods=('POST',))
 def wcgna_results():
     logger.info("In wgcna, request.form is:", request.form)
+    logger.error(request.url)
     wgcna = wgcna_analysis.WGCNA()                                # Start R, load the package and pointers and create the analysis
     wgcnaA = wgcna.run_analysis(request.form)                     # Start the analysis, a wgcnaA object should be a separate long running thread
     result = wgcna.process_results(wgcnaA)                        # After the analysis is finished store the result
@@ -255,11 +267,13 @@ def wcgna_results():
 @app.route("/ctl_setup", methods=('POST',))
 def ctl_setup():
     logger.info("In ctl, request.form is:", request.form)             # We are going to get additional user input for the analysis
+    logger.error(request.url)
     return render_template("ctl_setup.html", **request.form)          # Display them using the template
 
 @app.route("/ctl_results", methods=('POST',))
 def ctl_results():
     logger.info("In ctl, request.form is:", request.form)
+    logger.error(request.url)
     ctl = ctl_analysis.CTL()                                  # Start R, load the package and pointers and create the analysis
     ctlA = ctl.run_analysis(request.form)                     # Start the analysis, a ctlA object should be a separate long running thread
     result = ctl.process_results(ctlA)                        # After the analysis is finished store the result
@@ -297,11 +311,13 @@ def environments():
 
 @app.route("/submit_trait")
 def submit_trait_form():
+    logger.error(request.url)
     species_and_groups = get_species_groups()
     return render_template("submit_trait.html", **{'species_and_groups' : species_and_groups, 'gn_server_url' : GN_SERVER_URL, 'version' : GN_VERSION})
 
 @app.route("/create_temp_trait", methods=('POST',))
 def create_temp_trait():
+    logger.error(request.url)
     print("REQUEST.FORM:", request.form)
     #template_vars = submit_trait.SubmitTrait(request.form)
 
@@ -314,6 +330,7 @@ def export_trait_excel():
     """Excel file consisting of the sample data from the trait data and analysis page"""
     logger.info("In export_trait_excel")
     logger.info("request.form:", request.form)
+    logger.error(request.url)
     sample_data = export_trait_data.export_sample_table(request.form)
 
     logger.info("sample_data - type: %s -- size: %s" % (type(sample_data), len(sample_data)))
@@ -339,6 +356,7 @@ def export_trait_csv():
     """CSV file consisting of the sample data from the trait data and analysis page"""
     logger.info("In export_trait_csv")
     logger.info("request.form:", request.form)
+    logger.error(request.url)
     sample_data = export_trait_data.export_sample_table(request.form)
 
     logger.info("sample_data - type: %s -- size: %s" % (type(sample_data), len(sample_data)))
@@ -359,6 +377,7 @@ def export_traits_csv():
     """CSV file consisting of the traits from the search result page"""
     logger.info("In export_traits_csv")
     logger.info("request.form:", request.form)
+    logger.error(request.url)
     csv_data = export_traits.export_search_results_csv(request.form)
 
     return Response(csv_data,
@@ -368,6 +387,7 @@ def export_traits_csv():
 @app.route('/export_perm_data', methods=('POST',))
 def export_perm_data():
     """CSV file consisting of the permutation data for the mapping results"""
+    logger.error(request.url)
     num_perm = float(request.form['num_perm'])
     perm_data = json.loads(request.form['perm_results'])
 
@@ -390,6 +410,7 @@ def export_perm_data():
 
 @app.route("/show_temp_trait", methods=('POST',))
 def show_temp_trait_page():
+    logger.error(request.url)
     template_vars = show_trait.ShowTrait(request.form)
     #logger.info("js_data before dump:", template_vars.js_data)
     template_vars.js_data = json.dumps(template_vars.js_data,
@@ -404,6 +425,7 @@ def show_temp_trait_page():
 
 @app.route("/show_trait")
 def show_trait_page():
+    logger.error(request.url)
     template_vars = show_trait.ShowTrait(request.args)
     #logger.info("js_data before dump:", template_vars.js_data)
     template_vars.js_data = json.dumps(template_vars.js_data,
@@ -419,6 +441,7 @@ def show_trait_page():
 @app.route("/heatmap", methods=('POST',))
 def heatmap_page():
     logger.info("In heatmap, request.form is:", pf(request.form))
+    logger.error(request.url)
 
     start_vars = request.form
     temp_uuid = uuid.uuid4()
@@ -468,6 +491,7 @@ def mapping_results_container_page():
 
 @app.route("/loading", methods=('POST',))
 def loading_page():
+    logger.error(request.url)
     initial_start_vars = request.form
     logger.debug("Marker regression called with initial_start_vars:", initial_start_vars.items())
     #temp_uuid = initial_start_vars['temp_uuid']
@@ -524,6 +548,7 @@ def loading_page():
 def marker_regression_page():
     initial_start_vars = request.form
     logger.debug("Marker regression called with initial_start_vars:", initial_start_vars.items())
+    logger.error(request.url)
     temp_uuid = initial_start_vars['temp_uuid']
     wanted = (
         'trait_id',
@@ -645,6 +670,7 @@ def marker_regression_page():
 @app.route("/export", methods = ('POST',))
 def export():
     logger.info("request.form:", request.form)
+    logger.error(request.url)
     svg_xml = request.form.get("data", "Invalid data")
     filename = request.form.get("filename", "manhattan_plot_snp")
     response = Response(svg_xml, mimetype="image/svg+xml")
@@ -655,6 +681,7 @@ def export():
 def export_pdf():
     import cairosvg
     logger.info("request.form:", request.form)
+    logger.error(request.url)
     svg_xml = request.form.get("data", "Invalid data")
     logger.info("svg_xml:", svg_xml)
     filename = request.form.get("filename", "interval_map_pdf")
@@ -667,7 +694,7 @@ def export_pdf():
 @app.route("/network_graph", methods=('POST',))
 def network_graph_page():
     logger.info("In network_graph, request.form is:", pf(request.form))
-
+    logger.error(request.url)
     start_vars = request.form
     traits = [trait.strip() for trait in start_vars['trait_list'].split(',')]
     if traits[0] != "":
@@ -683,6 +710,7 @@ def network_graph_page():
 @app.route("/corr_compute", methods=('POST',))
 def corr_compute_page():
     logger.info("In corr_compute, request.form is:", pf(request.form))
+    logger.error(request.url)
     #fd = webqtlFormData.webqtlFormData(request.form)
     template_vars = show_corr_results.CorrelationResults(request.form)
     return render_template("correlation_page.html", **template_vars.__dict__)
@@ -690,6 +718,7 @@ def corr_compute_page():
 @app.route("/corr_matrix", methods=('POST',))
 def corr_matrix_page():
     logger.info("In corr_matrix, request.form is:", pf(request.form))
+    logger.error(request.url)
 
     start_vars = request.form
     traits = [trait.strip() for trait in start_vars['trait_list'].split(',')]
@@ -705,6 +734,7 @@ def corr_matrix_page():
 
 @app.route("/corr_scatter_plot")
 def corr_scatter_plot_page():
+    logger.error(request.url)
     template_vars = corr_scatter_plot.CorrScatterPlot(request.args)
     template_vars.js_data = json.dumps(template_vars.js_data,
                                        default=json_default_handler,
@@ -716,6 +746,7 @@ def corr_scatter_plot_page():
 def sharing_info_page():
     """Info page displayed when the user clicks the "Info" button next to the dataset selection"""
     logger.info("In sharing_info_page")
+    logger.error(request.url)
     fd = webqtlFormData.webqtlFormData(request.args)
     template_vars = SharingInfoPage.SharingInfoPage(fd)
     return template_vars
@@ -723,6 +754,7 @@ def sharing_info_page():
 # Take this out or secure it before putting into production
 @app.route("/get_temp_data")
 def get_temp_data():
+    logger.error(request.url)
     temp_uuid = request.args['key']
     return flask.jsonify(temp_data.TempData(temp_uuid).get_all())