906e4969503040c01d52cff8545f2050ce367390 fanhsu Fri Feb 18 08:34:22 2011 -0800 Updated functions for new OMIM tracks. diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c index 8029826..7012f5c 100644 --- src/hg/hgTracks/simpleTracks.c +++ src/hg/hgTracks/simpleTracks.c @@ -121,30 +121,31 @@ #include "variome.h" #endif /* GBROWSE */ #ifdef LOWELAB #include "loweLabTracks.h" #include "rnaPLFoldTrack.h" #endif /* LOWELAB */ #ifdef LOWELAB_WIKI #include "wiki.h" #endif /* LOWELAB_WIKI */ static char const rcsid[] = "$Id: simpleTracks.c,v 1.149 2010/06/05 19:29:42 braney Exp $"; #define CHROM_COLORS 26 #define SMALLDYBUF 64 +#define OMIM_MAX_DESC_LEN 256 int colorBin[MAXPIXELS][256]; /* count of colors for each pixel for each color */ /* Declare our color gradients and the the number of colors in them */ Color shadesOfGreen[EXPR_DATA_SHADES]; Color shadesOfRed[EXPR_DATA_SHADES]; Color shadesOfBlue[EXPR_DATA_SHADES]; Color shadesOfYellow[EXPR_DATA_SHADES]; Color shadesOfGreenOnWhite[EXPR_DATA_SHADES]; Color shadesOfRedOnWhite[EXPR_DATA_SHADES]; Color shadesOfBlueOnWhite[EXPR_DATA_SHADES]; Color shadesOfYellowOnWhite[EXPR_DATA_SHADES]; Color shadesOfRedOnYellow[EXPR_DATA_SHADES]; Color shadesOfBlueOnYellow[EXPR_DATA_SHADES]; Color orangeColor = 0; Color brickColor = 0; @@ -10910,61 +10911,81 @@ tg->nextItemButtonable = TRUE; tg->nextPrevItem = linkedFeaturesLabelNextPrevItem; } void oregannoMethods (struct track *tg) /* load so can allow filtering on type */ { tg->loadItems = loadOreganno; tg->itemColor = oregannoColor; tg->itemNameColor = oregannoColor; tg->nextItemButtonable = TRUE; tg->nextPrevItem = linkedFeaturesLabelNextPrevItem; } /* reserve space no more than 20 unique OMIM entries */ -#define OMIM_MAX_DESC_LEN 256 -char omimGeneClass3Buffer[20 * OMIM_MAX_DESC_LEN]; +char omimGeneClass3Buffer[21 * OMIM_MAX_DESC_LEN]; char *omimGeneClass3DisorderList(struct track *tg, struct bed *item) /* Return list of disorders associated with a OMIM entry */ { struct sqlConnection *conn; char query[256]; struct sqlResult *sr; char **row; char *chp; int i=0; +// get gene symbol(s) first + +conn = hAllocConn(database); +safef(query,sizeof(query), + "select geneSymbol from omimGeneMap where omimId =%s", item->name); +sr = sqlMustGetResult(conn, query); +row = sqlNextRow(sr); + +if (row != NULL) + { + safef(omimGeneClass3Buffer, sizeof(omimGeneClass3Buffer), "%s; disorder(s): ", row[0]); + } + +chp = omimGeneClass3Buffer + (long)strlen(row[0]) + 15L; + conn = hAllocConn(database); safef(query,sizeof(query), "select distinct disorder from omimDisorderMap, omimGeneClass3 where name='%s' and name=cast(omimId as char) order by disorder", item->name); sr = sqlMustGetResult(conn, query); row = sqlNextRow(sr); /* show up to 20 max entries */ -chp = omimGeneClass3Buffer; +//chp = omimGeneClass3Buffer; while ((row != NULL) && i<20) { + int lengthLeft = sizeof(omimGeneClass3Buffer) - strlen(omimGeneClass3Buffer); /* omimDisorderMap disorder field some times have trailing blanks. */ eraseTrailingSpaces(row[0]); if (i != 0) { safef(chp, 3, "; "); chp++;chp++; } + safecpy(chp, lengthLeft, row[0]); + lengthLeft = lengthLeft - strlen(row[0]) - 2; + safecpy(chp, OMIM_MAX_DESC_LEN, row[0]); + + chp = chp+strlen(row[0]); row = sqlNextRow(sr); i++; } if ((i == 20) && (row != NULL)) { safef(chp, 5, " ..."); chp++;chp++;chp++;chp++; } *chp = '\0'; hFreeConn(&conn); sqlFreeResult(&sr); @@ -11013,31 +11034,30 @@ 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), @@ -11098,31 +11118,30 @@ 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; } -#define OMIM_MAX_DESC_LEN 256 char omimLocationBuffer[OMIM_MAX_DESC_LEN*2]; char *omimLocationDescription(struct track *tg, struct bed *item) /* Return description of an OMIM entry */ { struct sqlConnection *conn; char query[256]; struct sqlResult *sr; char **row; char *chp; omimLocationBuffer[0] = '\0'; conn = hAllocConn(database); safef(query,sizeof(query), @@ -11230,31 +11249,30 @@ /* set the color to red if the entry is listed in morbidmap */ safef(query, sizeof(query), "select geneSymbols from omimMorbidMap where omimId=%s", el->name); geneSymbols = sqlQuickString(conn, query); hFreeConn(&conn); if (geneSymbols != NULL) { return hvGfxFindColorIx(hvg, 255, 0, 0); } else { return hvGfxFindColorIx(hvg, 0, 0, 200); } } /* reserve space no more than 20 unique OMIM entries */ -#define OMIM_MAX_DESC_LEN 256 char omimGeneBuffer[20 * OMIM_MAX_DESC_LEN]; char *omimGeneDiseaseList(struct track *tg, struct bed *item) /* Return list of diseases associated with a OMIM entry */ { struct sqlConnection *conn; char query[256]; struct sqlResult *sr; char **row; char *chp; int i=0; conn = hAllocConn(database); safef(query,sizeof(query),