9da4faeeb0b3a1c959f9b196e633f9e80741a860 fanhsu Fri May 27 14:43:14 2011 -0700 Implemented new color scheme for OMIM tracks. diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c index 3374655..2911931 100644 --- src/hg/hgTracks/simpleTracks.c +++ src/hg/hgTracks/simpleTracks.c @@ -10851,89 +10851,123 @@ { bedPlusLabelLoad(tg, omimGene2DisorderList); omimFilter(tg); } Color omimGene2Color(struct track *tg, void *item, struct hvGfx *hvg) /* set the color for omimLocation track items */ { struct bed *el = item; char *omimId; char *phenClass; char query[256]; struct sqlResult *sr; char **row; +struct rgbColor *normal = &(tg->color); +struct rgbColor lighter; +struct rgbColor lightest; + +Color class1Clr, class2Clr, class3Clr, class4Clr, classOtherClr; + +/* color scheme: + + Lighter Green: + for Class 1 OMIM records + Light Green: + for Class 2 OMIM records + Dark Green: + for Class 3 OMIM records + Purple: + for Class 4 OMIM records + Light Gray: + for Others +*/ + +lighter.r = (6*normal->r + 4*255) / 10; +lighter.g = (6*normal->g + 4*255) / 10; +lighter.b = (6*normal->b + 4*255) / 10; + +lightest.r = (1*normal->r + 2*255) / 3; +lightest.g = (1*normal->g + 2*255) / 3; +lightest.b = (1*normal->b + 2*255) / 3; + + struct sqlConnection *conn = hAllocConn(database); +class1Clr = hvGfxFindColorIx(hvg, lightest.r, lightest.g, lightest.b); +class2Clr = hvGfxFindColorIx(hvg, lighter.r, lighter.g, lighter.b); +class3Clr = hvGfxFindColorIx(hvg, normal->r, normal->g, normal->b); +class4Clr = hvGfxFindColorIx(hvg, 153,0, 204); // purple +classOtherClr = hvGfxFindColorIx(hvg, 200, 200, 200); // light gray + safef(query, sizeof(query), "select omimId, phenotypeClass from omimPhenotype where omimId=%s", el->name); sr = sqlMustGetResult(conn, query); row = sqlNextRow(sr); hFreeConn(&conn); if (row == NULL) { // set to gray if this entry does not have any disorder info sqlFreeResult(&sr); - return hvGfxFindColorIx(hvg, 200, 200, 200); + return classOtherClr; } else { omimId = row[0]; phenClass = row[1]; if (sameWord(phenClass, "3")) { - // set to dark red, the same color as omimGene2 track + // set to dark green, the same color as omimGene2 track sqlFreeResult(&sr); - return hvGfxFindColorIx(hvg, 220, 0, 0); + return class3Clr; } else if (sameWord(phenClass, "2")) { - // set to green for class 2 + // set to light green for class 2 sqlFreeResult(&sr); - return hvGfxFindColorIx(hvg, 0, 255, 0); + return class2Clr; } else if (sameWord(phenClass, "1")) { - // set to orange for class 1 + // set to lighter green for class 1 sqlFreeResult(&sr); - return hvGfxFindColorIx(hvg, 200, 0, 200); + return class1Clr; } else { // set to purplish color for phenClass 4 sqlFreeResult(&sr); - return hvGfxFindColorIx(hvg, 200, 100, 100); + return class4Clr; } } } void omimGene2Methods (struct track *tg) /* Methods for version 2 of OMIM Genes track. */ { tg->loadItems = omimGene2Load; tg->itemColor = omimGene2Color; tg->itemNameColor = omimGene2Color; tg->drawItemAt = bedPlusLabelDrawAt; tg->mapItem = bedPlusLabelMapItem; tg->nextPrevExon = simpleBedNextPrevEdge; } - static char *omimAvSnpAaReplacement(char *name) /* Return replacement string associated with a OMIM AV (Allelic Variant) entry */ { static char omimAvSnpBuffer[256]; struct sqlConnection *conn; char query[256]; struct sqlResult *sr; char **row; omimAvSnpBuffer[0] = '\0'; conn = hAllocConn(database); safef(query,sizeof(query), "select replStr, dbSnpId, description from omimAvRepl where avId='%s'", name); sr = sqlMustGetResult(conn, query); @@ -10980,80 +11014,113 @@ (void)sqlQuickQuery(conn, query, omimLocationBuffer, sizeof(omimLocationBuffer)); hFreeConn(&conn); return(omimLocationBuffer); } Color omimLocationColor(struct track *tg, void *item, struct hvGfx *hvg) /* set the color for omimLocation track items */ { struct bed *el = item; char *omimId; char *phenClass; char query[256]; struct sqlResult *sr; char **row; +struct rgbColor *normal = &(tg->color); +struct rgbColor lighter; +struct rgbColor lightest; + +Color class1Clr, class2Clr, class3Clr, class4Clr, classOtherClr; + +/* color scheme: + + Lighter Green: + for Class 1 OMIM records + Light Green: + for Class 2 OMIM records + Dark Green: + for Class 3 OMIM records + Purple: + for Class 4 OMIM records + Light Gray: + for Others +*/ + +lighter.r = (6*normal->r + 4*255) / 10; +lighter.g = (6*normal->g + 4*255) / 10; +lighter.b = (6*normal->b + 4*255) / 10; + +lightest.r = (1*normal->r + 2*255) / 3; +lightest.g = (1*normal->g + 2*255) / 3; +lightest.b = (1*normal->b + 2*255) / 3; + +class1Clr = hvGfxFindColorIx(hvg, lightest.r, lightest.g, lightest.b); +class2Clr = hvGfxFindColorIx(hvg, lighter.r, lighter.g, lighter.b); +class3Clr = hvGfxFindColorIx(hvg, normal->r, normal->g, normal->b); +class4Clr = hvGfxFindColorIx(hvg, 153,0, 204); // purple +classOtherClr = hvGfxFindColorIx(hvg, 200, 200, 200); // light gray + struct sqlConnection *conn = hAllocConn(database); safef(query, sizeof(query), "select omimId, phenotypeClass from omimPhenotype where omimId=%s", el->name); sr = sqlMustGetResult(conn, query); row = sqlNextRow(sr); hFreeConn(&conn); if (row == NULL) { // set to gray if this entry does not have any disorder info sqlFreeResult(&sr); - return hvGfxFindColorIx(hvg, 200, 200, 200); + return classOtherClr; } else { omimId = row[0]; phenClass = row[1]; if (sameWord(phenClass, "3")) { - // set to dark red, the same color as omimGene2 track + // set to dark green, the same color as omimGene2 track sqlFreeResult(&sr); - return hvGfxFindColorIx(hvg, 220, 0, 0); + return class3Clr; } else { if (sameWord(phenClass, "2")) { - // set to green for class 2 + // set to light green for class 2 sqlFreeResult(&sr); - return hvGfxFindColorIx(hvg, 0, 255, 0); + return class2Clr; } else { if (sameWord(phenClass, "1")) { - // set to orange for class 1 + // set to lighter green for class 1 sqlFreeResult(&sr); - return hvGfxFindColorIx(hvg, 200, 0, 200); + return class1Clr; } else { // set to purplish color for phenClass 4 sqlFreeResult(&sr); - return hvGfxFindColorIx(hvg, 200, 100, 100); + return class4Clr; } } - } } } static void omimLocationLoad(struct track *tg) /* Load and filter OMIM Loci items, storing long label from omimLocationDescription. */ { bedPlusLabelLoad(tg, omimLocationDescription); omimFilter(tg); } void omimLocationMethods (struct track *tg) /* Methods for OMIM Loci (Non-Gene Entry Cytogenetic Locations). */ { tg->loadItems = omimLocationLoad;