8b9f0b9e37863308854f741113667d6e14aae3bd fanhsu Thu Feb 10 16:00:05 2011 -0800 Added method for omimAvSnp. diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c index 8a66b15..4effd0f 100644 --- src/hg/hgTracks/simpleTracks.c +++ src/hg/hgTracks/simpleTracks.c @@ -11001,30 +11001,115 @@ if (dir != 0 && w > 2) { int midY = y + (heightPer>>1); Color textColor = hvGfxContrastingColor(hvg, color); clippedBarbs(hvg, x1, midY, w, tl.barbHeight, tl.barbSpacing, dir, textColor, TRUE); } } } void omimGeneClass3Methods (struct track *tg) { tg->drawItemAt = omimGeneClass3DrawAt; } +#define OMIM_MAX_DESC_LEN 256 +char omimAvSnpBuffer[OMIM_MAX_DESC_LEN]; + +char *omimAvSnpAaReplacement(struct track *tg, struct bed *item) +/* Return replacement string associated with a OMIM AV entry */ +{ +struct sqlConnection *conn; +char query[256]; +struct sqlResult *sr; +char **row; +char *chp; + +omimAvSnpBuffer[0] = '\0'; + +conn = hAllocConn(database); +safef(query,sizeof(query), + "select replStr, dbSnpId from omimAvRepl where avId='%s'", item->name); +sr = sqlMustGetResult(conn, query); +row = sqlNextRow(sr); + +chp = omimAvSnpBuffer; +if (row != NULL) + { + safef(omimAvSnpBuffer, sizeof(omimAvSnpBuffer), "%s, %s", row[0], row[1]); + } + +hFreeConn(&conn); +sqlFreeResult(&sr); +return(omimAvSnpBuffer); +} + +static void omimAvSnpDrawAt(struct track *tg, void *item, + struct hvGfx *hvg, int xOff, int y, + double scale, MgFont *font, Color color, enum trackVisibility vis) +/* Draw a single superfamily item at position. */ +{ +struct bed *bed = item; +char *sPhenotypes; +int heightPer = tg->heightPer; +int x1 = round((double)((int)bed->chromStart-winStart)*scale) + xOff; +int x2 = round((double)((int)bed->chromEnd-winStart)*scale) + xOff; +int w; + +sPhenotypes = omimAvSnpAaReplacement(tg, item); +w = x2-x1; +if (w < 1) + w = 1; +if (color) + { + hvGfxBox(hvg, x1, y, w, heightPer, color); + + if (vis == tvFull) + { + hvGfxTextRight(hvg, x1-mgFontStringWidth(font, sPhenotypes)-2, y, + mgFontStringWidth(font, sPhenotypes), + heightPer, MG_BLACK, font, sPhenotypes); + } + + if (vis != tvDense) + mapBoxHc(hvg, bed->chromStart, bed->chromEnd, x1, y, x2 - x1, heightPer, + tg->track, tg->mapItemName(tg, bed), sPhenotypes); + } + +if (tg->subType == lfWithBarbs) + { + int dir = 0; + if (bed->strand[0] == '+') + dir = 1; + else if(bed->strand[0] == '-') + dir = -1; + if (dir != 0 && w > 2) + { + int midY = y + (heightPer>>1); + Color textColor = hvGfxContrastingColor(hvg, color); + clippedBarbs(hvg, x1, midY, w, tl.barbHeight, tl.barbSpacing, + dir, textColor, TRUE); + } + } +} + +void omimAvSnpMethods (struct track *tg) +{ +tg->drawItemAt = omimAvSnpDrawAt; +} + char *omimGeneName(struct track *tg, void *item) /* set name for omimGene track */ { struct bed *el = item; char query[256]; struct sqlConnection *conn = hAllocConn(database); char *geneLabel = NULL; char *omimGeneLabel = cartUsualString(cart, "omimGene.label", "OMIM ID"); if (sameWord(omimGeneLabel, "OMIM ID")) { geneLabel = el->name; } else @@ -12418,30 +12503,31 @@ registerTrackHandler("protVarPos", protVarMethods); registerTrackHandler("oreganno", oregannoMethods); registerTrackHandler("encodeDless", dlessMethods); transMapRegisterTrackHandlers(); retroRegisterTrackHandlers(); registerTrackHandler("retroposons", dbRIPMethods); registerTrackHandlerOnFamily("kiddEichlerDisc", kiddEichlerMethods); registerTrackHandlerOnFamily("kiddEichlerValid", kiddEichlerMethods); registerTrackHandler("dgv", dgvMethods); registerTrackHandlerOnFamily("hapmapSnps", hapmapMethods); registerTrackHandlerOnFamily("hapmapSnpsPhaseII", hapmapMethods); registerTrackHandlerOnFamily("omicia", omiciaMethods); registerTrackHandler("omimGene", omimGeneMethods); registerTrackHandler("omimGeneClass3", omimGeneClass3Methods); +registerTrackHandler("omimAvSnp", omimAvSnpMethods); registerTrackHandler("omimComposite", omimGeneClass3Methods); registerTrackHandler("rest", restMethods); #endif /* GBROWSE */ } void createHgFindMatchHash() /* Read from the cart the string assocated with matches and put the matching items into a hash for highlighting later. */ { char *matchLine = NULL; struct slName *nameList = NULL, *name = NULL; matchLine = cartOptionalString(cart, "hgFind.matches"); if(matchLine == NULL) return; nameList = slNameListFromString(matchLine,',');