diff options
-rw-r--r-- | wqflask/base/trait.py | 4 | ||||
-rw-r--r-- | wqflask/utility/Plot.py | 3 | ||||
-rw-r--r-- | wqflask/wqflask/search_results.py | 11 | ||||
-rw-r--r-- | wqflask/wqflask/show_trait/SampleList.py | 32 | ||||
-rw-r--r-- | wqflask/wqflask/show_trait/show_trait.py | 22 | ||||
-rw-r--r-- | wqflask/wqflask/static/new/javascript/dataset_menu_structure.json | 79 | ||||
-rw-r--r-- | wqflask/wqflask/static/new/javascript/get_covariates_from_collection.js | 76 | ||||
-rw-r--r-- | wqflask/wqflask/static/new/javascript/show_trait.js | 65 | ||||
-rw-r--r-- | wqflask/wqflask/templates/search_result_page.html | 22 | ||||
-rw-r--r-- | wqflask/wqflask/templates/show_trait.html | 30 | ||||
-rw-r--r-- | wqflask/wqflask/templates/show_trait_mapping_tools.html | 2 | ||||
-rw-r--r-- | wqflask/wqflask/templates/show_trait_transform_and_filter.html | 1 |
12 files changed, 221 insertions, 126 deletions
diff --git a/wqflask/base/trait.py b/wqflask/base/trait.py index e57d4176..9f76306f 100644 --- a/wqflask/base/trait.py +++ b/wqflask/base/trait.py @@ -206,6 +206,7 @@ def jsonable(trait): return dict(name=trait.name, symbol=trait.symbol, dataset=dataset.name, + dataset_name = dataset.shortname, description=trait.description_display, mean=trait.mean, location=trait.location_repr, @@ -217,6 +218,7 @@ def jsonable(trait): if trait.pubmed_id: return dict(name=trait.name, dataset=dataset.name, + dataset_name = dataset.shortname, description=trait.description_display, authors=trait.authors, pubmed_text=trait.pubmed_text, @@ -228,6 +230,7 @@ def jsonable(trait): else: return dict(name=trait.name, dataset=dataset.name, + dataset_name = dataset.shortname, description=trait.description_display, authors=trait.authors, pubmed_text=trait.pubmed_text, @@ -238,6 +241,7 @@ def jsonable(trait): elif dataset.type == "Geno": return dict(name=trait.name, dataset=dataset.name, + dataset_name = dataset.shortname, location=trait.location_repr ) else: diff --git a/wqflask/utility/Plot.py b/wqflask/utility/Plot.py index 529cd117..cce8435d 100644 --- a/wqflask/utility/Plot.py +++ b/wqflask/utility/Plot.py @@ -98,8 +98,6 @@ def find_outliers(vals): """ - logger.debug("xerxes vals is:", pf(vals)) - if vals: #logger.debug("vals is:", pf(vals)) stats = corestats.Stats(vals) @@ -114,7 +112,6 @@ def find_outliers(vals): upper_bound = None lower_bound = None - logger.debug(pf(locals())) return upper_bound, lower_bound # parameter: data is either object returned by reaper permutation function (called by MarkerRegressionPage.py) diff --git a/wqflask/wqflask/search_results.py b/wqflask/wqflask/search_results.py index c67063b0..893fd172 100644 --- a/wqflask/wqflask/search_results.py +++ b/wqflask/wqflask/search_results.py @@ -112,7 +112,7 @@ views.py). trait_dict['hmac'] = user_manager.data_hmac('{}:{}'.format(this_trait.name, this_trait.dataset.name)) if this_trait.dataset.type == "ProbeSet": trait_dict['symbol'] = this_trait.symbol - trait_dict['description'] = this_trait.description_display + trait_dict['description'] = insert_newlines(this_trait.description_display) trait_dict['location'] = this_trait.location_repr trait_dict['mean'] = "N/A" trait_dict['additive'] = "N/A" @@ -125,7 +125,7 @@ views.py). elif this_trait.dataset.type == "Geno": trait_dict['location'] = this_trait.location_repr elif this_trait.dataset.type == "Publish": - trait_dict['description'] = this_trait.description_display + trait_dict['description'] = insert_newlines(this_trait.description_display) trait_dict['authors'] = this_trait.authors trait_dict['pubmed_id'] = "N/A" if this_trait.pubmed_id: @@ -222,3 +222,10 @@ views.py). return the_search else: return None + +def insert_newlines(string, every=64): + """ This is because it is seemingly impossible to change the width of the description column, so I'm just manually adding line breaks """ + lines = [] + for i in xrange(0, len(string), every): + lines.append(string[i:i+every]) + return '\n'.join(lines) diff --git a/wqflask/wqflask/show_trait/SampleList.py b/wqflask/wqflask/show_trait/SampleList.py index 50d7b6c0..50026bba 100644 --- a/wqflask/wqflask/show_trait/SampleList.py +++ b/wqflask/wqflask/show_trait/SampleList.py @@ -39,7 +39,7 @@ class SampleList(object): #self.sample_qnorm = get_transform_vals(self.dataset, this_trait) - if self.this_trait and self.dataset and self.dataset.type == 'ProbeSet': + if self.this_trait and self.dataset: self.get_extra_attribute_values() for counter, sample_name in enumerate(sample_names, 1): @@ -72,10 +72,9 @@ class SampleList(object): self.sample_list.append(sample) - logger.debug("self.attributes is", pf(self.attributes)) + #logger.debug("attribute vals are", pf(self.sample_attribute_values)) self.do_outliers() - logger.debug("*the_samples are [%i]: %s" % (len(self.sample_list), pf(self.sample_list))) def __repr__(self): return "<SampleList> --> %s" % (pf(self.__dict__)) @@ -98,11 +97,11 @@ class SampleList(object): # Get attribute names and distinct values for each attribute results = g.db.execute(''' - SELECT DISTINCT CaseAttribute.Id, CaseAttribute.Name, CaseAttributeXRef.Value - FROM CaseAttribute, CaseAttributeXRef - WHERE CaseAttributeXRef.CaseAttributeId = CaseAttribute.Id - AND CaseAttributeXRef.ProbeSetFreezeId = %s - ORDER BY CaseAttribute.Name''', (str(self.dataset.id),)) + SELECT DISTINCT CaseAttribute.Id, CaseAttribute.Name, CaseAttributeXRefNew.Value + FROM CaseAttribute, CaseAttributeXRefNew + WHERE CaseAttributeXRefNew.CaseAttributeId = CaseAttribute.Id + AND CaseAttributeXRefNew.InbredSetId = %s + ORDER BY CaseAttribute.Name''', (str(self.dataset.group.id),)) self.attributes = {} for attr, values in itertools.groupby(results.fetchall(), lambda row: (row.Id, row.Name)): @@ -115,16 +114,17 @@ class SampleList(object): def get_extra_attribute_values(self): if self.attributes: - results = g.db.execute(''' - SELECT Strain.Name AS SampleName, CaseAttributeId AS Id, CaseAttributeXRef.Value - FROM Strain, StrainXRef, InbredSet, CaseAttributeXRef + query = ''' + SELECT Strain.Name AS SampleName, CaseAttributeId AS Id, CaseAttributeXRefNew.Value + FROM Strain, StrainXRef, InbredSet, CaseAttributeXRefNew WHERE StrainXRef.StrainId = Strain.Id AND InbredSet.Id = StrainXRef.InbredSetId - AND CaseAttributeXRef.StrainId = Strain.Id - AND InbredSet.Name = %s - AND CaseAttributeXRef.ProbeSetFreezeId = %s - ORDER BY SampleName''', - (self.dataset.group.name, self.this_trait.dataset.id)) + AND CaseAttributeXRefNew.StrainId = Strain.Id + AND InbredSet.Id = CaseAttributeXRefNew.InbredSetId + AND CaseAttributeXRefNew.InbredSetId = %s + ORDER BY SampleName''' % self.dataset.group.id + + results = g.db.execute(query) for sample_name, items in itertools.groupby(results.fetchall(), lambda row: row.SampleName): attribute_values = {} diff --git a/wqflask/wqflask/show_trait/show_trait.py b/wqflask/wqflask/show_trait/show_trait.py index 0d1ed345..9b4470fe 100644 --- a/wqflask/wqflask/show_trait/show_trait.py +++ b/wqflask/wqflask/show_trait/show_trait.py @@ -350,6 +350,28 @@ def quantile_normalize_vals(sample_groups): return qnorm_by_group +def get_z_scores(sample_groups): + zscore_by_group = [] + for sample_type in sample_groups: + trait_vals = [] + for sample in sample_type.sample_list: + try: + trait_vals.append(float(sample.value)) + except: + continue + + qnorm_vals = normf(trait_vals) + qnorm_vals_with_x = [] + counter = 0 + for sample in sample_type.sample_list: + if sample.display_value == "x": + qnorm_vals_with_x.append("x") + else: + qnorm_vals_with_x.append(qnorm_vals[counter]) + counter += 1 + + qnorm_by_group.append(qnorm_vals_with_x) + def get_nearest_marker(this_trait, this_db): this_chr = this_trait.locus_chr logger.debug("this_chr:", this_chr) diff --git a/wqflask/wqflask/static/new/javascript/dataset_menu_structure.json b/wqflask/wqflask/static/new/javascript/dataset_menu_structure.json index 3f2673c1..7d00d509 100644 --- a/wqflask/wqflask/static/new/javascript/dataset_menu_structure.json +++ b/wqflask/wqflask/static/new/javascript/dataset_menu_structure.json @@ -1560,7 +1560,7 @@ "AIL-LGSM-F34-A": { "Phenotypes": [ [ - "None", + "655", "AIL-LGSM-F34-APublish", "AIL-LGSM-F34-A Phenotypes" ] @@ -1569,7 +1569,7 @@ "AIL-LGSM-F34-F39-43-GBS": { "Phenotypes": [ [ - "None", + "654", "AIL-LGSM-F34-F39-43-GBSPublish", "AIL-LGSM-F34-F39-43-GBS Phenotypes" ] @@ -1578,7 +1578,7 @@ "AIL-LGSM-F34-GBS": { "Phenotypes": [ [ - "None", + "656", "AIL-LGSM-F34-GBSPublish", "AIL-LGSM-F34-GBS Phenotypes" ] @@ -1587,7 +1587,7 @@ "AIL-LGSM-F39-43-GBS": { "Phenotypes": [ [ - "None", + "657", "AIL-LGSM-F39-43-GBSPublish", "AIL-LGSM-F39-43-GBS Phenotypes" ] @@ -1713,11 +1713,6 @@ "B6D2F2": { "Brain mRNA": [ [ - "77", - "BRF2_M_0805_R", - "OHSU/VA B6D2F2 Brain mRNA M430 (Aug05) RMA" - ], - [ "76", "BRF2_M_0805_M", "OHSU/VA B6D2F2 Brain mRNA M430 (Aug05) MAS5" @@ -1728,6 +1723,11 @@ "OHSU/VA B6D2F2 Brain mRNA M430 (Aug05) PDNN" ], [ + "77", + "BRF2_M_0805_R", + "OHSU/VA B6D2F2 Brain mRNA M430 (Aug05) RMA" + ], + [ "33", "BRF2_M_0304_P", "OHSU/VA B6D2F2 Brain mRNA M430A (Mar04) PDNN" @@ -2082,16 +2082,16 @@ ], "Brain mRNA": [ [ - "164", - "UTHSC_BXD_WB_RNASeq1112", - "UTHSC Mouse BXD Whole Brain RNA Sequence (Nov12) RPKM Untrimmed" - ], - [ "590", "UTHSC_BXD_WB_RNASeqtrim1_1112", "UTHSC Mouse BXD Whole Brain RNA Sequence (Nov12) RPKM Trimmed 1.0" ], [ + "164", + "UTHSC_BXD_WB_RNASeq1112", + "UTHSC Mouse BXD Whole Brain RNA Sequence (Nov12) RPKM Untrimmed" + ], + [ "394", "UTHSC_BXD_WB_RNASeqEx1112", "UTHSC Mouse BXD Whole Brain RNA Sequence Exon Level (Nov12) RPKM" @@ -2233,11 +2233,6 @@ "Eye M430v2 WT Gpnmb (Sep08) RMA" ], [ - "279", - "Eye_M2_0908_R_WT", - "Eye M430v2 WT Tyrp1 (Sep08) RMA" - ], - [ "278", "Eye_M2_0908_R_MT", "Eye M430v2 Mutant Tyrp1 (Sep08) RMA" @@ -2248,6 +2243,11 @@ "Eye M430v2 WT WT (Sep08) RMA" ], [ + "279", + "Eye_M2_0908_R_WT", + "Eye M430v2 WT Tyrp1 (Sep08) RMA" + ], + [ "400", "DBA2J-ONH-1212", "Howell et al. 2011, DBA/2J Glaucoma Optic Nerve Head M430 2.0 (Dec12) RMA" @@ -2531,16 +2531,16 @@ ], "Kidney mRNA": [ [ - "239", - "MA_M2F_0706_R", - "Mouse kidney M430v2 Female (Aug06) RMA" - ], - [ "240", "MA_M2M_0706_R", "Mouse kidney M430v2 Male (Aug06) RMA" ], [ + "239", + "MA_M2F_0706_R", + "Mouse kidney M430v2 Female (Aug06) RMA" + ], + [ "118", "MA_M2_0806_R", "Mouse kidney M430v2 Sex Balanced (Aug06) RMA" @@ -2692,6 +2692,11 @@ "EPFL/LISP BXD HFD Liver Affy Mouse Gene 1.0 ST (Apr13) RMA" ], [ + "849", + "EPFLMouseLiverCDEx0413", + "EPFL/LISP BXD CD Liver Affy Mouse Gene 1.0 ST (Apr13) RMA Exon Level" + ], + [ "848", "EPFLMouseLiverHFCEx0413", "EPFL/LISP BXD HFC Liver Affy Mouse Gene 1.0 ST (Apr13) RMA Exon Level" @@ -2702,11 +2707,6 @@ "EPFL/LISP BXD CD Liver Affy Mouse Gene 1.0 ST (Apr13) RMA" ], [ - "849", - "EPFLMouseLiverCDEx0413", - "EPFL/LISP BXD CD Liver Affy Mouse Gene 1.0 ST (Apr13) RMA Exon Level" - ], - [ "433", "EPFLMouseLiverBothExRMA0413", "EPFL/LISP BXD CD+HFD Liver Affy Mouse Gene 1.0 ST (Apr13) RMA Exon Level" @@ -3121,6 +3121,13 @@ ] }, "BXD-Harvested": { + "Hippocampus mRNA": [ + [ + "873", + "JAX-BXD-Hip-Pro-0219", + "JAX BXD Hippocampal Proteome (Feb19)" + ] + ], "Liver mRNA": [ [ "843", @@ -3539,11 +3546,6 @@ ], "Hippocampus mRNA": [ [ - "213", - "Illum_LXS_Hipp_NOS_1008", - "Hippocampus Illumina NOS (Oct08) RankInv beta" - ], - [ "219", "Illum_LXS_Hipp_NON_1008", "Hippocampus Illumina NON (Oct08) RankInv beta" @@ -3564,6 +3566,11 @@ "Hippocampus Illumina RSS (Oct08) RankInv beta" ], [ + "213", + "Illum_LXS_Hipp_NOS_1008", + "Hippocampus Illumina NOS (Oct08) RankInv beta" + ], + [ "143", "Illum_LXS_Hipp_loess0807", "Hippocampus Illumina (Aug07) LOESS" @@ -5333,6 +5340,10 @@ "Phenotypes" ], [ + "Hippocampus mRNA", + "Hippocampus mRNA" + ], + [ "Liver mRNA", "Liver mRNA" ] diff --git a/wqflask/wqflask/static/new/javascript/get_covariates_from_collection.js b/wqflask/wqflask/static/new/javascript/get_covariates_from_collection.js index f2e694d8..fc6e5a78 100644 --- a/wqflask/wqflask/static/new/javascript/get_covariates_from_collection.js +++ b/wqflask/wqflask/static/new/javascript/get_covariates_from_collection.js @@ -2,12 +2,65 @@ var add_trait_data, assemble_into_json, back_to_collections, collection_click, collection_list, color_by_trait, create_trait_data_csv, get_this_trait_vals, get_trait_data, process_traits, selected_traits, submit_click, this_trait_data, trait_click, __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; -collection_list = null; - this_trait_data = null; selected_traits = {}; +$('#collections_list').attr("style", "width: 100%;"); +$('#trait_table').dataTable( { + "drawCallback": function( settings ) { + $('#trait_table tr').click(function(event) { + if (event.target.type !== 'checkbox') { + $(':checkbox', this).trigger('click'); + } + }); + }, + "columns": [ + { "type": "natural", "width": "3%" }, + { "type": "natural", "width": "8%" }, + { "type": "natural", "width": "20%" }, + { "type": "natural", "width": "25%" }, + { "type": "natural", "width": "25%" }, + { "type": "natural", "width": "15%" } + ], + "columnDefs": [ { + "targets": 0, + "orderable": false + } ], + "order": [[1, "asc" ]], + "sDom": "RZtr", + "iDisplayLength": -1, + "autoWidth": true, + "bDeferRender": true, + "bSortClasses": false, + "paging": false, + "orderClasses": true +} ); + +$('#collection_table').dataTable( { + "createdRow": function ( row, data, index ) { + if ($('td', row).eq(2).text().length > 40) { + $('td', row).eq(2).text($('td', row).eq(2).text().substring(0, 40)); + $('td', row).eq(2).text($('td', row).eq(2).text() + '...') + } + if ($('td', row).eq(4).text().length > 50) { + $('td', row).eq(4).text($('td', row).eq(4).text().substring(0, 50)); + $('td', row).eq(4).text($('td', row).eq(4).text() + '...') + } + }, + "columnDefs": [ { + "targets": 0, + "orderable": false + } ], + "order": [[1, "asc" ]], + "sDom": "ZRtr", + "iDisplayLength": -1, + "autoWidth": true, + "bSortClasses": false, + "paging": false, + "orderClasses": true +} ); + collection_click = function() { var this_collection_url; console.log("Clicking on:", $(this)); @@ -28,16 +81,20 @@ submit_click = function() { $('#collections_holder').find('input[type=checkbox]:checked').each(function() { var this_dataset, this_trait; this_trait = $(this).parents('tr').find('.trait').text(); + this_description = $(this).parents('tr').find('.description').text(); console.log("this_trait is:", this_trait); - this_dataset = $(this).parents('tr').find('.dataset').text(); + this_dataset = $(this).parents('tr').find('.dataset').data("dataset"); console.log("this_dataset is:", this_dataset); covariates_string += this_trait + ":" + this_dataset + "," - covariates_display_string += this_trait + "\n" + this_covariate_display_string = this_trait + ": " + this_description + if (this_covariate_display_string.length > 50) { + this_covariate_display_string = this_covariate_display_string.substring(0, 45) + "..." + } + covariates_display_string += this_covariate_display_string + "\n" }); // Trim the last comma covariates_string = covariates_string.substring(0, covariates_string.length - 1) //covariates_display_string = covariates_display_string.substring(0, covariates_display_string.length - 2) - console.log("COVARIATES:", covariates_string) $("input[name=covariates]").val(covariates_string) $(".selected_covariates").val(covariates_display_string) @@ -125,17 +182,16 @@ process_traits = function(trait_data, textStatus, jqXHR) { the_html = "<button id='back_to_collections' class='btn btn-inverse btn-small'>"; the_html += "<i class='icon-white icon-arrow-left'></i> Back </button>"; the_html += " <button id='submit' class='btn btn-primary btn-small'> Submit </button>"; - the_html += "<table class='table table-hover'>"; - the_html += "<thead><tr><th></th><th>Record</th><th>Data Set</th><th>Description</th><th>Mean</th></tr></thead>"; + the_html += "<table id='collection_table' style='padding-top: 10px;' class='table table-hover'>"; + the_html += "<thead><tr><th></th><th>Record</th><th>Data Set</th><th>Description</th></tr></thead>"; the_html += "<tbody>"; for (_i = 0, _len = trait_data.length; _i < _len; _i++) { trait = trait_data[_i]; the_html += "<tr class='trait_line'>"; the_html += "<td class='select_trait'><input type='checkbox' name='selectCheck' class='checkbox edit_sample_checkbox'></td>"; the_html += "<td class='trait'>" + trait.name + "</td>"; - the_html += "<td class='dataset'>" + trait.dataset + "</td>"; - the_html += "<td>" + trait.description + "</td>"; - the_html += "<td>" + (trait.mean || ' ') + "</td></tr>"; + the_html += "<td class='dataset' data-dataset='" + trait.dataset + "'>" + trait.dataset_name + "</td>"; + the_html += "<td class='description'>" + trait.description + "</td>"; } the_html += "</tbody>"; the_html += "</table>"; diff --git a/wqflask/wqflask/static/new/javascript/show_trait.js b/wqflask/wqflask/static/new/javascript/show_trait.js index 210945f0..bcb67527 100644 --- a/wqflask/wqflask/static/new/javascript/show_trait.js +++ b/wqflask/wqflask/static/new/javascript/show_trait.js @@ -2,8 +2,6 @@ var Stat_Table_Rows, is_number, __hasProp = {}.hasOwnProperty, __slice = [].slice; -console.log("start_b"); - is_number = function(o) { return !isNaN((o - 0) && o !== null); }; @@ -65,7 +63,6 @@ var add, block_by_attribute_value, block_by_index, block_outliers, change_stats_ add = function() { var trait; trait = $("input[name=trait_hmac]").val(); - console.log("trait is:", trait); return $.colorbox({ href: "/collections/add?traits=" + trait }); @@ -100,9 +97,7 @@ open_trait_selection = function() { 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'); @@ -115,10 +110,10 @@ open_covariate_selection = function() { $.colorbox({ inline: true, href: "#collections_holder", + width: "1000px", + height: "700px", 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'); @@ -142,21 +137,16 @@ stats_mdp_change = function() { 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 { @@ -179,7 +169,6 @@ update_stat_values = function(sample_sets) { _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; @@ -356,7 +345,6 @@ process_id = function() { processed = ""; for (_i = 0, _len = values.length; _i < _len; _i++) { value = values[_i]; - console.log("value:", value); value = value.replace(" ", "_"); if (processed.length) { processed += "-"; @@ -378,7 +366,6 @@ edit_data_change = function() { 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]; @@ -412,39 +399,30 @@ edit_data_change = function() { } } } - 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"); } @@ -452,7 +430,6 @@ show_hide_outliers = function() { 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") { @@ -487,7 +464,6 @@ create_value_dropdown = function(value) { }; 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; @@ -496,9 +472,7 @@ populate_sample_attributes_values_dropdown = function() { 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++) { @@ -507,7 +481,7 @@ populate_sample_attributes_values_dropdown = function() { } return _results; }; -if (js_data.attribute_names.length > 0) { +if (Object.keys(js_data.attribute_names).length > 0) { populate_sample_attributes_values_dropdown(); } $('#exclude_menu').change(populate_sample_attributes_values_dropdown); @@ -547,21 +521,15 @@ block_by_index = function() { } } 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); @@ -592,9 +560,7 @@ 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)); @@ -629,6 +595,21 @@ sqrt_normalize_data = function() { })(this)); }; +invert_data = function() { + return $('.edit_sample_value').each((function(_this) { + return function(_index, element) { + current_value = parseFloat($(element).val()); + if(isNaN(current_value)) { + return current_value + } else { + $(element).val(-(current_value)); + return -(current_value) + } + }; + })(this)); +}; + + qnorm_data = function() { return $('.edit_sample_value').each((function(_this) { return function(_index, element) { @@ -656,6 +637,9 @@ normalize_data = function() { $('input[name="transform"]').val("sqrt") } } + else if ($('#norm_method option:selected').val() == 'invert'){ + invert_data() + } else if ($('#norm_method option:selected').val() == 'qnorm'){ if ($('input[name="transform"]').val() != "qnorm") { qnorm_data() @@ -696,7 +680,6 @@ get_sample_table_data = function(table_name) { 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)); @@ -707,18 +690,14 @@ export_sample_table_data = function() { 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(); }; @@ -728,9 +707,7 @@ $('.export_format').change(function() { }); $('.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) { diff --git a/wqflask/wqflask/templates/search_result_page.html b/wqflask/wqflask/templates/search_result_page.html index 36a25665..31a5b94e 100644 --- a/wqflask/wqflask/templates/search_result_page.html +++ b/wqflask/wqflask/templates/search_result_page.html @@ -117,7 +117,7 @@ </form> <br /> - <div id="table_container"> + <div id="table_container" style="width: 1400px;"> <table class="table-hover table-striped cell-border" id='trait_table' style="float: left;"> <tbody> <td colspan="100%" align="center"><br><b><font size="15">Loading...</font></b><br></td> @@ -224,10 +224,6 @@ } $('td', row).eq(4).attr('title', $('td', row).eq(4).text()); $('td', row).eq(4).attr('data-export', $('td', row).eq(4).text()); - if ($('td', row).eq(4).text().length > 55) { - $('td', row).eq(4).text($('td', row).eq(4).text().substring(0, 55)); - $('td', row).eq(4).text($('td', row).eq(4).text() + '...') - } $('td', row).slice(6,10).attr("align", "right"); $('td', row).eq(5).attr('data-export', $('td', row).eq(5).text()); $('td', row).eq(6).attr('data-export', $('td', row).eq(6).text()); @@ -237,16 +233,8 @@ {% elif dataset.type == 'Publish' %} $('td', row).eq(3).attr('title', $('td', row).eq(3).text()); $('td', row).eq(3).attr('data-export', $('td', row).eq(3).text()); - if ($('td', row).eq(3).text().length > 20) { - $('td', row).eq(3).text($('td', row).eq(3).text().substring(0, 20)); - $('td', row).eq(3).text($('td', row).eq(3).text() + '...') - } $('td', row).eq(4).attr('title', $('td', row).eq(4).text()); $('td', row).eq(4).attr('data-export', $('td', row).eq(4).text()); - if ($('td', row).eq(4).text().length > 55) { - $('td', row).eq(4).text($('td', row).eq(4).text().substring(0, 55)); - $('td', row).eq(4).text($('td', row).eq(4).text() + '...') - } $('td', row).slice(6,9).attr("align", "right"); $('td', row).eq(5).attr('data-export', $('td', row).eq(5).text()); $('td', row).eq(6).attr('data-export', $('td', row).eq(6).text()); @@ -288,6 +276,7 @@ { 'title': "Description", 'type': "natural", + 'width': "500px", 'data': "description" }, { @@ -321,11 +310,13 @@ { 'title': "Description", 'type': "natural", + 'width': "500px", 'data': "description" }, { 'title': "Authors", 'type': "natural", + 'width': "300px", 'data': "authors" }, { @@ -351,17 +342,20 @@ { 'title': "Max LRS Location", 'type': "natural", + 'width': "160px", 'data': "lrs_location" }, { - 'title': "Additive Effect<a href=\"http://genenetwork.org//glossary.html#A\" target=\"_blank\" style=\"color: white;\"><sup>?</sup></a>", + 'title': "Additive<br>Effect<a href=\"http://genenetwork.org//glossary.html#A\" target=\"_blank\" style=\"color: white;\"><sup>?</sup></a>", 'type': "natural", + 'width': "100px", 'data': "additive", 'orderSequence': [ "desc", "asc"] }{% elif dataset.type == 'Geno' %}, { 'title': "Location", 'type': "natural", + 'width': "160px", 'data': "location" }{% endif %} ], diff --git a/wqflask/wqflask/templates/show_trait.html b/wqflask/wqflask/templates/show_trait.html index def40f5d..9d2cb7ed 100644 --- a/wqflask/wqflask/templates/show_trait.html +++ b/wqflask/wqflask/templates/show_trait.html @@ -10,7 +10,6 @@ <link rel="stylesheet" type="text/css" href="/static/new/packages/DataTables/css/jquery.dataTables.css" /> <link rel="stylesheet" type="text/css" href="/static/new/packages/noUiSlider/nouislider.css" /> <link rel="stylesheet" type="text/css" href="/static/new/packages/noUiSlider/nouislider.pips.css" /> - <link rel="stylesheet" type="text/css" href="/static/packages/DT_bootstrap/DT_bootstrap.css" /> <link rel="stylesheet" type="text/css" href="/static/new/css/show_trait.css" /> {% endblock %} @@ -142,7 +141,6 @@ <script type="text/javascript" src="/static/new/javascript/scatter-matrix.js"></script> <script type="text/javascript" src="/static/new/javascript/plotly_probability_plot.js"></script> <script type="text/javascript" src="/static/new/javascript/compare_traits_scatterplot.js"></script> - <script language="javascript" type="text/javascript" src="/static/new/javascript/get_covariates_from_collection.js"></script> <script type="text/javascript" src="/static/new/javascript/show_trait_mapping_tools.js"></script> <script type="text/javascript" src="/static/new/javascript/show_trait.js"></script> @@ -152,6 +150,8 @@ <script language="javascript" type="text/javascript" src="/static/new/packages/DataTables/js/dataTables.scientific.js"></script> <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 language="javascript" type="text/javascript" src="/static/new/javascript/get_covariates_from_collection.js"></script> + <script type="text/javascript" charset="utf-8"> $.fn.dataTable.ext.order['dom-checkbox'] = function ( settings, col ) @@ -177,6 +177,22 @@ } }); + //ZS: This variable is just created to get the column position of the first case attribute, since it's needed to set the row classes in createdRow for the DataTable + {% if sample_groups[0].attributes|length > 0 %} + {% if sample_groups[0].se_exists() %} + {% if has_num_cases %} + attribute_start_pos = 6 + {% else %} + attribute_start_pos = 5 + {% endif %} + {% else %} + {% if has_num_cases %} + attribute_start_pos = 4 + {% else %} + attribute_start_pos = 3 + {% endif %} + {% endif %} + {% endif %} $('#samples_primary').DataTable( { 'initComplete': function(settings, json) { @@ -210,6 +226,11 @@ $('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 %} + {% if sample_groups[0].attributes|length > 0 %} + {% for attribute in sample_groups[0].attributes|sort() %} + $('td', row).eq(attribute_start_pos + {{ loop.index }}).addClass("column_name-{{ sample_groups[0].attributes[attribute].name }}") + {% endfor %} + {% endif %} }, 'data': js_data['sample_lists'][0], 'columns': [ @@ -335,6 +356,11 @@ $('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 %} + {% if sample_groups[1].attributes|length > 0 %} + {% for attribute in sample_groups[1].attributes|sort() %} + $('td', row).eq(attribute_start_pos + {{ loop.index }}).addClass("column_name-{{ sample_groups[1].attributes[attribute].name }}") + {% endfor %} + {% endif %} }, 'data': js_data['sample_lists'][1], 'columns': [ diff --git a/wqflask/wqflask/templates/show_trait_mapping_tools.html b/wqflask/wqflask/templates/show_trait_mapping_tools.html index e7f3eca3..e79cf1ab 100644 --- a/wqflask/wqflask/templates/show_trait_mapping_tools.html +++ b/wqflask/wqflask/templates/show_trait_mapping_tools.html @@ -89,7 +89,7 @@ <button type="button" id="select_covariates" class="btn btn-default">Select</button> <button type="button" id="remove_covariates" class="btn btn-default">Remove</button> </div> - <textarea rows="3" cols="20" readonly placeholder="No covariates selected" style="overflow-y: scroll; resize: none;" class="selected_covariates"></textarea> + <textarea rows="3" cols="50" readonly placeholder="No covariates selected" style="overflow-y: scroll; resize: none;" class="selected_covariates"></textarea> {% endif %} {% elif g.cookie_session.display_num_collections() == "" %} No collections available. Please add traits to a collection to use them as covariates. diff --git a/wqflask/wqflask/templates/show_trait_transform_and_filter.html b/wqflask/wqflask/templates/show_trait_transform_and_filter.html index d1765778..04ceaeaf 100644 --- a/wqflask/wqflask/templates/show_trait_transform_and_filter.html +++ b/wqflask/wqflask/templates/show_trait_transform_and_filter.html @@ -54,6 +54,7 @@ <option value="log2">Log2</option> <option value="qnorm">Quantile</option> <option value="sqrt">Square Root</option> + <option value="invert">Invert +/-</option> </select> </div> <!-- |