Hello!

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

Note that updates take place every 10 minutes, commits may not be seen immediately.
not sure if heatmap is working, wanted something to revert to
authormiles <miles@localhost>
Fri, 15 Mar 2013 22:42:37 +0000 (22:42 +0000)
committermiles <miles@localhost>
Fri, 15 Mar 2013 22:42:37 +0000 (22:42 +0000)
svn path=/; revision=436

Personnel/miles/Web Page/heatMap.php
Personnel/miles/Web Page/infoChoice.php
Personnel/miles/Web Page/viewOntology.php

index c4e4154337fb30e9cc4b3169b0f770ed0abaf6e2..ad0f06c7c6494adf65623d45f251762dd24b7e5e 100644 (file)
@@ -222,7 +222,7 @@ function drawMap(init) {
   scrolledTop = document.getElementById("scrollDiv").scrollTop - topScrollOffset +25; // NOTE the 25 accounts for the scrollbar offset allowing for scrolling up/left
   if(scrolledLeft > speciesCount*cellSize - maxCols*cellSize) {
     scrolledLeft = speciesCount*cellSize - maxCols*cellSize;
-  }
+  } //TODO examine this ^
   if(scrolledLeft < 0) {
     scrolledLeft = 0;
   }
index 0d0a6941867a165ffa92daadb4e2fa3020b16ff2..5d87ce44f63043821ede8e22691a07bfe05ad938 100644 (file)
@@ -125,13 +125,22 @@ mysql_close($connection);
       echo "<br> <br>\n";
 
       $genes="";
+      $first=true;
       $row = mysql_fetch_row($results);
       while($row != null) {
+
+       
        echo "<a href=\"http://planteome.cgrb.oregonstate.edu/node/11?species=" . $species . "&gene=" . $row[0] . "\">" . $row[0] . "</a> <br>";
-       $genes = $genes . $row[0] . ",";
+       if($first) {
+         $first = false;
+         $genes = $genes . $row[0];
+       } else {
+         $genes = $genes . "," . $row[0];
+       }
        $row = mysql_fetch_row($results);
        }
       mysql_close($connection);
+      echo $genes;
 }
 
 ?>
index 1a8e4b681b5ef57e430cce0492428d27b9be2b2e..cb2f557b11e31504317e106e0a9f31d2e94d2dde 100644 (file)
@@ -25,15 +25,14 @@ $connection=mysql_connect($url,$username,$password);
 mysql_select_db($database);
 
 $logic = "where full_name like '";
