45c5e17075e31abf2735b09ca201d29ce6e0e1f4 kate Thu Jun 29 18:17:22 2017 -0700 Add trackUi (body map and right-click versions) and implement filters in hgTracks. refs #15646 diff --git src/hg/hgGtexTrackSettings/hgGtexTrackSettings.c src/hg/hgGtexTrackSettings/hgGtexTrackSettings.c index 7b24767..22cc2e8 100644 --- src/hg/hgGtexTrackSettings/hgGtexTrackSettings.c +++ src/hg/hgGtexTrackSettings/hgGtexTrackSettings.c @@ -87,48 +87,62 @@ } static void printScoreFilter(struct cart *cart, char *track, struct trackDb *tdb) /* Filter on overall gene expression score */ { char buf[512]; puts("Limit to genes scored at or above:\n"); safef(buf, sizeof(buf), "%s.%s", tdb->track, SCORE_FILTER); int score = cartUsualInt(cart, buf, 0); int minScore = 0, maxScore = 1000; cgiMakeIntVarWithLimits(buf, score, "Minimum score", 0, minScore, maxScore); printf( " (range %d-%d)\n", minScore, maxScore); } -static void printConfigPanel(struct trackDb *tdb) -/* Controls for track configuration (except for tissues) */ +static void printGtexEqtlConfigPanel(struct trackDb *tdb, char *track) +/* GTEx eQTL track specific controls */ { -char *track = tdb->track; puts( -" \n" -"
\n" -"
Configuration
\n" -"
\n"); - -/* Track vis dropdown */ -printVisSelect(tdb); -printGoButton(); +" \n" +"
\n" +"
\n"); +gtexEqtlGene(cart, track, tdb); +puts( +"
\n" +"
\n"); +puts( +" \n" +"
\n" +"
\n"); +gtexEqtlEffectSize(cart, track, tdb); +puts( +"
\n" +"
\n"); +puts( +" \n" +"
\n" +"
\n"); +gtexEqtlProbability(cart, track, tdb); puts( "
\n" "
\n"); +} -/* GTEx-specific track controls, layout in 3 rows */ +static void printGtexGeneConfigPanel(struct trackDb *tdb, char *track) +/* GTEx Gene track specific controls, layout in 3 rows */ +{ puts( " \n" "
\n" "
\n"); gtexGeneUiGeneLabel(cart, track, tdb); puts( "
\n" "
\n"); gtexGeneUiGeneModel(cart, track, tdb); puts( "
\n" "
\n"); puts( " \n" "
\n" @@ -146,30 +160,57 @@ " \n" "
\n"); puts( "
\n"); gtexGeneUiCodingFilter(cart, track, tdb); puts( "
\n"); /* Filter on score */ puts( "
\n"); printScoreFilter(cart, track, tdb); puts( "
\n" "
\n"); +} + +static void printConfigPanel(struct trackDb *tdb) +/* Controls for track configuration (except for tissues) */ +{ +puts( +" \n" +"
\n" +"
Configuration
\n" +"
\n"); + +/* Track vis dropdown */ +printVisSelect(tdb); +printGoButton(); +puts( +"
\n" +"
\n"); + +/* Track-specific config */ +char *track = tdb->track; +if (gtexIsGeneTrack(track)) + printGtexGeneConfigPanel(tdb, track); +else if (gtexIsEqtlTrack(track)) + printGtexEqtlConfigPanel(tdb, track); +else + errAbort("Unknown GTEx track: %s\n", track); + puts( " \n"); } static void printTissueTable(struct trackDb *tdb) /* Output HTML with tissue labels and colors, in 2 columns, to fit next to body map */ { char *version = gtexVersion(tdb->track); struct gtexTissue *tis, *tissues = gtexGetTissues(version); char var[512]; safef(var, sizeof var, "%s.%s", tdb->track, GTEX_TISSUE_SELECT); struct hash *selectedHash = cartHashList(cart, var); struct gtexTissue **tisTable = NULL; int count = slCount(tissues); AllocArray(tisTable, count); @@ -327,31 +368,32 @@ "
\n"); puts(tdb->html); puts( "
\n" "
\n"); } static struct trackDb *getTrackDb(char *db, char *track) /* Check if this is an assembly with GTEx track and get trackDb */ { struct sqlConnection *conn = sqlConnect(db); if (conn == NULL) errAbort("Can't connect to database %s\n", db); char where[256]; safef(where, sizeof(where), "tableName='%s'", track); -// TODO: use hdb, hTrackDbList to get table names of trackDb, +// WARNING: this will break in sandboxes unless trackDb entry is pushed to hgwdev. +// The fix of using hTrackDbList() would slow for all users, so leaving as is. struct trackDb *tdb = trackDbLoadWhere(conn, "trackDb", where); trackDbAddTableField(tdb); sqlDisconnect(&conn); return tdb; } static void doMiddle(struct cart *theCart) /* Send HTML with javascript to display the user interface. */ { cart = theCart; char *db = NULL, *genome = NULL, *clade = NULL; getDbGenomeClade(cart, &db, &genome, &clade, oldVars); // Start web page with new-style header webStartGbNoBanner(cart, db, "Genome Browser GTEx Track Settings");