aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzsloan2024-09-16 18:49:34 +0000
committerzsloan2024-09-17 14:38:13 +0000
commit805b781e6eabfb42cbecb319fffc8ade855de914 (patch)
tree1022428f3e8e4b40ae45bf1307e341aee16d5366
parentfaa9a6329283031218fbd49d1b1491f1874a0a3f (diff)
downloadgenenetwork2-805b781e6eabfb42cbecb319fffc8ade855de914.tar.gz
Handle Effect Size plots on the scatterplot page
Added a new parameter to the scatterplot page ('effect') that causes the figures to be drawn differently. For example: - The plot width is different - Spearman Rank plot isn't displayed/generated - The number of X-axis ticks is explicitly set to 3, with no decimal places
-rw-r--r--gn2/wqflask/correlation/corr_scatter_plot.py3
-rw-r--r--gn2/wqflask/static/new/javascript/draw_corr_scatterplot.js19
-rw-r--r--gn2/wqflask/templates/corr_scatterplot.html177
-rw-r--r--gn2/wqflask/templates/mapping_results.html2
4 files changed, 106 insertions, 95 deletions
diff --git a/gn2/wqflask/correlation/corr_scatter_plot.py b/gn2/wqflask/correlation/corr_scatter_plot.py
index ab130cc5..79905cc2 100644
--- a/gn2/wqflask/correlation/corr_scatter_plot.py
+++ b/gn2/wqflask/correlation/corr_scatter_plot.py
@@ -45,6 +45,8 @@ class CorrScatterPlot:
if self.dataset_1.group.f1list != None:
primary_samples += self.dataset_1.group.f1list
+ self.effect_plot = True if 'effect' in params else False
+
if 'dataid' in params:
trait_data_dict = json.loads(Redis.get(params['dataid']))
trait_data = {key:webqtlCaseData.webqtlCaseData(key, float(trait_data_dict[key])) for (key, value) in trait_data_dict.items() if trait_data_dict[key] != "x"}
@@ -116,6 +118,7 @@ class CorrScatterPlot:
self.js_data = dict(
data=self.data,
+ effect_plot=self.effect_plot,
rdata=self.rdata,
indIDs=self.indIDs,
trait_1=self.trait_1.dataset.name + ": " + str(self.trait_1.name),
diff --git a/gn2/wqflask/static/new/javascript/draw_corr_scatterplot.js b/gn2/wqflask/static/new/javascript/draw_corr_scatterplot.js
index f883c0d9..9a6d317d 100644
--- a/gn2/wqflask/static/new/javascript/draw_corr_scatterplot.js
+++ b/gn2/wqflask/static/new/javascript/draw_corr_scatterplot.js
@@ -24,8 +24,6 @@ if (y_val_range >= 2 && y_val_range < 8){
y_tick_digits = 'f'
}
-console.log("y_digits:", y_tick_digits)
-
var layout = {
height: 700,
width: 800,
@@ -140,12 +138,8 @@ var modebar_options = {
cofactor1_dict = {}
ranked_cofactor1_dict = {}
-//cofactor1_values = []
-//ranked_cofactor1_values = []
cofactor2_dict = {}
ranked_cofactor2_dict = {}
-//cofactor2_values = []
-//ranked_cofactor2_values = []
cofactor3_dict = {}
ranked_cofactor3_dict = {}
@@ -176,6 +170,15 @@ function drawg() {
}
}
+ // Change some plot settings if the plot is an Effect Size plot
+ if (js_data.effect_plot) {
+ layout['width'] = 500
+ layout['xaxis']['nticks'] = 3
+ layout['xaxis']['tickformat'] = '.0f'
+ layout['yaxis']['nticks'] = 3
+ layout['yaxis']['tickformat'] = '.0f'
+ }
+
Plotly.newPlot('scatterplot2', [trace2, trace1], layout, modebar_options)
}
@@ -760,7 +763,9 @@ function chartupdatedata() {
}
drawg();
-srdrawg();
+if (!js_data.effect_plot) {
+ srdrawg();
+}
$(".chartupdatewh").change(function () {
chartupdatewh();
diff --git a/gn2/wqflask/templates/corr_scatterplot.html b/gn2/wqflask/templates/corr_scatterplot.html
index c2586bc0..9532726c 100644
--- a/gn2/wqflask/templates/corr_scatterplot.html
+++ b/gn2/wqflask/templates/corr_scatterplot.html
@@ -126,18 +126,20 @@
<li {% if method == 'pearson' %}class="active"{% endif %}>
<a href="#tp1" data-toggle="tab">Pearson</a>
</li>
+ {% if effect_plot == false %}
<li {% if method == 'spearman' %}class="active"{% endif %}>
<a href="#tp2" data-toggle="tab">Spearman Rank</a>
</li>
+ {% endif %}
</ul>
- <div class="tab-content" style="width: 800px;">
+ <div class="tab-content" style="width: {% if effect_plot %}500{% else %}800{% endif %}px;">
<div class="tab-pane {% if method == 'pearson' %}active{% endif %}" id="tp1">
<br>
<div id="scatterplot2"></div>
<br>
- <div style="min-width: 700px; overflow: hidden;">
+ <div style="width: {% if effect_plot %}500{% else %}800{% endif %}px; overflow: hidden;">
<div style="margin-left: 50px; min-width: 300px;">
{% if trait_1.dataset.type == "ProbeSet" %}
<div>
@@ -248,101 +250,102 @@
</div>
</div>
+ {% if effect_plot == false %}
<div class="tab-pane {% if method == 'spearman' %}active{% endif %}" id="tp2">
<br>
<div id="srscatterplot2"></div>
<br>
- <div class="row" style="min-width: 700px; overflow: hidden;">
- <div style="margin-left: 50px; min-width: 300px;">
- {% if trait_1.dataset.type == "ProbeSet" %}
- <div>
- X axis:
- <a href="{{url_for('show_trait_page', trait_id = trait_1.name, dataset = trait_1.dataset.name)}}">
- {{trait_1.dataset.group.species + " " + trait_1.dataset.group.name + " " + trait_1.dataset.tissue + " " + trait_1.dataset.name + ": " + trait_1.name|string}}
- </a>
- </div>
- <div>
- [{{trait_1.symbol}} on {{trait_1.location_repr}} Mb]
- {{trait_1.description_display}}
- </div>
- {% elif trait_1.dataset.type == "Publish" %}
- <div>
- X axis:
- <a href="{{url_for('show_trait_page', trait_id = trait_1.name, dataset = trait_1.dataset.name)}}">
- {{trait_1.dataset.group.species + " " + trait_1.dataset.group.name + " " + trait_1.dataset.name + ": " + trait_1.name|string}}
- </a>
- </div>
- <div>
- <a href="{{trait_1.pubmed_link}}">PubMed: {{trait_1.pubmed_text}}</a>
+ <div class="row" style="width: 800px; overflow: hidden;">
+ <div style="margin-left: 50px; min-width: 300px;">
+ {% if trait_1.dataset.type == "ProbeSet" %}
+ <div>
+ X axis:
+ <a href="{{url_for('show_trait_page', trait_id = trait_1.name, dataset = trait_1.dataset.name)}}">
+ {{trait_1.dataset.group.species + " " + trait_1.dataset.group.name + " " + trait_1.dataset.tissue + " " + trait_1.dataset.name + ": " + trait_1.name|string}}
+ </a>
+ </div>
+ <div>
+ [{{trait_1.symbol}} on {{trait_1.location_repr}} Mb]
{{trait_1.description_display}}
- </div>
- {% endif %}
+ </div>
+ {% elif trait_1.dataset.type == "Publish" %}
+ <div>
+ X axis:
+ <a href="{{url_for('show_trait_page', trait_id = trait_1.name, dataset = trait_1.dataset.name)}}">
+ {{trait_1.dataset.group.species + " " + trait_1.dataset.group.name + " " + trait_1.dataset.name + ": " + trait_1.name|string}}
+ </a>
+ </div>
+ <div>
+ <a href="{{trait_1.pubmed_link}}">PubMed: {{trait_1.pubmed_text}}</a>
+ {{trait_1.description_display}}
+ </div>
+ {% endif %}
- <br/>
+ <br/>
- {% if trait_2.dataset.type == "ProbeSet" %}
- <div>
- Y axis:
- <a href="{{url_for('show_trait_page', trait_id = trait_2.name, dataset = trait_2.dataset.name)}}">
- {{trait_2.dataset.group.species + " " + trait_2.dataset.group.name + " " + trait_2.dataset.tissue + " " + trait_2.dataset.name + ": " + trait_2.name|string}}
- </a>
- </div>
- <div>
- [{{trait_2.symbol}} on {{trait_2.location_repr}} Mb]
- {{trait_2.description_display}}
- </div>
- {% elif trait_2.dataset.type == "Publish" %}
- <div>
- Y axis:
- <a href="{{url_for('show_trait_page', trait_id = trait_2.name, dataset = trait_2.dataset.name)}}">
- {{trait_2.dataset.group.species + " " + trait_2.dataset.group.name + " " + trait_2.dataset.name + ": " + trait_2.name|string}}
- </a>
- </div>
- <div>
- <a href="{{trait_2.pubmed_link}}">PubMed: {{trait_2.pubmed_text}}</a>
+ {% if trait_2.dataset.type == "ProbeSet" %}
+ <div>
+ Y axis:
+ <a href="{{url_for('show_trait_page', trait_id = trait_2.name, dataset = trait_2.dataset.name)}}">
+ {{trait_2.dataset.group.species + " " + trait_2.dataset.group.name + " " + trait_2.dataset.tissue + " " + trait_2.dataset.name + ": " + trait_2.name|string}}
+ </a>
+ </div>
+ <div>
+ [{{trait_2.symbol}} on {{trait_2.location_repr}} Mb]
{{trait_2.description_display}}
+ </div>
+ {% elif trait_2.dataset.type == "Publish" %}
+ <div>
+ Y axis:
+ <a href="{{url_for('show_trait_page', trait_id = trait_2.name, dataset = trait_2.dataset.name)}}">
+ {{trait_2.dataset.group.species + " " + trait_2.dataset.group.name + " " + trait_2.dataset.name + ": " + trait_2.name|string}}
+ </a>
+ </div>
+ <div>
+ <a href="{{trait_2.pubmed_link}}">PubMed: {{trait_2.pubmed_text}}</a>
+ {{trait_2.description_display}}
+ </div>
+ {% endif %}
+ </div>
+ <div style="float: left; margin-top: 30px;">
+ <table class="table table-hover table-striped table-bordered" style="width: 80%; margin-left: 60px; text-align: right;">
+ <thead>
+ <tr><th style="text-align: right;">Statistic</th><th style="text-align: right;">Value</th></tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>Number</td>
+ <td>{{jsdata.num_overlap}}</td>
+ </tr>
+ <tr>
+ <td>Slope</td>
+ <td>{{ jsdata.srslope_string }}</td>
+ </tr>
+ <tr>
+ <td>Intercept</td>
+ <td>{{'%0.3f' % jsdata.srintercept}}</td>
+ </tr>
+ <tr>
+ <td>r value</td>
+ <td>{{'%0.3f' % jsdata.srr_value}}</td>
+ </tr>
+ <tr>
+ <td>P value</td>
+ <td>{% if jsdata.srp_value < 0.001 %}{{'%0.3e' % jsdata.srp_value}}{% else %}{{'%0.3f' % jsdata.srp_value}}{% endif %}</td>
+ </tr>
+ <tr>
+ <td style="text-align: left;" colspan="2">
+ Regression Line
+ <br>
+ y = {{ jsdata.srslope_string }} * x {% if jsdata.srintercept < 0 %}- {{'%0.3f' % (jsdata.srintercept * -1)}}{% else %}+ {{'%0.3f' % jsdata.srintercept}}{% endif %}
+ </td>
+ </tr>
+ </tbody>
+ </table>
</div>
- {% endif %}
- </div>
- <div style="float: left; margin-top: 30px;">
- <table class="table table-hover table-striped table-bordered" style="width: 80%; margin-left: 60px; text-align: right;">
- <thead>
- <tr><th style="text-align: right;">Statistic</th><th style="text-align: right;">Value</th></tr>
- </thead>
- <tbody>
- <tr>
- <td>Number</td>
- <td>{{jsdata.num_overlap}}</td>
- </tr>
- <tr>
- <td>Slope</td>
- <td>{{ jsdata.srslope_string }}</td>
- </tr>
- <tr>
- <td>Intercept</td>
- <td>{{'%0.3f' % jsdata.srintercept}}</td>
- </tr>
- <tr>
- <td>r value</td>
- <td>{{'%0.3f' % jsdata.srr_value}}</td>
- </tr>
- <tr>
- <td>P value</td>
- <td>{% if jsdata.srp_value < 0.001 %}{{'%0.3e' % jsdata.srp_value}}{% else %}{{'%0.3f' % jsdata.srp_value}}{% endif %}</td>
- </tr>
- <tr>
- <td style="text-align: left;" colspan="2">
- Regression Line
- <br>
- y = {{ jsdata.srslope_string }} * x {% if jsdata.srintercept < 0 %}- {{'%0.3f' % (jsdata.srintercept * -1)}}{% else %}+ {{'%0.3f' % jsdata.srintercept}}{% endif %}
- </td>
- </tr>
- </tbody>
- </table>
- </div>
</div>
- </div>
-
+ </div>
+ {% endif %}
</div>
{% endblock %}
diff --git a/gn2/wqflask/templates/mapping_results.html b/gn2/wqflask/templates/mapping_results.html
index 2b1660fd..c27de85e 100644
--- a/gn2/wqflask/templates/mapping_results.html
+++ b/gn2/wqflask/templates/mapping_results.html
@@ -416,7 +416,7 @@
'data': null,
'render': function(data, type, row, meta) {
{% if geno_db_exists == "True" %}
- return '<a target"_blank" href="corr_scatter_plot?method=pearson&dataset_1={{ dataset.group.name }}Geno&dataset_2={{ dataset.name }}&trait_1=' + data.name + '&trait_2={{ this_trait.name }}&cached_trait=trait_2&dataid={{ dataid }}">' + String(parseFloat(data.additive).toFixed(3)) + '</a>'
+ return '<a target"_blank" href="corr_scatter_plot?method=pearson&dataset_1={{ dataset.group.name }}Geno&dataset_2={{ dataset.name }}&trait_1=' + data.name + '&trait_2={{ this_trait.name }}&cached_trait=trait_2&dataid={{ dataid }}&effect=True">' + String(parseFloat(data.additive).toFixed(3)) + '</a>'
{% else %}
return String(parseFloat(data.additive).toFixed(3))
{% endif %}