-for($i = 0; $i + 1 < sizeof($genes); $i ++) { // note that the last parameter of $genes is an empty array
+for($i = 0; $i < sizeof($genes); $i ++) { // note that the last parameter of $genes is an empty array
   $toAdd = $genes[$i] . "'";
-  if($i + 2 < sizeof($genes)) {
+  if($i + 1 < sizeof($genes)) {
     $toAdd = $toAdd . " or full_name like '";
   }
   $logic = $logic . $toAdd;
   
 }
-echo "<br> logic: " . $logic . "<br>";
 $query="select id from gene_product " . $logic . " order by id";
 $results=mysql_query($query);
 
@@ -43,11 +42,10 @@ for($row = mysql_fetch_row($results); $row != null; $row = mysql_fetch_row($resu
   $geneProductIDs[$i] = $row[0];
   $i++;
   }
-
 $logic = "where gene_product_id=";
-for($i = 0; $i + 1 < sizeof($geneProductIDs); $i++) {
+for($i = 0; $i < sizeof($geneProductIDs); $i++) {
   $toAdd = $geneProductIDs[$i];
-  if($i + 2 < sizeof($geneProductIDs)) {
+  if($i + 1 < sizeof($geneProductIDs)) {
     $toAdd = $toAdd . " or gene_product_id=";
   }
   $logic = $logic . $toAdd;
@@ -63,9 +61,9 @@ for($row = mysql_fetch_row($results); $row != null; $row = mysql_fetch_row($resu
   }
 
 $logic = "where id='";
-for($i = 0; $i + 1 < sizeof($termIDs); $i++) {
+for($i = 0; $i < sizeof($termIDs); $i++) {
   $toAdd = $termIDs[$i] . "'";
-  if($i + 2 < sizeof($termIDs)) {
+  if($i + 1 < sizeof($termIDs)) {
     $toAdd = $toAdd . " or id='";
   }
   $logic = $logic . $toAdd;
@@ -80,6 +78,47 @@ for($row = mysql_fetch_row($results); $row != null; $row = mysql_fetch_row($resu
   $i++;
   }
 
+
+$cellData;
+//TODO this part needs the most optimization. It's really bad.
+//theoretically this should return a two-dimensional array of booleans, representing whether or not each gene is referenced to each term
+for($i = 0; $i < sizeof($genes); $i++) {
+  $query="select id from gene_product where full_name='" . $genes[$i] . "'";
+  $results=mysql_query($query);
+  $row = mysql_fetch_row($results);
+  $productID = $row[0];
+
+  $query="select term_id from association where gene_product_id='" . $productID . "'";
+  $results=mysql_query($query);
+
+  $k = 0;
+  $geneTerms;
+  for($row = mysql_fetch_row($results); $row != null; $row = mysql_fetch_row($results)) {
+    $geneTerms[$k] = $row[0];
+    $k++;
+  }
+  for($j=0;$j<sizeof($termIDs);$j++) {
+    $cellData[$i][$j] = 0;
+  }
+  for($j = 0; $j < sizeof($geneTerms);$j++) {
+    for($m = 0; $m<sizeof($termIDs);$m++) {
+      if($geneTerms[$j]==$termIDs[$m]) {
+       $cellData[$i][$m] = 1;
+      }
+    }
+  }
+}
+
+$finalCellData;
+for ($i = 0; $i < sizeof($cellData); $i ++)
+  {
+  $finalCellData[$i] = implode(",", $cellData[$i]);
+  }
+
+
+
+
+
 ?>
 
 <div id="canvasDiv" style="overflow: hidden; float: left; height: 500px; width: 1100px;">
@@ -88,11 +127,19 @@ Your browser does not support the canvas element.
 </canvas> </div>
 
 <div id="scrollDiv" style="overflow: auto; float: left; height: 515px; width: 15px;" onscroll="drawMap();">
-<canvas id="nothing" width="1" height="<?php echo 250 + sizeof($allClusterIDs)*25 ?>"> </canvas>
+<canvas id="nothing" width="1" height="<?php echo 250 + sizeof($genes)*25 ?>"> </canvas>
 </div>
 
 
 <script type="text/javascript">
+
+var rawCellData = "<?php echo implode(";",$finalCellData); ?>";
+var rareCellData = rawCellData.split(";");
+var cellData = new Array(rareCellData.length);
+for(var i=0; i<rareCellData.length; i++) {
+  cellData[i] = rareCellData[i].split(",");
+  }
+
 var rawGenes = "<?php echo $_POST['param'] ?>";
 var genes = rawGenes.split(",");
 var geneCount = genes.length;
@@ -106,12 +153,14 @@ var ontMap = canvas.getContext("2d");
 var startTerm = 0;
 
 var topOffset = 210;
-var leftOffset = 50;
+var leftOffset = 85;
 
-var cellSize = 10;
+var cellSize = 15;
 var maxRows = Math.floor((500-topOffset)/cellSize);
 var maxCols = Math.floor((1000-leftOffset)/cellSize);
 
+var borderWidth = 1;
+
 
 function drawTerms(startTerm) {
   //black for text
@@ -135,11 +184,90 @@ function drawTerms(startTerm) {
   ontMap.translate(topOffset,0);
   ontMap.rotate(90*Math.PI/180);
 }
+
+function drawGenes(startGene) {
+  ontMap.fillStyle = "#000000";
+  for(var c=startGene; (c<geneCount) && (c<=startGene + maxRows); c++) {
+    ontMap.fillText(genes[c],5,(c-startGene)*cellSize + topOffset + cellSize/2);
+  }
+}
+drawGenes(0);
 drawTerms(0);
 
+function drawMap(init) {
+  scrolledLeft = document.getElementById("scrollDiv").scrollLeft;
+  scrolledTop = document.getElementById("scrollDiv").scrollTop;
+  if(scrolledLeft > termCount*cellSize - maxCols*cellSize) {
+    scrolledLeft = termCount*cellSize - maxCols*cellSize;
+  } //TODO examine this ^
+  if(scrolledLeft < 0) {
+    scrolledLeft = 0;
+  }
+  if(scrolledTop < 0) {
+    scrolledTop = 0;
+  }
+
+  if((init || Math.floor(scrolledLeft/cellSize) != drawnCols || Math.floor(scrolledTop/cellSize) != drawnRows)) {
+    drawnCols = Math.floor(scrolledLeft/cellSize);
+    drawnRows = Math.floor(scrolledTop/cellSize);
+    
+    ontMap.fillStyle = "#FFFFFF";
+    ontMap.fillRect(0,0,1100,500);
+    startXCell = Math.floor(scrolledLeft/cellSize);
+    startYCell = Math.floor(scrolledTop/cellSize);
+
+    for(var c=startXCell; (c<cellData.length) && ((c-startYCell)<maxRows); c++) {
+      for(var s=startXCell; (s<termCount) && ((s-startXCell)<maxCols); s++) {
+       var redcolor = "00";
+       var bluecolor = "00";
+       var greencolor = "00";
+       if(cellData[c][s] == 0) {
+         redcolor = "FF";
+         greencolor = "FF";
+         bluecolor = "FF";
+         }
+       else {
+       var redfrequency = Math.floor((s / termCount) * 255);
+       redcolor = redfrequency.toString(16);
+       var bluefrequency = 255 - redfrequency;
+       bluecolor = bluefrequency.toString(16);
+       var greenfrequency = redfrequency;
+       greencolor = greenfrequency.toString(16);
+       }
+       if(redcolor.length < 2) {
+         redcolor = "0" + redcolor;
+         }
+       if(bluecolor.length < 2) {
+         bluecolor = "0" + bluecolor;
+       }
+       if(greencolor.length < 2) {
+         greencolor = "0" + greencolor;
+       }
+       var xCoord = leftOffset+(s-startXCell+.5)*cellSize;
+       var yCoord = topOffset+(c-startYCell)*cellSize;
+       alert(startYCell);
+       ontMap.fillStyle= "#" + redcolor + greencolor + bluecolor;
+       ontMap.fillRect(xCoord, yCoord, cellSize, cellSize);
+       ontMap.fillStyle= "#FFFFFF";
+       ontMap.strokeRect(xCoord-borderWidth/2, yCoord-borderWidth/2,cellSize,cellSize);
+      }
+    }
+    drawTerms(startXCell);
+    drawGenes(startYCell);
+  }
+}
+
+drawMap(true);
+
 
 
 </script>
 
 </body>
-</html> 
+</html>
+<!--
+Time out problem
+General Optimization
+Color
+Scrolling
+-->