src/hg/hgc/lowelab.c 1.39

1.39 2009/10/14 20:26:28 holmes
Added arCOG code
Index: src/hg/hgc/lowelab.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgc/lowelab.c,v
retrieving revision 1.38
retrieving revision 1.39
diff -b -B -U 4 -r1.38 -r1.39
--- src/hg/hgc/lowelab.c	14 Oct 2009 07:08:13 -0000	1.38
+++ src/hg/hgc/lowelab.c	14 Oct 2009 20:26:28 -0000	1.39
@@ -89,8 +89,10 @@
 #include "cddInfo.h"
 #include "alignInfo.h"
 #include "loweutils.h"
 #include "cddDesc.h"
+#include "arCOGs.h"
+#include "arcogdesc.h"
 
 static char const rcsid[] = "$Id$";
 
 extern char *uniprotFormat;
@@ -370,9 +372,43 @@
             hFreeConn(&conn2);
             }
          }
      }
+            sqlFreeResult(&sr);
+            //hFreeConn(&conn2);
+    }
+if (hTableExists(database, "arCOGs"))
+{
+    struct arCOGs *infoload = NULL;
+    struct arcogdesc *description = NULL;
+    int rowOffset = hOffsetPastBin(database, seqName, "arCOGs");
+    //infoload = arCOGsLoad(row);
+
+    row = NULL;
+    sprintf(query, "select * from arCOGs where gene = '%s'", item);
+    sr = sqlGetResult(conn, query);
+    conn2 = hAllocConn(database);
+    while ((row = sqlNextRow(sr)) != NULL)
+    {
+        infoload = arCOGsLoad(row+rowOffset);
+        if(infoload!=NULL)
+        {
+            sprintf(query2, "select * from mgCommonDb.arcogdesc where name = '%s'",infoload->name );
+            sr2 = sqlGetResult(conn2, query2);
+            while ((row2 = sqlNextRow(sr2)) != NULL)
+            {
+                description=arcogdescLoad(row2);
+                if(description!=NULL)
+                {
+                    printf("<B>arCOG:</B> %s Code %s",infoload->name, description->code);
+                    printf("  %s<BR/><BR/>\n", description->description);
+                }
+            }
+            sqlFreeResult(&sr2);
+            hFreeConn(&conn2);
     }
+     }
+}
 /* interpro domains */
 list = spExtDbAcc1List(spConn, spAcc, "InterPro");
 if (list != NULL)
     {
@@ -2911,8 +2947,70 @@
     }
 
   hFreeConn(&conn);
 }
+
+void doarCOGs(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 arCOGs *infoload;
+  int start = cartInt(cart, "o");
+  int end = cartInt(cart, "t");
+
+
+    sprintf(query, "select * from mgCommonDb.arcogdesc where name = '%s'", itemName);
+    //sprintf(query, "select * from %s where query = '%s'", blastpHitsTable, queryName);
+    struct sqlResult *srarcogdesc = sqlGetResult(conn, query);
+
+
+    struct arcogdesc *description = NULL;
+    while ((row = sqlNextRow(srarcogdesc)) != NULL)
+    {
+        struct arcogdesc *element;
+        element = arcogdescLoad(row);
+        slAddTail(&description, element);
+    }
+    sqlFreeResult(&srarcogdesc);
+
+
+  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 = arCOGsLoad(row+rowOffset);
+    printf("<B>Name:</B> %s<BR>\n", infoload->name);
+    printf("<B>Description:</B> %s<BR>\n", description->description);
+    printf("<B>Code:</B> %s<BR>\n", description->code);
+    printf("<B>Gene:</B> %s<BR>\n", infoload->gene);
+
+          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);
+  arCOGsFree(&infoload);
+  printTrackHtml(tdb);
+}
+
 void doCddInfo(struct trackDb *tdb, char *itemName)
 {
   char *track = tdb->tableName;
   char query[512];
@@ -3129,8 +3227,12 @@
 else if (sameWord(track,"alignInfo"))
   {
     doAlignInfo(tdb, item);
   }
+else if (sameWord(track,"arCOGs"))
+  {
+    doarCOGs(tdb, item);
+  }
 else
     return FALSE;
 return TRUE;
 }