src/hg/hgc/lowelab.c 1.33

1.33 2009/09/08 18:11:19 holmes
Predicted genes
Index: src/hg/hgc/lowelab.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgc/lowelab.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -b -B -U 4 -r1.32 -r1.33
--- src/hg/hgc/lowelab.c	8 May 2009 21:15:26 -0000	1.32
+++ src/hg/hgc/lowelab.c	8 Sep 2009 18:11:19 -0000	1.33
@@ -85,8 +85,11 @@
 #include "transMapClick.h"
 #include "ccdsClick.h"
 #include "memalloc.h"
 #include "rnaHybridization.h"
+#include "cddInfo.h"
+#include "alignInfo.h"
+#include "allpredictions.h"
 
 static char const rcsid[] = "$Id$";
 
 extern char *uniprotFormat;
@@ -2911,10 +2914,166 @@
     }
   
   hFreeConn(&conn);
 }
+void doAllPredictions(struct trackDb *tdb, char *itemName)
+{
+  char *track = tdb->tableName;
+  char query[512];
+  struct sqlConnection *conn = hAllocConn(database);
+  struct sqlResult *sr;
+  char *dupe, *words[16];
+  char **row;
+  int wordCount;
+  int rowOffset;
+  struct allpredictions *infoload;
+  int bedSize = 0;
+  int start = cartInt(cart, "o");
+  int end = cartInt(cart, "t");
 
+    dupe = cloneString(tdb->type);
+    wordCount = chopLine(dupe, words);
+    if (wordCount > 1)
+        bedSize = atoi(words[1]);
+    if (bedSize < 3) bedSize = 3;
+
+
+  genericHeader(tdb,itemName);
+  dupe = cloneString(tdb->type);
+  wordCount = chopLine(dupe, words);
+
+  rowOffset = hOffsetPastBin(database,seqName, track);
+
+  sprintf(query, "select * from %s where name = '%s' and chrom = '%s' and chromStart = %d and chromEnd = '%d';", track, itemName,seqName,start, end);
+  sr = sqlGetResult(conn, query);
+  while ((row = sqlNextRow(sr)) != NULL)
+    {
+        infoload = allpredictionsLoad(row+rowOffset);
+    printf("<B>Name:</B> %s<BR>\n", infoload->name);
+
+          printf("<B>Position:</B> "
+                 "<A HREF=\"%s&db=%s&position=%s%%3A%d-%d\">",
+                 hgTracksPathAndSettings(), database, infoload->chrom, infoload->chromStart + 1, infoload->chromEnd);
+          printf("%s:%d-%d</A><BR>\n", infoload->chrom, infoload->chromStart + 1, infoload->chromEnd);
+          printf("<B>Strand:</B> %s<BR>\n", infoload->strand);
+          printf("<B>Genomic size: </B> %d nt<BR>\n", (infoload->chromEnd - infoload->chromStart));
+          printf("<B>Predictor: </B> %s <BR>\n", (infoload->source));
+          if (infoload->next != NULL)
+            printf("<hr>\n");
+    }
+  sqlFreeResult(&sr);
+  hFreeConn(&conn);
+  allpredictionsFree(&infoload);
+  printTrackHtml(tdb);
+}
+void doCddInfo(struct trackDb *tdb, char *itemName)
+{
+  char *track = tdb->tableName;
+  char query[512];
+  struct sqlConnection *conn = hAllocConn(database);
+  struct sqlResult *sr;
+  char *dupe, *words[16];
+  char **row;
+  int wordCount;
+  int rowOffset;
+  struct cddInfo *infoload;
+  int bedSize = 0;
+  int start = cartInt(cart, "o");
+  int end = cartInt(cart, "t");
+
+    dupe = cloneString(tdb->type);
+    wordCount = chopLine(dupe, words);
+    if (wordCount > 1)
+        bedSize = atoi(words[1]);
+    if (bedSize < 3) bedSize = 3;
+
+
+  genericHeader(tdb,itemName);
+  dupe = cloneString(tdb->type);
+  wordCount = chopLine(dupe, words);
 
+  rowOffset = hOffsetPastBin(database,seqName, track);
+
+  sprintf(query, "select * from %s where name = '%s' and chrom = '%s' and chromStart = %d and chromEnd = '%d';", track, itemName,seqName,start, end);
+  sr = sqlGetResult(conn, query);
+  while ((row = sqlNextRow(sr)) != NULL)
+    {
+        infoload = cddInfoLoad(row+rowOffset);
+    printf("<B>Name:</B> %s<BR>\n", infoload->fullname);
+    printf("<B>Accession:</B>  %s<A HREF=\"http://www.ncbi.nlm.nih.gov/Structure/cdd/cddsrv.cgi?uid=%s\" TARGET=_blank>",
+           infoload->name, infoload->NCBInum);
+    printf(" Link to NCBI Site</A> <BR>\n");
+    printf("<B>E-value:</B> %0.0e<BR>\n", infoload->evalue);
+    printf("<B>Protein Identity:</B> %u%%<BR>\n", infoload->percentident);
+    printf("<B>Percent Length:</B> %u%%<BR>\n", infoload->percentlength);
+          printf("<B>Position:</B> "
+                 "<A HREF=\"%s&db=%s&position=%s%%3A%d-%d\">",
+                 hgTracksPathAndSettings(), database, infoload->chrom, infoload->chromStart + 1, infoload->chromEnd);
+          printf("%s:%d-%d</A><BR>\n", infoload->chrom, infoload->chromStart + 1, infoload->chromEnd);
+          printf("<B>Strand:</B> %s<BR>\n", infoload->strand);
+          printf("<B>Genomic size: </B> %d nt<BR>\n", (infoload->chromEnd - infoload->chromStart));
+          if (infoload->next != NULL)
+            printf("<hr>\n");
+    }
+  sqlFreeResult(&sr);
+  hFreeConn(&conn);
+  cddInfoFree(&infoload);
+  printTrackHtml(tdb);
+}
+void doAlignInfo(struct trackDb *tdb, char *itemName)
+{
+  char *track = tdb->tableName;
+  char query[512];
+  struct sqlConnection *conn = hAllocConn(database);
+  struct sqlResult *sr;
+  char *dupe, *words[16];
+  char **row;
+  int wordCount;
+  int rowOffset;
+  struct alignInfo *infoload;
+  int bedSize = 0;
+  int start = cartInt(cart, "o");
+
+    dupe = cloneString(tdb->type);
+    wordCount = chopLine(dupe, words);
+    if (wordCount > 1)
+        bedSize = atoi(words[1]);
+    if (bedSize < 3) bedSize = 3;
+
+
+  genericHeader(tdb,itemName);
+  dupe = cloneString(tdb->type);
+  wordCount = chopLine(dupe, words);
+
+  rowOffset = hOffsetPastBin(database, seqName, track);
+
+  sprintf(query, "select * from %s where name = '%s' and chrom = '%s' and chromStart = %d;", track, itemName,seqName,start);
+  sr = sqlGetResult(conn, query);
+  while ((row = sqlNextRow(sr)) != NULL)
+    {
+        infoload = alignInfoLoad(row+rowOffset);
+
+    printf("<B>Name:</B> %s  ", infoload->name);
+    linkToOtherBrowserTitle(infoload->orgn, infoload->alignChrom, infoload->alignChromStart + 1, infoload->alignChromEnd, "Aligned Feature");
+                 //printf("<A HREF=\"%s&db=%s&position=%s%%3A%d-%d\">",
+                 //hgTracksPathAndSettings(), infoload->orgn, infoload->alignChrom, infoload->alignChromStart + 1, infoload->alignChromEnd);
+   printf("Link to Feature</A><BR>\n" );
+
+          printf("<B>Position:</B> "
+                 "<A HREF=\"%s&db=%s&position=%s%%3A%d-%d\">",
+                 hgTracksPathAndSettings(), database, infoload->chrom, infoload->chromStart + 1, infoload->chromEnd);
+          printf("%s:%d-%d</A><BR>\n", infoload->chrom, infoload->chromStart + 1, infoload->chromEnd);
+          printf("<B>Strand:</B> %s<BR>\n", infoload->strand);
+          printf("<B>Genomic size: </B> %d nt<BR>\n", (infoload->chromEnd - infoload->chromStart));
+          if (infoload->next != NULL)
+            printf("<hr>\n");
+            break;
+    }
+  sqlFreeResult(&sr);
+  hFreeConn(&conn);
+  alignInfoFree(&infoload);
+  printTrackHtml(tdb);
+}
 bool loweLabClick(char *track, char *item, struct trackDb *tdb)
 /* check if we have one of the lowelab tracks */
 {
 if (sameWord(track, "gbProtCode"))
@@ -2997,8 +3156,20 @@
 else if (sameWord(track,"rnaHybridization"))  
   {
     doRNAHybridization(tdb, item);
   }
+else if (sameWord(track,"cddInfo"))
+  {
+    doCddInfo(tdb, item);
+  }
+else if (sameWord(track,"alignInfo"))
+  {
+    doAlignInfo(tdb, item);
+  }
+else if (sameWord(track,"allpredictions"))
+  {
+    doAllPredictions(tdb, item);
+  }
 else 
     return FALSE;
 return TRUE;
 }