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;
}