aboutsummaryrefslogtreecommitdiff
path: root/gn2/wqflask/static/new/javascript/show_trait_mapping_tools.js
diff options
context:
space:
mode:
authorArun Isaac2023-12-29 18:55:37 +0000
committerArun Isaac2023-12-29 19:01:46 +0000
commit204a308be0f741726b9a620d88fbc22b22124c81 (patch)
treeb3cf66906674020b530c844c2bb4982c8a0e2d39 /gn2/wqflask/static/new/javascript/show_trait_mapping_tools.js
parent83062c75442160427b50420161bfcae2c5c34c84 (diff)
downloadgenenetwork2-204a308be0f741726b9a620d88fbc22b22124c81.tar.gz
Namespace all modules under gn2.
We move all modules under a gn2 directory. This is important for "correct" packaging and deployment as a Guix service.
Diffstat (limited to 'gn2/wqflask/static/new/javascript/show_trait_mapping_tools.js')
-rw-r--r--gn2/wqflask/static/new/javascript/show_trait_mapping_tools.js329
1 files changed, 329 insertions, 0 deletions
diff --git a/gn2/wqflask/static/new/javascript/show_trait_mapping_tools.js b/gn2/wqflask/static/new/javascript/show_trait_mapping_tools.js
new file mode 100644
index 00000000..a4e6dafc
--- /dev/null
+++ b/gn2/wqflask/static/new/javascript/show_trait_mapping_tools.js
@@ -0,0 +1,329 @@
+var block_outliers, composite_mapping_fields, do_ajax_post, get_progress, mapping_method_fields, open_mapping_results, outlier_text, showalert, submit_special, toggle_enable_disable, update_time_remaining;
+
+update_time_remaining = function(percent_complete) {
+ var minutes_remaining, now, period, total_seconds_remaining;
+ now = new Date();
+ period = now.getTime() - root.start_time;
+ console.log("period is:", period);
+ if (period > 8000) {
+ total_seconds_remaining = (period / percent_complete * (100 - percent_complete)) / 1000;
+ minutes_remaining = Math.round(total_seconds_remaining / 60);
+ if (minutes_remaining < 3) {
+ return $('#time_remaining').text(Math.round(total_seconds_remaining) + " seconds remaining");
+ } else {
+ return $('#time_remaining').text(minutes_remaining + " minutes remaining");
+ }
+ }
+};
+
+get_progress = function() {
+ var params, params_str, temp_uuid, url;
+ console.log("temp_uuid:", $("#temp_uuid").val());
+ temp_uuid = $("#temp_uuid").val();
+ params = {
+ key: temp_uuid
+ };
+ params_str = $.param(params);
+ url = "/get_temp_data?" + params_str;
+ console.log("url:", url);
+ $.ajax({
+ type: "GET",
+ url: url,
+ success: (function(_this) {
+ return function(progress_data) {
+ var percent_complete;
+ percent_complete = progress_data['percent_complete'];
+ console.log("in get_progress data:", progress_data);
+ $('#marker_regression_progress').css("width", percent_complete + "%");
+ if (root.start_time) {
+ if (!isNaN(percent_complete)) {
+ return update_time_remaining(percent_complete);
+ }
+ } else {
+ return root.start_time = new Date().getTime();
+ }
+ };
+ })(this)
+ });
+ return false;
+};
+
+block_outliers = function() {
+ return $('.outlier').each((function(_this) {
+ return function(_index, element) {
+ return $(element).find('.trait_value_input').val('x');
+ };
+ })(this));
+};
+
+do_ajax_post = function(url, form_data) {
+ $.ajax({
+ type: "POST",
+ url: url,
+ data: form_data,
+ error: (function(_this) {
+ return function(xhr, ajaxOptions, thrownError) {
+ alert("Sorry, an error occurred");
+ console.log(xhr);
+ clearInterval(_this.my_timer);
+ $('#progress_bar_container').modal('hide');
+ $('#static_progress_bar_container').modal('hide');
+ return $("body").html("We got an error.");
+ };
+ })(this),
+ success: (function(_this) {
+ return function(data) {
+ clearInterval(_this.my_timer);
+ $('#progress_bar_container').modal('hide');
+ $('#static_progress_bar_container').modal('hide');
+ return open_mapping_results(data);
+ };
+ })(this)
+ });
+ console.log("settingInterval");
+ this.my_timer = setInterval(get_progress, 1000);
+ return false;
+};
+
+open_mapping_results = function(data) {
+ return $.colorbox({
+ html: data,
+ href: "#mapping_results_holder",
+ height: "90%",
+ width: "90%",
+ onComplete: (function(_this) {
+ return function() {
+ var filename, getSvgXml;
+ root.create_lod_chart();
+ filename = "lod_chart_" + js_data.this_trait;
+ getSvgXml = function() {
+ var svg;
+ svg = $("#topchart").find("svg")[0];
+ return (new XMLSerializer).serializeToString(svg);
+ };
+ $("#exportform > #export").click(function() {
+ var form, svg_xml;
+ svg_xml = getSvgXml();
+ form = $("#exportform");
+ form.find("#data").val(svg_xml);
+ form.find("#filename").val(filename);
+ return form.submit();
+ });
+ return $("#exportpdfform > #export_pdf").click(function() {
+ var form, svg_xml;
+ svg_xml = getSvgXml();
+ form = $("#exportpdfform");
+ form.find("#data").val(svg_xml);
+ form.find("#filename").val(filename);
+ return form.submit();
+ });
+ };
+ })(this)
+ });
+};
+
+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.";
+showalert = function(message, alerttype) {
+ return $('#outlier_alert_placeholder').append('<div id="mapping_alert" class="alert ' + alerttype + '"><a class="close" data-dismiss="alert">�</a><span>' + message + '</span></div>');
+};
+
+$('#suggestive').hide();
+
+$('input[name=display_all]').change((function(_this) {
+ return function() {
+ if ($('input[name=display_all]:checked').val() === "False") {
+ return $('#suggestive').show();
+ } else {
+ return $('#suggestive').hide();
+ }
+ };
+})(this));
+
+// This is a list of inputs to be passed to the loading page, since not all inputs on the trait page are relevant to mapping
+var mapping_input_list = ['temp_uuid', 'trait_id', 'dataset', 'tool_used', 'form_url', 'method',
+ 'transform', 'trimmed_markers', 'selected_chr', 'chromosomes', 'mapping_scale',
+ 'sample_vals', 'vals_hash', 'score_type', 'suggestive', 'significant',
+ 'num_perm', 'permCheck', 'perm_output', 'perm_strata', 'categorical_vars',
+ 'num_bootstrap', 'bootCheck', 'bootstrap_results', 'LRSCheck', 'covariates',
+ 'maf', 'use_loco', 'manhattan_plot', 'control_marker', 'do_control',
+ 'genofile', 'pair_scan', 'startMb', 'endMb', 'graphWidth', 'lrsMax',
+ 'additiveCheck', 'showSNP', 'showGenes', 'viewLegend', 'haplotypeAnalystCheck',
+ 'mapmethod_rqtl', 'mapmodel_rqtl', 'temp_trait', 'group', 'species',
+ 'reaper_version', 'primary_samples']
+
+$(".rqtl-geno-tab, #rqtl_geno_compute").on("click", (function(_this) {
+ return function() {
+ if ($(this).hasClass('active') || $(this).attr('id') == "rqtl_geno_compute"){
+ var form_data, url;
+ url = "/loading";
+ $('input[name=method]').val("rqtl_geno");
+ $('input[name=pair_scan]').val("false");
+ $('input[name=selected_chr]').val($('#chr_rqtl_geno').val());
+ $('input[name=mapping_scale]').val($('#scale_rqtl_geno').val());
+ $('input[name=genofile]').val($('#genofile_rqtl_geno').val());
+ $('input[name=mapmodel_rqtl]').val($('#mapmodel_rqtl_geno').val());
+ $('input[name=mapmethod_rqtl]').val($('#mapmethod_rqtl_geno').val());
+ $('input[name=num_perm]').val($('input[name=num_perm_rqtl_geno]').val());
+ $('input[name=categorical_vars]').val(js_data.categorical_vars)
+ $('input[name=manhattan_plot]').val($('input[name=manhattan_plot_rqtl]:checked').val());
+ $('input[name=control_marker]').val($('input[name=control_rqtl_geno]').val());
+ $('input[name=do_control]').val($('input[name=do_control_rqtl]:checked').val());
+ $('input[name=tool_used]').val("Mapping");
+ $('input[name=form_url]').val("/run_mapping");
+ $('input[name=wanted_inputs]').val(mapping_input_list.join(","));
+ return submit_special(url);
+ } else {
+ return true
+ }
+ };
+})(this));
+
+$(".rqtl-pair-tab, #rqtl_pair_compute").on("click", (function(_this) {
+ return function() {
+ if ($(this).hasClass('active') || $(this).attr('id') == "rqtl_pair_compute"){
+ var form_data, url;
+ url = "/loading";
+ $('input[name=method]').val("rqtl_geno");
+ $('input[name=pair_scan]').val("true");
+ $('input[name=genofile]').val($('#genofile_rqtl_pair').val());
+ $('input[name=mapmodel_rqtl]').val($('#mapmodel_rqtl_pair').val());
+ $('input[name=mapmethod_rqtl]').val($('#mapmethod_rqtl_pair').val());
+ $('input[name=num_perm]').val($('input[name=num_perm_rqtl_pair]').val());
+ $('input[name=categorical_vars]').val(js_data.categorical_vars)
+ $('input[name=control_marker]').val($('input[name=control_rqtl_pair]').val());
+ $('input[name=do_control]').val($('input[name=do_control_rqtl_pair]:checked').val());
+ $('input[name=tool_used]').val("Mapping");
+ $('input[name=form_url]').val("/run_mapping");
+ $('input[name=wanted_inputs]').val(mapping_input_list.join(","));
+ return submit_special(url);
+ } else {
+ return true
+ }
+ };
+})(this));
+
+$(".gemma-tab, #gemma_compute").on("click", (function(_this) {
+ return function() {
+ if ($(this).hasClass('active') || $(this).attr('id') == "gemma_compute"){
+ var form_data, url;
+ url = "/loading";
+ $('input[name=method]').val("gemma");
+ $('input[name=mapping_scale]').val('physic');
+ $('input[name=selected_chr]').val($('#chr_gemma').val());
+ $('input[name=num_perm]').val(0);
+ $('input[name=genofile]').val($('#genofile_gemma').val());
+ $('input[name=maf]').val($('input[name=maf_gemma]').val());
+ $('input[name=tool_used]').val("Mapping");
+ $('input[name=form_url]').val("/run_mapping");
+ $('input[name=wanted_inputs]').val(mapping_input_list.join(","));
+ return submit_special(url);
+ } else {
+ return true
+ }
+ };
+})(this));
+
+$(".reaper-tab, #interval_mapping_compute").on("click", (function(_this) {
+ return function() {
+ if ($(this).hasClass('active') || $(this).attr('id') == "interval_mapping_compute"){
+ var form_data, url;
+ console.log("In interval mapping");
+ url = "/loading";
+ $('input[name=method]').val("reaper");
+ $('input[name=selected_chr]').val($('#chr_reaper').val());
+ $('input[name=mapping_scale]').val($('#scale_reaper').val());
+ $('input[name=genofile]').val($('#genofile_reaper').val());
+ $('input[name=num_perm]').val($('input[name=num_perm_reaper]').val());
+ $('input[name=control_marker]').val($('input[name=control_reaper]').val());
+ $('input[name=do_control]').val($('input[name=do_control_reaper]:checked').val());
+ $('input[name=manhattan_plot]').val($('input[name=manhattan_plot_reaper]:checked').val());
+ $('input[name=mapping_display_all]').val($('input[name=display_all_reaper]'));
+ $('input[name=suggestive]').val($('input[name=suggestive_reaper]'));
+ $('input[name=tool_used]').val("Mapping");
+ $('input[name=form_url]').val("/run_mapping");
+ $('input[name=wanted_inputs]').val(mapping_input_list.join(","));
+ return submit_special(url);
+ } else {
+ return true
+ }
+ };
+})(this));
+
+$("#interval_mapping_compute, #gemma_compute, rqtl_geno_compute").on("mouseover", (function(_this) {
+ return function() {
+ if ($(".outlier").length && $(".outlier-alert").length < 1) {
+ return showalert(outlier_text, "alert-success outlier-alert");
+ }
+ };
+})(this));
+
+composite_mapping_fields = function() {
+ return $(".composite_fields").toggle();
+};
+
+mapping_method_fields = function() {
+ return $(".mapping_method_fields").toggle();
+};
+
+$("#use_composite_choice").change(composite_mapping_fields);
+
+$("#mapping_method_choice").change(mapping_method_fields);
+
+$("#mapmodel_rqtl_geno,#mapmodel_rqtl_pair").change(function() {
+ if ($(this).val() == "np"){
+ $("#mapmethod_rqtl_geno").attr('disabled', 'disabled');
+ $("#mapmethod_rqtl_geno").css('background-color', '#CCC');
+ $("#missing_geno,#missing_geno_pair").attr('disabled', 'disabled');
+ $("#missing_geno,#missing_geno_pair").css('background-color', '#CCC');
+ } else {
+ $("#mapmethod_rqtl_geno").removeAttr('disabled');
+ $("#mapmethod_rqtl_geno").css('background-color', '#FFF');
+ $("#missing_geno,#missing_geno_pair").removeAttr('disabled');
+ $("#missing_geno,#missing_geno_pair").css('background-color', '#FFF');
+ }
+});
+
+$("#mapmethod_rqtl_geno,#mapmethod_rqtl_pair").change(function() {
+ if ($(this).val() == "mr"){
+ $("#missing_geno_div,#missing_geno_pair_div").css('display', 'block');
+ } else {
+ $("#missing_geno_div,#missing_geno_pair_div").css('display', 'none');
+ }
+});
+
+$("li.mapping-tab").click(function() {
+ if ($(this).hasClass("rqtl")){
+ $(".rqtl_description").css("display", "block");
+ } else {
+ $(".rqtl_description").css("display", "none");
+ }
+});
+
+toggle_enable_disable = function(elem) {
+ return $(elem).prop("disabled", !$(elem).prop("disabled"));
+};
+
+$("#choose_closet_control").change(function() {
+ return toggle_enable_disable("#control_locus");
+});
+
+$("#display_all_lrs").change(function() {
+ return toggle_enable_disable("#suggestive_lrs");
+});
+
+$('#genofile_rqtl_geno').change(function() {
+ geno_location = $(this).children("option:selected").val().split(":")[0]
+ $('#scale_rqtl_geno').empty()
+ the_scales = js_data.scales_in_geno[geno_location]
+ for (var i = 0; i < the_scales.length; i++){
+ $('#scale_rqtl_geno').append($("<option></option>").attr("value", the_scales[i][0]).text(the_scales[i][1]));
+ }
+});
+$('#genofile_reaper').change(function() {
+ geno_location = $(this).children("option:selected").val().split(":")[0]
+ $('#scale_reaper').empty()
+ the_scales = js_data.scales_in_geno[geno_location]
+ for (var i = 0; i < the_scales.length; i++){
+ $('#scale_reaper').append($("<option></option>").attr("value", the_scales[i][0]).text(the_scales[i][1]));
+ }
+});