dbc4115de3de50c775b9f225e29869ba1a501f96 kate Tue Jan 5 12:04:05 2016 -0800 1. Load GTEx V6 data. Mods to tools and code to support multiple versions. 2. Use GTEx gene models rather than UCSC canonical diff --git src/hg/hgTracks/gtexTracks.c src/hg/hgTracks/gtexTracks.c index 6e635f8..304b135 100644 --- src/hg/hgTracks/gtexTracks.c +++ src/hg/hgTracks/gtexTracks.c @@ -5,30 +5,31 @@ #include "common.h" #include "hgTracks.h" #include "hvGfx.h" #include "rainbow.h" #include "gtexInfo.h" #include "gtexGeneBed.h" #include "gtexTissue.h" #include "gtexTissueData.h" #include "gtexUi.h" #include "spaceSaver.h" struct gtexGeneExtras /* Track info */ { + char *version; /* Trailing track name, e.g. 'V6' */ double maxMedian; /* Maximum median rpkm for all tissues */ boolean isComparison; /* Comparison of two sample sets (e.g. male/female). */ boolean isDifference; /* True if comparison is shown as a single difference graph. False if displayed as two graphs, one oriented downward */ char *graphType; /* Additional info about graph (e.g. type of comparison graph */ struct rgbColor *colors; /* Color palette for tissues */ boolean doLogTransform; /* Log10(x+1) */ struct gtexTissue *tissues; /* Cache tissue names, descriptions */ struct hash *tissueFilter; /* For filter. NULL out excluded tissues */ }; struct gtexGeneInfo /* GTEx gene model, names, and expression medians */ { struct gtexGeneInfo *next; /* Next in singly linked list */ @@ -274,46 +275,53 @@ static boolean filterTissue(struct track *tg, char *name) /* Does tissue pass filter */ { struct gtexGeneExtras *extras = (struct gtexGeneExtras *)tg->extraUiData; return (hashLookup(extras->tissueFilter, name) != NULL); } static void gtexGeneLoadItems(struct track *tg) /* Load method for track items */ { /* Get track UI info */ struct gtexGeneExtras *extras; AllocVar(extras); tg->extraUiData = extras; + +/* Get version info from track table name */ +// TODO: get valid versions from gtexInfo table +if (endsWith(tg->table, "V6")) + extras->version = "V6"; extras->doLogTransform = cartUsualBooleanClosestToHome(cart, tg->tdb, FALSE, GTEX_LOG_TRANSFORM, GTEX_LOG_TRANSFORM_DEFAULT); char *samples = cartUsualStringClosestToHome(cart, tg->tdb, FALSE, GTEX_SAMPLES, GTEX_SAMPLES_DEFAULT); extras->graphType = cloneString(samples); if (sameString(samples, GTEX_SAMPLES_COMPARE_SEX)) extras->isComparison = TRUE; char *comparison = cartUsualStringClosestToHome(cart, tg->tdb, FALSE, GTEX_COMPARISON_DISPLAY, GTEX_COMPARISON_DEFAULT); extras->isDifference = sameString(comparison, GTEX_COMPARISON_DIFF) ? TRUE : FALSE; -extras->maxMedian = gtexMaxMedianScore(NULL); +extras->maxMedian = gtexMaxMedianScore(extras->version); /* Get geneModels in range */ //TODO: version the table name, move to lib +char buf[256]; char *modelTable = "gtexGeneModel"; -struct hash *modelHash = loadGeneModels(modelTable); +safef(buf, sizeof(buf), "%s%s", modelTable, extras->version ? extras->version: ""); +struct hash *modelHash = loadGeneModels(buf); /* Get geneBeds (names and all-sample tissue median scores) in range */ bedLoadItem(tg, tg->table, (ItemLoader)gtexGeneBedLoad); /* Create geneInfo items with BED and geneModels */ struct gtexGeneInfo *geneInfo = NULL, *list = NULL; struct gtexGeneBed *geneBed = (struct gtexGeneBed *)tg->items; /* Load tissue colors: GTEx or rainbow */ char *colorScheme = cartUsualStringClosestToHome(cart, tg->tdb, FALSE, GTEX_COLORS, GTEX_COLORS_DEFAULT); if (sameString(colorScheme, GTEX_COLORS_GTEX)) { extras->colors = getGtexTissueColors(); }