4a8e25e1d1dbe331ab0eb499cd48b18ae2d22522
kate
Sat Feb 1 15:29:36 2014 -0800
Merge branch
diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c
index 7a54f13..a986afc 100644
--- src/hg/hgc/hgc.c
+++ src/hg/hgc/hgc.c
@@ -3724,56 +3724,69 @@
}
getBedTopScorers(conn, tdb, table, item, start, bedSize);
sqlFreeResult(&sr);
hFreeConn(&conn);
/* printTrackHtml is done in genericClickHandlerPlus. */
}
void doBed6FloatScore(struct trackDb *tdb, char *item)
/* Handle click in BED 4+ track that's like BED 6 but with floating pt score */
{
struct sqlConnection *conn = hAllocConn(database);
struct sqlResult *sr = NULL;
char table[64];
boolean hasBin;
-struct bed6FloatScore *b6;
+struct bed6FloatScore *b6 = NULL;
struct dyString *query = newDyString(512);
char **row;
boolean firstTime = TRUE;
int start = cartInt(cart, "o");
genericHeader(tdb, item);
hFindSplitTable(database, seqName, tdb->table, table, &hasBin);
sqlDyStringPrintf(query, "select * from %s where chrom = '%s' and ",
table, seqName);
hAddBinToQuery(winStart, winEnd, query);
sqlDyStringPrintf(query, "name = '%s' and chromStart = %d", item, start);
sr = sqlGetResult(conn, query->string);
while ((row = sqlNextRow(sr)) != NULL)
{
if (firstTime)
firstTime = FALSE;
else
htmlHorizontalLine();
b6 = bed6FloatScoreLoad(row+hasBin);
bedPrintPos((struct bed *)b6, 4, tdb);
printf("Score: %f
\n", b6->score);
printf("Strand: %s
\n", b6->strand);
}
sqlFreeResult(&sr);
+
+// Support for motif display if configured in trackDb
+// TODO - share code with factorSource
+char *motifPwmTable = trackDbSetting(tdb, "motifPwmTable");
+struct dnaMotif *motif = NULL;
+if (motifPwmTable != NULL && sqlTableExists(conn, motifPwmTable))
+ {
+ motif = loadDnaMotif(b6->name, motifPwmTable);
+ if (motif == NULL)
+ return;
+ struct dnaSeq *seq = hDnaFromSeq(database, b6->chrom, b6->chromStart, b6->chromEnd, dnaLower);
+ motifLogoAndMatrix(&seq, 1, motif);
+ }
hFreeConn(&conn);
/* printTrackHtml is done in genericClickHandlerPlus. */
}
void doColoredExon(struct trackDb *tdb, char *item)
/* Print information for coloredExon type tracks. */
{
struct sqlConnection *conn = hAllocConn(database);
struct sqlResult *sr;
char query[256];
char **row;
genericHeader(tdb, item);
sqlSafef(query, sizeof(query), "select chrom,chromStart,chromEnd,name,score,strand from %s where name='%s'", tdb->table, item);
sr = sqlGetResult(conn, query);
if ((row = sqlNextRow(sr)) != NULL)