aboutsummaryrefslogtreecommitdiff
path: root/wqflask
diff options
context:
space:
mode:
authorzsloan2019-02-14 14:26:03 -0600
committerzsloan2019-02-14 14:26:03 -0600
commit8a4097dac4821e02f29f49b7163898c0156ef765 (patch)
treefc2860ece2c327009149b5aab44d535fd7af36b0 /wqflask
parent21a4aa43ea62dd2b177661d87e2fee7a42c30798 (diff)
downloadgenenetwork2-8a4097dac4821e02f29f49b7163898c0156ef765.tar.gz
Changed trait page tables to load JSON
Also fixed such that sorting works with user-updated values
Diffstat (limited to 'wqflask')
-rw-r--r--wqflask/wqflask/show_trait/show_trait.py2
-rw-r--r--wqflask/wqflask/static/new/javascript/show_trait.js2209
-rw-r--r--wqflask/wqflask/static/output/Itvl_3kiKQR1g.jpegbin100480 -> 0 bytes
-rw-r--r--wqflask/wqflask/static/output/Itvl_hNsk2rxO.jpegbin100480 -> 0 bytes
-rw-r--r--wqflask/wqflask/templates/show_trait.html341
-rw-r--r--wqflask/wqflask/templates/show_trait_edit_data.html169
-rw-r--r--wqflask/wqflask/templates/show_trait_mapping_tools.html4
-rw-r--r--wqflask/wqflask/templates/show_trait_transform_and_filter.html6
8 files changed, 1370 insertions, 1361 deletions
diff --git a/wqflask/wqflask/show_trait/show_trait.py b/wqflask/wqflask/show_trait/show_trait.py
index 2955f69a..0d1ed345 100644
--- a/wqflask/wqflask/show_trait/show_trait.py
+++ b/wqflask/wqflask/show_trait/show_trait.py
@@ -168,6 +168,7 @@ class ShowTrait(object):
hddn['maf'] = 0.01
hddn['compare_traits'] = []
hddn['export_data'] = ""
+ hddn['export_format'] = "excel"
# We'll need access to this_trait and hddn in the Jinja2 Template, so we put it inside self
self.hddn = hddn
@@ -224,6 +225,7 @@ class ShowTrait(object):
sample_lists = sample_lists,
attribute_names = self.sample_groups[0].attributes,
num_values = self.num_values,
+ qnorm_values = self.qnorm_vals,
sample_column_width = sample_column_width,
temp_uuid = self.temp_uuid)
self.js_data = js_data
diff --git a/wqflask/wqflask/static/new/javascript/show_trait.js b/wqflask/wqflask/static/new/javascript/show_trait.js
index 2f846642..74706f98 100644
--- a/wqflask/wqflask/static/new/javascript/show_trait.js
+++ b/wqflask/wqflask/static/new/javascript/show_trait.js
@@ -1,1195 +1,1194 @@
-// Generated by CoffeeScript 1.8.0
-(function() {
- var Stat_Table_Rows, is_number,
- __hasProp = {}.hasOwnProperty,
- __slice = [].slice;
-
- console.log("start_b");
-
- is_number = function(o) {
- return !isNaN((o - 0) && o !== null);
+var Stat_Table_Rows, is_number,
+ __hasProp = {}.hasOwnProperty,
+ __slice = [].slice;
+
+console.log("start_b");
+
+is_number = function(o) {
+ return !isNaN((o - 0) && o !== null);
+};
+
+Stat_Table_Rows = [
+ {
+ vn: "n_of_samples",
+ pretty: "N of Samples",
+ digits: 0
+ }, {
+ vn: "mean",
+ pretty: "Mean",
+ digits: 3
+ }, {
+ vn: "median",
+ pretty: "Median",
+ digits: 3
+ }, {
+ vn: "std_error",
+ pretty: "Standard Error (SE)",
+ digits: 3
+ }, {
+ vn: "std_dev",
+ pretty: "Standard Deviation (SD)",
+ digits: 3
+ }, {
+ vn: "min",
+ pretty: "Minimum",
+ digits: 2
+ }, {
+ vn: "max",
+ pretty: "Maximum",
+ digits: 2
+ }, {
+ vn: "range",
+ pretty: "Range (log2)",
+ digits: 3
+ }, {
+ vn: "range_fold",
+ pretty: "Range (fold)",
+ digits: 3
+ }, {
+ vn: "interquartile",
+ pretty: "Interquartile Range",
+ url: "http://www.genenetwork.org/glossary.html#Interquartile",
+ digits: 3
+ }, {
+ vn: "skewness",
+ pretty: "Skewness",
+ digits: 3
+ }, {
+ vn: "kurtosis",
+ pretty: "Kurtosis",
+ digits: 3
+ }
+];
+
+var add, block_by_attribute_value, block_by_index, block_outliers, change_stats_value, create_value_dropdown, edit_data_change, export_sample_table_data, get_sample_table_data, hide_no_value, hide_tabs, make_table, on_corr_method_change, open_trait_selection, populate_sample_attributes_values_dropdown, process_id, redraw_bar_chart, redraw_histogram, redraw_prob_plot, reset_samples_table, sample_group_types, sample_lists, show_hide_outliers, stats_mdp_change, update_stat_values;
+add = function() {
+ var trait;
+ trait = $("input[name=trait_hmac]").val();
+ console.log("trait is:", trait);
+ return $.colorbox({
+ href: "/collections/add?traits=" + trait
+ });
+};
+$('#add_to_collection').click(add);
+sample_lists = js_data.sample_lists;
+sample_group_types = js_data.sample_group_types;
+d3.select("#select_compare_trait").on("click", (function(_this) {
+ return function() {
+ $('.scatter-matrix-container').remove();
+ return open_trait_selection();
};
-
- Stat_Table_Rows = [
- {
- vn: "n_of_samples",
- pretty: "N of Samples",
- digits: 0
- }, {
- vn: "mean",
- pretty: "Mean",
- digits: 3
- }, {
- vn: "median",
- pretty: "Median",
- digits: 3
- }, {
- vn: "std_error",
- pretty: "Standard Error (SE)",
- digits: 3
- }, {
- vn: "std_dev",
- pretty: "Standard Deviation (SD)",
- digits: 3
- }, {
- vn: "min",
- pretty: "Minimum",
- digits: 2
- }, {
- vn: "max",
- pretty: "Maximum",
- digits: 2
- }, {
- vn: "range",
- pretty: "Range (log2)",
- digits: 3
- }, {
- vn: "range_fold",
- pretty: "Range (fold)",
- digits: 3
- }, {
- vn: "interquartile",
- pretty: "Interquartile Range",
- url: "http://www.genenetwork.org/glossary.html#Interquartile",
- digits: 3
- }, {
- vn: "skewness",
- pretty: "Skewness",
- digits: 3
- }, {
- vn: "kurtosis",
- pretty: "Kurtosis",
- digits: 3
- }
- ];
-
- $(function() {
- var add, block_by_attribute_value, block_by_index, block_outliers, change_stats_value, create_value_dropdown, edit_data_change, export_sample_table_data, get_sample_table_data, hide_no_value, hide_tabs, make_table, on_corr_method_change, open_trait_selection, populate_sample_attributes_values_dropdown, process_id, redraw_bar_chart, redraw_histogram, redraw_prob_plot, reset_samples_table, sample_group_types, sample_lists, show_hide_outliers, stats_mdp_change, update_stat_values;
- add = function() {
- var trait;
- trait = $("input[name=trait_hmac]").val();
- console.log("trait is:", trait);
- return $.colorbox({
- href: "/collections/add?traits=" + trait
+})(this));
+d3.select("#select_covariates").on("click", (function(_this) {
+ return function() {
+ return open_covariate_selection();
+ };
+})(this));
+$("#remove_covariates").click(function () {
+ $("input[name=covariates]").val("")
+ $(".selected_covariates").val("")
+});
+d3.select("#clear_compare_trait").on("click", (function(_this) {
+ return function() {
+ return $('.scatter-matrix-container').remove();
+ };
+})(this));
+open_trait_selection = function() {
+ return $('#collections_holder').load('/collections/list?color_by_trait #collections_list', (function(_this) {
+ return function() {
+ $.colorbox({
+ inline: true,
+ href: "#collections_holder",
+ onComplete: function(){
+ console.log("before get script")
+ $.getScript("/static/new/javascript/get_traits_from_collection.js");
+ console.log("after get script")
+ }
});
+ return $('a.collection_name').attr('onClick', 'return false');
};
- $('#add_to_collection').click(add);
- sample_lists = js_data.sample_lists;
- sample_group_types = js_data.sample_group_types;
- d3.select("#select_compare_trait").on("click", (function(_this) {
- return function() {
- $('.scatter-matrix-container').remove();
- return open_trait_selection();
- };
- })(this));
- d3.select("#select_covariates").on("click", (function(_this) {
- return function() {
- return open_covariate_selection();
- };
- })(this));
- $("#remove_covariates").click(function () {
- $("input[name=covariates]").val("")
- $(".selected_covariates").val("")
- });
- d3.select("#clear_compare_trait").on("click", (function(_this) {
- return function() {
- return $('.scatter-matrix-container').remove();
- };
- })(this));
- open_trait_selection = function() {
- return $('#collections_holder').load('/collections/list?color_by_trait #collections_list', (function(_this) {
- return function() {
- $.colorbox({
- inline: true,
- href: "#collections_holder",
- onComplete: function(){
- console.log("before get script")
- $.getScript("/static/new/javascript/get_traits_from_collection.js");
- console.log("after get script")
- }
- });
- return $('a.collection_name').attr('onClick', 'return false');
- };
- })(this));
- };
- open_covariate_selection = function() {
- return $('#collections_holder').load('/collections/list #collections_list', (function(_this) {
- return function() {
- $.colorbox({
- inline: true,
- href: "#collections_holder",
- onComplete: function(){
- console.log("before get cov script")
- $.getScript("/static/new/javascript/get_covariates_from_collection.js");
- console.log("after get cov script")
- }
- });
- return $('a.collection_name').attr('onClick', 'return false');
- };
- })(this));
- };
- hide_tabs = function(start) {
- var x, _i, _results;
- _results = [];
- for (x = _i = start; start <= 10 ? _i <= 10 : _i >= 10; x = start <= 10 ? ++_i : --_i) {
- _results.push($("#stats_tabs" + x).hide());
- }
- return _results;
- };
- stats_mdp_change = function() {
- var selected;
- selected = $(this).val();
- hide_tabs(0);
- return $("#stats_tabs" + selected).show();
- };
- change_stats_value = function(sample_sets, category, value_type, decimal_places, effects) {
- var current_value, id, in_box, the_value, title_value;
- id = "#" + process_id(category, value_type);
- console.log("the_id:", id);
- in_box = $(id).html;
- current_value = parseFloat($(in_box)).toFixed(decimal_places);
- the_value = sample_sets[category][value_type]();
- console.log("After running sample_sets, the_value is:", the_value);
- if (decimal_places > 0) {
- title_value = the_value.toFixed(decimal_places * 2);
- the_value = the_value.toFixed(decimal_places);
- } else {
- title_value = null;
- }
- console.log("*-* the_value:", the_value);
- console.log("*-* current_value:", current_value);
- if (the_value !== current_value) {
- console.log("object:", $(id).html(the_value));
- if (effects) {
- $(id).html(the_value).effect("highlight");
- } else {
- $(id).html(the_value);
+ })(this));
+};
+open_covariate_selection = function() {
+ return $('#collections_holder').load('/collections/list #collections_list', (function(_this) {
+ return function() {
+ $.colorbox({
+ inline: true,
+ href: "#collections_holder",
+ onComplete: function(){
+ console.log("before get cov script")
+ $.getScript("/static/new/javascript/get_covariates_from_collection.js");
+ console.log("after get cov script")
}
- }
- if (title_value) {
- return $(id).attr('title', title_value);
- }
+ });
+ return $('a.collection_name').attr('onClick', 'return false');
};
- update_stat_values = function(sample_sets) {
- var category, row, show_effects, _i, _len, _ref, _results;
- show_effects = $(".tab-pane.active").attr("id") === "stats_tab";
- _ref = ['samples_primary', 'samples_other', 'samples_all'];
- _results = [];
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- category = _ref[_i];
- _results.push((function() {
- var _j, _len1, _results1;
- _results1 = [];
- for (_j = 0, _len1 = Stat_Table_Rows.length; _j < _len1; _j++) {
- row = Stat_Table_Rows[_j];
- console.log("Calling change_stats_value");
- _results1.push(change_stats_value(sample_sets, category, row.vn, row.digits, show_effects));
- }
- return _results1;
- })());
+ })(this));
+};
+hide_tabs = function(start) {
+ var x, _i, _results;
+ _results = [];
+ for (x = _i = start; start <= 10 ? _i <= 10 : _i >= 10; x = start <= 10 ? ++_i : --_i) {
+ _results.push($("#stats_tabs" + x).hide());
+ }
+ return _results;
+};
+stats_mdp_change = function() {
+ var selected;
+ selected = $(this).val();
+ hide_tabs(0);
+ return $("#stats_tabs" + selected).show();
+};
+change_stats_value = function(sample_sets, category, value_type, decimal_places, effects) {
+ var current_value, id, in_box, the_value, title_value;
+ id = "#" + process_id(category, value_type);
+ console.log("the_id:", id);
+ in_box = $(id).html;
+ current_value = parseFloat($(in_box)).toFixed(decimal_places);
+ the_value = sample_sets[category][value_type]();
+ console.log("After running sample_sets, the_value is:", the_value);
+ if (decimal_places > 0) {
+ title_value = the_value.toFixed(decimal_places * 2);
+ the_value = the_value.toFixed(decimal_places);
+ } else {
+ title_value = null;
+ }
+ console.log("*-* the_value:", the_value);
+ console.log("*-* current_value:", current_value);
+ if (the_value !== current_value) {
+ console.log("object:", $(id).html(the_value));
+ if (effects) {
+ $(id).html(the_value).effect("highlight");
+ } else {
+ $(id).html(the_value);
+ }
+ }
+ if (title_value) {
+ return $(id).attr('title', title_value);
+ }
+};
+update_stat_values = function(sample_sets) {
+ var category, row, show_effects, _i, _len, _ref, _results;
+ show_effects = $(".tab-pane.active").attr("id") === "stats_tab";
+ _ref = ['samples_primary', 'samples_other', 'samples_all'];
+ _results = [];
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ category = _ref[_i];
+ _results.push((function() {
+ var _j, _len1, _results1;
+ _results1 = [];
+ for (_j = 0, _len1 = Stat_Table_Rows.length; _j < _len1; _j++) {
+ row = Stat_Table_Rows[_j];
+ console.log("Calling change_stats_value");
+ _results1.push(change_stats_value(sample_sets, category, row.vn, row.digits, show_effects));
}
- return _results;
- };
-
- update_histogram_width = function() {
- num_bins = $('#histogram').find('g.trace.bars').find('g.point').length
+ return _results1;
+ })());
+ }
+ return _results;
+};
- if (num_bins < 10) {
- width_update = {
- width: 400
- }
+update_histogram_width = function() {
+ num_bins = $('#histogram').find('g.trace.bars').find('g.point').length
- Plotly.relayout('histogram', width_update)
- }
+ if (num_bins < 10) {
+ width_update = {
+ width: 400
}
- redraw_histogram = function() {
- var x;
- var _i, _len, _ref, data;
- _ref = _.values(root.selected_samples[root.stats_group]);
- var trait_vals = [];
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- x = _ref[_i];
- trait_vals.push(x.value);
- }
- Plotly.restyle('histogram', 'x', [trait_vals])
-
- update_histogram_width()
- };
-
- redraw_bar_chart = function() {
- var x;
- var _i, _len, _ref, data;
- _ref = _.values(root.selected_samples[root.stats_group]);
- names_and_values = []
- for (i = 0; i < _ref.length; i++){
- _ref[i]["name"] = Object.keys(root.selected_samples[root.stats_group])[i]
- }
- trait_vals = [];
- trait_vars = [];
- trait_samples = [];
+ Plotly.relayout('histogram', width_update)
+ }
+}
+
+redraw_histogram = function() {
+ var x;
+ var _i, _len, _ref, data;
+ _ref = _.values(root.selected_samples[root.stats_group]);
+ var trait_vals = [];
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ x = _ref[_i];
+ trait_vals.push(x.value);
+ }
+ Plotly.restyle('histogram', 'x', [trait_vals])
+
+ update_histogram_width()
+};
+
+redraw_bar_chart = function() {
+ var x;
+ var _i, _len, _ref, data;
+ _ref = _.values(root.selected_samples[root.stats_group]);
+ names_and_values = []
+ for (i = 0; i < _ref.length; i++){
+ _ref[i]["name"] = Object.keys(root.selected_samples[root.stats_group])[i]
+ }
+ trait_vals = [];
+ trait_vars = [];
+ trait_samples = [];
- function sortFunction(a, b) {
- if (a.value === b.value) {
- return 0;
- }
- else {
- return (a.value < b.value) ? -1 : 1;
- }
- }
+ function sortFunction(a, b) {
+ if (a.value === b.value) {
+ return 0;
+ }
+ else {
+ return (a.value < b.value) ? -1 : 1;
+ }
+ }
- if (root.bar_sort == "value") {
- _ref.sort(sortFunction)
- }
+ if (root.bar_sort == "value") {
+ _ref.sort(sortFunction)
+ }
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- x = _ref[_i];
- trait_samples.push(x.name)
- trait_vals.push(x.value);
- if (x["variance"] != undefined) {
- trait_vars.push(x.variance);
- } else{
- trait_vars.push(null)
- }
- }
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ x = _ref[_i];
+ trait_samples.push(x.name)
+ trait_vals.push(x.value);
+ if (x["variance"] != undefined) {
+ trait_vars.push(x.variance);
+ } else{
+ trait_vars.push(null)
+ }
+ }
- root.bar_data[0]['y'] = trait_vals
- root.bar_data[0]['error_y'] = {
- type: 'data',
- array: trait_vars,
- visible: root.errors_exist
- }
- root.bar_data[0]['x'] = trait_samples
- if (trait_vals.length < 256) {
- Plotly.newPlot('bar_chart', root.bar_data, root.bar_layout);
- }
- };
+ root.bar_data[0]['y'] = trait_vals
+ root.bar_data[0]['error_y'] = {
+ type: 'data',
+ array: trait_vars,
+ visible: root.errors_exist
+ }
+ root.bar_data[0]['x'] = trait_samples
+ if (trait_vals.length < 256) {
+ Plotly.newPlot('bar_chart', root.bar_data, root.bar_layout);
+ }
+};
+
+redraw_box_plot = function() {
+ var y_value_list = []
+ for (var sample_group in root.selected_samples){
+ var trait_sample_data = _.values(root.selected_samples[sample_group])
+ var trait_vals = [];
+ for (i = 0, len = trait_sample_data.length; i < len; i++) {
+ this_sample_data = trait_sample_data[i];
+ trait_vals.push(this_sample_data.value);
+ }
+ y_value_list.push(trait_vals)
+ }
- redraw_box_plot = function() {
- var y_value_list = []
- for (var sample_group in root.selected_samples){
- var trait_sample_data = _.values(root.selected_samples[sample_group])
- var trait_vals = [];
- for (i = 0, len = trait_sample_data.length; i < len; i++) {
- this_sample_data = trait_sample_data[i];
- trait_vals.push(this_sample_data.value);
- }
- y_value_list.push(trait_vals)
+ if (Object.keys(js_data.sample_group_types).length > 1) {
+ var update = {
+ y: y_value_list
}
-
- if (Object.keys(js_data.sample_group_types).length > 1) {
- var update = {
- y: y_value_list
- }
- Plotly.restyle('box_plot', update, [0, 1, 2])
- } else {
- var update = {
- y: y_value_list
- }
- Plotly.restyle('box_plot', update)
+ Plotly.restyle('box_plot', update, [0, 1, 2])
+ } else {
+ var update = {
+ y: y_value_list
}
+ Plotly.restyle('box_plot', update)
+ }
+}
+
+redraw_violin_plot = function() {
+ var y_value_list = []
+ for (var sample_group in root.selected_samples){
+ var trait_sample_data = _.values(root.selected_samples[sample_group])
+ var trait_vals = [];
+ for (i = 0, len = trait_sample_data.length; i < len; i++) {
+ this_sample_data = trait_sample_data[i];
+ trait_vals.push(this_sample_data.value);
}
+ y_value_list.push(trait_vals)
+ }
- redraw_violin_plot = function() {
- var y_value_list = []
- for (var sample_group in root.selected_samples){
- var trait_sample_data = _.values(root.selected_samples[sample_group])
- var trait_vals = [];
- for (i = 0, len = trait_sample_data.length; i < len; i++) {
- this_sample_data = trait_sample_data[i];
- trait_vals.push(this_sample_data.value);
- }
- y_value_list.push(trait_vals)
- }
-
- }
+}
- redraw_prob_plot = function() {
- return root.redraw_prob_plot_impl(root.selected_samples, root.prob_plot_group);
- };
+redraw_prob_plot = function() {
+ return root.redraw_prob_plot_impl(root.selected_samples, root.prob_plot_group);
+};
- make_table = function() {
- var header, key, row, row_line, table, the_id, the_rows, value, _i, _len, _ref, _ref1;
- header = "<thead><tr><th style=\"text-align: right; padding-left: 5px;\">Statistic</th>";
- _ref = js_data.sample_group_types;
- for (key in _ref) {
- if (!__hasProp.call(_ref, key)) continue;
- value = _ref[key];
- the_id = process_id("column", key);
- if (Object.keys(_ref).length > 1) {
- header += "<th id=\"" + the_id + "\" style=\"text-align: right; padding-left: 5px;\">" + value + "</th>";
- } else {
- header += "<th id=\"" + the_id + "\" style=\"text-align: right; padding-left: 5px;\">Value</th>";
- }
- }
+make_table = function() {
+ var header, key, row, row_line, table, the_id, the_rows, value, _i, _len, _ref, _ref1;
+ header = "<thead><tr><th style=\"text-align: right; padding-left: 5px;\">Statistic</th>";
+ _ref = js_data.sample_group_types;
+ for (key in _ref) {
+ if (!__hasProp.call(_ref, key)) continue;
+ value = _ref[key];
+ the_id = process_id("column", key);
+ if (Object.keys(_ref).length > 1) {
+ header += "<th id=\"" + the_id + "\" style=\"text-align: right; padding-left: 5px;\">" + value + "</th>";
+ } else {
+ header += "<th id=\"" + the_id + "\" style=\"text-align: right; padding-left: 5px;\">Value</th>";
+ }
+ }
- header += "</thead>";
- the_rows = "<tbody>";
- for (_i = 0, _len = Stat_Table_Rows.length; _i < _len; _i++) {
- row = Stat_Table_Rows[_i];
- if ((row.vn == "range_fold" || row.vn == "range") && js_data.dataset_type == "Publish"){
- continue;
- }
- row_line = "<tr>";
- if (row.url != null) {
- row_line += "<td id=\"" + row.vn + "\" align=\"right\"><a href=\"" + row.url + "\" style=\"color: #000000;\">" + row.pretty + "</a></td>";
+ header += "</thead>";
+ the_rows = "<tbody>";
+ for (_i = 0, _len = Stat_Table_Rows.length; _i < _len; _i++) {
+ row = Stat_Table_Rows[_i];
+ if ((row.vn == "range_fold" || row.vn == "range") && js_data.dataset_type == "Publish"){
+ continue;
+ }
+ row_line = "<tr>";
+ if (row.url != null) {
+ row_line += "<td id=\"" + row.vn + "\" align=\"right\"><a href=\"" + row.url + "\" style=\"color: #000000;\">" + row.pretty + "</a></td>";
+ } else {
+ row_line += "<td id=\"" + row.vn + "\" align=\"right\">" + row.pretty + "</td>";
+ }
+ _ref1 = js_data.sample_group_types;
+ for (key in _ref1) {
+ if (!__hasProp.call(_ref1, key)) continue;
+ value = _ref1[key];
+ the_id = process_id(key, row.vn);
+ row_line += "<td id=\"" + the_id + "\" align=\"right\">N/A</td>";
+ }
+ row_line += "</tr>";
+ the_rows += row_line;
+ }
+ the_rows += "</tbody>";
+ table = header + the_rows;
+ return $("#stats_table").append(table);
+};
+process_id = function() {
+ var processed, value, values, _i, _len;
+ values = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
+
+ /* Make an id or a class valid javascript by, for example, eliminating spaces */
+ processed = "";
+ for (_i = 0, _len = values.length; _i < _len; _i++) {
+ value = values[_i];
+ console.log("value:", value);
+ value = value.replace(" ", "_");
+ if (processed.length) {
+ processed += "-";
+ }
+ processed += value;
+ }
+ return processed;
+};
+edit_data_change = function() {
+ var already_seen, checkbox, checked, name, real_dict, real_value, real_variance, row, rows, sample_sets, table, tables, _i, _j, _len, _len1;
+ already_seen = {};
+ sample_sets = {
+ samples_primary: new Stats([]),
+ samples_other: new Stats([]),
+ samples_all: new Stats([])
+ };
+ root.selected_samples = {
+ samples_primary: {},
+ samples_other: {},
+ samples_all: {}
+ };
+ console.log("at beginning:", sample_sets);
+ tables = ['samples_primary', 'samples_other'];
+ for (_i = 0, _len = tables.length; _i < _len; _i++) {
+ table = tables[_i];
+ rows = $("#" + table).find('tr');
+ for (_j = 0, _len1 = rows.length; _j < _len1; _j++) {
+ row = rows[_j];
+ name = $(row).find('.edit_sample_sample_name').html();
+ name = $.trim(name);
+ real_value = $(row).find('.edit_sample_value').val();
+ checkbox = $(row).find(".edit_sample_checkbox");
+ checked = $(checkbox).prop('checked');
+ if (checked && is_number(real_value) && real_value !== "") {
+ real_value = parseFloat(real_value);
+ sample_sets[table].add_value(real_value);
+ real_variance = $(row).find('.edit_sample_se').val();
+ if (is_number(real_variance)) {
+ real_variance = parseFloat(real_variance);
} else {
- row_line += "<td id=\"" + row.vn + "\" align=\"right\">" + row.pretty + "</td>";
+ real_variance = null;
}
- _ref1 = js_data.sample_group_types;
- for (key in _ref1) {
- if (!__hasProp.call(_ref1, key)) continue;
- value = _ref1[key];
- the_id = process_id(key, row.vn);
- row_line += "<td id=\"" + the_id + "\" align=\"right\">N/A</td>";
+ real_dict = {
+ value: real_value,
+ variance: real_variance
+ };
+ root.selected_samples[table][name] = real_dict;
+ if (!(name in already_seen)) {
+ sample_sets['samples_all'].add_value(real_value);
+ root.selected_samples['samples_all'][name] = real_dict;
+ already_seen[name] = true;
}
- row_line += "</tr>";
- the_rows += row_line;
}
- the_rows += "</tbody>";
- table = header + the_rows;
- return $("#stats_table").append(table);
- };
- process_id = function() {
- var processed, value, values, _i, _len;
- values = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
-
- /* Make an id or a class valid javascript by, for example, eliminating spaces */
- processed = "";
- for (_i = 0, _len = values.length; _i < _len; _i++) {
- value = values[_i];
- console.log("value:", value);
- value = value.replace(" ", "_");
- if (processed.length) {
- processed += "-";
- }
- processed += value;
+ }
+ }
+ console.log("towards end:", sample_sets);
+ update_stat_values(sample_sets);
+
+ if ($('#histogram').hasClass('js-plotly-plot')){
+ console.log("redrawing histogram");
+ redraw_histogram();
+ }
+ if ($('#bar_chart').hasClass('js-plotly-plot')){
+ console.log("redrawing bar chart");
+ redraw_bar_chart();
+ }
+ if ($('#box_plot').hasClass('js-plotly-plot')){
+ console.log("redrawing box plot");
+ redraw_box_plot();
+ }
+ if ($('#violin_plot').hasClass('js-plotly-plot')){
+ console.log("redrawing violin plot");
+ redraw_violin_plot();
+ }
+ if ($('#prob_plot_div').hasClass('js-plotly-plot')){
+ console.log("redrawing probability plot");
+ return redraw_prob_plot();
+ }
+};
+show_hide_outliers = function() {
+ var label;
+ console.log("FOOBAR in beginning of show_hide_outliers");
+ label = $('#show_hide_outliers').val();
+ console.log("lable is:", label);
+ if (label === "Hide Outliers") {
+ return $('#show_hide_outliers').val("Show Outliers");
+ } else if (label === "Show Outliers") {
+ console.log("Found Show Outliers");
+ $('#show_hide_outliers').val("Hide Outliers");
+ return console.log("Should be now Hide Outliers");
+ }
+};
+on_corr_method_change = function() {
+ var corr_method;
+ corr_method = $('select[name=corr_type]').val();
+ console.log("corr_method is:", corr_method);
+ $('.correlation_desc').hide();
+ $('#' + corr_method + "_r_desc").show().effect("highlight");
+ if (corr_method === "lit") {
+ return $("#corr_sample_method").hide();
+ } else {
+ return $("#corr_sample_method").show();
+ }
+};
+$('select[name=corr_type]').change(on_corr_method_change);
+
+submit_special = function(url) {
+ $("#trait_data_form").attr("action", url);
+ return $("#trait_data_form").submit();
+};
+
+submit_corr = function(){
+ var url;
+ url = "/corr_compute";
+ return submit_special(url);
+};
+
+$(".corr_compute").on("click", (function(_this) {
+ return function() {
+ var url;
+ url = "/corr_compute";
+ return submit_special(url);
+ };
+})(this));
+
+create_value_dropdown = function(value) {
+ return "<option val=" + value + ">" + value + "</option>";
+};
+populate_sample_attributes_values_dropdown = function() {
+ var attribute_info, key, sample_attributes, selected_attribute, value, _i, _len, _ref, _ref1, _results;
+ console.log("in beginning of psavd");
+ $('#attribute_values').empty();
+ sample_attributes = {};
+ _ref = js_data.attribute_names;
+ for (key in _ref) {
+ if (!__hasProp.call(_ref, key)) continue;
+ attribute_info = _ref[key];
+ sample_attributes[attribute_info.name] = attribute_info.distinct_values;
+ }
+ console.log("[visa] attributes is:", sample_attributes);
+ selected_attribute = $('#exclude_menu').val().replace("_", " ");
+ console.log("selected_attribute is:", selected_attribute);
+ _ref1 = sample_attributes[selected_attribute];
+ _results = [];
+ for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
+ value = _ref1[_i];
+ _results.push($(create_value_dropdown(value)).appendTo($('#attribute_values')));
+ }
+ return _results;
+};
+if (js_data.attribute_names.length > 0) {
+ populate_sample_attributes_values_dropdown();
+}
+$('#exclude_menu').change(populate_sample_attributes_values_dropdown);
+block_by_attribute_value = function() {
+ var attribute_name, cell_class, exclude_by_value;
+ attribute_name = $('#exclude_menu').val();
+ exclude_by_value = $('#attribute_values').val();
+ cell_class = ".column_name-" + attribute_name;
+ return $(cell_class).each((function(_this) {
+ return function(index, element) {
+ var row;
+ if ($.trim($(element).text()) === exclude_by_value) {
+ row = $(element).parent('tr');
+ return $(row).find(".trait_value_input").val("x");
}
- return processed;
};
- edit_data_change = function() {
- var already_seen, checkbox, checked, name, real_dict, real_value, real_variance, row, rows, sample_sets, table, tables, _i, _j, _len, _len1;
- already_seen = {};
- sample_sets = {
- samples_primary: new Stats([]),
- samples_other: new Stats([]),
- samples_all: new Stats([])
- };
- root.selected_samples = {
- samples_primary: {},
- samples_other: {},
- samples_all: {}
- };
- console.log("at beginning:", sample_sets);
- tables = ['samples_primary', 'samples_other'];
- for (_i = 0, _len = tables.length; _i < _len; _i++) {
- table = tables[_i];
- rows = $("#" + table).find('tr');
- for (_j = 0, _len1 = rows.length; _j < _len1; _j++) {
- row = rows[_j];
- name = $(row).find('.edit_sample_sample_name').html();
- name = $.trim(name);
- real_value = $(row).find('.edit_sample_value').val();
- checkbox = $(row).find(".edit_sample_checkbox");
- checked = $(checkbox).prop('checked');
- if (checked && is_number(real_value) && real_value !== "") {
- real_value = parseFloat(real_value);
- sample_sets[table].add_value(real_value);
- real_variance = $(row).find('.edit_sample_se').val();
- if (is_number(real_variance)) {
- real_variance = parseFloat(real_variance);
- } else {
- real_variance = null;
- }
- real_dict = {
- value: real_value,
- variance: real_variance
- };
- root.selected_samples[table][name] = real_dict;
- if (!(name in already_seen)) {
- sample_sets['samples_all'].add_value(real_value);
- root.selected_samples['samples_all'][name] = real_dict;
- already_seen[name] = true;
- }
- }
+ })(this));
+};
+$('#exclude_group').click(block_by_attribute_value);
+block_by_index = function() {
+ var end_index, error, index, index_list, index_set, index_string, start_index, _i, _j, _k, _len, _len1, _ref, _results;
+ index_string = $('#remove_samples_field').val();
+ index_list = [];
+ _ref = index_string.split(",");
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ index_set = _ref[_i];
+ if (index_set.indexOf('-') !== -1) {
+ try {
+ start_index = parseInt(index_set.split("-")[0]);
+ end_index = parseInt(index_set.split("-")[1]);
+ for (index = _j = start_index; start_index <= end_index ? _j <= end_index : _j >= end_index; index = start_index <= end_index ? ++_j : --_j) {
+ index_list.push(index);
}
+ } catch (_error) {
+ error = _error;
+ alert("Syntax error");
}
- console.log("towards end:", sample_sets);
- update_stat_values(sample_sets);
-
- if ($('#histogram').hasClass('js-plotly-plot')){
- console.log("redrawing histogram");
- redraw_histogram();
- }
- if ($('#bar_chart').hasClass('js-plotly-plot')){
- console.log("redrawing bar chart");
- redraw_bar_chart();
- }
- if ($('#box_plot').hasClass('js-plotly-plot')){
- console.log("redrawing box plot");
- redraw_box_plot();
- }
- if ($('#violin_plot').hasClass('js-plotly-plot')){
- console.log("redrawing violin plot");
- redraw_violin_plot();
+ } else {
+ index = parseInt(index_set);
+ console.log("index:", index);
+ index_list.push(index);
+ }
+ }
+ console.log("index_list:", index_list);
+ _results = [];
+ for (_k = 0, _len1 = index_list.length; _k < _len1; _k++) {
+ index = index_list[_k];
+ if ($('#block_group').val() === "primary") {
+ console.log("block_group:", $('#block_group').val());
+ console.log("row:", $('#Primary_' + index.toString()));
+ _results.push($('#Primary_' + index.toString()).find('.trait_value_input').val("x"));
+ } else if ($('#block_group').val() === "other") {
+ console.log("block_group:", $('#block_group').val());
+ console.log("row:", $('#Other_' + index.toString()));
+ _results.push($('#Other_' + index.toString()).find('.trait_value_input').val("x"));
+ } else {
+ _results.push(void 0);
+ }
+ }
+ return _results;
+};
+$('#block_by_index').click(block_by_index);
+hide_no_value = function() {
+ return $('.value_se').each((function(_this) {
+ return function(_index, element) {
+ if ($(element).find('.trait_value_input').val() === 'x') {
+ return $(element).hide();
}
- if ($('#prob_plot_div').hasClass('js-plotly-plot')){
- console.log("redrawing probability plot");
- return redraw_prob_plot();
+ };
+ })(this));
+};
+$('#hide_no_value').click(hide_no_value);
+block_outliers = function() {
+ return $('.outlier').each((function(_this) {
+ return function(_index, element) {
+ return $(element).find('.trait_value_input').val('x');
+ };
+ })(this));
+};
+$('#block_outliers').click(block_outliers);
+reset_samples_table = function() {
+ $('input[name="transform"]').val("");
+ return $('.trait_value_input').each((function(_this) {
+ return function(_index, element) {
+ console.log("value is:", $(element).val());
+ $(element).val($(element).data('value'));
+ console.log("data-value is:", $(element).data('value'));
+ return $(element).parents('.value_se').show();
+ };
+ })(this));
+};
+$('.reset').click(reset_samples_table);
+
+log_normalize_data = function() {
+ return $('.trait_value_input').each((function(_this) {
+ return function(_index, element) {
+ current_value = parseFloat($(element).data("value")) + 1;
+ if(isNaN(current_value)) {
+ return current_value
+ } else {
+ $(element).val(Math.log2(current_value).toFixed(3));
+ return Math.log2(current_value).toFixed(3)
}
};
- show_hide_outliers = function() {
- var label;
- console.log("FOOBAR in beginning of show_hide_outliers");
- label = $('#show_hide_outliers').val();
- console.log("lable is:", label);
- if (label === "Hide Outliers") {
- return $('#show_hide_outliers').val("Show Outliers");
- } else if (label === "Show Outliers") {
- console.log("Found Show Outliers");
- $('#show_hide_outliers').val("Hide Outliers");
- return console.log("Should be now Hide Outliers");
+ })(this));
+};
+
+sqrt_normalize_data = function() {
+ return $('.edit_sample_value').each((function(_this) {
+ return function(_index, element) {
+ current_value = parseFloat($(element).data("value")) + 1;
+ if(isNaN(current_value)) {
+ return current_value
+ } else {
+ $(element).val(Math.sqrt(current_value).toFixed(3));
+ return Math.sqrt(current_value).toFixed(3)
}
};
- on_corr_method_change = function() {
- var corr_method;
- corr_method = $('select[name=corr_type]').val();
- console.log("corr_method is:", corr_method);
- $('.correlation_desc').hide();
- $('#' + corr_method + "_r_desc").show().effect("highlight");
- if (corr_method === "lit") {
- return $("#corr_sample_method").hide();
+ })(this));
+};
+
+qnorm_data = function() {
+ return $('.edit_sample_value').each((function(_this) {
+ return function(_index, element) {
+ current_value = parseFloat($(element).data("value")) + 1;
+ if(isNaN(current_value)) {
+ return current_value
} else {
- return $("#corr_sample_method").show();
+ $(element).val($(element).data("qnorm"));
+ return $(element).data("qnorm");
}
};
- $('select[name=corr_type]').change(on_corr_method_change);
+ })(this));
+};
+
+normalize_data = function() {
+ if ($('#norm_method option:selected').val() == 'log2'){
+ if ($('input[name="transform"]').val() != "log2") {
+ log_normalize_data()
+ $('input[name="transform"]').val("log2")
+ }
+ }
+ else if ($('#norm_method option:selected').val() == 'sqrt'){
+ if ($('input[name="transform"]').val() != "sqrt") {
+ sqrt_normalize_data()
+ $('input[name="transform"]').val("sqrt")
+ }
+ }
+ else if ($('#norm_method option:selected').val() == 'qnorm'){
+ if ($('input[name="transform"]').val() != "qnorm") {
+ qnorm_data()
+ $('input[name="transform"]').val("qnorm")
+ }
+ }
+}
- submit_special = function(url) {
- $("#trait_data_form").attr("action", url);
- return $("#trait_data_form").submit();
- };
+$('#normalize').click(normalize_data);
- submit_corr = function(){
- var url;
- url = "/corr_compute";
- return submit_special(url);
- };
-
- $(".corr_compute").on("click", (function(_this) {
- return function() {
- var url;
- url = "/corr_compute";
- return submit_special(url);
- };
- })(this));
-
- create_value_dropdown = function(value) {
- return "<option val=" + value + ">" + value + "</option>";
+switch_qnorm_data = function() {
+ return $('.trait_value_input').each((function(_this) {
+ return function(_index, element) {
+ transform_val = $(element).data('transform')
+ if (transform_val != "") {
+ $(element).val(transform_val.toFixed(3));
+ }
+ return transform_val
};
- populate_sample_attributes_values_dropdown = function() {
- var attribute_info, key, sample_attributes, selected_attribute, value, _i, _len, _ref, _ref1, _results;
- console.log("in beginning of psavd");
- $('#attribute_values').empty();
- sample_attributes = {};
+ })(this));
+};
+$('#qnorm').click(switch_qnorm_data);
+get_sample_table_data = function(table_name) {
+ var samples;
+ samples = [];
+ $('#' + table_name).find('.value_se').each((function(_this) {
+ return function(_index, element) {
+ var attribute_info, key, row_data, _ref;
+ row_data = {};
+ row_data.name = $.trim($(element).find('.column_name-Sample').text());
+ row_data.value = $(element).find('.edit_sample_value').val();
+ if ($(element).find('.edit_sample_se').length !== -1) {
+ row_data.se = $(element).find('.edit_sample_se').val();
+ }
_ref = js_data.attribute_names;
for (key in _ref) {
if (!__hasProp.call(_ref, key)) continue;
attribute_info = _ref[key];
- sample_attributes[attribute_info.name] = attribute_info.distinct_values;
- }
- console.log("[visa] attributes is:", sample_attributes);
- selected_attribute = $('#exclude_menu').val().replace("_", " ");
- console.log("selected_attribute is:", selected_attribute);
- _ref1 = sample_attributes[selected_attribute];
- _results = [];
- for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
- value = _ref1[_i];
- _results.push($(create_value_dropdown(value)).appendTo($('#attribute_values')));
+ row_data[attribute_info.name] = $.trim($(element).find('.column_name-' + attribute_info.name.replace(" ", "_")).text());
}
- return _results;
- };
- if (js_data.attribute_names.length > 0) {
- populate_sample_attributes_values_dropdown();
- }
- $('#exclude_menu').change(populate_sample_attributes_values_dropdown);
- block_by_attribute_value = function() {
- var attribute_name, cell_class, exclude_by_value;
- attribute_name = $('#exclude_menu').val();
- exclude_by_value = $('#attribute_values').val();
- cell_class = ".column_name-" + attribute_name;
- return $(cell_class).each((function(_this) {
- return function(index, element) {
- var row;
- if ($.trim($(element).text()) === exclude_by_value) {
- row = $(element).parent('tr');
- return $(row).find(".trait_value_input").val("x");
- }
- };
- })(this));
+ console.log("row_data is:", row_data);
+ return samples.push(row_data);
};
- $('#exclude_group').click(block_by_attribute_value);
- block_by_index = function() {
- var end_index, error, index, index_list, index_set, index_string, start_index, _i, _j, _k, _len, _len1, _ref, _results;
- index_string = $('#remove_samples_field').val();
- index_list = [];
- _ref = index_string.split(",");
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- index_set = _ref[_i];
- if (index_set.indexOf('-') !== -1) {
- try {
- start_index = parseInt(index_set.split("-")[0]);
- end_index = parseInt(index_set.split("-")[1]);
- for (index = _j = start_index; start_index <= end_index ? _j <= end_index : _j >= end_index; index = start_index <= end_index ? ++_j : --_j) {
- index_list.push(index);
- }
- } catch (_error) {
- error = _error;
- alert("Syntax error");
- }
- } else {
- index = parseInt(index_set);
- console.log("index:", index);
- index_list.push(index);
- }
- }
- console.log("index_list:", index_list);
- _results = [];
- for (_k = 0, _len1 = index_list.length; _k < _len1; _k++) {
- index = index_list[_k];
- if ($('#block_group').val() === "primary") {
- console.log("block_group:", $('#block_group').val());
- console.log("row:", $('#Primary_' + index.toString()));
- _results.push($('#Primary_' + index.toString()).find('.trait_value_input').val("x"));
- } else if ($('#block_group').val() === "other") {
- console.log("block_group:", $('#block_group').val());
- console.log("row:", $('#Other_' + index.toString()));
- _results.push($('#Other_' + index.toString()).find('.trait_value_input').val("x"));
- } else {
- _results.push(void 0);
- }
- }
- return _results;
- };
- $('#block_by_index').click(block_by_index);
- hide_no_value = function() {
- return $('.value_se').each((function(_this) {
- return function(_index, element) {
- if ($(element).find('.trait_value_input').val() === 'x') {
- return $(element).hide();
- }
- };
- })(this));
- };
- $('#hide_no_value').click(hide_no_value);
- block_outliers = function() {
- return $('.outlier').each((function(_this) {
- return function(_index, element) {
- return $(element).find('.trait_value_input').val('x');
- };
- })(this));
- };
- $('#block_outliers').click(block_outliers);
- reset_samples_table = function() {
- $('input[name="transform"]').val("");
- return $('.trait_value_input').each((function(_this) {
- return function(_index, element) {
- console.log("value is:", $(element).val());
- $(element).val($(element).data('value'));
- console.log("data-value is:", $(element).data('value'));
- return $(element).parents('.value_se').show();
- };
- })(this));
- };
- $('#reset').click(reset_samples_table);
-
- log_normalize_data = function() {
- return $('.trait_value_input').each((function(_this) {
- return function(_index, element) {
- current_value = parseFloat($(element).data("value")) + 1;
- if(isNaN(current_value)) {
- return current_value
- } else {
- $(element).val(Math.log2(current_value).toFixed(3));
- return Math.log2(current_value).toFixed(3)
- }
- };
- })(this));
- };
-
- sqrt_normalize_data = function() {
- return $('.edit_sample_value').each((function(_this) {
- return function(_index, element) {
- current_value = parseFloat($(element).data("value")) + 1;
- if(isNaN(current_value)) {
- return current_value
- } else {
- $(element).val(Math.sqrt(current_value).toFixed(3));
- return Math.sqrt(current_value).toFixed(3)
- }
- };
- })(this));
- };
-
- qnorm_data = function() {
- return $('.edit_sample_value').each((function(_this) {
- return function(_index, element) {
- current_value = parseFloat($(element).data("value")) + 1;
- if(isNaN(current_value)) {
- return current_value
- } else {
- $(element).val($(element).data("qnorm"));
- return $(element).data("qnorm");
- }
- };
- })(this));
- };
-
- normalize_data = function() {
- if ($('#norm_method option:selected').val() == 'log2'){
- if ($('input[name="transform"]').val() != "log2") {
- log_normalize_data()
- $('input[name="transform"]').val("log2")
- }
+ })(this));
+ return samples;
+};
+export_sample_table_data = function() {
+ var format, json_sample_data, sample_data;
+ sample_data = {};
+ sample_data.primary_samples = get_sample_table_data('samples_primary');
+ sample_data.other_samples = get_sample_table_data('samples_other');
+ console.log("sample_data is:", sample_data);
+ json_sample_data = JSON.stringify(sample_data);
+ console.log("json_sample_data is:", json_sample_data);
+ $('input[name=export_data]').val(json_sample_data);
+ console.log("export_data is", $('input[name=export_data]').val());
+ format = $('input[name=export_format]').val();
+ if (format === "excel") {
+ $('#trait_data_form').attr('action', '/export_trait_excel');
+ } else {
+ $('#trait_data_form').attr('action', '/export_trait_csv');
+ }
+ console.log("action is:", $('#trait_data_form').attr('action'));
+ return $('#trait_data_form').submit();
+};
+
+$('.export_format').change(function() {
+ $('input[name=export_format]').val( this.value );
+ $('.export_format').val( this.value );
+});
+
+$('.export').click(export_sample_table_data);
+console.log("before registering block_outliers");
+$('#block_outliers').click(block_outliers);
+console.log("after registering block_outliers");
+_.mixin(_.str.exports());
+
+get_sample_vals = function(sample_list) {
+ var sample;
+ return this.sample_vals = (function() {
+ var i, len, results;
+ results = [];
+ for (i = 0, len = sample_list.length; i < len; i++) {
+ sample = sample_list[i];
+ if (sample.value !== null) {
+ results.push(sample.value);
}
- else if ($('#norm_method option:selected').val() == 'sqrt'){
- if ($('input[name="transform"]').val() != "sqrt") {
- sqrt_normalize_data()
- $('input[name="transform"]').val("sqrt")
- }
+ }
+ return results;
+ })();
+};
+
+get_sample_errors = function(sample_list) {
+ var sample;
+ return this.sample_vals = (function() {
+ var i, len, results;
+ variance_exists = false;
+ results = [];
+ for (i = 0, len = sample_list.length; i < len; i++) {
+ sample = sample_list[i];
+ if (sample.variance !== null) {
+ results.push(sample.variance);
+ variance_exists = true;
}
- else if ($('#norm_method option:selected').val() == 'qnorm'){
- if ($('input[name="transform"]').val() != "qnorm") {
- qnorm_data()
- $('input[name="transform"]').val("qnorm")
- }
+ }
+ return [results, variance_exists];
+ })();
+};
+
+get_sample_names = function(sample_list) {
+ var sample;
+ return this.sample_names = (function() {
+ var i, len, results;
+ results = [];
+ for (i = 0, len = sample_list.length; i < len; i++) {
+ sample = sample_list[i];
+ if (sample.value !== null) {
+ results.push(sample.name);
}
}
+ return results;
+ })();
+};
- $('#normalize').click(normalize_data);
+root.stats_group = 'samples_primary';
- switch_qnorm_data = function() {
- return $('.trait_value_input').each((function(_this) {
- return function(_index, element) {
- transform_val = $(element).data('transform')
- if (transform_val != "") {
- $(element).val(transform_val.toFixed(3));
- }
- return transform_val
- };
- })(this));
- };
- $('#qnorm').click(switch_qnorm_data);
- get_sample_table_data = function(table_name) {
- var samples;
- samples = [];
- $('#' + table_name).find('.value_se').each((function(_this) {
- return function(_index, element) {
- var attribute_info, key, row_data, _ref;
- row_data = {};
- row_data.name = $.trim($(element).find('.column_name-Sample').text());
- row_data.value = $(element).find('.edit_sample_value').val();
- if ($(element).find('.edit_sample_se').length !== -1) {
- row_data.se = $(element).find('.edit_sample_se').val();
- }
- _ref = js_data.attribute_names;
- for (key in _ref) {
- if (!__hasProp.call(_ref, key)) continue;
- attribute_info = _ref[key];
- row_data[attribute_info.name] = $.trim($(element).find('.column_name-' + attribute_info.name.replace(" ", "_")).text());
- }
- console.log("row_data is:", row_data);
- return samples.push(row_data);
- };
- })(this));
- return samples;
- };
- export_sample_table_data = function() {
- var format, json_sample_data, sample_data;
- sample_data = {};
- sample_data.primary_samples = get_sample_table_data('samples_primary');
- sample_data.other_samples = get_sample_table_data('samples_other');
- console.log("sample_data is:", sample_data);
- json_sample_data = JSON.stringify(sample_data);
- console.log("json_sample_data is:", json_sample_data);
- $('input[name=export_data]').val(json_sample_data);
- console.log("export_data is", $('input[name=export_data]').val());
- format = $('#export_format').val();
- if (format === "excel") {
- $('#trait_data_form').attr('action', '/export_trait_excel');
- } else {
- $('#trait_data_form').attr('action', '/export_trait_csv');
- }
- console.log("action is:", $('#trait_data_form').attr('action'));
- return $('#trait_data_form').submit();
- };
- $('#export').click(export_sample_table_data);
- console.log("before registering block_outliers");
- $('#block_outliers').click(block_outliers);
- console.log("after registering block_outliers");
- _.mixin(_.str.exports());
-
- get_sample_vals = function(sample_list) {
- var sample;
- return this.sample_vals = (function() {
- var i, len, results;
- results = [];
- for (i = 0, len = sample_list.length; i < len; i++) {
- sample = sample_list[i];
- if (sample.value !== null) {
- results.push(sample.value);
- }
- }
- return results;
- })();
- };
+if (Object.keys(js_data.sample_group_types).length > 1) {
+ full_sample_lists = [sample_lists[0], sample_lists[1], sample_lists[0].concat(sample_lists[1])]
+ sample_group_list = [js_data.sample_group_types['samples_primary'], js_data.sample_group_types['samples_other'], js_data.sample_group_types['samples_all']]
+} else {
+ full_sample_lists = [sample_lists[0]]
+ sample_group_list = [js_data.sample_group_types['samples_primary']]
+}
- get_sample_errors = function(sample_list) {
- var sample;
- return this.sample_vals = (function() {
- var i, len, results;
- variance_exists = false;
- results = [];
- for (i = 0, len = sample_list.length; i < len; i++) {
- sample = sample_list[i];
- if (sample.variance !== null) {
- results.push(sample.variance);
- variance_exists = true;
- }
- }
- return [results, variance_exists];
- })();
- };
+// Define Plotly Options (for the options bar at the top of each figure)
- get_sample_names = function(sample_list) {
- var sample;
- return this.sample_names = (function() {
- var i, len, results;
- results = [];
- for (i = 0, len = sample_list.length; i < len; i++) {
- sample = sample_list[i];
- if (sample.value !== null) {
- results.push(sample.name);
- }
- }
- return results;
- })();
- };
+root.modebar_options = {
+ modeBarButtonsToRemove:['hoverClosest', 'hoverCompare', 'hoverClosestCartesian', 'hoverCompareCartesian', 'lasso2d', 'toggleSpikelines']
+}
- root.stats_group = 'samples_primary';
+// Bar Chart
- if (Object.keys(js_data.sample_group_types).length > 1) {
- full_sample_lists = [sample_lists[0], sample_lists[1], sample_lists[0].concat(sample_lists[1])]
- sample_group_list = [js_data.sample_group_types['samples_primary'], js_data.sample_group_types['samples_other'], js_data.sample_group_types['samples_all']]
+root.errors_exist = get_sample_errors(sample_lists[0])[1]
+var bar_trace = {
+ x: get_sample_names(sample_lists[0]),
+ y: get_sample_vals(sample_lists[0]),
+ error_y: {
+ type: 'data',
+ array: get_sample_errors(sample_lists[0])[0],
+ visible: root.errors_exist
+ },
+ type: 'bar'
+}
+
+root.bar_data = [bar_trace]
+
+positive_error_vals = []
+negative_error_vals = []
+for (i = 0;i < get_sample_vals(sample_lists[0]).length; i++){
+ if (get_sample_errors(sample_lists[0])[0][i] != undefined) {
+ positive_error_vals.push(get_sample_vals(sample_lists[0])[i] + get_sample_errors(sample_lists[0])[0][i])
+ negative_error_vals.push(get_sample_vals(sample_lists[0])[i] - get_sample_errors(sample_lists[0])[0][i])
} else {
- full_sample_lists = [sample_lists[0]]
- sample_group_list = [js_data.sample_group_types['samples_primary']]
- }
-
- // Define Plotly Options (for the options bar at the top of each figure)
-
- root.modebar_options = {
- modeBarButtonsToRemove:['hoverClosest', 'hoverCompare', 'hoverClosestCartesian', 'hoverCompareCartesian', 'lasso2d', 'toggleSpikelines']
+ positive_error_vals.push(get_sample_vals(sample_lists[0])[i])
+ negative_error_vals.push(get_sample_vals(sample_lists[0])[i])
}
-
- // Bar Chart
-
- root.errors_exist = get_sample_errors(sample_lists[0])[1]
- var bar_trace = {
- x: get_sample_names(sample_lists[0]),
- y: get_sample_vals(sample_lists[0]),
- error_y: {
- type: 'data',
- array: get_sample_errors(sample_lists[0])[0],
- visible: root.errors_exist
- },
- type: 'bar'
+}
+
+// Calculate the y axis cutoff to avoid a situation where all bar variation is clustered at the top of the chart
+min_y_val = Math.min(...negative_error_vals)
+max_y_val = Math.max(...positive_error_vals)
+
+if (min_y_val == 0) {
+ range_top = max_y_val + Math.abs(max_y_val)*0.1
+ range_bottom = 0;
+} else {
+ range_top = max_y_val + Math.abs(max_y_val)*0.1
+ range_bottom = min_y_val - Math.abs(min_y_val)*0.1
+ if (min_y_val > 0) {
+ range_bottom = min_y_val - 0.1*Math.abs(min_y_val)
+ } else if (min_y_val < 0) {
+ range_bottom = min_y_val + 0.1*min_y_val
+ } else {
+ range_bottom = 0
}
-
- root.bar_data = [bar_trace]
-
- positive_error_vals = []
- negative_error_vals = []
- for (i = 0;i < get_sample_vals(sample_lists[0]).length; i++){
- if (get_sample_errors(sample_lists[0])[0][i] != undefined) {
- positive_error_vals.push(get_sample_vals(sample_lists[0])[i] + get_sample_errors(sample_lists[0])[0][i])
- negative_error_vals.push(get_sample_vals(sample_lists[0])[i] - get_sample_errors(sample_lists[0])[0][i])
- } else {
- positive_error_vals.push(get_sample_vals(sample_lists[0])[i])
- negative_error_vals.push(get_sample_vals(sample_lists[0])[i])
- }
+}
+
+root.chart_range = [range_bottom, range_top]
+
+total_sample_count = 0
+for (i = 0, i < sample_lists.length; i++;) {
+ total_sample_count += get_sample_vals(sample_lists[i]).length
+}
+
+if (js_data.num_values < 256) {
+ bar_chart_width = 25 * get_sample_vals(sample_lists[0]).length
+
+ var layout = {
+ yaxis: {
+ range: root.chart_range,
+ },
+ width: bar_chart_width,
+ height: 600,
+ margin: {
+ l: 50,
+ r: 30,
+ t: 30,
+ b: 80
}
-
- // Calculate the y axis cutoff to avoid a situation where all bar variation is clustered at the top of the chart
- min_y_val = Math.min(...negative_error_vals)
- max_y_val = Math.max(...positive_error_vals)
-
- if (min_y_val == 0) {
- range_top = max_y_val + Math.abs(max_y_val)*0.1
- range_bottom = 0;
+ };
+ root.bar_layout = layout
+ $('.bar_chart_tab').click(function() {
+ if ($('#bar_chart').hasClass('js-plotly-plot')){
+ redraw_bar_chart();
} else {
- range_top = max_y_val + Math.abs(max_y_val)*0.1
- range_bottom = min_y_val - Math.abs(min_y_val)*0.1
- if (min_y_val > 0) {
- range_bottom = min_y_val - 0.1*Math.abs(min_y_val)
- } else if (min_y_val < 0) {
- range_bottom = min_y_val + 0.1*min_y_val
- } else {
- range_bottom = 0
- }
+ Plotly.newPlot('bar_chart', root.bar_data, root.bar_layout, root.modebar_options)
}
+ });
+}
- root.chart_range = [range_bottom, range_top]
-
- total_sample_count = 0
- for (i = 0, i < sample_lists.length; i++;) {
- total_sample_count += get_sample_vals(sample_lists[i]).length
- }
-
- if (js_data.num_values < 256) {
- bar_chart_width = 25 * get_sample_vals(sample_lists[0]).length
-
- var layout = {
+if (full_sample_lists.length > 1) {
+ root.box_layout = {
+ boxgap: 0.2,
yaxis: {
- range: root.chart_range,
+ range: [range_bottom, range_top],
},
- width: bar_chart_width,
- height: 600,
+ width: 600,
+ height: 500,
margin: {
l: 50,
r: 30,
t: 30,
b: 80
}
- };
- root.bar_layout = layout
- $('.bar_chart_tab').click(function() {
- if ($('#bar_chart').hasClass('js-plotly-plot')){
- redraw_bar_chart();
- } else {
- Plotly.newPlot('bar_chart', root.bar_data, root.bar_layout, root.modebar_options)
+ };
+ var trace1 = {
+ y: get_sample_vals(full_sample_lists[0]),
+ type: 'box',
+ name: sample_group_list[0],
+ boxpoints: 'Outliers',
+ jitter: 0.5,
+ whiskerwidth: 0.2,
+ fillcolor: 'cls',
+ pointpos: -3,
+ marker: {
+ color: 'rgb(0, 0, 255)',
+ size: 3
+ },
+ line: {
+ width: 1
}
- });
}
-
- if (full_sample_lists.length > 1) {
- root.box_layout = {
- boxgap: 0.2,
- yaxis: {
- range: [range_bottom, range_top],
- },
- width: 600,
- height: 500,
- margin: {
- l: 50,
- r: 30,
- t: 30,
- b: 80
- }
- };
- var trace1 = {
- y: get_sample_vals(full_sample_lists[0]),
- type: 'box',
- name: sample_group_list[0],
- boxpoints: 'Outliers',
- jitter: 0.5,
- whiskerwidth: 0.2,
- fillcolor: 'cls',
- pointpos: -3,
- marker: {
- color: 'rgb(0, 0, 255)',
- size: 3
- },
- line: {
- width: 1
- }
- }
- var trace2 = {
- y: get_sample_vals(full_sample_lists[1]),
- type: 'box',
- name: sample_group_list[1],
- boxpoints: 'Outliers',
- jitter: 0.5,
- whiskerwidth: 0.2,
- fillcolor: 'cls',
- pointpos: -3,
- marker: {
- color: 'rgb(200, 0, 0)',
- size: 3
- },
- line: {
- width: 1
- }
- }
- var trace3 = {
- y: get_sample_vals(full_sample_lists[2]),
- type: 'box',
- name: sample_group_list[2],
- boxpoints: 'Outliers',
- jitter: 0.5,
- whiskerwidth: 0.2,
- fillcolor: 'cls',
- pointpos: -3,
- marker: {
- color: 'rgb(0, 104, 0)',
- size: 3
- },
- line: {
- width: 1
- }
+ var trace2 = {
+ y: get_sample_vals(full_sample_lists[1]),
+ type: 'box',
+ name: sample_group_list[1],
+ boxpoints: 'Outliers',
+ jitter: 0.5,
+ whiskerwidth: 0.2,
+ fillcolor: 'cls',
+ pointpos: -3,
+ marker: {
+ color: 'rgb(200, 0, 0)',
+ size: 3
+ },
+ line: {
+ width: 1
}
- box_data = [trace1, trace2, trace3]
- } else {
- root.box_layout = {
- yaxis: {
- range: [range_bottom, range_top],
- },
- width: 400,
- height: 500,
- margin: {
- l: 50,
- r: 30,
- t: 30,
- b: 80
- }
- };
- box_data = [
- {
- type: 'box',
- y: get_sample_vals(full_sample_lists[0]),
- name: sample_group_list[0],
- boxpoints: 'Outliers',
- jitter: 0.5,
- whiskerwidth: 0.2,
- fillcolor: 'cls',
- pointpos: -3,
- marker: {
- size: 3
- },
- line: {
- width: 1
- }
- }
- ]
}
-
- box_obj = {
- data: box_data,
- layout: root.box_layout
+ var trace3 = {
+ y: get_sample_vals(full_sample_lists[2]),
+ type: 'box',
+ name: sample_group_list[2],
+ boxpoints: 'Outliers',
+ jitter: 0.5,
+ whiskerwidth: 0.2,
+ fillcolor: 'cls',
+ pointpos: -3,
+ marker: {
+ color: 'rgb(0, 104, 0)',
+ size: 3
+ },
+ line: {
+ width: 1
+ }
}
-
- $('.box_plot_tab').click(function() {
- if ($('#box_plot').hasClass('js-plotly-plot')){
- redraw_box_plot();
- } else {
- Plotly.newPlot('box_plot', box_obj, root.modebar_options);
- }
- });
-
- // Violin Plot
-
- if (full_sample_lists.length > 1) {
- root.violin_layout = {
- title: "Violin Plot",
- yaxis: {
+ box_data = [trace1, trace2, trace3]
+} else {
+ root.box_layout = {
+ yaxis: {
range: [range_bottom, range_top],
- zeroline: false
- },
- width: 600,
- height: 500,
- margin: {
- l: 50,
- r: 30,
- t: 80,
- b: 80
- }
- };
- var trace1 = {
- y: get_sample_vals(full_sample_lists[2]),
- type: 'violin',
- points: 'none',
- box: {
- visible: true
- },
- line: {
- color: 'green',
- },
- meanline: {
- visible: true
- },
- name: sample_group_list[2],
- x0: sample_group_list[2]
- }
- var trace2 = {
- y: get_sample_vals(full_sample_lists[1]),
- type: 'violin',
- points: 'none',
- box: {
- visible: true
- },
- line: {
- color: 'green',
- },
- meanline: {
- visible: true
- },
- name: sample_group_list[1],
- x0: sample_group_list[1]
+ },
+ width: 400,
+ height: 500,
+ margin: {
+ l: 50,
+ r: 30,
+ t: 30,
+ b: 80
}
- var trace3 = {
- y: get_sample_vals(full_sample_lists[0]),
- type: 'violin',
- points: 'none',
- box: {
- visible: true
- },
- line: {
- color: 'green',
- },
- meanline: {
- visible: true
- },
- name: sample_group_list[0],
- x0: sample_group_list[0]
+ };
+ box_data = [
+ {
+ type: 'box',
+ y: get_sample_vals(full_sample_lists[0]),
+ name: sample_group_list[0],
+ boxpoints: 'Outliers',
+ jitter: 0.5,
+ whiskerwidth: 0.2,
+ fillcolor: 'cls',
+ pointpos: -3,
+ marker: {
+ size: 3
+ },
+ line: {
+ width: 1
}
- violin_data = [trace1, trace2, trace3]
- } else {
- root.violin_layout = {
- title: "Violin Plot",
- yaxis: {
- range: [range_bottom, range_top],
- zeroline: false
- },
- width: 500,
- height: 300,
- margin: {
- l: 50,
- r: 30,
- t: 80,
- b: 80
- }
- };
- violin_data = [
- {
- y: get_sample_vals(full_sample_lists[0]),
- type: 'violin',
- points: 'none',
- box: {
- visible: true
- },
- line: {
- color: 'green',
- },
- meanline: {
- visible: true
- },
- name: sample_group_list[0],
- x0: sample_group_list[0]
- }
- ]
- }
-
- violin_obj = {
- data: violin_data,
- layout: root.violin_layout
- }
-
- $('.violin_plot_tab').click(function() {
- if ($('#violin_plot').hasClass('js-plotly-plot')){
- redraw_violin_plot();
- } else {
- Plotly.plot('violin_plot', violin_obj, root.modebar_options);
}
- });
-
- // Histogram
- var hist_trace = {
- x: get_sample_vals(sample_lists[0]),
- type: 'histogram'
- };
- var data = [hist_trace];
- var layout = {
- bargap: 0.05,
- title: "Sample Values",
- xaxis: {title: "Value"},
- yaxis: {title: "Count"},
+ ]
+}
+
+box_obj = {
+ data: box_data,
+ layout: root.box_layout
+}
+
+$('.box_plot_tab').click(function() {
+ if ($('#box_plot').hasClass('js-plotly-plot')){
+ redraw_box_plot();
+ } else {
+ Plotly.newPlot('box_plot', box_obj, root.modebar_options);
+ }
+});
+
+// Violin Plot
+
+if (full_sample_lists.length > 1) {
+ root.violin_layout = {
+ title: "Violin Plot",
+ yaxis: {
+ range: [range_bottom, range_top],
+ zeroline: false
+ },
+ width: 600,
+ height: 500,
margin: {
- l: 50,
- r: 30,
- t: 100,
- b: 60
+ l: 50,
+ r: 30,
+ t: 80,
+ b: 80
}
};
-
- $('.histogram_tab').click(function() {
- if ($('#histogram').hasClass('js-plotly-plot')){
- redraw_histogram();
- update_histogram_width();
- } else {
- Plotly.newPlot('histogram', data, layout, root.modebar_options)
- update_histogram_width()
- }
- });
-
- $('.histogram_samples_group').val(root.stats_group);
- $('.histogram_samples_group').change(function() {
- root.stats_group = $(this).val();
- return redraw_histogram();
- });
-
- if (get_sample_vals(sample_lists[0]).length < 256) {
- $('.bar_chart_samples_group').change(function() {
- root.stats_group = $(this).val();
- return redraw_bar_chart();
- });
- root.bar_sort = "name"
+ var trace1 = {
+ y: get_sample_vals(full_sample_lists[2]),
+ type: 'violin',
+ points: 'none',
+ box: {
+ visible: true
+ },
+ line: {
+ color: 'green',
+ },
+ meanline: {
+ visible: true
+ },
+ name: sample_group_list[2],
+ x0: sample_group_list[2]
}
- $('.sort_by_name').click(function() {
- root.bar_sort = "name"
- return redraw_bar_chart();
- });
- $('.sort_by_value').click(function() {
- root.bar_sort = "value"
- return redraw_bar_chart();
- });
-
- root.prob_plot_group = 'samples_primary';
- $('.prob_plot_samples_group').val(root.prob_plot_group);
- $('.prob_plot_tab').click(function() {
- return redraw_prob_plot();
- });
- $('.prob_plot_samples_group').change(function() {
- root.prob_plot_group = $(this).val();
- return redraw_prob_plot();
- });
-
- function isEmpty( el ){
- return !$.trim(el.html())
+ var trace2 = {
+ y: get_sample_vals(full_sample_lists[1]),
+ type: 'violin',
+ points: 'none',
+ box: {
+ visible: true
+ },
+ line: {
+ color: 'green',
+ },
+ meanline: {
+ visible: true
+ },
+ name: sample_group_list[1],
+ x0: sample_group_list[1]
}
-
- $('.stats_panel').click(function() {
- if (isEmpty($('#stats_table'))){
- make_table();
- edit_data_change();
- } else {
- edit_data_change();
+ var trace3 = {
+ y: get_sample_vals(full_sample_lists[0]),
+ type: 'violin',
+ points: 'none',
+ box: {
+ visible: true
+ },
+ line: {
+ color: 'green',
+ },
+ meanline: {
+ visible: true
+ },
+ name: sample_group_list[0],
+ x0: sample_group_list[0]
+ }
+ violin_data = [trace1, trace2, trace3]
+} else {
+ root.violin_layout = {
+ title: "Violin Plot",
+ yaxis: {
+ range: [range_bottom, range_top],
+ zeroline: false
+ },
+ width: 500,
+ height: 300,
+ margin: {
+ l: 50,
+ r: 30,
+ t: 80,
+ b: 80
}
- });
- $('#edit_sample_lists').change(edit_data_change);
- $('.edit_sample_value').change(edit_data_change);
- $('#block_by_index').click(edit_data_change);
- $('#exclude_group').click(edit_data_change);
- $('#block_outliers').click(edit_data_change);
- $('#reset').click(edit_data_change);
- $('#qnorm').click(edit_data_change);
- $('#normalize').click(edit_data_change);
- return console.log("end");
+ };
+ violin_data = [
+ {
+ y: get_sample_vals(full_sample_lists[0]),
+ type: 'violin',
+ points: 'none',
+ box: {
+ visible: true
+ },
+ line: {
+ color: 'green',
+ },
+ meanline: {
+ visible: true
+ },
+ name: sample_group_list[0],
+ x0: sample_group_list[0]
+ }
+ ]
+}
+
+violin_obj = {
+ data: violin_data,
+ layout: root.violin_layout
+}
+
+$('.violin_plot_tab').click(function() {
+ if ($('#violin_plot').hasClass('js-plotly-plot')){
+ redraw_violin_plot();
+ } else {
+ Plotly.plot('violin_plot', violin_obj, root.modebar_options);
+ }
+});
+
+// Histogram
+var hist_trace = {
+ x: get_sample_vals(sample_lists[0]),
+ type: 'histogram'
+};
+var data = [hist_trace];
+var layout = {
+ bargap: 0.05,
+ title: "Sample Values",
+ xaxis: {title: "Value"},
+ yaxis: {title: "Count"},
+ margin: {
+ l: 50,
+ r: 30,
+ t: 100,
+ b: 60
+ }
+};
+
+$('.histogram_tab').click(function() {
+ if ($('#histogram').hasClass('js-plotly-plot')){
+ redraw_histogram();
+ update_histogram_width();
+ } else {
+ Plotly.newPlot('histogram', data, layout, root.modebar_options)
+ update_histogram_width()
+ }
+});
+
+$('.histogram_samples_group').val(root.stats_group);
+$('.histogram_samples_group').change(function() {
+ root.stats_group = $(this).val();
+ return redraw_histogram();
+});
+
+if (get_sample_vals(sample_lists[0]).length < 256) {
+ $('.bar_chart_samples_group').change(function() {
+ root.stats_group = $(this).val();
+ return redraw_bar_chart();
});
-
- Number.prototype.countDecimals = function () {
- if(Math.floor(this.valueOf()) === this.valueOf()) return 0;
- return this.toString().split(".")[1].length || 0;
+ root.bar_sort = "name"
+}
+$('.sort_by_name').click(function() {
+ root.bar_sort = "name"
+ return redraw_bar_chart();
+});
+$('.sort_by_value').click(function() {
+ root.bar_sort = "value"
+ return redraw_bar_chart();
+});
+
+root.prob_plot_group = 'samples_primary';
+$('.prob_plot_samples_group').val(root.prob_plot_group);
+$('.prob_plot_tab').click(function() {
+ return redraw_prob_plot();
+});
+$('.prob_plot_samples_group').change(function() {
+ root.prob_plot_group = $(this).val();
+ return redraw_prob_plot();
+});
+
+function isEmpty( el ){
+ return !$.trim(el.html())
+}
+
+$('.stats_panel').click(function() {
+ if (isEmpty($('#stats_table'))){
+ make_table();
+ edit_data_change();
+ } else {
+ edit_data_change();
}
-
-}).call(this); \ No newline at end of file
+});
+$('#edit_sample_lists').change(edit_data_change);
+$('.edit_sample_value').change(edit_data_change);
+$('#block_by_index').click(edit_data_change);
+$('#exclude_group').click(edit_data_change);
+$('#block_outliers').click(edit_data_change);
+$('#reset').click(edit_data_change);
+$('#qnorm').click(edit_data_change);
+$('#normalize').click(edit_data_change);
+
+Number.prototype.countDecimals = function () {
+ if(Math.floor(this.valueOf()) === this.valueOf()) return 0;
+ return this.toString().split(".")[1].length || 0;
+} \ No newline at end of file
diff --git a/wqflask/wqflask/static/output/Itvl_3kiKQR1g.jpeg b/wqflask/wqflask/static/output/Itvl_3kiKQR1g.jpeg
deleted file mode 100644
index bdd94651..00000000
--- a/wqflask/wqflask/static/output/Itvl_3kiKQR1g.jpeg
+++ /dev/null
Binary files differ
diff --git a/wqflask/wqflask/static/output/Itvl_hNsk2rxO.jpeg b/wqflask/wqflask/static/output/Itvl_hNsk2rxO.jpeg
deleted file mode 100644
index bdd94651..00000000
--- a/wqflask/wqflask/static/output/Itvl_hNsk2rxO.jpeg
+++ /dev/null
Binary files differ
diff --git a/wqflask/wqflask/templates/show_trait.html b/wqflask/wqflask/templates/show_trait.html
index f5e81060..9125b1ae 100644
--- a/wqflask/wqflask/templates/show_trait.html
+++ b/wqflask/wqflask/templates/show_trait.html
@@ -153,42 +153,21 @@
<script language="javascript" type="text/javascript" src="/static/new/packages/DataTables/js/dataTables.naturalSort.js"></script>
<script language="javascript" type="text/javascript" src="/static/new/packages/noUiSlider/nouislider.js"></script>
<script type="text/javascript" charset="utf-8">
-
- function getValue(x) {
- if (x.indexOf('input') >= 0) {
- if ($(x).val() == 'x') {
- return 'x'
- }
- else {
- return parseFloat($(x).val());
- }
- }
- return parseFloat(x);
- }
-
- jQuery.fn.dataTableExt.oSort['cust-txt-asc'] = function (a, b) {
- var x = getValue(a);
- var y = getValue(b);
- return ((x < y) ? -1 : ((x > y) ? 1 : 0));
- };
-
- jQuery.fn.dataTableExt.oSort['cust-txt-desc'] = function (a, b) {
- var x = getValue(a);
- var y = getValue(b);
- if (x == 'x') {
- return 1;
- }
- else if (y == 'x') {
- return -1;
- }
- else {
- return ((x < y) ? 1 : ((x > y) ? -1 : 0));
- }
+ $.fn.dataTable.ext.order['dom-checkbox'] = function ( settings, col )
+ {
+ return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) {
+ return $('input', td).prop('checked') ? '1' : '0';
+ } );
};
- $(document).ready( function () {
+ $.fn.dataTable.ext.order['dom-input'] = function (settings, col) {
+ return this.api().column(col, { order: 'index' }).nodes().map(function (td, i) {
+ return $('input', td).val();
+ });
+ }
+ $(document).ready( function () {
$('.panel-heading').click(function () {
if ($(this).hasClass('collapsed')){
$(this).find('.glyphicon-chevron-down').removeClass('glyphicon-chevron-down').addClass('glyphicon-chevron-up');
@@ -198,74 +177,250 @@
}
});
- $('#samples_primary, #samples_other').find("tr.outlier").css('background-color', 'yellow')
- {% if sample_groups[0].se_exists() %}
- $('#samples_primary, #samples_other').DataTable( {
- "columns": [
- { "bSortable": false },
- { "type": "natural" },
- { "type": "natural", "width": js_data.sample_column_width},
- { "type": "cust-txt" },
- { "bSortable": false },
- { "type": "cust-txt" }{% if has_num_cases %},
- { "type": "cust-txt" }{% endif %}{% if sample_groups[0].attributes|length > 0 %},{% endif %}
- {% for attribute in sample_groups[0].attributes %}
- { "type": "natural" }{% if loop.index < sample_groups[0].attributes|length %},{% endif %}
- {% endfor %}
- ],
- "columnDefs": [ {
- "targets": 0,
- "orderable": false
- } ],
- "order": [[1, "asc" ]],
- "sDom": "RZtr",
- "iDisplayLength": -1,
- "autoWidth": true,
- "bLengthChange": true,
- "deferRender": false,
- "bSortClasses": false,
- "scrollY": "600px",
- "scrollCollapse": false,
- "colResize": {
- "tableWidthFixed": false
+ $('#samples_primary').DataTable( {
+ 'initComplete': function(settings, json) {
+ $('.edit_sample_value').change(function() {
+ edit_data_change;
+ });
+ },
+ 'createdRow': function ( row, data, index ) {
+ $(row).attr('id', "Primary_" + data.this_id)
+ $(row).addClass("value_se");
+ if (data.outlier) {
+ $(row).addClass("outlier");
+ }
+ $('td', row).eq(0).attr("align", "center");
+ $('td', row).eq(0).attr("style", "padding: 2px 0px 0px 2px;");
+ $('td', row).eq(1).addClass("column_name-Index")
+ $('td', row).eq(1).attr("align", "right");
+ $('td', row).eq(1).attr("style", "padding: 2px 4px 0px 2px;");
+ $('td', row).eq(2).addClass("column_name-Sample")
+ $('td', row).eq(3).addClass("column_name-Value")
+ $('td', row).eq(3).attr("style", "text-align: right; padding-top: 2px; padding-bottom: 0px;");
+ {% if sample_groups[0].se_exists() %}
+ $('td', row).eq(4).attr("align", "center");
+ $('td', row).eq(4).attr("style", "padding-left: 2px; padding-right: 2px;");
+ $('td', row).eq(5).addClass("column_name-SE")
+ $('td', row).eq(5).attr("style", "text-align: right; padding-top: 2px; padding-bottom: 0px;");
+ {% if has_num_cases %}
+ $('td', row).eq(6).addClass("column_name-num_cases")
+ $('td', row).eq(6).attr("style", "text-align: right; padding-top: 2px; padding-bottom: 0px;");
+ {% endif %} {% else %} {% if has_num_cases %}
+ $('td', row).eq(4).addClass("column_name-num_cases")
+ $('td', row).eq(4).attr("style", "text-align: right; padding-top: 2px; padding-bottom: 0px;");
+ {% endif %} {% endif %}
+ },
+ 'data': js_data['sample_lists'][0],
+ 'columns': [
+ {
+ 'data': null,
+ 'orderDataType': "dom-checkbox",
+ 'render': function(data, type, row, meta) {
+ return '<input type="checkbox" name="searchResult" style="min-height: 20px;" class="checkbox edit_sample_checkbox" value="" checked="checked">'
+ }
},
- "paging": false
+ {
+ 'title': "ID",
+ 'type': "natural",
+ 'data': "this_id"
+ },
+ {
+ 'title': "Sample",
+ 'type': "natural",
+ 'data': null,
+ 'render': function(data, type, row, meta) {
+ return '<span class="edit_sample_sample_name">' + data.name + '</span>'
+ }
+ },
+ {
+ 'title': "Value",
+ 'orderDataType': "dom-input",
+ 'data': null,
+ 'render': function(data, type, row, meta) {
+ if (data.value == null) {
+ return '<input type="text" data-value="x" data-qnorm="x" name="value:' + data.name + '" style="text-align: right;" class="trait_value_input edit_sample_value" value="x" size=6 maxlength=6>'
+ } else {
+ return '<input type="text" data-value="' + data.value + '" data-qnorm="' + js_data['qnorm_values'][0][parseInt(data.this_id)] + '" name="value:' + data.name + '" style="text-align: right;" class="trait_value_input edit_sample_value" value="' + data.value + '" size=6 maxlength=6>'
+ }
+ }
+ }{% if sample_groups[0].se_exists() %},
+ {
+ 'bSortable': false,
+ 'type': "natural",
+ 'data': null,
+ 'render': function(data, type, row, meta) {
+ return '±'
+ }
+ },
+ {
+ 'title': "SE",
+ 'orderDataType': "dom-input",
+ 'data': null,
+ 'render': function(data, type, row, meta) {
+ if (data.variance == null) {
+ return '<input type="text" data-value="x" data-qnorm="x" name="value:' + data.name + '" style="text-align: right;" class="trait_value_input edit_sample_se" value="x" size=6 maxlength=6>'
+ } else {
+ return '<input type="text" data-value="' + data.variance + '" data-qnorm="x" name="value:' + data.name + '" style="text-align: right;" class="trait_value_input edit_sample_se" value="' + data.variance + '" size=6 maxlength=6>'
+ }
+ }
+ }{% endif %}{% if has_num_cases %},
+ {
+ 'title': "N",
+ 'type': "natural",
+ 'data': null,
+ 'orderDataType': "cust-txt",
+ 'render': function(data, type, row, meta) {
+ return '<input type="text" data-value="' + data.num_cases + '" data-qnorm="' + js_data['qnorm_vals'][0][parseInt(data.this_id)] + '" name="value:' + data.name + '" style="text-align: right;" class="trait_value_input edit_sample_num_cases" value="' + data.num_cases + '" size=4 maxlength=4>'
+ }
+ }{% endif %}{% if sample_groups[0].attributes|length > 0 %}{% for attribute in sample_groups[0].attributes|sort() %},
+ {
+ 'title': "{{ sample_groups[0].attributes[attribute].name }}",
+ 'type': "natural",
+ 'data': null,
+ 'render': function(data, type, row, meta) {
+ return data.extra_attributes['{{ sample_groups[0].attributes[attribute].name }}']
+ }
+ }{% endfor %}{% endif %}
+ ],
+ 'order': [[1, "asc"]],
+ 'sDom': "Ztr",
+ 'autoWidth': true,
+ 'deferRender': true,
+ 'paging': false,
+ 'orderClasses': true,
+ 'scrollY': "600px",
+ 'scrollCollapse': false,
+ 'processing': true,
+ 'language': {
+ 'loadingRecords': '&nbsp;',
+ 'processing': 'Loading...'
+ }
} );
- {% else %}
-
- $('#samples_primary, #samples_other').DataTable( {
- "columns": [
- { "bSortable": false, "width": "8%" },
- { "type": "natural", "width": "15%" },
- { "type": "natural", "width": "25%" },
- { "type": "cust-txt", "width": "25%" }{% if has_num_cases %},
- { "type": "cust-txt" }{% endif %}{% if sample_groups[0].attributes|length > 0 %},{% endif %}
- {% for attribute in sample_groups[0].attributes %}
- { "type": "natural" }{% if loop.index < sample_groups[0].attributes|length %},{% endif %}
- {% endfor %}
- ],
- "columnDefs": [ {
- "targets": 0,
- "orderable": false
- } ],
- "order": [[1, "asc" ]],
- "sDom": "RZtr",
- "iDisplayLength": -1,
- "autoWidth": true,
- "bLengthChange": true,
- "deferRender": false,
- "bSortClasses": false,
- "scrollY": "600px",
- "scrollCollapse": false,
- "colResize": {
- "tableWidthFixed": false
+ {% if sample_groups|length != 1 %}
+ $('#samples_other').DataTable( {
+ 'initComplete': function(settings, json) {
+ $('.edit_sample_value').change(function() {
+ edit_data_change;
+ });
+ },
+ 'createdRow': function ( row, data, index ) {
+ $(row).attr('id', "Other_" + data.this_id)
+ $(row).addClass("value_se");
+ if (data.outlier) {
+ $(row).addClass("outlier");
+ }
+ $('td', row).eq(0).attr("align", "center");
+ $('td', row).eq(0).attr("style", "padding: 2px 0px 0px 2px;");
+ $('td', row).eq(1).addClass("column_name-Index")
+ $('td', row).eq(1).attr("align", "right");
+ $('td', row).eq(1).attr("style", "padding: 2px 4px 0px 2px;");
+ $('td', row).eq(2).addClass("column_name-Sample")
+ $('td', row).eq(3).addClass("column_name-Value")
+ $('td', row).eq(3).attr("style", "text-align: right; padding-top: 2px; padding-bottom: 0px;");
+ {% if sample_groups[1].se_exists() %}
+ $('td', row).eq(4).attr("align", "center");
+ $('td', row).eq(4).attr("style", "padding-left: 2px; padding-right: 2px;");
+ $('td', row).eq(5).addClass("column_name-SE")
+ $('td', row).eq(5).attr("style", "text-align: right; padding-top: 2px; padding-bottom: 0px;");
+ {% if has_num_cases %}
+ $('td', row).eq(6).addClass("column_name-num_cases")
+ $('td', row).eq(6).attr("style", "text-align: right; padding-top: 2px; padding-bottom: 0px;");
+ {% endif %} {% else %} {% if has_num_cases %}
+ $('td', row).eq(4).addClass("column_name-num_cases")
+ $('td', row).eq(4).attr("style", "text-align: right; padding-top: 2px; padding-bottom: 0px;");
+ {% endif %} {% endif %}
+ },
+ 'data': js_data['sample_lists'][1],
+ 'columns': [
+ {
+ 'data': null,
+ 'orderDataType': "dom-checkbox",
+ 'render': function(data, type, row, meta) {
+ return '<input type="checkbox" name="searchResult" style="min-height: 20px;" class="checkbox edit_sample_checkbox" value="" checked="checked">'
+ }
+ },
+ {
+ 'title': "ID",
+ 'type': "natural",
+ 'data': "this_id"
},
- "paging": false
+ {
+ 'title': "Sample",
+ 'type': "natural",
+ 'data': null,
+ 'render': function(data, type, row, meta) {
+ return '<span class="edit_sample_sample_name">' + data.name + '</span>'
+ }
+ },
+ {
+ 'title': "Value",
+ 'orderDataType': "dom-input",
+ 'data': null,
+ 'render': function(data, type, row, meta) {
+ if (data.value == null) {
+ return '<input type="text" data-value="x" data-qnorm="x" name="value:' + data.name + '" style="text-align: right;" class="trait_value_input edit_sample_value" value="x" size=6 maxlength=6>'
+ } else {
+ return '<input type="text" data-value="' + data.value + '" data-qnorm="' + js_data['qnorm_values'][1][parseInt(data.this_id)] + '" name="value:' + data.name + '" style="text-align: right;" class="trait_value_input edit_sample_value" value="' + data.value + '" size=6 maxlength=6>'
+ }
+ }
+ }{% if sample_groups[1].se_exists() %},
+ {
+ 'bSortable': false,
+ 'type': "natural",
+ 'data': null,
+ 'render': function(data, type, row, meta) {
+ return '±'
+ }
+ },
+ {
+ 'title': "SE",
+ 'orderDataType': "dom-input",
+ 'data': null,
+ 'render': function(data, type, row, meta) {
+ if (data.variance == null) {
+ return '<input type="text" data-value="x" data-qnorm="x" name="value:' + data.name + '" style="text-align: right;" class="trait_value_input edit_sample_se" value="x" size=6 maxlength=6>'
+ } else {
+ return '<input type="text" data-value="' + data.variance + '" data-qnorm="x" name="value:' + data.name + '" style="text-align: right;" class="trait_value_input edit_sample_se" value="' + data.variance + '" size=6 maxlength=6>'
+ }
+ }
+ }{% endif %}{% if has_num_cases %},
+ {
+ 'title': "N",
+ 'type': "natural",
+ 'data': null,
+ 'orderDataType': "cust-txt",
+ 'render': function(data, type, row, meta) {
+ return '<input type="text" data-value="' + data.num_cases + '" data-qnorm="' + js_data['qnorm_vals'][1][parseInt(data.this_id)] + '" name="value:' + data.name + '" style="text-align: right;" class="trait_value_input edit_sample_num_cases" value="' + data.num_cases + '" size=4 maxlength=4>'
+ }
+ }{% endif %}{% if sample_groups[1].attributes|length > 0 %}{% for attribute in sample_groups[1].attributes|sort() %},
+ {
+ 'title': "{{ sample_groups[1].attributes[attribute].name }}",
+ 'type': "natural",
+ 'data': null,
+ 'render': function(data, type, row, meta) {
+ return data.extra_attributes['{{ sample_groups[1].attributes[attribute].name }}']
+ }
+ }{% endfor %}{% endif %}
+ ],
+ 'order': [[1, "asc"]],
+ 'sDom': "Ztr",
+ 'autoWidth': true,
+ 'deferRender': true,
+ 'paging': false,
+ 'orderClasses': true,
+ 'scrollY': "600px",
+ 'scrollCollapse': false,
+ 'processing': true,
+ 'language': {
+ 'loadingRecords': '&nbsp;',
+ 'processing': 'Loading...'
+ }
} );
-
{% endif %}
+ $('#samples_primary, #samples_other').find("tr.outlier").css('background-color', 'yellow')
+
var slider = document.getElementById('p_range_slider');
noUiSlider.create(slider, {
start: [-1.0, 1.0],
diff --git a/wqflask/wqflask/templates/show_trait_edit_data.html b/wqflask/wqflask/templates/show_trait_edit_data.html
index 090602f4..a5e42fdb 100644
--- a/wqflask/wqflask/templates/show_trait_edit_data.html
+++ b/wqflask/wqflask/templates/show_trait_edit_data.html
@@ -1,176 +1,29 @@
<div>
- <!--<h2>Review and Edit Data</h2>-->
-
-<!--
- <div class="well form-horizontal">
- <fieldset id="showHideOptions">
- <legend>Block samples</legend>
- <p>Edit or delete values in the Trait Data boxes, and use the
- <strong>Reset</strong> option as
- needed.
- </p>
-
- <div id="blockMenuSpan" class="input-append" style="margin-bottom: 10px;">
- <label for="remove_samples_field">Block samples by index:</label>
- <input type="text" id="remove_samples_field">
- <select id="block_group" size="1">
- <option value="primary">
- {{ sample_group_types['samples_primary'] }}
- </option>
- <option value="other">
- {{ sample_group_types['samples_other'] }}
- </option>
- </select>
- <input type="button" id="block_by_index" class="btn" value="Block">
- </div>
- <div id="remove_samples_invalid" class="alert alert-error" style="display:none;">
- Please check that your input is formatted correctly, e.g. <strong>3, 5-10, 12</strong>
- </div>
- {% if sample_groups[0].attributes %}
- <div class="input-append" style="margin-top:10px; margin-bottom:10px;">
- <label for="exclude_menu">Block samples by group:</label>
- <select id="exclude_menu" size=1>
- {% for attribute in sample_groups[0].attributes %}
- <option value="{{ sample_groups[0].attributes[attribute].name.replace(' ', '_') }}">
- {{ sample_groups[0].attributes[attribute].name }}</option>
- {% endfor %}
- </select>
- <select id="attribute_values" size=1>
- </select>
- <input type="button" id="exclude_group" class="btn" value="Block">
- </div>
- {% endif %}
- <div>
- <input type="button" id="hide_no_value" class="btn btn-default" value="Hide No Value">
- <input type="button" id="block_outliers" class="btn btn-default" value="Block Outliers">
- <input type="button" id="reset" class="btn btn-primary" value="Reset">
- <span class="input-append">
- <input type="button" id="export" class="btn btn-default" value="Export">
- <select id="export_format" class="select optional span2">
- <option value="excel">Excel</option>
- <option value="csv">CSV</option>
- </select>
- </span>
- <br>
- <div style="margin-top:10px;">
- <input type="button" id="normalize" class="btn btn-default" value="Normalize">
- <select id="norm_method" class="select optional span2">
- <option value="log2">Log2</option>
- <option value="qnorm">Quantile</option>
- <option value="sqrt">Square Root</option>
- </select>
- </div>
- </div>
- </fieldset>
- <br>
-
- <div>
- <p>Outliers highlighted in
- <strong style="background-color:yellow;">yellow</strong>
- can be hidden using
- the <strong>Hide Outliers</strong> button.
- </p>
-
- <p>Samples with no value (x) can be hidden by clicking
- <strong>Hide No Value</strong> button.
- </p>
- </div>
+ <div style="padding-bottom: 10px;">
+ <input type="button" class="btn btn-primary reset" value="Reset">
+ <span class="input-append">
+ <input type="button" class="btn btn-default export" value="Export">
+ <select class="select optional span2 export_format">
+ <option value="excel">Excel</option>
+ <option value="csv">CSV</option>
+ </select>
+ </span>
</div>
- <br>
--->
- <!--<div id="edit_sample_lists">-->
{% for sample_type in sample_groups %}
{% set outer_loop = loop %}
<div class="sample_group" style="width:{{ trait_table_width }};">
<h3>{{ sample_type.header }}</h3>
- <hr>
+ <hr style="margin-top: 4px; margin-bottom: 10px; height: 1px; background-color: #A9A9A9;">
<div id="table_container">
<table class="table-hover table-striped cell-border" id="samples_{{ sample_type.sample_group_type }}" style="float: left; width:100%;">
- <thead>
- <tr>
- <th></th>
- <th>ID</th>
- <th>Sample</th>
- <th style="text-align: right;">Value</th>
- {% if sample_type.se_exists() %}
- <th style="padding-left: 3px; padding-right: 3px;">&nbsp;</th>
- <th style="text-align: right;">SE</th>
- {% endif %}
- {% if has_num_cases %}
- <th style="text-align: right;">N</th>
- {% endif %}
- {% for attribute in sample_type.attributes|sort() %}
- <th>
- {{ sample_type.attributes[attribute].name }}
- </th>
- {% endfor %}
- </tr>
- </thead>
<tbody>
- {% for sample in sample_type.sample_list %}
- <tr class="{{ sample.class_outlier }} value_se" id="{% if outer_loop.index == 1 %}Primary_{{ sample.this_id }}{% else %}Other_{{ sample.this_id }}{% endif %}">
- <td align="center" style="padding-left: 0px; padding-right: 0px; padding-top: 2px; padding-bottom: 0px;" class="column_name-"><input type="checkbox" name="selectCheck" class="checkbox edit_sample_checkbox" style="min-height: 20px;" value="{{ sample.name }}" checked="checked">
- </td>
- <td class="column_name-Index" align="right">{{ loop.index }}</td>
- <td class="column_name-Sample">
- <span class="edit_sample_sample_name">
- {{ sample.name }}
- </span>
- </td>
-
- {# Todo: Add IDs #}
- <td class="column_name-Value" align="right" style="padding-top: 2px; padding-bottom: 0px;">
- <input type="text" data-value="{{ sample.display_value }}" data-qnorm="{{ qnorm_vals[outer_loop.index - 1][loop.index - 1] }}" name="{{ 'value:' + sample.name }}"
- style="text-align:right;"
- class="trait_value_input edit_sample_value"
- value="{{ sample.display_value }}"
- size=6 maxlength=6
- >
- </td>
-
- {% if sample_type.se_exists() %}
- <td align="center" style="padding-left: 2px; padding-right: 2px;">
- ±
- </td>
-
- {# Todo: Add IDs #}
- <td class="column_name-SE" align="right" style="padding-top: 2px; padding-bottom: 0px;">
- <input type="text" data-value="{{ sample.display_variance }}" data-qnorm="x" name="{{ 'variance:' + sample.name}}"
- style="text-align:right;"
- class="trait_value_input edit_sample_se"
- value="{{ sample.display_variance }}"
- size=6 maxlength=6
- >
- </td>
- {% endif %}
- {% if has_num_cases %}
- <td class="column_name-num_cases" align="right">
- <input type="text" data-value="{{ sample.display_num_cases }}" name="{{ 'num_cases:' + sample.name}}"
- style="text-align:right;"
- class="trait_value_input edit_sample_num_cases"
- value="{{ sample.display_num_cases }}"
- size=4 maxlength=4
- >
- </td>
- {% endif %}
-
- {# Loop through each attribute type and input value #}
- {% for attribute in sample_type.attributes|sort() %}
- <td class="std_cell column_name-{{ sample_type.attributes[attribute].name.replace(' ', '_') }}">
- {{ sample.extra_attributes[sample_type.attributes[attribute].name] }}
- </td>
- {% endfor %}
- </tr>
- {% endfor %}
+ <td colspan="100%" align="center"><br><b><font size="15">Loading...</font></b><br></td>
</tbody>
</table>
</div>
</div>
<br>
{% endfor %}
- <!--</div>-->
-
-
<input type="hidden" name="Default_Name">
</div>
diff --git a/wqflask/wqflask/templates/show_trait_mapping_tools.html b/wqflask/wqflask/templates/show_trait_mapping_tools.html
index e0bc8eb8..e7f3eca3 100644
--- a/wqflask/wqflask/templates/show_trait_mapping_tools.html
+++ b/wqflask/wqflask/templates/show_trait_mapping_tools.html
@@ -242,7 +242,7 @@
<div class="mapping_method_fields form-group">
<label style="text-align:right;" for="mapping_permutations" class="col-xs-3 control-label">Permutations</label>
<div style="margin-left:20px;" class="col-xs-4 controls">
- <input name="num_perm_rqtl_geno" value="2000" type="text" class="form-control">
+ <input name="num_perm_rqtl_geno" value="0" type="text" class="form-control">
</div>
</div>
<div class="mapping_method_fields form-group">
@@ -268,9 +268,9 @@
<label style="text-align:right;" for="mapmethod_rqtl_geno" class="col-xs-3 control-label">Method</label>
<div style="margin-left:20px;" class="col-xs-4 controls">
<select name="mapmethod_rqtl_geno" class="form-control">
+ <option value="hk" selected>hk</option>
<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>
diff --git a/wqflask/wqflask/templates/show_trait_transform_and_filter.html b/wqflask/wqflask/templates/show_trait_transform_and_filter.html
index fdf34c27..d1765778 100644
--- a/wqflask/wqflask/templates/show_trait_transform_and_filter.html
+++ b/wqflask/wqflask/templates/show_trait_transform_and_filter.html
@@ -39,10 +39,10 @@
<div>
<input type="button" id="hide_no_value" class="btn btn-default" value="Hide No Value">
<input type="button" id="block_outliers" class="btn btn-default" value="Block Outliers">
- <input type="button" id="reset" class="btn btn-primary" value="Reset">
+ <input type="button" class="btn btn-primary reset" value="Reset">
<span class="input-append">
- <input type="button" id="export" class="btn btn-default" value="Export">
- <select id="export_format" class="select optional span2">
+ <input type="button" class="btn btn-default export" value="Export">
+ <select class="select optional span2 export_format">
<option value="excel">Excel</option>
<option value="csv">CSV</option>
</select>