src/hg/hgc/lowelab.c 1.40
1.40 2009/11/09 19:20:29 holmes
Adding vecscreen and orthologs
Index: src/hg/hgc/lowelab.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgc/lowelab.c,v
retrieving revision 1.39
retrieving revision 1.40
diff -b -B -U 4 -r1.39 -r1.40
--- src/hg/hgc/lowelab.c 14 Oct 2009 20:26:28 -0000 1.39
+++ src/hg/hgc/lowelab.c 9 Nov 2009 19:20:29 -0000 1.40
@@ -91,8 +91,11 @@
#include "loweutils.h"
#include "cddDesc.h"
#include "arCOGs.h"
#include "arcogdesc.h"
+#include "megablastInfo.h"
+
+#define LISTUI
static char const rcsid[] = "$Id$";
extern char *uniprotFormat;
@@ -3008,9 +3011,56 @@
hFreeConn(&conn);
arCOGsFree(&infoload);
printTrackHtml(tdb);
}
+void doloweOrthologs(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 bed *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 = bedLoadN(row+rowOffset, bedSize);
+ printf("<B>Name:</B> %s\n", infoload->name);
+ printf(" <A HREF=\"http://archdev-holmes.cse.ucsc.edu/cgi-bin/hgFrame?track=loweOrthologs&refseq=1&db=%s&name=%s\">List of Orthologs</A><BR>",database,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));
+ if (infoload->next != NULL)
+ printf("<hr>\n");
+ }
+ sqlFreeResult(&sr);
+ hFreeConn(&conn);
+ printTrackHtml(tdb);
+}
void doCddInfo(struct trackDb *tdb, char *itemName)
{
char *track = tdb->tableName;
char query[512];
@@ -3077,8 +3127,63 @@
hFreeConn(&conn);
cddInfoFree(&infoload);
printTrackHtml(tdb);
}
+void domegablastInfo(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 megablastInfo *infoload;
+ int start = cartInt(cart, "o");
+ int end = cartInt(cart, "t");
+
+
+ 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 = megablastInfoLoad(row+rowOffset);
+ printf("<B>Name:</B> %s<BR>\n", infoload->name);
+ printf("<B>Accession:</B> %s<A HREF=\"http://www.ncbi.nlm.nih.gov/nuccore/%s\" TARGET=_blank>",
+ infoload->name, infoload->name);
+ printf(" Link to NCBI Site</A> <BR>\n");
+ printf("<B>Description:</B> %s<BR>\n", infoload->fullname);
+ printf("<B>E-value:</B> %0.0e", infoload->evalue);
+ #ifdef LISTUI
+ printf(" <A HREF=\"http://archdev-holmes.cse.ucsc.edu/cgi-bin/hgList?track=megablastInfo&order=evalue&db=%s\">Sort by E-value</A>",database);
+ #endif
+ printf("<BR>\n");
+ printf("<B>Protein Identity:</B> %u%%\n", infoload->percentident);
+ #ifdef LISTUI
+ printf(" <A HREF=\"http://archdev-holmes.cse.ucsc.edu/cgi-bin/hgList?track=megablastInfo&order=percentident&db=%s\">Sort by Percent Identity</A>",database);
+ #endif
+ printf("<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");
+ }
+ sqlFreeResult(&sr);
+ hFreeConn(&conn);
+ megablastInfoFree(&infoload);
+ printTrackHtml(tdb);
+}
void doAlignInfo(struct trackDb *tdb, char *itemName)
{
char *track = tdb->tableName;
char query[512];
@@ -3231,8 +3336,16 @@
else if (sameWord(track,"arCOGs"))
{
doarCOGs(tdb, item);
}
+else if (sameWord(track,"megablastInfo") || sameWord(track,"vecScreenInfo"))
+ {
+ domegablastInfo(tdb, item);
+ }
+else if (sameWord(track,"loweOrthologs"))
+ {
+ doloweOrthologs(tdb, item);
+ }
else
return FALSE;
return TRUE;
}