Mercurial > repos > immport-devteam > flow_overview
comparison js/scatter3D.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 |
comparison
equal
deleted
inserted
replaced
| 0:8283ff163ba6 | 1:b5453d07f740 |
|---|---|
| 1 // Copyright (c) 2016 Northrop Grumman. | |
| 2 // All rights reserved. | |
| 3 | |
| 4 var updateScatter3D = function(){ | |
| 5 scatterData3D['selectedPopulations'] = []; | |
| 6 scatterData3DMFI['selectedPopulations'] = []; | |
| 7 $('.pop3D').each(function() { | |
| 8 if (this.checked) { | |
| 9 scatterData3D['selectedPopulations'].push(parseInt(this.value)); | |
| 10 scatterData3DMFI['selectedPopulations'].push(parseInt(this.value)); | |
| 11 } | |
| 12 }); | |
| 13 processScatterData3D(); | |
| 14 processScatterData3DMFI(); | |
| 15 displayScatterPlot3D(); | |
| 16 }; | |
| 17 | |
| 18 var processScatterData3D = function() { | |
| 19 var xData = [], | |
| 20 yData = [], | |
| 21 zData = [], | |
| 22 popData = [], | |
| 23 pop = [], | |
| 24 col1 = [], | |
| 25 col2 = [], | |
| 26 col3 = [], | |
| 27 min = Number.MAX_VALUE, | |
| 28 max = Number.MIN_VALUE; | |
| 29 | |
| 30 min = d3.min(scatterData3D['data'], function(array) { | |
| 31 return d3.min(array); | |
| 32 }); | |
| 33 max = d3.max(scatterData3D['data'], function(array) { | |
| 34 return d3.max(array); | |
| 35 }); | |
| 36 scatterData3D['min'] = 0; | |
| 37 scatterData3D['max'] = max; | |
| 38 | |
| 39 col1 = scatterData3D['data'].map(function(value,index) { | |
| 40 return value[scatterData3D['m1']]; | |
| 41 }); | |
| 42 col2 = scatterData3D['data'].map(function(value,index) { | |
| 43 return value[scatterData3D['m2']]; | |
| 44 }); | |
| 45 col3 = scatterData3D['data'].map(function(value,index) { | |
| 46 return value[scatterData3D['m3']]; | |
| 47 }); | |
| 48 pop = scatterData3D['data'].map(function(value,index) { | |
| 49 return value[scatterData3D['popCol']]; | |
| 50 }); | |
| 51 | |
| 52 for (var i = 0, j = col1.length; i < j; i++) { | |
| 53 if (scatterData3D['selectedPopulations'].indexOf(pop[i]) >= 0) { | |
| 54 xData.push(col1[i]); | |
| 55 yData.push(col2[i]); | |
| 56 zData.push(col3[i]); | |
| 57 popData.push(pop[i]); | |
| 58 } | |
| 59 } | |
| 60 | |
| 61 scatterData3D['popColors'] = popData.map(function(value,index) { | |
| 62 return color_palette[0][value][0]; | |
| 63 }); | |
| 64 scatterData3D['xData'] = xData; | |
| 65 scatterData3D['yData'] = yData; | |
| 66 scatterData3D['zData'] = zData; | |
| 67 scatterData3D['popData'] = popData; | |
| 68 return scatterData3D; | |
| 69 }; | |
| 70 | |
| 71 var displayScatterToolbar3D = function() { | |
| 72 $("#xAxisMarker3D").select2(); | |
| 73 $("#yAxisMarker3D").select2(); | |
| 74 $("#zAxisMarker3D").select2(); | |
| 75 $("#view3D").select2(); | |
| 76 | |
| 77 scatterData3D['columnHeadings'].map(function(value,index) { | |
| 78 $('#xAxisMarker3D') | |
| 79 .append($("<option></option>") | |
| 80 .attr("value",index) | |
| 81 .text(value)); | |
| 82 | |
| 83 $('#yAxisMarker3D') | |
| 84 .append($("<option></option>") | |
| 85 .attr("value",index) | |
| 86 .text(value)); | |
| 87 | |
| 88 $('#zAxisMarker3D') | |
| 89 .append($("<option></option>") | |
| 90 .attr("value",index) | |
| 91 .text(value)); | |
| 92 }); | |
| 93 | |
| 94 $('#xAxisMarker3D').select2("val",0); | |
| 95 $('#yAxisMarker3D').select2("val",1); | |
| 96 $('#zAxisMarker3D').select2("val",2); | |
| 97 | |
| 98 $("#xAxisMarker3D").on("change",function(e) { | |
| 99 var m1 = $("#xAxisMarker3D").select2("val"); | |
| 100 scatterData3D['m1'] = m1; | |
| 101 scatterData3DMFI['m1'] = m1; | |
| 102 updateScatter3D(); | |
| 103 }); | |
| 104 $("#yAxisMarker3D").on("change",function(e) { | |
| 105 var m2 = $("#yAxisMarker3D").select2("val"); | |
| 106 scatterData3D['m2'] = m2; | |
| 107 scatterData3DMFI['m2'] = m2; | |
| 108 updateScatter3D(); | |
| 109 }); | |
| 110 $("#zAxisMarker3D").on("change",function(e) { | |
| 111 var m3 = $("#zAxisMarker3D").select2("val"); | |
| 112 scatterData3D['m3'] = m3; | |
| 113 scatterData3DMFI['m3'] = m3; | |
| 114 updateScatter3D(); | |
| 115 }); | |
| 116 | |
| 117 $("#view3D").on("change",function(e) { | |
| 118 var view = $("#view3D").select2("val"); | |
| 119 scatterData3D['view'] = view; | |
| 120 updateScatter3D(); | |
| 121 }); | |
| 122 | |
| 123 $("#updateDisplay3D").on("click",function() { | |
| 124 $(".pop3D").prop("checked", true); | |
| 125 $("#selectall3D").prop('checked', true); | |
| 126 updateScatter3D(); | |
| 127 }); | |
| 128 }; | |
| 129 | |
| 130 var displayScatterPopulation3D = function() { | |
| 131 $("#populationTable3D tbody").empty(); | |
| 132 scatterData3D['populations'].map(function(value) { | |
| 133 $('#populationTable3D tbody') | |
| 134 .append('<tr><td align="center">' | |
| 135 + '<input type="checkbox" checked class="pop3D" value=' | |
| 136 + value + '/></td><td title="'+ newNames[value] | |
| 137 + '">'+ newNames[value] + '</td>' | |
| 138 + '<td><span style="background-color:' | |
| 139 + color_palette[0][value][0] + '">  </span></td>' | |
| 140 + '<td>' + scatterData3D['percent'][value - 1] + '</td></tr>'); | |
| 141 }); | |
| 142 | |
| 143 $('#selectall3D').click(function() { | |
| 144 var checkAll = $("#selectall3D").prop('checked'); | |
| 145 if (checkAll) { | |
| 146 $(".pop3D").prop("checked", true); | |
| 147 } else { | |
| 148 $(".pop3D").prop("checked", false); | |
| 149 } | |
| 150 updateScatter3D(); | |
| 151 }); | |
| 152 $('.pop3D').click(function() { | |
| 153 if ($('.pop3D').length == $(".pop3D:checked").length) { | |
| 154 $('#selectall3D').prop("checked",true); | |
| 155 } else { | |
| 156 $('#selectall3D').prop("checked",false); | |
| 157 } | |
| 158 updateScatter3D(); | |
| 159 }); | |
| 160 | |
| 161 $('.pop3D').each(function() { | |
| 162 var selectedpop3D = parseInt(this.value); | |
| 163 if ($.inArray(selectedpop3D,scatterData3D['selectedPopulations']) > -1) { | |
| 164 this.checked = true; | |
| 165 } else { | |
| 166 this.checked = false; | |
| 167 } | |
| 168 }); | |
| 169 }; | |
| 170 | |
| 171 var displayScatterPlot3D = function() { | |
| 172 var h = $(window).height() - 200, | |
| 173 w = $("#scatterPlotDiv3D").width(), | |
| 174 xtitle = scatterData3D['columnHeadings'][scatterData3D['m1']], | |
| 175 ytitle = scatterData3D['columnHeadings'][scatterData3D['m2']], | |
| 176 ztitle = scatterData3D['columnHeadings'][scatterData3D['m3']], | |
| 177 view = scatterData3D['view'], | |
| 178 traces = [], | |
| 179 layout = {}; | |
| 180 | |
| 181 $("#scatterPlotDiv3D").empty(); | |
| 182 $("#scatterPlotDiv3D").height(h); | |
| 183 | |
| 184 if ( view == 1 || view == 2 ) { | |
| 185 var trace1 = { | |
| 186 x: scatterData3D['xData'], | |
| 187 y: scatterData3D['yData'], | |
| 188 z: scatterData3D['zData'], | |
| 189 mode: 'markers', | |
| 190 opacity: .75, | |
| 191 hoverinfo: "none", | |
| 192 marker: { | |
| 193 size: 2, | |
| 194 color: scatterData3D['popColors'] | |
| 195 }, | |
| 196 type: 'scatter3d' | |
| 197 }; | |
| 198 traces.push(trace1); | |
| 199 }; | |
| 200 | |
| 201 if ( view == 1 || view == 3) { | |
| 202 var trace2 = { | |
| 203 x: scatterData3DMFI['xData'], | |
| 204 y: scatterData3DMFI['yData'], | |
| 205 z: scatterData3DMFI['zData'], | |
| 206 mode: 'markers', | |
| 207 opacity: 1.0, | |
| 208 hoverinfo: "x+y+z", | |
| 209 marker: { | |
| 210 symbol: "circle-open", | |
| 211 size: 8, | |
| 212 color: scatterData3DMFI['popColors'] | |
| 213 }, | |
| 214 type: 'scatter3d' | |
| 215 }; | |
| 216 traces.push(trace2); | |
| 217 } | |
| 218 | |
| 219 layout = { | |
| 220 title: '', | |
| 221 showlegend: false, | |
| 222 scene: { | |
| 223 aspectratio: { | |
| 224 x: 1, | |
| 225 y: 1, | |
| 226 z: 1 | |
| 227 }, | |
| 228 camera: { | |
| 229 center: { | |
| 230 x: 0, | |
| 231 y: 0, | |
| 232 z: 0 | |
| 233 }, | |
| 234 eye: { | |
| 235 x: 1.25, | |
| 236 y: 1.25, | |
| 237 z: 1.25 | |
| 238 }, | |
| 239 up: { | |
| 240 x: 0, | |
| 241 y: 0, | |
| 242 z: 1 | |
| 243 } | |
| 244 }, | |
| 245 xaxis: { | |
| 246 type: 'linear', | |
| 247 title: xtitle, | |
| 248 range: [0, scatterData3D['max']], | |
| 249 zeroline: false | |
| 250 }, | |
| 251 yaxis: { | |
| 252 type: 'linear', | |
| 253 title: ytitle, | |
| 254 range: [0, scatterData3D['max']], | |
| 255 zeroline: false | |
| 256 }, | |
| 257 zaxis: { | |
| 258 type: 'linear', | |
| 259 title: ztitle, | |
| 260 range: [0, scatterData3D['max']], | |
| 261 zeroline: false | |
| 262 } | |
| 263 } | |
| 264 }; | |
| 265 | |
| 266 Plotly.newPlot('scatterPlotDiv3D', traces, layout); | |
| 267 }; |
