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