1angular 2 .module('app') 3 .controller('corrPlotlyModalCtrl', ['$scope','$timeout','$sce','$state','$window','$uibModalInstance','genes','sig1','sig2','corr','data', 4 function($scope,$timeout,$sce,$state,$window,$uibModalInstance,genes,sig1,sig2,corr,data) { 5 6 $scope.ok = function () { 7 // $uibModalInstance.close($scope.selected.item); 8 $uibModalInstance.dismiss('cancel'); 9 }; 10 11 $scope.cancel = function () { 12 $uibModalInstance.dismiss('cancel'); 13 }; 14 15 16 $scope.plotlyEvents = function (graph){ 17 // console.log("plotly event emitted"); 18 $scope.graph=graph; 19 graph.on('plotly_selecting', function(event){ 20 // console.log("plotly event: plotly_selecting emitted"); 21 // if (event) { 22 // $scope.NumberOfSelectedPoints = event.points.length; 23 // $scope.selectedGenes = []; 24 // for(var i=0; i < event.points.length; i++){ 25 // $scope.selectedGenes.push(event.points[i].text); 26 // } 27 // // $scope.$digest(); 28 // $scope.$apply(); 29 // } 30 $scope.$apply(function() { 31 //wrapped this within $apply 32 if (event) { 33 $scope.NumberOfSelectedPoints = event.points.length; 34 $scope.selectedGenes = [];$scope.selectedX = [];$scope.selectedY = []; 35 for(var i=0; i < event.points.length; i++){ 36 $scope.selectedX.push(event.points[i].x); 37 $scope.selectedY.push(event.points[i].y); 38 $scope.selectedGenes.push(event.points[i].text); 39 } 40 $scope.corrValueSelected=calculateCorrelation($scope.selectedX,$scope.selectedY); 41 } 42 }); 43 } 44 // ,function(error){ 45 // console.log(error); 46 // } 47 ); 48 graph.on('plotly_click', function(data){ 49 // console.log("plotly event: plotly_click emitted"); 50 var pts = ''; 51 for(var i=0; i < data.points.length; i++){ 52 pts = 'sig1 = '+data.points[i].x +'\nsig2 = '+ 53 data.points[i].y.toPrecision(4) + 54 '\ngene = '+data.points[i].text +'\n\n'; 55 // console.log($scope.NumberOfSelectedPoints); 56 $scope.selectedGene=data.points[i].text; 57 $scope.selectedSig1=data.points[i].x; 58 $scope.selectedSig2=data.points[i].y; 59 60 // annotate_text = 'x = '+data.points[i].x + 61 // 'y = '+data.points[i].y.toPrecision(4); 62 63 annotation = { 64 text: data.points[i].text,//annotate_text, 65 x: data.points[i].x, 66 y: parseFloat(data.points[i].y.toPrecision(4)), 67 // showarrow:true, 68 // // arrowhead:7, 69 ax:-20, 70 ay:-20 71 // ax:Math.random()*10, 72 // ay:-1*Math.random()*20 73 } 74 75 annotations = $scope.data.layout.annotations || []; 76 annotations.push(annotation); 77 window.Plotly.relayout(graph,{annotations: annotations}) 78 } 79 // alert('Closest point clicked:\n\n'+pts); 80 // $scope.selectedGene=pts; 81 $scope.$digest(); 82 }); 83 // graph.on('plotly_afterplot', function(data){ 84 // console.log("plotly event: plotly_afterplot emitted"); 85 // // console.log(graph); 86 // // var pts = ''; 87 // // for(var i=0; i < data.points.length; i++){ 88 // // pts = 'sig1 = '+data.points[i].x +'\nsig2 = '+ 89 // // data.points[i].y.toPrecision(4) + 90 // // '\ngene = '+data.points[i].text +'\n\n'; 91 // // console.log($scope.NumberOfSelectedPoints); 92 // // $scope.selectedGene=data.points[i].text; 93 // // $scope.selectedSig1=data.points[i].x; 94 // // $scope.selectedSig2=data.points[i].y; 95 // // } 96 // // // alert('Closest point clicked:\n\n'+pts); 97 // // // $scope.selectedGene=pts; 98 // // $scope.$digest(); 99 // }); 100 // graph.on('plotly_selected', function(eventData) { 101 // console.log("remove select-outline select-outline-2 and 1", eventData); 102 // // console.log(eventData.points.length); 103 // if(eventData == undefined || (eventData.points.length < 1)){ 104 // console.log("Nothing is selected, make all points at full opacity again"); 105 // console.log(graph); 106 // console.log(graph.id); 107 // console.log(window.Plotly.Plots); 108 // console.log(eventData); 109 // // console.log(window.getComputedStyle(graph)['select-outline']); 110 // console.log(window.getComputedStyle(graph).display);
111 // // $("#myDiv .select-outline").remove(); 112 // // window.Plotly.redraw(graph); 113 // // window.Plotly.redraw('corrPlotly'); 114 // // window.Plotly.redraw(graph,$scope.data.data,$scope.data.layout); 115 // console.log($scope.data); 116 // $scope.data.data[0].selectedpoints=undefined; 117 // $scope.NumberOfSelectedPoints = 0; 118 // $scope.selectedGenes = []; 119 // // window.Plotly.react(graph,$scope.data.data,$scope.data.layout); 120 // // Plotly.redraw(graph,$scope.data); 121 // // window.Plotly.restyle('corrPlotly',graph); 122 // // window.Plotly.restyle('corrPlotly',$scope.data); 123 // // window.Plotly.restyle(graph); 124 // // graph.restyle('myDiv', data.marker); //test 125 // // console.log($scope.data.marker); 126 // // Plotly.restyle(graph,$scope.data.marker); 127 // $scope.$digest(); 128 // } else { 129 // console.log("Don't remove selection box"); 130 // } 131 // }); 132 133 // graph.on('plotly_doubleclick', function(data){ 134 // console.log("plotly event: plotly_doubleclick emitted"); 135 // }); 136 137 graph.on('plotly_deselect', function(data){ 138 // console.log("plotly event: plotly_deselect emitted"); 139 $scope.$apply(function() { 140 $scope.NumberOfSelectedPoints = 0; 141 $scope.selectedGenes = []; 142 $scope.selectedX = []; 143 $scope.selectedY = []; 144 $scope.corrValueSelected=null; 145 }); 146 }); 147 }; 148 149 function calculateCorrelation(x,y) { 150 // var datp = new Array( 151 // new Array(21,54,60,78,82), 152 // new Array(20,54,54,65,45) 153 // ); 154 var datp = new Array(x,y); 155 // console.log(pearsonCorrelation(datp,0,1)) 156 // $scope.corrValue= pearsonCorrelation(datp,0,1); 157 return pearsonCorrelation(datp,0,1); 158 } 159 160 $scope.refreshSlider = function () { 161 // console.log("refresh slider"); 162 $timeout(function () { 163 // console.log("refresh slider"); 164 $scope.$broadcast('rzSliderForceRender'); 165 }); 166 }; 167 168 // // This is an assign function that copies full descriptors 169 // function completeAssign(target, ...sources) { 170 // sources.forEach(source => { 171 // let descriptors = Object.keys(source).reduce((descriptors, key) => { 172 // descriptors[key] = Object.getOwnPropertyDescriptor(source, key); 173 // return descriptors; 174 // }, {}); 175 // // by default, Object.assign copies enumerable Symbols too 176 // Object.getOwnPropertySymbols(source).forEach(sym => { 177 // let descriptor = Object.getOwnPropertyDescriptor(source, sym); 178 // if (descriptor.enumerable) { 179 // descriptors[sym] = descriptor; 180 // } 181 // }); 182 // Object.defineProperties(target, descriptors); 183 // }); 184 // return target; 185 // } 186 187 $scope.resetAnnotations = function(){ 188 $scope.data.layout.annotations = []; 189 $scope.selectedGene=undefined; 190 $scope.selectedSig1=undefined; 191 $scope.selectedSig2=undefined; 192 window.Plotly.relayout($scope.graph,{annotations: $scope.data.layout.annotations}) 193 } 194 195 $scope.rectAxis = function(){ 196 // console.log($scope.data.layout); 197 if ($scope.axisScaleRect) { 198 // $scope.data.layout = { 199 // // xaxis: {autorange:false,range: [$scope.minCorr, $scope.maxCorr]}, 200 // // yaxis: {autorange:false,range: [$scope.minCorr, $scope.maxCorr]} 201 // xaxis: {autorange:false,range: [-$scope.maxVal, $scope.maxVal],hovermode:"closest"}, 202 // yaxis: {autorange:false,range: [-$scope.maxVal, $scope.maxVal],hovermode:"closest"} 203 // }; 204 $scope.data.layout.xaxis.autorange=false; 205 $scope.data.layout.xaxis.range=[-$scope.maxVal, $scope.maxVal]; 206 $scope.data.layout.yaxis.autorange=false; 207 $scope.data.layout.yaxis.range=[-$scope.maxVal, $scope.maxVal]; 208 // $scope.data.layout.scene={aspectmode:"data"}; 209 // $scope.data.layout.scene={aspectmode:"manual", 210 // aspectratio: { x: 1, y: 1} 211 // }; 212 } else { 213 // $scope.data.layout = { 214 // xaxis: {autorange:true,hovermode:"closest"}, 215 // yaxis: {autorange:true,hovermode:"closest"} 216 // }; 217 $scope.data.layout.xaxis.autorange=true; 218 $scope.data.layout.yaxis.autorange=true; 219 } 220 window.Plotly.react($scope.graph,$scope.data.data,$scope.data.layout); 221 } 222 223 $scope.useInILINCS = function(genes){ 224 localStorage.setObj("GeneList",[]); 225 localStorage.setItem('GeneString',[]); 226 $state.go('genes.list',{genes:genes}); 227 $uibModalInstance.dismiss('cancel'); 228 } 229 230 init = function() { 231 $scope.NumberOfSelectedPoints = 0; 232 233 // console.log("corrPlotly controller init"); 234 // console.log(data); 235 // console.log(sig1); 236 // console.log(sig2); 237 $scope.sig1=sig1; 238 $scope.sig2=sig2;
239 $scope.corr=corr; 240 241 // console.log(sig1.substring(0,12)); 242 if (sig1.substring(0,12) === "processedSig") { 243 $scope.weighted = true 244 } 245 // console.log(type); 246 // data.layout.showlegend=true; 247 $scope.genesF = genes; 248 $scope.data= data; 249 if (sig1) $scope.data.layout.xaxis.title=sig1; 250 // console.log(data.layout.xaxis.title); 251 // Object.assign($scope.data,data); 252 // $scope.data=completeAssign($scope.data,data); 253 // $scope.data = Object.assign({},data); 254 // $scope.data=angular.copy(data); 255 // console.log($scope.data.layout.xaxis); 256 // console.log($scope.data.layout.yaxis); 257 // $scope.data.layout = { 258 // xaxis: {autorange:false,range: [-10, 10]}, 259 // yaxis: {autorange:false,range: [-10, 10]} 260 // }; 261 262 // $scope.dataOrg = Object.assign({},data); 263 // $scope.dataOrg = completeAssign($scope.dataOrg,data); 264 // console.log(data.data[0].x); 265 // console.log(data.data[0].y); 266 $scope.corrValue=calculateCorrelation($scope.data.data[0].x,$scope.data.data[0].y); 267 var allPoints=$scope.data.data[0].x.concat($scope.data.data[0].y) 268 // console.log(Math.min.apply(null,allPoints)); 269 // console.log(Math.max.apply(null,allPoints)); 270 $scope.minCorr=Math.min.apply(null,allPoints); 271 $scope.maxCorr=Math.max.apply(null,allPoints); 272 $scope.maxVal=Math.max(Math.abs($scope.minCorr),Math.abs($scope.maxCorr)) 273 // $scope.maxValue=Math.min(Math.abs()$scope.minCorr,$scope.minCorr); 274 275 276 $scope.minCorrSel=0; 277 $scope.maxCorrSel=0; 278 279 280 281 $scope.sliderRange = { 282 // id: 'slider-DiffExp', 283 min: $scope.minCorrSel, 284 max: $scope.maxCorrSel, 285 options: { 286 floor: $scope.minCorr,//-10, 287 ceil: $scope.maxCorr,//10, 288 // stepsArray: [0,0.000001,0.000005,0.00001,0.00005,0.0001,0.0005,0.001,0.005,0.01,0.05,0.1,0.5,1], 289 precision: 2, 290 step:0.01, 291 noSwitching:true, 292 // draggableRange: true, 293 ticksArray: [$scope.minCorr,0,$scope.maxCorr], 294 showTicksValues: true, 295 showTicks:true, 296 // logScale: true, 297 // onChange: function(id) { 298 // onChange: function() { 299 // // console.log('on change ' + id); // logs 'on change slider-id' 300 // // $scope.inRangeDiffExp=$scope.DiffExp.filter(isOutsideDiffExp); 301 // filterBasedOnCutoffs(); 302 // $scope.movingSlider=true; 303 // }, 304 onEnd: function() { 305 // console.log($scope.minCorrSel); 306 // console.log($scope.maxCorrSel); 307 // if (mode!="uploadedSig") displayVolcanoImage(); 308 // var x=$scope.dataOrg.data[0].x; 309 // var y=$scope.dataOrg.data[0].y; 310 // var x=data.data[0].x; 311 // var y=data.data[0].y; 312 console.log("data: ",data.data[0].x.length); 313 console.log("data: ",data.data[0].y.length); 314 // var x=Object.assign([],$scope.dataOrg.data[0].x); 315 // var y=Object.assign([],$scope.dataOrg.data[0].y); 316 var x=angular.copy(data.data[0].x); 317 var y=angular.copy(data.data[0].y); 318 var text=angular.copy(data.data[0].text); 319 console.log("x: ",x.length); 320 console.log("y: ",y.length); 321 // var x1 = x.filter(function(number) { 322 // return number >= $scope.sliderRange.max || number <= $scope.sliderRange.min; 323 // }); 324 // var y1 = y.filter(function(number) { 325 // return number >= $scope.sliderRange.max || number <= $scope.sliderRange.min; 326 // }); 327 // console.log("x1: ",x1.length); 328 // console.log("y1: ",y1.length); 329 // // $scope.movingSlider=false; 330 // $scope.data.data[0].x=x1; 331 // $scope.data.data[0].y=y1; 332 var x1=[],y1=[],text1=[]; 333 for (i = 0; i < x.length; i++) { 334 if ((x[i]>=$scope.sliderRange.max || x[i] <= $scope.sliderRange.min)||(y[i]>=$scope.sliderRange.max || y[i] <= $scope.sliderRange.min)) { 335 x1.push(x[i]); 336 y1.push(y[i]); 337 text1.push(text[i]); 338 } 339 } 340 $scope.data.data[0].x=x1; 341 $scope.data.data[0].y=y1; 342 $scope.data.data[0].text=text1; 343 // $scope.$apply(); 344 $scope.corrValue=calculateCorrelation($scope.data.data[0].x,$scope.data.data[0].y); 345 window.Plotly.react($scope.graph,$scope.data.data,$scope.data.layout); 346 } 347 } 348 }; 349 $scope.refreshSlider(); 350 }; 351 init(); 352 353 }]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.