Hello!

To see the file structure, click on "tree".

Note that updates take place every 10 minutes, commits may not be seen immediately.
View Ontology Changes:
authormiles <miles@localhost>
Mon, 25 Mar 2013 22:06:37 +0000 (22:06 +0000)
committermiles <miles@localhost>
Mon, 25 Mar 2013 22:06:37 +0000 (22:06 +0000)
        -legend now displays useful information
        -added evidence counts into the chart
        -distinguished between anatomy and growth terms

svn path=/; revision=443

Personnel/miles/Web Page/viewOntology.php

index 8056cbbec9ef3f1015241cd20da32f264008e542..f954208d063f75da49dc5a734db34d6c8d9955ad 100644 (file)
@@ -37,12 +37,16 @@ for($i = 0; $i < sizeof($genes); $i++) {
   $logic = $logic . $toAdd;
 }
 
-$query="select concat(acc, \": \", name) from (select distinct name, acc from (select term_id from gene_product left join association on association.gene_product_id=gene_product.id " . $logic . ") as mytable left join term on term_id=term.id order by acc) as secondTable";
+$query="select concat(acc, \": \", name),term_type from (select distinct name, acc,term_type from (select term_id from gene_product left join association on association.gene_product_id=gene_product.id " . $logic . ") as mytable left join term on term_id=term.id order by acc) as secondTable";
 $results=mysql_query($query);
 
 $i = 0;
 for($row = mysql_fetch_row($results); $row != null; $row = mysql_fetch_row($results)) {
-  $terms[$i] = $row[0];
+  $add = "";
+  if($row[1]=="plant_anatomy") $add= " (A)";
+  if($row[1]=="plant_structure_development_stage") $add= " (G)";
+  $terms[$i][0] = $row[0];
+  $terms[$i][1] = $add;
   $i++;
   }
 
@@ -58,8 +62,6 @@ for($i = 0; $i < sizeof($genes); $i++) {
 }
 
 $query = "select full_name,term_id,concat(acc, \": \", name),evnum from (select full_name,term_id,count(*) as evnum from gene_product left join association on association.gene_product_id=gene_product.id " . $logic . "group by full_name,term_id order by full_name,term_id) as temp left join term on term.id=term_id order by full_name,acc";
-
-echo $query;
 $results=mysql_query($query);
 
 $t = 0;
