diff options
author | zsloan | 2024-09-16 18:49:34 +0000 |
---|---|---|
committer | zsloan | 2024-09-17 14:38:13 +0000 |
commit | 805b781e6eabfb42cbecb319fffc8ade855de914 (patch) | |
tree | 1022428f3e8e4b40ae45bf1307e341aee16d5366 | |
parent | faa9a6329283031218fbd49d1b1491f1874a0a3f (diff) | |
download | genenetwork2-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.py | 3 | ||||
-rw-r--r-- | gn2/wqflask/static/new/javascript/draw_corr_scatterplot.js | 19 | ||||
-rw-r--r-- | gn2/wqflask/templates/corr_scatterplot.html | 177 | ||||
-rw-r--r-- | gn2/wqflask/templates/mapping_results.html | 2 |
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 %} |