src/hg/archaeStuff/tooltip/tooltip.c 1.7
1.7 2010/02/12 18:03:12 markd
integrated archae tool tip changes from Andrew Holmes
Index: src/hg/archaeStuff/tooltip/tooltip.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/archaeStuff/tooltip/tooltip.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -b -B -U 1000000 -r1.6 -r1.7
--- src/hg/archaeStuff/tooltip/tooltip.c 2 Dec 2009 20:08:20 -0000 1.6
+++ src/hg/archaeStuff/tooltip/tooltip.c 12 Feb 2010 18:03:12 -0000 1.7
@@ -1,840 +1,876 @@
#include "common.h"
#include "errabort.h"
#include "bed.h"
#include "cart.h"
#include "cheapcgi.h"
#include "hPrint.h"
#include "hui.h"
#include "jksql.h"
#include "web.h"
#include "minGeneInfo.h"
#include "hdb.h"
#include "cddInfo.h"
#include "alignInfo.h"
#include "gcPercent.h"
#include "wiggle.h"
#include "blastTab.h"
#include "lowelabPfamHit.h"
#include "tRNAs.h"
#include "snoRNAs.h"
#include "tigrCmrGene.h"
#include "hgConfig.h"
#include "loweutils.h"
#include "cddDesc.h"
#include "arcogdesc.h"
#include "arCOGs.h"
#include "megablastInfo.h"
static char const rcsid[] = "$Id$";
/* ---- Global variables. ---- */
struct cart *cart; /* This holds cgi and other variables between clicks. */
struct hash *oldVars = NULL;
char *database; /* Name of mySQL database. */
char *organism;
+char* getseqname()
+{
+ char *seqName;
+ boolean dbIsFound = sqlDatabaseExists(database);
+
+ if (dbIsFound)
+ seqName = hgOfficialChromName(database, cartString(cart, "c"));
+ else
+ seqName = cartString(cart, "c");
+ char* position = cartOptionalString(cart, "position");
+ int i = 0;
+ while(position[i] != '\0' && position[i] != ':')
+ {
+ i++;
+ }
+ if(position[i] == ':')
+ {
+ position[i] = '\0';
+ seqName = position;
+ }
+ return seqName;
+}
void toolTipGeneQuery()
{
struct sqlResult *sr;
struct minGeneInfo ginfo;
char **row;
char query[256];
//struct sqlConnection *hAllocConn
struct sqlConnection *conn = hAllocConn(database);
sprintf(query, "select * from %s where name = '%s'", "gbProtCodeXra", cartOptionalString(cart, "i"));
sr = sqlGetResult(conn, query);
hPrintf("<B>Gene Name:</B> %s<br>",cartOptionalString(cart, "i"));
if ((row = sqlNextRow(sr)) != NULL)
{
minGeneInfoStaticLoad(row, &ginfo);
if (ginfo.product != NULL && differentString(ginfo.product,"none"))
{
if(strlen(ginfo.product) > 70)
{
hPrintf("<B>Product:</B> %.70s<BR>",ginfo.product);
}
else
{
hPrintf("<B>Product:</B> %s<BR>",ginfo.product);
}
}
}
sqlFreeResult(&sr);
hFreeConn(&conn);
}
void arCOGTip()
{
char *track = cartOptionalString(cart, "g");
char *seqName = cartOptionalString(cart, "c");
char *itemName = cartOptionalString(cart, "i");
int start = cartInt(cart, "o");
int end = cartInt(cart, "t");
struct sqlResult *sr;
char **row;
char **descrow;
char query[256];
int rowOffset;
struct sqlConnection *conn = hAllocConn(database);
struct arcogdesc *description = NULL;
if(hTableExists("mgCommonDb","arcogdesc"))
{
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);
while ((descrow = sqlNextRow(srarcogdesc)) != NULL)
{
struct arcogdesc *element;
element = arcogdescLoad(descrow);
slAddTail(&description, element);
}
sqlFreeResult(&srarcogdesc);
}
- sprintf(query, "select * from %s where name = '%s' and chrom = '%s' and chromStart = %d and chromEnd = '%d';", track, itemName,seqName,start, end);
+ 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);
struct arCOGs *infoload = NULL;
rowOffset = hOffsetPastBin(database, seqName, track);
if ((row = sqlNextRow(sr)) != NULL)
{
infoload = arCOGsLoad(row+rowOffset);
hPrintf("<B>Name:</B> %s<BR>\n", infoload->name);
if(!hTableExists("mgCommonDb","arcogdesc"))
{
}
else if(strlen(description->description) > 70)
{
hPrintf("<B>Description:</B> %.70s...<BR>\n", description->description);
}
else
{
hPrintf("<B>Description:</B> %s<BR>\n", description->description);
}
hPrintf("<B>Code:</B> %s<BR>\n", description->code);
}
sqlFreeResult(&sr);
hFreeConn(&conn);
}
void cddInfoTip()
{
+
char *track = cartOptionalString(cart, "g");
char *seqName = cartOptionalString(cart, "c");
char *itemName = cartOptionalString(cart, "i");
int start = cartInt(cart, "o");
- int end = cartInt(cart, "t");
+ int end = cartInt(cart,"t");
struct sqlResult *sr;
char **row;
char **descrow;
char query[256];
int rowOffset;
struct sqlConnection *conn = hAllocConn(database);
struct cddDesc *description = NULL;
if(hTableExists("mgCommonDb","cddDesc"))
{
sprintf(query, "select * from mgCommonDb.cddDesc where accession = '%s'", itemName);
//sprintf(query, "select * from %s where query = '%s'", blastpHitsTable, queryName);
struct sqlResult *srCddDesc = sqlGetResult(conn, query);
while ((descrow = sqlNextRow(srCddDesc)) != NULL)
{
struct cddDesc *element;
element = cddDescLoad(descrow);
slAddTail(&description, element);
}
sqlFreeResult(&srCddDesc);
}
- sprintf(query, "select * from %s where name = '%s' and chrom = '%s' and chromStart = %d and chromEnd = '%d';", track, itemName,seqName,start, end);
-
+ sprintf(query, "select * from %s where name = '%s' and chrom = '%s' and chromStart = %d and chromEnd = %d;", track, itemName,seqName,start, end);
+ //printf("%s\n",query);
sr = sqlGetResult(conn, query);
struct cddInfo *infoload = NULL;
rowOffset = hOffsetPastBin(database, seqName, track);
if ((row = sqlNextRow(sr)) != NULL)
{
infoload = cddInfoLoad(row+rowOffset);
hPrintf("<B>Name:</B> %s<BR>\n", infoload->fullname);
if(!hTableExists("mgCommonDb","cddDesc"))
{
}
else if(strlen(description->name) > 70)
{
hPrintf("<B>Description:</B> %.70s...<BR>\n", description->name);
}
else
{
hPrintf("<B>Description:</B> %s<BR>\n", description->name);
}
hPrintf("<B>E-value:</B> %0.0e<BR>\n", infoload->evalue);
hPrintf("<B>Percent Positive:</B> %u%%<BR>\n", infoload->percentident);
hPrintf("<B>Percent Length:</B> %u%%<BR>\n", infoload->percentlength);
}
sqlFreeResult(&sr);
hFreeConn(&conn);
}
void megablastInfoTip()
{
- char *track = cartOptionalString(cart, "g");
+ char *track = cartOptionalString(cart,"g");
char *seqName = cartOptionalString(cart, "c");
char *itemName = cartOptionalString(cart, "i");
- int start = cartInt(cart, "o");
- int end = cartInt(cart, "t");
+ int start = cartInt(cart,"o");
+ int end = cartInt(cart,"t");
struct sqlResult *sr;
char **row;
char query[256];
int rowOffset;
struct sqlConnection *conn = hAllocConn(database);
- sprintf(query, "select * from %s where name = '%s' and chrom = '%s' and chromStart = %d and chromEnd = '%d';", track, itemName,seqName,start, end);
-
+ sprintf(query, "select * from %s where name = '%s' and chrom = '%s' and chromStart = %d and chromEnd = %d;", track, itemName,seqName,start, end);
+ //printf("%s",query);
sr = sqlGetResult(conn, query);
struct megablastInfo *infoload = NULL;
rowOffset = hOffsetPastBin(database, seqName, track);
if ((row = sqlNextRow(sr)) != NULL)
{
infoload = megablastInfoLoad(row+rowOffset);
hPrintf("<B>Name:</B> %s<BR>\n", infoload->name);
if(strlen(infoload->fullname) > 70)
{
hPrintf("<B>Product:</B> %.70s...<BR>",infoload->fullname);
}
else
{
hPrintf("<B>Product:</B> %s<BR>",infoload->fullname);
}
hPrintf("<B>E-value:</B> %0.0e<BR>\n", infoload->evalue);
hPrintf("<B>Identity:</B> %u%%<BR>\n", infoload->percentident);
}
sqlFreeResult(&sr);
hFreeConn(&conn);
}
void gcPercentTip()
{
/*
//char *track = cartOptionalString(cart, "g");
hPrintf("<B>Name:</B> %s",cartOptionalString(cart, "i"));
//char *itemName = cartOptionalString(cart, "i");
//char *group = cartOptionalString(cart, "g");
bits64 iCount = 0;
struct bbiInterval *bb;
struct lm *lm = lmInit(0);
double sum = 0.0;
//struct bbiInterval *bigWigIntervalQuery
// /data/gbdb/pyrAer1/bed/gc20Base/gc20Base.wig
struct bbiFile *bbi = bigWigFileOpen("/data/gbdb/pyrAer1/bed/gc20Base/gc20Base.wib");
struct bbiInterval *bbList = bigWigIntervalQuery(bbi, chrom, winStart, winEnd, lm);
for (bb = bbList; bb != NULL; bb = bb->next)
{
iCount += 1;
double val = bb->val;
sum += val;
}
hPrintf("<B>GC Percentage:</B> %f<BR>\n", sum/iCount);*/
char *seqName = cartString(cart, "c");
char *table = cartString(cart, "g");
struct hash *trackHash = makeTrackHashWithComposites(database, seqName, TRUE);
struct trackDb *tdb = hashFindVal(trackHash, table);
struct sqlConnection *conn = hAllocConn(database);
char *chrom = cartOptionalString(cart, "c");
int winStart = cartInt(cart, "o");
int winEnd = cartInt(cart, "t");
struct wiggleDataStream *wds = wiggleDataStreamNew();
unsigned span = 0;
boolean hasBin;
hFindSplitTable(database, seqName, tdb->tableName, table, &hasBin);
span = minSpan(conn, table, chrom, winStart, winEnd, cart, tdb);
wds->setSpanConstraint(wds, span);
wds->setChromConstraint(wds, chrom);
wds->setPositionConstraint(wds, winStart, winEnd);
wds->getData(wds, database, table, 8);
//hPrintf("<B>Mean:</B>%s <BR>\n",tdb->tableName);
hPrintf("<B>Window Mean:</B> %f<BR>\n", wds->stats->mean);
}
void alignInfoTip()
{
char *track = cartOptionalString(cart, "g");
char *seqName = cartOptionalString(cart, "c");
char *itemName = cartOptionalString(cart, "i");
int start = cartInt(cart, "o");
- int end = cartInt(cart, "t");
+ int end = cartInt(cart,"t");
struct sqlResult *sr;
char query[256];
int rowOffset;
- sprintf(query, "select * from %s where name = '%s' and chrom = '%s' and chromStart = %d and chromEnd = '%d';", track, itemName,seqName,start, end);
+ sprintf(query, "select * from %s where name = '%s' and chrom = '%s' and chromStart = %d and chromEnd = %d;", track, itemName,seqName,start, end);
struct sqlConnection *conn = hAllocConn(database);
sr = sqlGetResult(conn, query);
rowOffset = hOffsetPastBin(database, seqName, track);
struct alignInfo *infoload = NULL;
char **row;
while ((row = sqlNextRow(sr)) != NULL)
{
struct alignInfo *element;
element = alignInfoLoad(row+rowOffset);
slAddTail(&infoload, element);
}
sqlFreeResult(&sr);
if (infoload != NULL)
{
char genome[50] = "";
char clade[50] = "";
memset(genome, 0, 50);
memset(clade, 0, 50);
hPrintf("<B>Name:</B> %s<BR>\n", infoload->name);
struct minGeneInfo *ginfo;
ginfo = getGbProtCodeInfo(conn, infoload->orgn,infoload->name);
hPrintf("<B>Product:</B> %s<BR>\n", ginfo->product);
getGenomeClade(conn, infoload->orgn, genome, clade);
hPrintf("<B>Genome:</B> %s<BR>\n", genome);
infoload = infoload->next;
}
hFreeConn(&conn);
}
void blastpTip()
{
char query[512];
char *genename = cartOptionalString(cart, "i");
char *blastpTarget[2];
parseDelimitedString(genename, ':', blastpTarget, 2);
//hPrintf("<B>Query:</B> %s<BR>\n", genename);
struct sqlConnection *conn = hAllocConn(database);
struct sqlResult *srRefSeq;
char refSeq[] = "refSeq";
sprintf(query, "select name, cdsStart, cdsEnd, strand from %s where chrom = '%s' and cdsStart <= %i and cdsEnd >= %i",
- refSeq, cartOptionalString(cart, "c"), cartInt(cart, "o"), cartInt(cart, "t"));
+ refSeq, cartOptionalString(cart, "c"), cartInt(cart,"o"), cartInt(cart, "t"));
srRefSeq = sqlGetResult(conn, query);
//char queryName[50];
char **buffer = NULL;
char **row;
unsigned int querySeqLength = 0;
unsigned int queryStart = 0;
unsigned int queryEnd = 0;
int postrand = 1;
if ((row = sqlNextRow(srRefSeq)) != NULL)
{
strcpy(genename, row[0]);
queryStart = strtoul(row[1], buffer, 10);
queryEnd = strtoul(row[2], buffer, 10);
querySeqLength = queryEnd - queryStart;
if (row[3][0] != '+')
postrand = 0;
}
hPrintf("<B>Query:</B> %s<BR>\n", genename);
hPrintf("<B>Target:</B> %s<BR>\n", blastpTarget[0]);
sqlFreeResult(&srRefSeq);
struct sqlResult *srBlastpHits = NULL;
char blastpHitsTable[] = "blastpHits";
int start;
int end;
if(postrand)
{
start = cartInt(cart, "o") - queryStart;
- end = cartInt(cart, "t") - queryStart;
+ end = cartInt(cart,"t") - queryStart;
}
else
{
start = queryEnd - cartInt(cart, "t");
end = queryEnd - cartInt(cart, "o");
}
/* Get species info */
//sprintf(query, "select * from %s where query = '%s' and target like '%%:%s'", blastpHitsTable, queryName,gene);
sprintf(query, "select * from %s where query = '%s' and qStart*3 = %d and qEnd*3 = %d and target like '%%:%s'", blastpHitsTable, genename,start, end,blastpTarget[0]);
//sprintf(query, "select * from %s where query = '%s'", blastpHitsTable, queryName);
srBlastpHits = sqlGetResult(conn, query);
struct blastTab *blastpHits = NULL;
if ((row = sqlNextRow(srBlastpHits)) != NULL)
{
struct blastTab *element;
element = blastTabLoad(row);
slAddTail(&blastpHits, element);
}
sqlFreeResult(&srBlastpHits);
if (blastpHits != NULL)
{
char *blastpTarget[2];
parseDelimitedString(blastpHits->target, ':', blastpTarget, 2);
/*
hPrintf("<B>Start:</B> %d<br>", start);
hPrintf("<B>End:</B> %d<br>", end);
hPrintf("<B>qStart:</B> %u<br>", blastpHits->qStart*3);
hPrintf("<B>qEnd:</B> %u<br>", blastpHits->qEnd*3);*/
struct minGeneInfo *ginfo;
ginfo = getGbProtCodeInfo(conn, blastpTarget[0], blastpTarget[1]);
if(strlen(ginfo->product) > 70)
{
hPrintf("<B>Product:</B> %.70s...<BR>",ginfo->product);
}
else
{
hPrintf("<B>Product:</B> %s<BR>",ginfo->product);
}
//hPrintf("<B>Product:</B> %s<BR>\n", ginfo->product);
/*char productquery[512];
struct sqlResult *srProduct;
char **product;
sprintf(productquery, "select product from %s.gbProtCodeXra where name = '%s'",blastpTarget[0], blastpTarget[1]);
srProduct = sqlGetResult(conn, productquery);
if ((product = sqlNextRow(srProduct)) != NULL)
hPrintf("<B>Product:</B> %s<BR>\n", product[0]);
sqlFreeResult(&srProduct);*/
char genome[50] = "";
char clade[50] = "";
memset(genome, 0, 50);
memset(clade, 0, 50);
getGenomeClade(conn, blastpTarget[0], genome, clade);
hPrintf("<B>Organism:</B> %s<br>",genome );
hPrintf("<B>E-value:</B> e%0.0f<br>", (blastpHits->eValue == 0)? 0 : log(blastpHits->eValue) / log(10));
hPrintf("<B>Protein identity:</B> %0.1f<BR>\n", blastpHits->identity);
hPrintf("<B>Percent length:</B> %0.f<BR>\n", ((double) (blastpHits->qEnd - blastpHits->qStart) / ((double) (querySeqLength-3) / 3.0f)) * 100.0f);
free(blastpTarget[0]);
free(blastpTarget[1]);
blastpHits = blastpHits->next;
}
sqlFreeResult(&srBlastpHits);
hFreeConn(&conn);
}
void blastxTip()
{
char query[512];
char *genename = cartOptionalString(cart, "i");
char *blastxTarget[2];
parseDelimitedString(genename, ':', blastxTarget, 2);
struct sqlConnection *conn = hAllocConn(database);
//hPrintf("<B>Query:</B> %s<BR>\n", genome);
char *lookuptable;
if(hTableExists(database,"igenics"))
{
lookuptable = "igenics";
}
else if(hTableExists(database,"scaffolds"))
{
lookuptable = "scaffolds";
}
else
{
hFreeConn(&conn);
return;
}
sprintf(query, "select name, chromStart, chromEnd, strand from %s where chrom = '%s' and chromStart <= %i and chromEnd >= %i",
lookuptable, cartOptionalString(cart, "c"), cartInt(cart, "o"), cartInt(cart, "t"));
struct sqlResult *srRefSeq;
srRefSeq = sqlGetResult(conn, query);
//char queryName[50];
char **buffer = NULL;
char **row;
unsigned int querySeqLength = 0;
unsigned int queryStart = 0;
unsigned int queryEnd = 0;
int postrand = 1;
if ((row = sqlNextRow(srRefSeq)) != NULL)
{
strcpy(genename, row[0]);
queryStart = strtoul(row[1], buffer, 10);
queryEnd = strtoul(row[2], buffer, 10);
querySeqLength = queryEnd - queryStart;
//hPrintf("<B>Query:</B> %s<BR>\n", genename);
if (row[3][0] != '+')
postrand = 0;
}
hPrintf("<B>Target:</B> %s<BR>\n", blastxTarget[0]);
sqlFreeResult(&srRefSeq);
char blastxHitsTable[] = "blastxHits";
int start;
int end;
int revstart;
int revend;
if(postrand)
{
start = cartInt(cart, "o") - queryStart;
end = cartInt(cart, "t") - queryStart;
revstart = cartInt(cart, "t") - queryStart-1;
revend = cartInt(cart, "o") - queryStart+1;
}
else
{
start = queryEnd - cartInt(cart, "t");
end = queryEnd - cartInt(cart, "o");
revstart = queryEnd - cartInt(cart, "o")-1;
revend = queryEnd - cartInt(cart, "t")+1;
}
sprintf(query, "select * from %s where query = '%s' and ((qStart = %d and qEnd = %d) or (qStart = %d and qEnd = %d)) and target like '%%:%s'", blastxHitsTable, genename,start,end,revstart, revend,blastxTarget[0]);
//sprintf(query, "select * from %s where query = '%s'", blastxHitsTable,genename);
struct sqlResult *srBlastxHits;
srBlastxHits = sqlGetResult(conn, query);
struct blastTab *blastxHits = NULL;
if ((row = sqlNextRow(srBlastxHits)) != NULL)
{
//hPrintf("**");
struct blastTab *element;
element = blastTabLoad(row);
slAddTail(&blastxHits, element);
}
sqlFreeResult(&srBlastxHits);
unsigned int targetProteinStart = 0;
unsigned int targetProteinEnd = 0;
unsigned int hitStart = 0;
unsigned int hitEnd = 0;
if (blastxHits != NULL)
{
char *blastxTarget[2];
parseDelimitedString(blastxHits->target, ':', blastxTarget, 2);
struct minGeneInfo *ginfo;
ginfo = getGbProtCodeInfo(conn, blastxTarget[0], blastxTarget[1]);
if(strlen(ginfo->product) > 70)
{
hPrintf("<B>Product:</B> %.70s...<BR>",ginfo->product);
}
else
{
hPrintf("<B>Product:</B> %s<BR>",ginfo->product);
}
// hPrintf("<B>Product:</B> %s<BR>\n", ginfo->product);
char genome[50] = "";
char clade[50] = "";
memset(genome, 0, 50);
memset(clade, 0, 50);
getGenomeClade(conn, blastxTarget[0], genome, clade);
struct sqlResult *sr;
if (hDbExists(blastxTarget[0]) && hTableExists(blastxTarget[0], "refSeq"))
{
sprintf(query, "select chrom, cdsStart, cdsEnd from %s.%s where name = '%s'",
blastxTarget[0],"refSeq", blastxTarget[1]);
sr = sqlGetResult(conn, query);
if ((row = sqlNextRow(sr)) != NULL)
{
targetProteinStart = strtoul(row[1], buffer, 10);
targetProteinEnd = strtoul(row[2], buffer, 10);
hitStart = targetProteinStart + blastxHits->tStart * 3 + 1;
hitEnd = targetProteinStart + blastxHits->tEnd * 3;
}
else
printf("<td>%s</td>\n", blastxTarget[1]);
sqlFreeResult(&sr);
}
hPrintf("<B>Organism:</B> %s<br>",genome );
hPrintf("<B>E-value:</B> e%0.0f<br>", (blastxHits->eValue == 0)? 0 : log(blastxHits->eValue) / log(10));
hPrintf("<B>Protein identity:</B> %0.1f<BR>\n", blastxHits->identity);
//hPrintf("<B>Percent length:</B> %0.f<BR>\n", ((double) (blastxHits->qEnd - blastxHits->qStart) / ((double) (querySeqLength-3) / 3.0f)) * 100.0f);
hPrintf("<B>Percent length:</B> %0.f<BR>\n", ((double) (blastxHits->tEnd - blastxHits->tStart) / ((double) (targetProteinEnd - targetProteinStart -3) / 3.0f)) * 100.0f);
free(blastxTarget[0]);
free(blastxTarget[1]);
blastxHits = blastxHits->next;
}
hFreeConn(&conn);
}
void lowelabPfamHitsTip()
{
char *track = cartOptionalString(cart, "g");
char *seqName = cartOptionalString(cart, "c");
char *itemName = cartOptionalString(cart, "i");
int start = cartInt(cart, "o");
- int end = cartInt(cart, "t");
+ int end = cartInt(cart,"t");
struct sqlResult *sr;
char **row;
char query[256];
int rowOffset;
struct lowelabPfamHits *infoload;
struct sqlConnection *conn = hAllocConn(database);
- sprintf(query, "select * from %s where name = '%s' and chrom = '%s' and chromStart = %d and chromEnd = '%d';", track, itemName,seqName,start, end);
+ 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);
rowOffset = hOffsetPastBin(database, seqName, track);
if ((row = sqlNextRow(sr)) != NULL)
{
infoload = lowelabPfamHitsLoad(row+rowOffset);
hPrintf("<B>Name:</B> %s<BR>\n", infoload->name);
hPrintf("<B>Identity:</B> %d%%<BR>\n", infoload->ident);
hPrintf("<B>Percent length:</B> %d%%<BR>\n", infoload->percLen);
}
sqlFreeResult(&sr);
hFreeConn(&conn);
}
void TrnasTip()
{
struct sqlConnection *conn = hAllocConn(database);
- char *track = cartOptionalString(cart, "g");
+ char *track = cartOptionalString(cart,"g");
char *seqName = cartOptionalString(cart, "c");
char *itemName = cartOptionalString(cart, "i");
int start = cartInt(cart, "o");
int end = cartInt(cart, "t");
struct sqlResult *sr;
char **row;
char query[256];
int rowOffset;
struct tRNAs *infoload;
- sprintf(query, "select * from %s where name = '%s' and chrom = '%s' and chromStart = %d and chromEnd = '%d';", track, itemName,seqName,start, end);
+ 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);
rowOffset = hOffsetPastBin(database, seqName, track);
if ((row = sqlNextRow(sr)) != NULL)
{
infoload = tRNAsLoad(row+rowOffset);
hPrintf("<B>Name:</B> %s<BR>\n", infoload->name);
hPrintf("<B>Amino Acid:</B> %s<BR>\n", infoload->aa);
hPrintf("<B>Anticodon:</B> %s<BR>\n", infoload->ac);
hPrintf("<B>Score:</B> %f<BR>\n", infoload->trnaScore);
}
sqlFreeResult(&sr);
hFreeConn(&conn);
}
void MultizTip()
{
hPrintf("<B>Name:</B> %s","MultiZ Alignment Track");
}
void SnornaTip()
{
char *track = cartOptionalString(cart, "g");
char *seqName = cartOptionalString(cart, "c");
char *itemName = cartOptionalString(cart, "i");
int start = cartInt(cart, "o");
int end = cartInt(cart, "t");
struct sqlResult *sr;
char **row;
char query[256];
int rowOffset;
struct snoRNAs *infoload;
struct sqlConnection *conn = hAllocConn(database);
- sprintf(query, "select * from %s where name = '%s' and chrom = '%s' and chromStart = %d and chromEnd = '%d';", track, itemName,seqName,start, end);
+ 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);
rowOffset = hOffsetPastBin(database, seqName, track);
if ((row = sqlNextRow(sr)) != NULL)
{
infoload = snoRNAsLoad(row+rowOffset);
hPrintf("<B>Name:</B> %s<BR>\n", infoload->name);
hPrintf("<B>snoScore:</B> %f<BR>\n", infoload->snoScore);
hPrintf("<B>hmmScore:</B> %f<BR>\n", infoload->hmmScore);
hPrintf("<B>C box:</B> %s<BR>\n", infoload->cBox);
hPrintf("<B>D box:</B> %s<BR>\n", infoload->dBox);
hPrintf("<B>C-Prime box:</B> %s<BR>\n", infoload->cpBox);
hPrintf("<B>D-Prime box:</B> %s<BR>\n", infoload->dpBox);
}
sqlFreeResult(&sr);
hFreeConn(&conn);
}
void tigrCmrTip()
{
struct sqlConnection *conn = hAllocConn(database);
char *track = cartOptionalString(cart, "g");
char *seqName = cartOptionalString(cart, "c");
char *itemName = cartOptionalString(cart, "i");
int start = cartInt(cart, "o");
- int end = cartInt(cart, "t");
+ int end = cartInt(cart,"t");
char query[256];
- sprintf(query, "select * from %s where name = '%s' and chrom = '%s' and chromStart = %d and chromEnd = '%d';", track, itemName,seqName,start, end);
+ sprintf(query, "select * from %s where name = '%s' and chrom = '%s' and chromStart = %d and chromEnd = %d;", track, itemName,seqName,start, end);
int rowOffset;
struct sqlResult *sr;
char **row;
struct tigrCmrGene *infoload;
sr = sqlGetResult(conn, query);
rowOffset = hOffsetPastBin(database, seqName, track);
if ((row = sqlNextRow(sr)) != NULL)
{
infoload = tigrCmrGeneLoad(row+0);
hPrintf("<B>Name:</B> %s<BR>\n", infoload->name);
hPrintf("<B>Common Name:</B> %s<BR>\n", infoload->tigrCommon);
if(infoload->tigrMainRole[0] != '\0')
{
hPrintf("<B>Main Role:</B> %s<BR>\n", infoload->tigrMainRole);
if(infoload->tigrSubRole[0] != '\0')
{
hPrintf("<B>Sub Role:</B> %s<BR>\n", infoload->tigrSubRole);
}
}
}
sqlFreeResult(&sr);
hFreeConn(&conn);
}
/*void allpredictionsTip()
{
struct sqlConnection *conn = hAllocConn(database);
char *track = cartOptionalString(cart, "g");
char *seqName = cartOptionalString(cart, "c");
char *itemName = cartOptionalString(cart, "i");
int start = cartInt(cart, "o");
int end = cartInt(cart, "t");
char query[256];
- sprintf(query, "select * from %s where name = '%s' and chrom = '%s' and chromStart = %d and chromEnd = '%d';", track, itemName,seqName,start, end);
+ sprintf(query, "select * from %s where name = '%s' and chrom = '%s' and chromStart = %d and chromEnd = %d;", track, itemName,seqName,start, end);
int rowOffset;
struct sqlResult *sr;
char **row;
struct allpredictions *infoload;
sr = sqlGetResult(conn, query);
rowOffset = hOffsetPastBin(database, seqName, track);
if ((row = sqlNextRow(sr)) != NULL)
{
infoload = allpredictionsLoad(row+1);
hPrintf("<B>Name:</B> %s<BR>\n", infoload->name);
hPrintf("<B>Sources:</B> %s<BR>\n", infoload->source);
}
sqlFreeResult(&sr);
hFreeConn(&conn);
}*/
void anyGeneQuery()
{
hPrintf("<B>Name:</B> %s",cartOptionalString(cart, "i"));
}
void customGeneQuery()
{
char* name = cartOptionalString(cart, "i");
char *parts[2];
parseDelimitedString(name, ' ', parts, 2);
hPrintf("<B>Name:</B> %s",parts[1]);
free(parts[0]);
free(parts[1]);
}
-
+//This is a debugging function that runs a incorrect SQL query
+//Use this for testing error handling
+void badgenequery()
+{
+ char query[256];
+ struct sqlConnection *conn = hAllocConn(database);
+ sprintf(query, "select * from mgComsmonDb.cddDesc where accession = 'foo'");
+ sqlGetResult(conn, query);
+}
void ToolTipQuery()
{
char *track = cartOptionalString(cart, "g");
//char *dataset = cgiString("g");
//printf("**%s**\n", track);
+ //badgenequery();
if (sameString(track, "refSeq"))
toolTipGeneQuery();
- if (startsWith("ct_UserTrack", track)) // ct_UserTrack_3545
+ else if (startsWith("ct_UserTrack", track)) // ct_UserTrack_3545
customGeneQuery();
else if (sameString(track, "cddInfo"))
cddInfoTip();
else if (sameString(track, "gc20Base"))
gcPercentTip();
else if (startsWith("BlastP_", track))
blastpTip();
else if (startsWith("BlastX_", track))
blastxTip();
else if (sameString("lowelabPfamHits", track))
lowelabPfamHitsTip();
else if (sameString("tRNAs", track))
TrnasTip();
else if (startsWith("multiz", track))
MultizTip();
else if (sameString("snoRNAs", track))
SnornaTip();
else if (sameString("tigrCmrORFs", track))
tigrCmrTip();
else if (sameString("alignInfo", track))
alignInfoTip();
else if (sameString("arCOGs", track))
arCOGTip();
else if (sameString("megablastInfo", track) || sameWord(track,"vecScreenInfo"))
megablastInfoTip();
else
anyGeneQuery();
}
void cartDoMiddle(struct cart *theCart)
/* Save cart*/
{
cart = theCart;
getDbAndGenome(cart, &database, &organism, oldVars);
ToolTipQuery();
}
char *excludeVars[] = {"hgSeq.revComp", "bool.hcg.dna.rc", "Submit", "submit", "g", "i", "aliTrack", "addp", "pred", NULL};
int main(int argc, char *argv[])
{
cgiSpoof(&argc,argv);
//dispatchRoutines();
- cartEmptyShell(cartDoMiddle, hUserCookie(), excludeVars, NULL);
+ //cartEmptyShell(cartDoMiddle, hUserCookie(), excludeVars, NULL);
+
+ cart = cartAndCookie(hUserCookie(), excludeVars, NULL);
+ cartDoMiddle(cart);
+
//printf("Hello, world!\n");
return 0;
}