Mercurial > repos > immport-devteam > flow_overview
diff js/overview.js @ 1:b5453d07f740 draft default tip
"planemo upload for repository https://github.com/ImmPortDB/immport-galaxy-tools/tree/master/flowtools/flow_overview commit 65373effef15809f3db0e5f9603ef808f4110aa3"
author | azomics |
---|---|
date | Wed, 29 Jul 2020 17:03:53 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/js/overview.js Wed Jul 29 17:03:53 2020 -0400 @@ -0,0 +1,325 @@ +// Copyright (c) 2016 Northrop Grumman. +// All rights reserved. + +var scatterData2D = {}; +var scatterData3D = {}; +var scatterData3DMFI = {}; +var scatterDataMFI = {}; +var tableContent; +var newNames ={}; +var configbp = {}; +var bpurl = "./boxplotData.json"; + +var waitForFinalEvent = (function () { + var timers = {}; + return function (callback, ms, uniqueId) { + if (!uniqueId) { + uniqueId = "Don't call this twice without a uniqueId"; + } + if (timers[uniqueId]) { + clearTimeout (timers[uniqueId]); + } + timers[uniqueId] = setTimeout(callback, ms); + }; +})(); + +var updateOverviewPlotDisplay = function(data) { + $('#overviewPlotDiv').empty(); + $('#overviewPlotDiv').html(data); +}; + +var displayMFI = function() { + var url = "flow.mfi_pop"; + d3.text(url, function(error, data){ + var mfiHdgs = [], + pp = [], + mfiTableData = [], + mfiTableHeadings = [], + mfiTargets = [], + mfiTableHTML = '<table id="mfitable" class="dtable display compact" cellspacing="0" width="100%"/>', + popcol = 1, + mfiEditorData =[]; + + if (error){ + alert("Problem retrieving data"); + return; + } + mfiHdgs = data.split("\n")[0].split("\t"); + pp = mfiHdgs.pop(); + mfiHdgs.unshift(pp); + mfiHdgs.unshift("Comment"); + data = d3.tsv.parse(data); + function handleSubmit(method, url, d, successCallBack, errorCallBack) { + var output = {data : mfiTableData}; + successCallBack(output); + } + + $('#mfiDiv').empty(); + mfiTableData = $.extend(true,[],data); + mfiTableData.forEach(function(d){ + d.Comment = d.Population; + newNames[parseInt(d.Population)] = d.Comment; + }); + //var mfiData = mfiTableData.filter(function(d){return d}); + tableContent = $.extend(true, [], mfiTableData); + mfiHdgs.forEach(function(d,i) { + mfiTableHeadings.push({"data": d, "title": d}); + mfiEditorData.push({"label" : d, "name" : d}); + }); + + for (var i = 2, j = mfiHdgs.length - 2; i<j; i++){ + mfiTargets.push(i); + } + + $('#mfiDiv').html(mfiTableHTML); + var editor = new $.fn.dataTable.Editor({ + ajax: handleSubmit, + table: '#mfitable', + fields: mfiEditorData, + idSrc: 'Population' + }); + $('#mfitable').on('click', 'tbody td:first-child', function (e) { + editor.bubble(this); + }); + var mfiTable = $('#mfitable').DataTable({ + columns: mfiTableHeadings, + data: mfiTableData, + order: [[ popcol, "asc" ]], + pageLength: 25, + dom: '<"top"Bi>t<"bottom"lp><"clear">', + columnDefs: [{ + targets: mfiTargets, + className: "dt-body-right", + render: function(data, type, row){ + return parseFloat(data).toFixed(2); + } + }, { + targets: [mfiHdgs.length - 2], + className: "dt-body-right" + }, { + targets: [mfiHdgs.length-1], + className: "dt-body-right", + render: function(data, type, row){ + return parseFloat(data).toFixed(2) + '%'; + } + } + ], + buttons: [ + 'copy', 'pdfHtml5','csvHtml5', 'colvis' + ], + colReorder: {fixedColumnsLeft:1}, + select: true + }); + editor.on('preSubmit', function(e, object, action){ + var data = object.data; + var key = Object.keys(data)[0]; + var count = object.data[key]['Comment']; + mfiTableData.forEach(function(d) { + if (d.Population === key) { + d.Comment = count; + newNames[parseInt(d.Population)] = count; + } + }); + tableContent = $.extend(true, [], mfiTableData); + }); + }); +}; + +var displayOverviewPlot = function() { + var url = "flow.overview"; + $.ajax({ + url: url, + dataType: "text", + success: function(data) { + updateOverviewPlotDisplay(data); + } + }); +}; + +var displayScatter2D = function() { + var url = "flow.sample"; + $.ajax({ + url: url, + dataType: "text", + success: function(text) { + var mfi_url = "flow.mfi_pop"; + $.ajax({ + url: mfi_url, + dataType: "text", + success: function(mfi_text) { + scatterDataMFI = new processMFI(mfi_text); + scatterData2D = new processData(text); + displayScatterToolbar2D(); + displayScatterPopulation2D(); + processScatterData2D(); + processScatterDataMFI2D(); + displayScatterPlot2D(); + $(window).on('resize',function() { + waitForFinalEvent(function() { + processScatterData2D(); + displayScatterPlot2D(); + }, 500, "resize2D"); + }); + } + }); + } + }); +}; + +var displayScatter3D = function() { + var url = "flow.sample"; + $.ajax({ + url: url, + dataType: "text", + success: function(text) { + var mfi_url = "flow.mfi_pop"; + $.ajax({ + url: mfi_url, + dataType: "text", + success: function(mfi_text) { + scatterData3DMFI = new processMFI(mfi_text); + scatterData3D = new processData(text); + displayScatterToolbar3D(); + displayScatterPopulation3D(); + processScatterData3D(); + processScatterData3DMFI(); + displayScatterPlot3D(); + $(window).on('resize',function() { + waitForFinalEvent(function() { + processScatterData3D(); + displayScatterPlot3D(); + }, 500, "resize3D"); + }); + } + }); + } + }); +}; + +var displayMFIBoxplot = function() { + $.ajax({ + url: bpurl, + dataType: "json", + success: function(data) { + configbp = { + displaybutton : '#updateDisplaybp', + toggledisplayj : '#changeDisplay', + toggledisplay : 'changeDisplay', + popSelectj : '.popSelectbp', + plotdivj : '#plotDivbp', + csdata : data, + plotdiv : 'plotDivbp', + type : 'boxplot', + table : '#popTablebp tbody', + popSelect : 'popSelectbp', + allMarkers : [], + selectedMarkers: [], + allPopulations : [], + selectedPopulations : [], + popSelectAll : '#popSelectAllbp', + popSelectCheck: '.popSelectbp:checked', + mrkrSelectAll : '#mrkrSelectAll', + mrkrSelectCheck: '.mrkrSelect:checked', + mrkrSelect : 'mrkrSelect', + mtable : '#mrkrTable tbody', + mrkrSelectj: '.mrkrSelect', + displayvalues: '#displayLabels', + displayMFI: '#displayMFI', + view: 'p', + mrkrNames : Object.keys(data.mfi) + }; + displayToolbar(configbp); + } + }); +}; + +function processData(text) { + var data = d3.tsv.parseRows(text).map(function(row) { + return row.map(function(value) { + if (isNaN(value)) { + return value; + } + return +value; + }); + }); + + this.columnHeadings = data.shift(); + this.columnHeadings.pop(); + var popCol = data[0].length - 1; + var p = data.map(function(value,index) { + return parseInt(value[popCol]); + }); + + var populations = {}; + for (var i = 0; i < p.length; i++) { + if (populations[p[i]] === undefined) { + populations[p[i]] = 1; + } else { + populations[p[i]] = populations[p[i]] + 1; + } + } + + this.popCol = popCol; + this.populations = d3.set(p).values(); + this.populations = this.populations.map(function(value,index) { + return parseInt(value); + }); + this.selectedPopulations = this.populations; + this.percent = this.populations.map(function(value,index) { + return Math.floor(populations[value] * 10000.0 / data.length) / 100.0; + }); + + this.data = data; + this.m1 = 0; + this.m2 = 1; + this.m3 = 2; + this.view = 1; +}; + +function processMFI(text) { + data = d3.tsv.parseRows(text).map(function(row) { + return row.map(function(value) { + if (isNaN(value)) { + return value; + } + return +value; + }); + }); + + // Get the Headings Row, then remove the Count, Percentage and + // Population headings + this.columnHeadings = data.shift(); + this.columnHeadings.pop(); + this.columnHeadings.pop(); + this.columnHeadings.pop(); + + var popCol = data[0].length -1; + var pop = data.map(function(value,index) { + return parseInt(value[popCol]); + }); + + var perCol = data[0].length -2; + var per = data.map(function(value,index) { + return parseFloat(value[perCol]); + }); + + var countCol = data[0].length -3; + var count = data.map(function(value,index) { + return parseInt(value[countCol]); + }); + + this.popCol = popCol; + this.populations = pop; + this.selectedPopulations = pop; + this.percent = per; + this.counts = count; + + var l = data[0].length; + this.data = data.map(function(row) { + return row.splice(0,countCol); + }); + this.poplist = pop; + this.m1 = 0; + this.m2 = 1; + this.m3 = 2; +};