@@ -71,28 +73,48 @@ for($row = mysql_fetch_row($results); $row != null; $row = mysql_fetch_row($resu
     $g ++;
     $genes[$g];
     for($t = 0; $t < sizeof($terms); $t++) {
-      $cellData[$g][$t] = 0;
+      $cellData[$g][$t][0] = 0;
     }
   }
   for($t = 0; $t < sizeof($terms); $t++) {
-    if($row[2] == $terms[$t]) {
-      $cellData[$g][$t] = 1;
+    if($row[2] == $terms[$t][0]) {
+      $cellData[$g][$t][0] = 1;
+      $cellData[$g][$t][1] = $row[3];
     } //TODO optimize this by using PO ID's instead of the entire term string
   }
 
 }
+$semiFinalCellData;
+for ($i = 0; $i < sizeof($cellData); $i ++)
+  {
+  for($j = 0; $j < sizeof($cellData[$i]); $j++)
+    {
+    $semiFinalCellData[$i][$j] = implode(",",$cellData[$i][$j]);
+    }
+  }
+
 
 $finalCellData;
-for ($i = 0; $i < sizeof($cellData); $i ++)
+for ($i = 0; $i < sizeof($semiFinalCellData); $i ++)
   {
-  $finalCellData[$i] = implode(",", $cellData[$i]);
+  $finalCellData[$i] = implode(";", $semiFinalCellData[$i]);
   }
 
 
 
 $height = 800;
 $width = 1200;
+
+$printTerms;
+for($i = 0; $i < sizeof($terms); $i ++) {
+  $printTerms[$i] = $terms[$i][0] . $terms[$i][1];
+}
 ?>
+<div id="Legend" style="float: right; height: 200px; width: 400px;">
+Note: The colors have no relevance to the data, they simply serve to distinguish rows visually. <br>
+    The numbers printed inside each cell represent the confidence rating of the ontological assignment; a higher number indicates more confidence.
+</div>
+
 
 <div id="canvasDiv" style="overflow: hidden; float: left; height: <?php echo $height ?>px; width: <?php echo $width ?>px;">
 <canvas id="myCanvas" width="1500" height="1000" style="border:1px solid #c3c3c3;">
@@ -110,18 +132,25 @@ Your browser does not support the canvas element.
 
 <script type="text/javascript">
 
-var rawCellData = "<?php echo implode(";",$finalCellData); ?>";
-var rareCellData = rawCellData.split(";");
-var cellData = new Array(rareCellData.length);
+var rawCellData = "<?php echo implode(".",$finalCellData); ?>";
+var rareCellData = rawCellData.split(".");
+
+var mediumRareCellData = Array(rareCellData.length);
 for(var i=0; i<rareCellData.length; i++) {
-  cellData[i] = rareCellData[i].split(",");
+  mediumRareCellData[i] = rareCellData[i].split(";");
+  }
+var cellData = new Array(mediumRareCellData.length);
+for(var i=0; i<mediumRareCellData.length; i++) {
+  cellData[i] = new Array(mediumRareCellData[i].length);
+  for(var j=0; j<mediumRareCellData[i].length; j++) {
+    cellData[i][j] = mediumRareCellData[i][j].split(",");
+    }
   }
-
 var rawGenes = "<?php echo implode(",",$genes) ?>";
 var genes = rawGenes.split(",");
 var geneCount = genes.length;
 
-var rawTerms = "<?php echo implode(",",$terms) ?>";
+var rawTerms = "<?php echo implode(",",$printTerms) ?>";
 var terms = rawTerms.split(",");
 var termCount = terms.length;
 
@@ -156,7 +185,7 @@ function drawTerms(startTerm) {
   //labeling the terms
   var translated = 0;
   for (var s=startTerm; (s<termCount) && (s<=startTerm+maxCols); s++) {
-      term = terms[s];
+      term=terms[s];
       finalTerm = term.replace("_", " ");
       ontMap.fillText(finalTerm,4, leftOffset + 15);
       ontMap.translate(0,cellSize);
@@ -174,8 +203,10 @@ function drawGenes(startGene) {
     ontMap.fillText(genes[c],5,(c-startGene)*cellSize + topOffset + cellSize/2);
   }
 }
+
 drawGenes(0);
 drawTerms(0);
+
 function drawMap(init) {
   scrolledLeft = document.getElementById("sideScrollDiv").scrollLeft;
   scrolledTop = document.getElementById("topScrollDiv").scrollTop;
@@ -200,9 +231,8 @@ function drawMap(init) {
     startYCell = Math.floor(scrolledTop/cellSize);
 
     for(var t=startXCell; (t<termCount) && ((t-startXCell)<maxCols); t++) {
-      var changed=true;
       for(var g=startYCell; (g<geneCount) && ((g-startYCell)<maxRows); g++) {
-       if(changed && cellData[g][t] != 0) {
+       if(cellData[g][t][0] != 0) {
          redcolor = "00";
          var greenfrequency = Math.floor((t / termCount) * 255);
          greencolor = greenfrequency.toString(16);
@@ -217,19 +247,21 @@ function drawMap(init) {
          if(greencolor.length < 2) {
            greencolor = "0" + greencolor;
          }
-         changed=false;
          ontMap.fillStyle= "#" + redcolor + greencolor + bluecolor;
        }
-       if(cellData[g][t] == 0) {
+       if(cellData[g][t][0] == 0) {
          redcolor = "FF";
          greencolor = "FF";
          bluecolor = "FF";
-         changed=true;
          ontMap.fillStyle= "#" + redcolor + greencolor + bluecolor;
          }
        var xCoord = leftOffset+(t-startXCell+.5)*cellSize;
        var yCoord = topOffset+(g-startYCell)*cellSize;
        ontMap.fillRect(xCoord, yCoord, cellSize, cellSize);
+       if(cellData[g][t][0] != 0) {
+         ontMap.fillStyle="#000000";
+         ontMap.fillText(cellData[g][t][1],xCoord,yCoord+cellSize);
+       }
       }
     }
     drawTerms(startXCell);
@@ -240,6 +272,31 @@ function drawMap(init) {
 drawMap(true);
 
 
+/*
+function showInfo(event) {
+  var x = event.clientX + document.body.scrollLeft + document.documentElement.scrollLeft - canvas.offsetLeft;
+  var y = event.clientY + document.body.scrollTop + document.documentElement.scrollTop - canvas.offsetTop;
+
+  if((x<leftOffset) && (y>topOffset)) {
+    var index = Math.floor((y-topOffset)/cellSize) + Math.floor(scrolledTop/cellSize);
+    var gene = genes[index];
+    getGeneInfo(gene, index);
+  }
+  if((y<topOffset) && (x>leftOffset) && (y<leftOffset+maxCols*cellSize)) {
+    var index = Math.floor((x-leftOffset)/cellSize) + Math.floor(scrolledLeft/cellSize);
+    var species = allSpecies[index];
+    getSpeciesInfo(species);
+  }
+  if((y>topOffset) && ((y+scrolledTop)<(topOffset + cellSize*clusterCount)) && (x>leftOffset) && ((x+scrolledLeft)<leftOffset + speciesCount*cellSize)) {
+    var clusterIndex = Math.floor((y-topOffset)/cellSize) + Math.floor(scrolledTop/cellSize);
+    var cluster = allClusterIDs[clusterIndex];
+    var index = Math.floor((x-leftOffset)/cellSize) + Math.floor(scrolledLeft/cellSize);
+    var species = allSpecies[index];
+    getBoxInfo(cluster, species, clusterIndex, index);
+  }
+}*/
+
+
 
 </script>